Live data from Hacker News

Mechanical Watch

ciechanow.ski

231–240 of 425 posts

Re: Mechanical Watch

#231

Wow very comprehensive & well done. If mechanical watches tickle your fancy, there is a ton of watch repair video on YT. I particularly enjoy wristwatch revival ( https://www.youtube.com/channel/UCD80T1s2Za4K682CQDGwEKQ ). A warning though, if you consider to get into that hobby. I tried, it's really hard, expensive (I spend close to €1k and that is with b-quality stuff. Good stuff is 5-10x more expensive.) and can b…

When I saw this, the first thing I did was Ctrl + F to see if anyone else dropped Marshall's link. I have no desire to do it myself, but it's so satisfying to watch him repair them. His videos are great.

Re: Mechanical Watch

#232
post #222

Earlier quoted context omitted.

Here is "drawing a triangle" https://www.tutorialspoint.com/webgl/webgl_drawing_a_triangl...

Holy living crap. I was all with it up until I saw the actual full HTML example. That is an incredulous amount of overhead for what is essentially one of the most basic and fundamental operations in *GL. Comparing this to Canvas is almost like comparing assembly to C. I'm honestly very surprised.

Yup. This is why my crappy little 3D game engine still uses canvas and not WebGL. I can’t feel good about myself and deal with all that.

Re: Mechanical Watch

#233
post #229

Earlier quoted context omitted.

Holy living crap. I was all with it up until I saw the actual full HTML example. That is an incredulous amount of overhead for what is essentially one of the most basic and fundamental operations in *GL. Comparing this to Canvas is almost like comparing assembly to C. I'm honestly very surprised.

Though boilerplate is never acceptable, most of that is constant-factor overhead, not per-triangle overhead, and tutorialspoint is not a site you should trust under any circumstances. See my links above for better sources. If you put more vertices and indices in Step 2 you can draw an arbitrarily complex 3-D object with this same code. And there's a lot of stuff in GLSL where you can program directly with high-level…

Using a framework is also constant factor overhead (at least in LoC, which is what I assume we're talking about here)

Re: Mechanical Watch

#234
post #228
post #222

Earlier quoted context omitted.

Here is "drawing a triangle" https://www.tutorialspoint.com/webgl/webgl_drawing_a_triangl...

That looks like a fair bit of boilerplate, and a shitty tutorial with comments that mostly just repeat what the code says, but the API doesn't look unusable. https://github.com/patriciogonzalezvivo/glslCanvas/blob/mast... has most of that same boilerplate in a less repulsive form. https://github.com/patriciogonzalezvivo/glslCanvas/blob/mast... has other bits.

Honestly I think your examples are both genuinely less comprehendible to someone without a deep understanding of GL going in than my example.

It’s a very bad, non-object oriented API in an object oriented language. It was designed for and by people who know GL in other C like languages, not for people who know JavaScript. It is unlike any other part of the language.

The fact that I have to write a shader myself, as a fricken string like I’m writing SQL over here, just to draw a triangle is absurd. There should at the very least be some sort of provided builder for simple shaders.

Re: Mechanical Watch

#235

There's something magical about mechanical watches. Maybe it's just knowing that you have this perpetually winding machine on your hand (in the case of "automatic" mechanical watches). Also knowing that the thing will last forever, take care of it and it will probably outlive you. Can't say that about an Apple Watch. If you want a good mechanical watch that won't break the bank I suggest picking up a Seiko SKX (thoug…

I've been using the same mechanical watch, more or less every day, for a little over 12yrs now. Miyota movement, stainless body, Sapphire window, about $300. In years of machine shop work the movement survived fine, and has one scratch on window from some tungsten carbide.

Has kept brilliant time, maybe a minute a month, and taught me that my watch being accurate to the second was something that, for me, just didn't matter. I started working around pulsed high voltage last year (100kV+) and now it loses a couple minutes a week.

Re: Mechanical Watch

#236
post #99

Earlier quoted context omitted.

Couldn't the Wikimedia Foundation raise some money to produce these kinds of videos? I wonder why they don't.

I think one problem is that it's difficult to make videos easy for anyone to edit, the way a wiki text page is. - The skills to edit video are more difficult to acquire, in part because - The hardware and software requirements can be expensive, and are not universally available - Once you've made a video, not everyone has the bandwidth to view it in high quality (certainly the first step to editing it) Wikimedia coul…

There's Wikimedia Commons! It even (somewhat) addresses this particular issue by having a system for requesting specialized media-related edits—video editing, photo retouching, SVG editing, mapmaking, etc.

For the unaware, Commons, a repository of media files, is but one of many Wikimedia "projects" (including Wikipedia). It's mostly used for images, but also hosts video, audio (including MIDI), 3D models (only STLs), and PDFs.Aside: considering what the Foundation seems to like doing, I'm surprised they don't do more to promote the "other" projects, especially to Wikipedia contributors—Wikipedia editors (even split by language) vastly outnumber those of the other projects, including Commons and Wikidata, which are multilingual.

Commons' request system connects those who recognize needed edits but cannot make them with those who check the requests pages and are able to. There's the Graphics Lab[0] for edits to existing uploads, and File requests[1] for new uploads that are needed. Judging by the archives, they seem quite underutilized, though that might only be a sign of how few Commons contributors there are. Probably also has to do with the offloading of requests to local pages in many languages of Wikipedia.[2]

[0] https://commons.wikimedia.org/wiki/Commons:Graphic_Lab

[1] https://commons.wikimedia.org/wiki/Commons:File_requests

[2] https://www.wikidata.org/wiki/Q5324355

There's an interesting variation in the nature of barriers to being able to edit. Hardware and bandwidth cost money, but skills cost only time and software can be free. I'd say the Graphics Lab does decently in "teaching how to fish" through tutorials and lists of FOSS software. This contrasts with file requests, where there's no equivalent, because the most common reason that someone can't take a photo of something is that there physically aren't any instances of it nearby.

This kind of barrier to contribution really isn't specific to media; analogously, not everyone has access to the same resources for researching edits to Wikipedia. Wikimedia's also trying to address that: everyone with >10 monthly edits in any project has free access to the databases participating in The Wikipedia Library.[3] Most are relatively specialized, however (IIRC, JSTOR is the most generally useful of the lot).

[3] https://meta.wikimedia.org/wiki/The_Wikipedia_Library

Re: Mechanical Watch

#237
post #234
post #228

Earlier quoted context omitted.

That looks like a fair bit of boilerplate, and a shitty tutorial with comments that mostly just repeat what the code says, but the API doesn't look unusable. https://github.com/patriciogonzalezvivo/glslCanvas/blob/mast... has most of that same boilerplate in a less repulsive form. https://github.com/patriciogonzalezvivo/glslCanvas/blob/mast... has other bits.

Honestly I think your examples are both genuinely less comprehendible to someone without a deep understanding of GL going in than my example. It’s a very bad, non-object oriented API in an object oriented language. It was designed for and by people who know GL in other C like languages, not for people who know JavaScript. It is unlike any other part of the language. The fact that I have to write a shader myself, as a…

Yeah, they probably are, I didn't intend them as tutorials but as a better representation of the actual scutwork necessary to draw a triangle.

Object-oriented languages are not a good way to do 3-D rendering. If you want to write pixel shaders in JS you can totally do that but you will have to run them on the CPU; as it happens I wrote a program last week that works that way: http://canonical.org/~kragen/sw/dev3/trama. If you want to run them on the GPU you need a language that exposes the GPU's capabilities.

In essence your primary complaint is that the GPU instruction set is not object-oriented (and neither is your database). Well, you can design your own GPU, but I've got some bad news for you about Verilog, Chisel, and BlueSpec! And you may find out that the real problem is that solid-state physics isn't object-oriented, so your OO GPU will end up underperforming, like the Burroughs B5000 and the Symbolics 3600 (hopefully not as badly as the Intel iAPX432). You'll probably have more success writing an object-oriented database.

However, I do agree that WebGL is a bad API, because boilerplate is never acceptable.

Re: Mechanical Watch

#238
post #232

Earlier quoted context omitted.

Holy living crap. I was all with it up until I saw the actual full HTML example. That is an incredulous amount of overhead for what is essentially one of the most basic and fundamental operations in *GL. Comparing this to Canvas is almost like comparing assembly to C. I'm honestly very surprised.

Yup. This is why my crappy little 3D game engine still uses canvas and not WebGL. I can’t feel good about myself and deal with all that.

Yeah, Canvas 2D is great, though it's not any more OO than WebGL, and I sometimes forget to create a new path and wonder why it keeps getting slower and slower with every frame. SVG is also pretty reasonable.

Re: Mechanical Watch

#239

Earlier quoted context omitted.

I mostly agree with you, but I don’t mind minification when appropriate, as it can serve a functional purpose with tangible end-user-friendly benefits (less downloaded over the network = faster response times). But if you want to be friendly to the tinkerers, you could always host both the *.js and *.min.js versions, and have the webpage just pull the latter - anyone who wants the unminified source can remove the “mi…

minified js is not greatly smaller than gzipped js, I think the whole minification thing is a swing and a miss and now we have to deal with source maps and shit, and build pipelines and etc $ ls -la -rw-r--r-- 1 jack 197609 330905 May 4 22:56 watch.js -rw-r--r-- 1 jack 197609 152172 May 4 22:55 watch.min.js $ gzip watch.js $ gzip watch.min.js $ ls -la -rw-r--r-- 1 jack 197609 43690 May 4 22:56 watch.js.gz -rw-r--r--…

Of surprise to no one, Brotli does better on both:

    $ ls -l *.js
    -rw-r--r--  1 mrd  staff  330904  5 May 01:04 watch.js
    -rw-r--r--  1 mrd  staff  152172  5 May 01:10 watch.min.js
    $ brotli watch.js
    $ brotli watch.min.js
    $ ls -l *.br
    -rw-r--r--  1 mrd  staff  34461  5 May 01:04 watch.js.br
    -rw-r--r--  1 mrd  staff  27122  5 May 01:10 watch.min.js.br
If I were serving this content, and if my web server and all of my target browsers supported Brotli, I'd be somewhat more content to ship an un-minified + Brotli-compressed file than an un-minified + gzip'd one. I'm sure it's some rule of thumb stuck in my head from the Web 2.0 era, but a JavaScript payload in excess of 40KB crosses some warning line in my head. (Probably 40KB / ~4KB/s throughput on a good dial-up connection = 10s transfer time, about the longest you'd want to wait for even a pretty spiffy page to load.)

Re: Mechanical Watch

#240
post #229

Earlier quoted context omitted.

Though boilerplate is never acceptable, most of that is constant-factor overhead, not per-triangle overhead, and tutorialspoint is not a site you should trust under any circumstances. See my links above for better sources. If you put more vertices and indices in Step 2 you can draw an arbitrarily complex 3-D object with this same code. And there's a lot of stuff in GLSL where you can program directly with high-level…

Using a framework is also constant factor overhead (at least in LoC, which is what I assume we're talking about here)

Right, and that's what the glslCanvas project I linked above is, though in this case it's negative overhead if you're just counting the lines of code you have to maintain :)
Post reply on HN