Fixed – Fixed-place decimal math library for Go - <AUTHOR> https://github.com/robaho/fixed <comment><USER2> As the author of Fixed, I'd like to make a few comments:

1\. If you are above 100 billion, you are probably dropping the the 'fractions' and dealing with whole numbers. Most databases don't have their columns configured as Decimal(64,64) for 128 digits. It's not practical. So I would store the amounts above 100 billion in another value - the billions unit. And if you are 100s of billion, I am pretty certain you're not concerned with .0000001 dollars. Most 'terminals/receipts' couldn't show/print a number that high without truncating or the UI/representation would be all messed up.

2\. I don't believe the crypto-currency space needs more than 7 places on an exchange. The CME only supports 8 decimal places in their protocol. Most of these issues are handled by reinterpreting the scale & quantity. "The satoshi is currently the smallest unit of the bitcoin currency recorded on the block chain. It is a one hundred millionth of a single bitcoin (0.00000001 BTC)." and since there can only be 21 million BTC, it easily fits - although I would probably change the code to use 8 decimal places for ease of use.

3\. I might add more rounding modes. They are trivial, but there are some pretty exotic ones - so implementing them all internally, rather than externally can be problematic.

4\. For the gamers that say they need float32 - there are more digits of precision in Fixed that float32 - just change the number of places in the code... if you need less significand and more decimals.

5\. I've added integer Mul. It is about 2x faster than using floating point. If you avoid limiting overflow, which it doesn't, it is closer to 10x.

<comment><USER3> Any ideas on handling Ethereum gas, which is uint256?

<comment><USER4> Gas is limited by having per block gas usage limit. One block cannot consume more than 8M gas.

Uint256 comes from the fact that it is native word size for EVM and that is because of crypto operations.

</comment></comment></comment><comment><USER5> I work in the accounting space. In the current systems we develop today this would need to be able to handle trillions(up to 14 places) at least and most likely quadrillions(up to 17 spaces) These amounts happen already due to certain countries with high inflation levels.

<comment><USER6> The ubiquitous float Double has 15 places of accuracy that is secure for summing integers up to that size.

I think the core frustration is how values less than one are subject to about 1 million-billionth part of noise, which could be tolerated except that factors like inflation are recorded as fixed decimals.

For example, if monthly inflation is standardized as 5 significant digits, then for 0.0012345 - the rounding to 5 sd actually introduced about one hundred-thousandth part of noise to whatever the real value was, but the number is then considered precise. Subsequent encoding of 0.0012345 to a float Double is _ten billion times less_ imprecise than the writing of 0.00123447... to 5 sd was, but it is an unwanted inconsistency that is difficult to securely keep out of the fixed point results, even though they are kept to much lower precision.

</comment></comment><comment><USER7> I'm not an expert but a finance library without a choice of rounding modes and using floating point for division and multiplication is a bit strange? Why those decisions?

<comment><USER8> Despite what everyone says, I've spoken to several different people at several different highly-regarded banks who say that they do, in fact, use floating point for money amounts in some of their systems.

What experience do people who work in banks have?

<comment><USER9> I work in Finance, I don't use float, and I suggest you never do either.

<comment><USER8> As a concrete example, someone was running a massive online FFI for predicting the value of derivatives, and they were doing it in the real domain and using doubles on GPUs for monetary values. Where they doing it 'wrong' then? I don't know much about finance myself.

<comment><USER10> Predicting a value is not the same as accounting.

</comment></comment></comment></comment></comment><comment><USER11> I'm a bit surprised to see floating point being used for multiplication, division etc. I would have expected to see this implemented with integers as well (with each operation changing the position of the point).

<comment><USER12> Floating point multiplication can be faster than integer multiplication on modern CPUs. Check out this thread for lots of info!

[https://stackoverflow.com/q/2550281/164234](https://stackoverflow.com/q/2550281/164234)

<comment><USER13> When people consider float vs int, performance is seldom a relevant factor.

You have to ask, what do you even _mean_ if you use floating point for representing money?

If you use floating point, the whole point is that you want the behaviour

1e100 = 1e100 + 1

This is exactly what you want for many analysis and decision making problems, but it is a dangerous default.

</comment></comment></comment><comment><USER14> It's always struck me as strange than finance folk don't want correct math. They want math that matches the coins in their pocket.

If I am owed 2.575% on $3425956.57 for 245 months, why not get the correct sum instead of some rounded monthly sum added up? Its just strange.

<comment><USER15> They have it in COBOL,which uses binary coded decimals to represent the number (1 decimal per nibble) so numbers like 0.3 can be represented without loss of accuracy. It was abandoned in favour of IEEE754.

<comment><USER14> I think that was a holdover of EBCDIC, an old IBM standard. In fact early IBM machines did BCD in their ALU.

<comment><USER16> BCD mode was a popular in a lot of early chips. It's an esoteric feature today, but on 16 bit machines you would blow out the ALU way too easily and get into messy two word math.

<comment><USER17> x86 still has BCD support, in 32 bit mode [http://www.hugi.scene.org/online/coding/hugi%2017%20-%20coaa...](http://www.hugi.scene.org/online/coding/hugi%2017%20-%20coaax.htm)

</comment></comment></comment></comment></comment><comment><USER18> Hypothesis: eventually all programming languages either add a library for fixed-place decimal maths, or revise the language to take care of it.

Ada had proper fixed point types in 1983 already, and added additional requirements for the implementation of decimal fixed point types as part of the 1995 language revision. Other languages ... may benefit from its example.

</comment><comment> black-tea You'll never get good performance without using assembly. GMP probably walks all over this. Even my own bignum library probably walks all over it for addition and subtraction.

<comment><USER19> Where can we find your bignum library?

<comment> black-tea You can find it on github along with a hundred others. But you should use GMP. It's better than anything you or I could do alone.

</comment></comment></comment><comment><USER20> No sqrt, sin, cos functions?

<comment><USER21> Probably not high priority in financial computing.

<comment><USER20> No, this lib is not suitable for financial computing. It might be good for game development.

<comment><USER21> The github page comes right out and says "[it] is ideally suited for high performance trading financial systems". Clearly, that's the intention behind the library.

This would be essentially useless in game development (which is my field). In gamedev it's pretty much 32-bit floats all the way down, and very little else. Very small fixed point types are occasionally used in shaders (Cg provides a native 12-bit fixed point type) to represent colors, but a library like this is pretty much pointless.

<comment><USER2> As a long ago game developer, we never used floating point - I'm sure things have changed now - but we always used fixed point integer, with lookup tables for sin, etc.</comment></comment></comment></comment></comment>


How To Ruin Your Own Book Promotion - <AUTHOR> http://mikecanex.wordpress.com/2011/06/29/how-to-ruin-your-own-book-promotion/

<comment><USER2> Okay, yes, people can download the music easily without buying the book... Do you really think those people would buy the book to get the music? Do you really think they couldn't find a torrent with it instead?

No, that is a nice, legal bonus for people who buy the book. That's all.

</comment><comment><USER3> That's a hole, to be sure, but I'm not sure it "ruins" his book promotion. If you follow the "piracy is promotion" line of thinking, it could actually _improve_ his book promotion.</comment>


Ask HN: How do you handle email servers? - <AUTHOR> Hi all,
so, like many of you probably, I have like a bazillion of ideas and emails for every kind of startup-idea I am trying to push out.
I found it (very early on) necessary to have a "corporate" domains for each idea with the domain. At least not a generic gmail.com domain. But its also not feasible to register always with google business (or anything else) for $5/user just for having my own domains. It quickly adds up.
So, I was looking into different alternatives and found the sweet spot for me with a part of sovereign [1] and a cheap scaleway [2] instance.
I was looking into mail-in-a-box, but decided it really isn't for me, because I want to do some customizations on my own - including a few websites I want to let run there.
Still, having the own server means maintenance etc. I wouldn't call myself a great sysadmin either. Mailserver setup was (and still is) one of the biggest questionmarks for me and, while analyzing the sovereign ansible scripts, it really shed some light on it, I still think I just scratched the surface. Especially with spamfilters, virusscanning, greylisting, etc. I think I was able to setup everything correctly, but hey, one little update and I am f*'d, right?!
The question is now: I can't possibly be the only one with that struggle of price/time/difficulty/...
How do you handle that?
[1] https://github.com/sovereign/sovereign [2] https://www.scaleway.com/ <comment> tony-allan Unless you enjoy pain, trauma and heartache just don't do it yourself for anything serious.

I gave up running my own server about 15 years ago. Best decision ever!

I use Fastmail and I add domains whenever I need and it doesn't cost anymore. I assume many other services are similar.

<comment><USER2> FastMail is the most efficient one I've found. GSuite was offering multiple domains the last time I used, but interface was cluncky, and you couldn't add different addresses for different domains IIRC.

I'm using FastMail with 17 domains, each with different addresses, different catch all addresses etc., and no problems so far.

</comment></comment><comment><USER3> Incoming:

Either the registrar provides a free forwarding service (e.g. Google Domains), or I have a $5 DO droplet which has a postfix server running that forwards email to a free gmail account. I create a new gmail account for each domain I want an email address with. e.g. for awesome-domain.com, I have a corresponding firstname.lastname@example.com

Outgoing

Depending on how much I care about the domain, I'll either setup gmail's SMTP (which shows it's using Gmail to send on the receiving end). Or I use some like Mailgun or Sendgridwith correct SPF, DKIM, DMARC settings. Usually their monthly free tier is enough to cover my needs for sending emails.

I can dig up my postfix forwarding setting if you really want.

</comment><comment><USER4> I am using migadu [1] and am very satisfied, unlimited domains/users for free or $4 if you want to mail without advertisement below the mails you send.

[1] [https://www.migadu.com/en/index.html](https://www.migadu.com/en/index.html)

</comment><comment><USER5> Is it for multiple users or just you?

If its just for you it can be done quite cheaply with a account at fastmail or mailbox.org

<comment><AUTHOR> Hey, thanks for the hint with Fastmail.

I was actually looking into it, but have the same problem as before with Gsuite. Running 10 different domains with two or three people usually then means a fixed expense of $5 x10 x2 = $100/month only for mail. Or do I miss anything? Is that not bothering anyone that it _is_ quite expensive?

<comment><USER6> FastMail doesn't charge extra for multiple domains, so for two users it's just $5 x2 = $10/month.

</comment></comment></comment><comment><USER7> Have you tried Zoho mail</comment>


Websites use your CPU to mine cryptocurrency even when you close your browser - <AUTHOR> https://arstechnica.com/information-technology/2017/11/sneakier-more-persistent-drive-by-cryptomining-comes-to-a-browser-near-you/ <comment><USER2> The articles title seems click-baity. The browser is still open, it's just opened a different, smaller window to run it in. The title sounds like its forked off a different process or something to continue after your browser process tree is killed.

What I don't understand is how a site is able to adjust the size, and position of the browser window.

<comment><USER3> Ugh. So they didn't even make the effort to do this in a ServiceWorker?!

I mean, if you did it that way, you'd be able to use multiple cores and hash somewhat faster.

But then these are people who think they'll get anywhere by hashing in _ _JavaScript_ _, so....

<comment><USER4> Chrome will only let a ServiceWorker do work for a max of five minutes. They would still need a hidden window to trigger a new event every five minutes or get the user to allow web push messages so a server can trigger events.

[https://www.chromium.org/Home/chromium-security/security- faq...](https://www.chromium.org/Home/chromium-security/security-faq/service- worker-security-faq#TOC-Do-Service-Workers-live-forever-)

<comment><USER3> TIL! Thanks for the info, that's useful to know...</comment></comment></comment></comment>


Early Social Security Projections - <AUTHOR> http://krugman.blogs.nytimes.com/2011/01/15/early-social-security-projections/

<comment><USER2> My guess is that the SSA didn't factor how poorly American's would treat themselves over the next 65 years. If they had their projections for life expectancy would have dropped inline with what they are today.

Either that or those fantastic flying cars we all though we were going to have by 2011 were supposed to have contributed to a longer lifespan.

<comment><USER3> If you read in the comments there is some discussion as to why this has happened. It seems that longer lifespan is being somewhat canceled out statistically by the swell of people born during the baby boom and immigration.

<comment><USER4> Exactly. The US (and most other western countries) are playing the game where you avoid the greying of the population by bringing in a constant supply of new immigrants from poorer countries. This is not, of course, sustainable over the long term.</comment></comment></comment>


CSS and JS code coverage in Chrome DevTools - <AUTHOR> https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage <comment><USER2> If you're interested in staying up to date with Chrome DevTools, I run this project called Dev Tips: [https://umaar.com/dev-tips/](https://umaar.com/dev- tips/)

It contains around 150 tips which I display as short, animated gifs, so you don't have to read much text to learn how a particular feature works.

<comment><USER3> Could you share some best practices you've learned in generating animated product gifs? For instance, what software you use, what settings have you tuned, etc?

<comment><USER4> [http://blog.bahraniapps.com/gifcam/](http://blog.bahraniapps.com/gifcam/)

[https://www.cockos.com/licecap/](https://www.cockos.com/licecap/)

i don't mean to be snaky, but c'mon: [https://www.google.com/search?q=gif+recorder](https://www.google.com/search?q=gif+recorder)

<comment><USER5> I think the spirit of the question was "how best to do it from the gazillion options that are out there"

<comment><USER4> there aren't a gazillion options, though; it's more like 5.

<comment><USER6> "Which of the five options for GIF recording do you recommend" is still a valid question though, no? Why not save everyone the time of trying all five themselves?

</comment></comment></comment></comment></comment></comment><comment><USER7> From the same link, being able to take a full page screenshot (as in, below the fold) is also very excellent. I notice from the YouTube page description there is a further shortcut:

      1. Open the Command Menu with Command+Shift+P (Mac) or Control+Shift+P (Windows, Linux, Chrome OS).

      2. Start typing "Screenshots" and select "Capture full size screenshots".

I needed this literally yesterday, when I used MS Paint to cut and paste a screen together like a total mug.

<comment><USER8> On Firefox, it is shift-F2 "screenshot --fullpage"

<comment><USER9> And as a Firefox fan I must say that Firefox has had this feature for more than a year.

</comment></comment></comment><comment><USER10> So I recorded my site for a while. Then sorted by unused bytes. What was on top?

Google's own analytics.js

<comment><USER11> All 3rd party vendors have to include code for many features, websites, browsers and devices. They will always contain unused code. GA does a lot and it's doubtful you're using much of it.

<comment><USER12> They could at least gzip the damn thing or whatever their own pagespeed tool says is wrong with every asset loaded from Google

<comment><USER11> Pagespeed is a subpar tool that really shouldn't be used much. Follow the best practices and don't try to fix every possible little complaint.

As far as Google serving files though, its about as optimized as it gets. The JS file is gzip'd, served by Google's cloud network and on chrome it even uses their own QUIC protocol which is faster. It's also likely cached by the sheer amount of usage across the web so it'll probably be the fastest loading thing on your entire site.

<comment><USER12> But I want the number to be green :(

Fair point, I think I've been accidentally gamified when it comes to the pagespeed test. Good call.

</comment></comment></comment></comment></comment><comment><USER13> Interesting tool, but even more interesting results. I just tried it on a simple, one-page website I built recently and there is not a single line of _code_ that's unused, yet it's still showing me 182 lines unused.

Things it seems to consider unused: `style` tags, if your CSS rule is on more than one line - the lines for the selector and closing tag.

There should be 0 unused lines since there are 0 unused rules, and the opening and closing `style` tags are DEFINITELY being used, so until these false results get weeded out it will be noisey to try to use this to track down real unused lines.

<comment><USER14> This is a fair point. The underlying instrumentation here is based on the matching of CSS rules to the DOM via selectors. We then map those rules back into source locations (including external style sheets, @sourceURL, and style tags). We do also have to account for all the other bytes in the block of CSS.

I believe in your case, these bytes are all whitespace. Here's a basic comparison of two pages where all rules are used: [http://imgur.com/ZtfNFmo](http://imgur.com/ZtfNFmo) On the left, we have typical whitespace; On the right: no extra whitespace between style tags and rules. You can see we went from 15 unused bytes to 0.

To be extra clear about this we could somehow indicate these bytes are "unused whitespace" bytes. The implication is a little different in that case, mostly just to use a minifier.

(I work on these tools)

<comment><USER13> So the line breaks and stuff are fine on the right? I could argue that _any_ line break in CSS is extraneous whitespace, so why are some line breaks OK but others not?

</comment></comment></comment><comment><USER15> Chrome Dev tools, the first reason why I started using Chrome. I wonder if HN has any better alternatives to suggest? I'm curious to see what I could be missing on!

<comment><USER16> Edge will probably get time travel debugging first, allowing you to rewind and inspect after something happens. Way better than adding debugger or console.log() everywhere.

<comment><USER17> wow, that sounds like the holy grail of javascript debugging

<comment><USER16> Yep. It's already in Chakra (MS's JS engine), they just need to do the Edge DevTools support.

</comment></comment></comment></comment><comment><USER18> My vague recollection of the Google event where this was first announced (was it late 2016 or early 2017?) - was it was going to "record" your site usage for as long as you were "recording" \- and give the report at the end.

But this now sounds like a coverage tool for a single page?

Does anyone know if it can record over multiple pages and/or application usage (such as an SPA)?

<comment><USER19> There's a record button in the Coverage tab - the solid filled circle. Allows you to record over multiple pages (either a SPA or normal site).

<comment><USER10> It looks like it does that. But the results are only for the last page.

I tried it by triggering function A on page 1 and function B on page 2.

The report showed function A as not used.

<comment><USER18> I wonder if it is a bug perhaps?

</comment></comment></comment></comment><comment><USER20> A single page solution for a site wide issue.

<comment><USER20> Not that I don't appreciate the efforts that they put in to helping developers --and I'm sure this is for the single-page PWA crowd--but CSS and JS is far more complicated than looking at a single page (especially for big organisations).

<comment><USER21> If it's not for this page, then why are you loading it? Load it when the user goes to that other page.

That's the idea behind bundle splitting and whatnot. Don't send users code they don't need yet. Most of them are never going to get to the part of the page that does need that code.

<comment><USER22> Depending on what you are loading it may be more efficient to bundle everything in one file. If you are only loading a few kb per page, the overhead and extra time required for the network requests mean it's probably not worth splitting code.

<comment><USER21> Yep, I agree. Optimization is about tradeoffs :)

At my day job we use app splitting rather than page splitting. Instead of breaking our codebase into individual pages and loading only those files, it's broken into apps. So you might load too much stuff for what you're currently doing, but you're never loading code that's completely unrelated.

A downside to that is that if you hit all our apps in one browsing session, you might download some vendor libraries like 10 times. But it's unlikely that a real user would ever do that.

<comment><USER22> We do something similar, but common code is shared. Webpack has a feature called chunking which we use to put everything from node_modules into it's own bundle which is loaded across multiple apps. Then the app specific code is loaded on each page.

[https://webpack.js.org/plugins/commons-chunk- plugin](https://webpack.js.org/plugins/commons-chunk-plugin)

It does result in code being loaded when it isn't always needed, but in our case most libraries are used in every app.

</comment></comment></comment></comment></comment></comment><comment><USER23> How do I exclude "chrome-extension://" and "extensions::" from the list? I can't do anything with them anyway, so it's just clutter.

<comment><USER14> It's done for you, but you'll have to wait for the next Chrome version. (Or use beta/Canary). Screenshot: [http://imgur.com/zSfShm1](http://imgur.com/zSfShm1)

<comment><USER24> FYI Canary is the bleeding-edge version of Chrome: [https://www.google.com/chrome/browser/canary.html](https://www.google.com/chrome/browser/canary.html)

Mac and Windows only

<comment><USER25> Paul is one of the Chrome devs :)

</comment></comment></comment></comment><comment><USER10> In the CSS file view, isn't it unpractical, that it marks whitespace as unused? That makes it much harder to find rules that are unused.

<comment><USER26> Shouldn't you be minimizing your CSS (and JavaScript) as part of a deployment script, anyway? This tool supports sourcemaps, so it will show you the original CSS.

My major issue with it is that it doesn't seem to take media queries into consideration. It marked as unused a number of styles wrapped in a min-width that happened to be larger than my browser window. Without automation, it's going to be time-consuming to click through every page of a site and resize the browser window from very small to very large.

<comment><USER27> Why minimise it just to use a development tool?

</comment></comment></comment><comment><USER28> Is there an easy way to filter out extensions from the Coverage tab, besides opening it in incognito mode?

<comment><USER14> Yes. We actually implemented this later. Chrome Beta (or dev/Canary) filters them out by default, with a checkbox to opt-in. Screenshot: [http://imgur.com/zSfShm1](http://imgur.com/zSfShm1)

_Edited_

</comment></comment><comment><USER29> "{ Version 57.0.2987.98 (64-bit)

       Updates are disabled by your administrator

"}

Guess I will only be able to comment on these when I get home. The full screen screenshot feature is going to be a welcomed addition. I will especially have to teach it to the BA's since they always want to take screenshots to show to business when design is finished but test is still acting up.

<comment><USER30> What good reason would a sysadmin have to disable web browser updates?

<comment><USER31> It's possible that a new version could have a breaking policy change. For example, all our intranet apps are served over HTTP. At some point, that's going to become untenable due to the changes for browser security requirements.

In general, there's no momentum to make a change that the agency doesn't "have" to make, and when the browser finally refuses to transmit forms over HTTP then we want to know about it before the change is deployed to all the users.

</comment></comment></comment><comment><USER32> I like this, and it's addictive ;) Any way to automatically generate output that consists of the 100% essential code subset?

As suspected: a typical medium.com page contains approx 75% extra code. Most egregious offenders seem to be content loader scripts like embedly, fonts, unity, youtube, etc.

On the other hand, besides net load performance, I'm not really worrying about the "coverage" metric. Compiling unreal engine via emscripten to build tappy dodo may result in 80%+ unused code, but near native runtime worth is a healthy tradeoff.

Try, for example: [http://webassembly.org/demo/](http://webassembly.org/demo/)

<comment><USER33> Not yet, but this will happen soon in Navalia: [https://github.com/joelgriffith/navalia/issues/16](https://github.com/joelgriffith/navalia/issues/16)

</comment></comment><comment><USER34> What happened with shipping everything in a single file and letting cache magic happen?

<comment><USER35> HTTP/2 happened. HTTP/2 allows you to send HTTP requests over a single TCP connection per domain. Headers are compressed. The request overhead is minimal compared to HTTP/1.x.

Caching one big file has the draw back of busting the cache each time the file is updated for any small change.

Caching multiple small files allows you to have a finer grain cache. Only bust the things that updated. And, since it's all the same TCP connection it's now performant to load this way.

<comment><USER36> Can't you do that already by reusing the 1.1 connection? Or is the 2.0 change that requests are now parallel?

<comment><USER35> Yep, more wording was bad. In HTTP/2 it's all parallel.

</comment></comment></comment></comment><comment><USER33> I wrote a tool to automate this (right now it's just JavaScript coverage) here: [https://github.com/joelgriffith/navalia](https://github.com/joelgriffith/navalia). Here's a walk through on the doing so: [https://codeburst.io/capturing-unused- application-code-2b759...](https://codeburst.io/capturing-unused-application- code-2b7594a9fe06?source=linkShare-e0eb0cdc0e08-1499868430)

</comment><comment><USER37> It'd be awesome if there was a button to download a file with the code that's used, and the code that's unused, instead of just having a diff. Hint hint :)

<comment><USER38> Also a "git blame" type view that shows which files use which lines of css/js.

<comment><USER39> It does do that, doesn't it?

<comment><USER38> I meant, of the lines that are green, what line in what html file is causing that line to be green.

</comment></comment></comment></comment><comment><USER40> Excellent timing, I had given up finding a good tool for coverage on JS and CSS and where right now using audits in Chrome trying to find unused CSS and searching through the code to find unused JS on our landing page. Even if it is hard for at tool to find everything that is unused on a page it will show what is used so we know what we don't have to check in the code

<comment><USER33> You should look at [https://github.com/joelgriffith/navalia](https://github.com/joelgriffith/navalia) which can automate this

</comment></comment><comment><USER41> Hurray! Now they just need to make it part of an analytics program so we can let the users tell us what code is never running!

<comment><USER42> Sheesh, you must have awfully tech-savvy users on your sites.

<comment><USER43> He didn't mean it literally.

</comment></comment></comment><comment><USER44> Is there anything similar for Firefox? On the developer tools or as an external extension?

</comment><comment><USER10> Would be super useful if it recorded over multiple pageviews. To find unused CSS+JS and to measure the coverage of tests.

But it seems to silently forget what happened on the first page as soon as you go to the second page.

<comment><USER14> In Chrome 59, indeed it only reports the last viewed page. In Chrome 60 (Beta) and later (including canary), it does what you expect.

Demo: [https://zippy.gfycat.com/PopularWarmCoqui.mp4](https://zippy.gfycat.com/PopularWarmCoqui.mp4)

</comment></comment><comment><USER45> Very nice! The Coverage feature is something I have been waiting for since a long time!

</comment><comment><USER46> This is great, such a useful function. Thanks for posting.

</comment><comment><USER47> Can this be useful when someone uses webpack?

<comment><USER48> Why would it be any different if they weren't? Unused code is unused code.

<comment><USER47> Webpack bundles everything up into one huge .js file, I gotta try how it works with that.

Plus in my current environment (ReactJS + TypeScript + MobX + Webpack) tslint generates errors when I have unused variables and that breaks TeamCity build.

No matter what, this tool is super useful!

<comment><USER49> You can do code splitting with Webpack it's a matter of config and how your code is organized. [https://webpack.github.io/docs/code- splitting.html](https://webpack.github.io/docs/code-splitting.html)

</comment></comment></comment></comment><comment><USER50> When your developer experience depends on how much free time Chrome developers have ...

</comment><comment><USER51> Yesss!!</comment>


Who is the longest-serving programmer? - <AUTHOR> http://www.tnmoc.org/news/notes-museum/who-most-durable-programmer <comment><USER2> I wrote my first program in 1971. I'm still actively programming ([http://daly.axiom-developer.org](http://daly.axiom-developer.org)).

Not the oldest knot in the tree but I'm not dead yet.

<comment><USER3> How many junior programmers do you think you've worked with directly? How many have continued on to long careers and if you know more than a couple of them do you have any clue which of them have been active / programming the longest? Thank you for all of your hard work!

<comment><USER2> I can't recall ever having worked with a junior programmer. All of the jobs I've had involved working with people who were amazingly good at programming. My career probably underlies the old joke... "1 in 3 people can't program well. Look left, look right. If they are both good programmers then you're the 1 in 3."

Most of the programmers I used to work with no longer program. A lot of them "retired into management". I was offered management jobs several times in my career and I turned them all down. I know nothing about management. I can barely manage myself. But management seems to be the likely fate of programmers in their late 30s / early 40s. Management pays more. And nobody wants to hire old programmers as they are "not a good culture fit".

Old programmers have the best war stories though. So there is that.

</comment></comment></comment><comment><USER4> Knuth is 80 and has been programming since at least the late 50s: [https://en.wikipedia.org/wiki/Donald_Knuth#Education](https://en.wikipedia.org/wiki/Donald_Knuth#Education)

<comment><USER5> Some of Knuth's early programming exploits (from his undergraduate days) are described in "Stories about the B5000 And People Who Were There" by Richard Waychoff (see section III, "The Summer Of 1960 (Time Spent with don knuth)"): [http://ed-thelen.org/comp-hist/B5000-AlgolRWaychoff.html#7](http://ed- thelen.org/comp-hist/B5000-AlgolRWaychoff.html#7)

At the other end, he said recently that he still writes two or three programs a week, mostly in CWEB. (If you're not familiar with CWEB, it is his own invention: it's basically C, with preprocessors (ctangle and cweave) that enable literate programming.)

Some of his programs he puts up here: [https://cs.stanford.edu/~knuth/programs.html](https://cs.stanford.edu/~knuth/programs.html) — the most recent is from December 2017. (They are in .w format; if you don't have the patience to install CWEB and run cweave+tex on them, I've typeset them here: [https://github.com/shreevatsa/knuth-literate- programs/tree/m...](https://github.com/shreevatsa/knuth-literate- programs/tree/master/programs) — last updated September; needs another update.)

<comment><USER6> Thanks for typesetting the pdfs for other people to read!

I was going to claim that I've packaged CWEB for Homebrew so it's easy to get for MacOS users. I went to see if it still works and isn't moved to boneyard, and yes, it's there, but git log didn't show me in the commit history. Just to make sure I wasn't nuts I had to check my notes and found the original commit: [https://github.com/Homebrew/homebrew- core/commit/77aa909188b...](https://github.com/Homebrew/homebrew- core/commit/77aa909188bcb604bbb98b584bd0c3af283a38c2) . Apparently there's been some history rewriting that I don't quite understand.

<comment><USER5> Oh great, I was just able to install CWEB with `brew install cweb`. Thanks for your work!

And actually `ctangle` and `cweave` already come with a TeX distribution like MacTeX. So the reason for providing a pre-typeset version is not so much that CWEB is too hard to install; it's just that people tend to not use it properly and either try to read the .w file directly, or (even worse) the generated .c file. :-)

</comment></comment></comment></comment><comment><USER7> Cleve Moler is 78 ([https://en.wikipedia.org/wiki/Cleve_Moler](https://en.wikipedia.org/wiki/Cleve_Moler)), he is popularly known as the co-founder of MathWorks, and co-author of numerical computing libraries such as LINPACK and EISPACK. He maintains a blog ([https://blogs.mathworks.com/cleve/](https://blogs.mathworks.com/cleve/)) and still programs in MATLAB from what I can tell. He talked about a bit of MATLAB history last year in Argonne Training Program on Extreme-Scale Computing (ATPESC) -- [https://extremecomputingtraining.anl.gov/sessions/dinner- tal...](https://extremecomputingtraining.anl.gov/sessions/dinner-talk- evolution-of-matlab/)).

</comment><comment><USER8> I started programming in 1965, first paid programming in 1966 (june). Still programming, even when I was CSO (when nobody was looking).

<comment><USER9> What was your first gig, if you don't mind my asking?

<comment><USER8> First gig was summer after my freshman year working for a EE professor who was researching why the Bonneville Power Administration power distribution network would oscillate in frequency and eventually trip one or more breakers systemwide. This involved producing a state vector of 500 elements and evaluating the eigenvalues and eigenvectors of a 500x500 matrix on a CDC 3500 computer with approximately 35k of memory. To invert the matrix, he would need to read in a handful of rows and calculate the inverse of the matrix incrementally. No small feat.

My contribution to this effort was to read in values for the C matrix and produce it in the format that the rest of the program required. One summer's work.

I met with him a few years ago and he showed me the current version of the program--not much had changed in 40 years, to my astonishment. Also he noted that this whole system was used to decide where to locate Fermilab.

Turns out that the result of the computation showed where the poles and zeroes were for the system. If too close to the y-axis, the system could slip into being an oscilator. Too far to the left, and there was too much damping.

This was my first astonished exposure to the idea that we could build something and not know how it was going to operate. "That thing I built does _what_!?"

<comment><USER10> >...he noted that this whole system was used to decide where to locate Fermilab.

This sounds like a really cool story!

Where can I read more about this?

<comment><USER8> Upon reflection, I don't think I addressed your question well.

I don't have any reference to the decision about Fermilab as it was a verbal discussion. He mentioned that Scoop Jackson, often called the senator from Boeing, was angling to have it located in Washington. My professors friends at Bonneville called him in a bit of a panic to say that the power grid would not be able to handle the load. So he ran a simulation, knowing that power grid rather well, and demonstrated that the lights across the Pacific Northwest would dim every four seconds. Same simulation for Illinois showed no flicker.

<comment><USER10> Thank you. I'll try and hunt down more details :)

</comment></comment></comment></comment></comment></comment><comment><USER11> Peter G. Neumann at SRI worked for Howard Aiken at Harvard programming the Mark IV in 1954 [1]. His short biography says he has been a computer professional since 1953 [2]

As far as I know, he is still active at SRI in computer security, with publications on computer hardware/software design as recently as 2015 [3][4].

[1] [http://www.nytimes.com/2012/10/30/science/peter-g-neumann- an...](http://www.nytimes.com/2012/10/30/science/peter-g-neumann-and-the- hacking-culture-of-the-50s.html?src=recg)

[2] [http://www.csl.sri.com/users/neumann/short.bio](http://www.csl.sri.com/users/neumann/short.bio)

[3] [http://www.nytimes.com/2012/10/30/science/rethinking-the- com...](http://www.nytimes.com/2012/10/30/science/rethinking-the-computer- at-80.html?pagewanted=all)

[4] [http://www.csl.sri.com/users/neumann/#2](http://www.csl.sri.com/users/neumann/#2)

</comment><comment><USER12> Consider Chuck Moore, who appears to be active still and started programming in the 1950's:

[https://web.archive.org/web/20080709050817/http://colorforth...](https://web.archive.org/web/20080709050817/http://colorforth.com/bio.html)

</comment><comment><USER13> Dave Cutler (b 1942) has been _continuously paid_ to write code for 53 years.

<comment><USER14> I'll add about him that he doesn't just occasionally write code as someone retired or a director. He's usually deep in critical parts of current projects ranging from Windows NT back in the day to the Xbox last I saw.

Chuck Moore of Forth fame was the other mention in these comments that just stayed digging deep into systems pushing the state of the art of his style of tiny, flexible, stack-oriented systems. Both of them contributed to real products, too, instead of only theory.

<comment><USER13> Yep, that's what I mean.

I originally started to write something that explicitly called out some of the other examples as cases of talented amateurs (in the best possible sense of the term, and only vis-à-vis actual coding as opposed to producing books and theorems).

But, the cases of Cutler and Moore are probably what we mean by "longest- serving".

</comment></comment></comment><comment><USER15> Started in 1967, in support of my job as commissioning technician (bean counter title - I was only 19 and no degree) at Elliott Brothers Elstree on their 4100 mainframe computers production line. Did hardware design and supporting software/firmware for a decade before switching primary job to RTOS's and firmware. Still employed. I've posted my general CV elswhere here.

Don has the longest run though.

</comment><comment><USER16> Shout out to Kirk McKusick[0], of BSD at Berkeley. Still writing code for the FreeBSD project to this day. He's "only" in his 60s, though.

[0]: [https://en.wikipedia.org/wiki/Kirk_McKusick](https://en.wikipedia.org/wiki/Kirk_McKusick)

</comment><comment><USER17> Vint Cerf started in 1965. He's moved into positions that are more management oriented, but I believe he's deeply involved in technology decisions.

</comment><comment><USER18> Maurice Wilkes programmed from 1950 almost until his death in 2010, so something like a 60 year "service record".

</comment><comment><USER19> I wrote my first program in 1973 but didn't get paid until 1981 for the first time. Still writing code (iOS) today. You don't meet many folks programming for that long today because there were only a few % at most of the number of programmers today. Many dropped out during that time as well.

<comment><USER9> Do you remember your first program in '73? What was your first paid work in '81?

<comment><USER19> I wrote something in Basic in 73 on a teletype terminal but no longer remember what it was. 81 was working for a defense contractor on a source code formatter. In Fortran no less.

</comment></comment></comment><comment><USER20> My wife's dad is 80 and has been programming for work (and play) since he was 26-ish (1965). Good stories.

</comment><comment><USER21> Started in January 1968 on Stanford's IBM-360-67. Still going strong although I'm a little slower and my grasp of the problem isn't always as clear as it was. I don't intend to stop for some time yet.

</comment><comment><USER22> Any ideas on the longest-running program?

I misread the title and now I'm curious.

It'd take a massive effort to keep hardware up for as long as these people have been writing programs for it.

<comment><USER23> [https://www.technologyreview.com/s/538966/what-is-the- oldest...](https://www.technologyreview.com/s/538966/what-is-the-oldest- computer-program-still-in-use/)

<comment><USER8> I would be willing to guess that there may be programs at Allstate Insurance that have been running longer than that.

</comment></comment></comment><comment><USER24> Why bother submitting a 1969 when Knuth is still alive and kicking.

(Does this have to be someone who specifically does software development, or any old computer scientist that likely still codes something here and there?)

</comment><comment><USER25> 1970 here

<comment><USER26> Tell us more! You said in another thread that you got a monthly electronics kit as a teenager, what's your story?

</comment></comment><comment><USER27> Another 100 years and it wont be a person.

</comment><comment><USER28> [http://www.refinery29.com/2017/06/157857/masako-wakamiya- wwd...](http://www.refinery29.com/2017/06/157857/masako-wakamiya-wwdc-oldest- app-developer) 82? Quite possibly 83 now...

<comment><USER29> But she just started a year or so ago, so not a candidate for "longest- serving".

</comment></comment><comment><USER30> Grace Hopper has been programming since 1930s: [https://en.wikipedia.org/wiki/Grace_Hopper](https://en.wikipedia.org/wiki/Grace_Hopper)

<comment><USER31> had been*

She died in 1992

<comment><USER32> She lives in our hearts, we all remember and love her. May her nano wires live on.

</comment></comment></comment><comment> mark-r I can't believe they started out the article with someone who had only been doing it since 1969! That was laughable. Programming wasn't popular back then, but it was common enough that many from that era can still be assumed to be alive. And if you were interested enough to get involved that early, there's a good chance you're still practicing.</comment>


Is NASA Working on a Warp Drive? - <AUTHOR> https://www.popularmechanics.com/science/a32449240/nasa-warp-drive-space-time/ <comment><USER2> Its appaling how badly that site fails without JS enabled.</comment>


Automatically spotting interesting sentences in parliamentary debates - <AUTHOR> https://fullfact.org/blog/getting_closer_automated_factchecking

<comment><USER2> Very cool! I would be interested in seeing more detail on Full Fact's implementation. Is there a technical implementation of the Decision Tree that is shown in the diagram? If so, it would be cool to learn a bit more about how it was encoded/represented.

<comment><USER3> We (I work there) don't have one yet but we wanted to get this line of work in the open asap.

The next steps are (glossing over enormous amounts of work casually): 1- Test that untrained coders have a high level of agreement in how they code different debates the same way 2- Do the same test with people who use Hansard (the record of Parliamentary debates) professionally 3- Iterate the set of categories if necessary to make sure they work as well as possible, given our two tests of (a) distinct and (b) useful categories 4- Code a set of training debates 5- Start developing a machine learning approach to automated coding

That said, I think there might be a shortcut available for at least some categories of applying some simpler heuristics.

So we're working to push this into a useful public system but it's likely to take money and/or expertise we don't have in house and so it will move slowly. In the meantime, we hope doing it openly might encourage others to get on board or explore this approach independently.

Our skillset will help a lot with getting to stage 4 and as we will be able to release the methodological bit and the training data hopefully that will encourage others to build on it.

</comment></comment><comment><USER4> This is a great topic. Some ideas to consider:

-Identify sentences where strong sentiments

-Identify first person sentences (I, me, my)

-Identify second person sentences (you, your)

-Identify sentences that indicates action that _would_ be taken by person/group.</comment>


The Magic 0xC2 - <AUTHOR> https://log.koehr.in/2017/04/09/the-magic-0xc2 <comment><USER2> It reminds me a fun fact, which I noticed when writing a TTF font parser [https://github.com/photopea/Typr.js](https://github.com/photopea/Typr.js)

TTF files have a 4-byte field, where the font manufacturer can put "information about himself" (like the identification). The Adobe company puts an ASCII string "ADBE" into these four bytes.

There is another field for the font manufacturer, which has only two bytes. Guess what Adobe puts into these two bytes? 0xadbe :D

<comment><AUTHOR> That must have been fun times!

</comment></comment><comment><USER3> Am I the only one struggling to understand the hex dump? The author says "0x79 is the z in the ASCII table." That's wrong. 'z' is 0x7a.

The author also says "In UTF-8 all characters after 0x79 are at least two bytes long." That's also wrong. All characters after 0x7f get encoded as two or more bytes.

<comment><USER4> He skips all the numbers where the hex-encoding has an A-F as the least significant digit. This makes everything bizarre.

<comment><USER5> But after 99, they are no longer skipped. Go figure.

</comment></comment></comment><comment><AUTHOR> So what most probably happened is that FileReader.readAsBinaryString()° defaults to FileReader.readAsText()°° since it's deprecated. At least that is what I saw in Chromium. As soon as I used readAsArrayBuffer the problem went away.

°) [https://developer.mozilla.org/en- US/docs/Web/API/FileReader/...](https://developer.mozilla.org/en- US/docs/Web/API/FileReader/readAsBinaryString)

°°) [https://developer.mozilla.org/en- US/docs/Web/API/FileReader/...](https://developer.mozilla.org/en- US/docs/Web/API/FileReader/readAsText)

</comment><comment><USER6> If you dive head-first into Python's string behaviour, you'll eventually learn the hard UnicodeDecodeError-way what the difference is between a stream of bytes/octets and a text made of unicode code points. Much the same as learning that a timestamp without a timezone is not worth much, a text as a stream of bytes is not much worth without the encoding it is in. PHP also has nice footguns in that area.

<comment><USER7> > PHP also has nice footguns in that area.

PHP would deal with uploaded files by itself and write them correctly and directly to disk (unlike some Java implementations like Nexus which buffers in RAM, you can guess what happens).

As for ordinary POST/GET parameters, it stores them in a string aka a byte stream which you can then post-process e.g. by translating to UTF-8 based on the browser encoding header. So basically the only way to shoot yourself is if you're doing substr and friends on user input instead of using the mb_ variants.

<comment><USER8>
      unlike some Java implementations like Nexus which buffers in
      RAM, you can guess what happens

I can't guess. It's 2017 and everybody knows that RAM is unlimited and nobody need ever worry about an OOM condition. Assuming, for the sake of argument, that RAM isn't unlimited, it's unrecoverable, anyhow--modern language designers and Linux kernel architects have made sure of it.

</comment></comment></comment><comment><USER9> Sounds like you're confusing the integer code point and the integer representation of characters.

Many programming languages internally represent chars as UTF-8 or UTF-16, so when using libraries to read bytes into chars everything get's mangled.

Check out this guide for more in-depth look at the mangling that can happen. [http://cweb.github.io/unicode-security- guide/background/](http://cweb.github.io/unicode-security-guide/background/)

</comment><comment><USER10> Isn't this why FTP had separate Binary and Text transfer modes?

<comment><USER11> It's similar, yeah, but actually it wasn't binary or text mode, it was IMAGE, ASCII and EBCDIC modes. Image was essentially binary, but the other two would translate text encodings so that you could convert documents to a format that was readable on other machines.

<comment><USER12> IIRC some FTP (client-side? server-side?) implementations even "helpfully" did the DOS to Unix line ending conversion and back when ASCII was used and it involved a Windows machine.

</comment></comment></comment><comment><USER13> I had a similar thing with glitched images once. We had to retrofit a middleware onto a site that would obfuscate email addresses. It used a regex to spot valid emails and replaced them with a hash. It also knew what urls and form parameters expected emails and used a lookup table to translate them back. This was sufficient to anonymise usernames without breaking any functionality on the site.

Turns out, we forgot to check content type, and valid emails according to the regex we had used were surprisingly common in binaries.

</comment><comment><USER14> So the server was erroneously treating the images as text?

<comment><AUTHOR> Not the server but the browser. It looks like FileReader.readAsBinaryString is falling back to readAsText since it's deprecated. Just an assumption though. I couldn't find any better evidence.

</comment></comment><comment><USER4> First guess: The author is running into something related to [https://developer.mozilla.org/en- US/docs/Web/API/XMLHttpRequ...](https://developer.mozilla.org/en- US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers).

</comment><comment><USER15> > 0x79 is the z in the ASCII table.

The most confusing technically correct statement of the year.

Edit: Sorry, scratch "technically correct". Need more coffee.

<comment><USER16> How is it technically correct?

<comment><USER17> If you define "the z of _x_ " as the last element of _x_ , then it is correct. Whether such a definition is reasonable (especially when _x_ already contains an element specifically named "z") is left as an exercise to the reader.

EDIT: I suppose this doesn't include 0x7A-0x7F either so it's not even technically correct under that definition.

<comment><USER18> Base 10 society strikes again! This happens to me too, it's hard to think of [0-9] being only 62.5% of base 16.</comment></comment></comment></comment>


W3Fools - A W3Schools Intervention - <AUTHOR> http://w3fools.com/ We are passionate about the web, learning, and craftsmanship. We want you, as web designers and developers, to be successful in your careers. We feel, though, that W3Schools is harming the community with inaccurate information. Like any other authoritative educational resource, W3Schools should both hold itself to, and be held to, the highest standards.<p>We hope we can illuminate why W3Schools is a troublesome resource, why their faulty information is a detriment to the web, and what you (and they) can do about it.<p>~ members of the Front-end Dev Community, January 14th, 2011 <comment><USER2> W3Schools is great because it covers _everything_ , in an approachable manner. For the one occasion a year I use XPath, W3Schools has a nice refresher and function reference.

Sure, the information may be imprecise or just plain wrong, but we have to remember that this is for absolute beginners. Merely having errors does not make w3schools worthless, and a lack of errors does not make alternatives better.

The material on W3Schools is split into bite-sized chunks, along with numerous examples, references, quizzes, try it yourself areas... None of the alternatives suggested are this well organized.

Just think what kind of HTML tutorial could have been created with the time and effort it took to build w3fools.com.

<comment><USER3> How is "numerous examples, references, quizzes, try it yourself areas" even worth anything if said examples, references, quizzes and so forth are... incorrect?

It's like saying, "Well, at least we have textbooks! Too bad half of them say the world is only 6,000 years old, but hey! No body's written a better text book than this yet!"

And how is it decent as a refresher and function reference, if it's just refreshing fallacies? Try using something that's actually accurate. In fact, MDC has a pretty decent xpath section: <https://developer.mozilla.org/en/xpath>

<comment><USER4> The organizational differences between the two sites:

1) <http://www.w3schools.com/xpath/> 2) <https://developer.mozilla.org/en/xpath>

pretty clearly show why W3Schools is capturing so much beginner mindshare.

From 1), it's trivially clear where to start: the link is labeled "Start Learning XPath Now!", and even if you skip that, below there's a linear list of topics. When and if I do click on the "start" link (or the first item in the ToC), I'm greeted with what is very clearly the first part of a walkthrough. Going through the sections, it's all pretty clearly marked, chunked up into easily digestible pieces, etc. Perfect for a first glance through the topic, even though I'll definitely admit that in general W3Schools content leaves something to be desired.

Conversely, from 2), the Mozilla.org page, it's pretty difficult to figure out where I want to be clicking, assuming I know nothing. After I discard the "tools" section as probably irrelevant to learning from scratch about this, I'm left with the "Documentation" column. So far, so good.

The first item in that list says "Introduction to using XPath in JavaScript", which still sounds pretty good, except wait! At the top of the page, it says that XPath is primarily used with XSLT, but this tutorial gives an intro to XPath _without_ XSLT, so that can't be right...why would the special case that _doesn't_ match what people usually use this for be the first item in the documentation list?

And yikes, those other links don't really look like introductions to XPath, either, they look like special topics about XPath. The last link (<http://www.xml.com/pub/a/2000/08/holman/>) is probably the closest to what a beginner might want, but it's a _lot_ of material, not the ~10 minute introduction to the topic that we'd really be looking for.

It's alright, though. If we poke around at the "Using XPath" link (<https://developer.mozilla.org/en/Using_XPath>), we find that "Mozilla" (yeah, I'm aware that's a wiki, but you know what I mean...) has a suggestion as to where to go to learn more:

 _This article does not attempt teach XPath itself. If you're unfamiliar with this technology, please refer to W3Schools XPath tutorial._

Sigh.

</comment></comment></comment><comment><USER5> While everyone else was busy bitching about ExpertsExchange, a few people got together, built a much better alternative, and now dominate Google search results.

As far as I can tell, these guys are dismissing that option because it's too much work.

<comment><USER6> I'm dismissing it because the information is wrong. I also contribute to <https://developer.mozilla.org/en-US/> in support of the <http://promotejs.com/> initiative.

So as far as I can tell, you're making comments that are wrong because you're not informed.

<comment><USER5> I think you might have missed my point.

ExpertsExchange was useful because it had a broad range of obscure technical information, and the ability to get specific questions answered, but it was spammy and a pain to use. StackOverflow came along, took the good parts of that model, combined them with a clean interface and an open community, and won.

W3Schools is useful because it's a good barebones reference that assumes zero prior knowledge of the subject, but it's somewhat shady in how it represents itself, and the information isn't always accurate/complete/up to date. X came along...

As far as I can tell, neither of the two sites you linked, or the parent article, are a good reference for absolute beginners, which is the only thing that will either beat W3Schools or force them to improve.

</comment></comment></comment><comment><USER7> First let me say, I am a web developer and use W3Schools as a reference. The web would be a worse place without it. They deserve their high Google ranking.

So to attack something that is on the whole good, which may be 99% accurate but not 100% accurate, seems mean-spirited. Someone put a lot of time into this, and it's a shame they didn't do something productive instead of destructive.

<comment><USER8> > it's a shame they didn't do something productive instead of destructive.

The people behind this project are also developers and contributors to projects like jQuery, Dojo, Prototype, Chrome Developer Tools, jQuery UI, svgweb, HTML5 Boilerplate...

</comment></comment><comment><USER9> I agree with the sentiment here, but not the way in which this goes about it. W3schools' name is a little scammy, but the info they house is useful.

The issues w3fools cite are pretty esoteric and/or very nit-picky. For instance:

      | www.w3schools.com/tags/tag_q.asp.
      | Browser Support. The <q> tag is supported in all major browsers,
      | except Internet Explorer.
      This is blatantly false; <q> tags work just fine in IE8.

Uh, yeah, I guess it works just fine in IE8, but it doesn't work in IE6 or IE7, both of which are called 'Internet Explorer'. So saying it doesn't work in IE is technically correct. It just could be more specific.

W3schools obviously fills a niche that the W3C isn't filling. Reading a spec for HTML x.x is useful, but not viable when you're trying to get stuff done. W3Schools has gone through the work of reading the spec and turning it into a good reference. Good for them.

<comment><USER6> "W3schools obviously fills a niche that the W3C isn't filling"

This alone is the biggest problem - that you think they are somehow related. They are not.

"W3Schools has gone through the work of reading the spec and turning it into a good reference"

No. You're wrong. THIS: <http://dmitrysoshnikov.com/ecmascript/>

...is a good reference based on a spec.

<comment><USER9> I think your example proves my point perfectly. A blog post on this guy's website might be more technically correct and complete, but it certainly isn't easier to use, or actually reference when you just want to look up how the string.replace() method works, for instance. I think people are underestimating the utility of the easy organization that w3schools provides. They make it accessible, quickly.

</comment></comment></comment><comment><USER10> Don't bitch, fix it. Build your own w3schools and make a go of it, _obviously_ these are huge oversights that need to be addressed by competent technical professionals that are as dedicated as these guys are.

Really, as long as you define yourself by attacking such a mediocre institution as w3schools you still have a ways to go.

Google didn't get where they are by pointing at altavista and their crappy search results, they got where they are by doing better.

No 'rallying' required, all it takes is spit and determination. Of course that's a lot harder than bitching.

<comment><USER11> Maybe you missed this: <http://w3fools.com/#build-one-yourselves>

<comment><USER10> I don't see any building, I just see a strange kind of entitlement mixed with a taste of blackmail.

Really, they're just bitching about the google rankings when you really think about it, because 'they know closures' or something to that effect.

w3schools is ranked highly because lots of people linked to it and it seems to have helped them in some way or other. If you feel that that ranking is not correct then maybe start your own search engine as well while you're at it?

<comment><USER12> Truth through Google ranking?

Yes, you can gain a massive audience by telling lies people want to hear i.e. "I can teach you how to be a competent web developer!" They are still lies and they deserve criticism. There are extreme errors on that site that will break you for years and cause a lot of damage. They have a blatant SQL injection bug in their MySQL lesson, for example.

And "I don't see you doing any better" is schoolyard justice. An entry level site that's accurate and current is a fine idea. Someone should do it. That's irrelevant to this matter.

<comment><USER10> In grade school I learned that the country I live in can be represented on a flat map. That doesn't mean there aren't any levels of knowledge above grade school.

w3schools does not portend to be the 'be all end all' of knowledge about the web or developing on the web. They're just another resource and they probably serve their intended purpose a very large number of the times.

Example code usually does not come with guarantees of correctness or even applicability to your problem. It just shows you the basics. It's the cut-and- paste mentality that causes such samples to be used in production code and that's a real problem, but that problem does not lie with the source of the information.

A MySQL lesson that shows you the basics is explicitly _not_ going to go in to details like prepared statements, sql injection and prevention and so on.

Just like you don't teach physics to a kid that you're teaching to walk.

If you're using w3schools as a source for cut-and-paste examples or even best practices then you're doing it wrong, think of it as the 'grade school' of web development. Good enough to get your feet wet, not good enough to build an enterprise grade web application.

</comment></comment></comment></comment></comment><comment><USER13> I feel like the world just told me Santa Claus doesn't exist.

<comment><USER14> This explains all the advertising on their site that I've been ignoring for the last decade. Mind = blown

</comment></comment><comment><USER15> I think w3schools would benefit greatly from an open dialog with the community or perhaps an advisory board.

But launching a frontal assault isn't the way to solve the problem.

I note with irony that the w3fools site displays as a blank page in IE-8 ;<(

<comment><USER16> If you read the content of the site, w3schools was attempted contact multiple times. They also browsed the github repo and started making changes to their site to save face.

You're absolutely right, if they made it something community driven and contributed to, it'd rock! That's why MDC is linked to, it's a wiki!

p.s. ie8 working cool for me :)

</comment></comment><comment><USER17> "The whole concept of closures doesn't exist at W3Schools. Also, they never go over the difference between a function declaration and a function expression. I know this is for beginners, but they could at least put it in the advanced section, or make it apparent that functions are first-class?"

Damn, that is awful.

</comment><comment><USER18> I went thru <http://w3fools.com/#htmlsucks> and errors reported there are very minor (I guess using Facebook API documentation trained me to be more forgiving).

The w3school is a perfect for what it is. Is it reference? No - they don't claim to be. Is it school for beginners? Yes - and the excellent school. The organization is very good, there are examples, etc.

Can somebody make better school which is wiki based? Yes.

<comment><USER19> "Is it reference? No - they don't claim to be."

They don't? <http://gyazo.com/61a797188fa6045b23e6f5cf22006e1c.png>

<comment><USER20> i like how the menu's on the right :) but then again, maybe i'm not seeing the whole picture.

</comment></comment></comment><comment><USER21> Thanks for the post. I must admit,I thought w3schools was affiliated with the w3c. Good to know its not.

</comment><comment><USER22> The top placement in Google search results for almost anything W3Schools covers is another sign that Google is broken, in my view.

reference.sitepoint.com is a much better reference for anything they cover -- easier navigation, better presentation, and most importantly, more depth and advice on important topics. In a fair fight, it would far outrank W3Schools.

</comment><comment><USER23> W3Schools has many omissions and contains much that is apocryphal, or at least wildly inaccurate, but it scores over more pedestrian work in two important respects. First, it is slightly easier to use; and secondly it has the best SEO of any major beginners' web tutorial.

</comment><comment><USER24> huh I always use w3schools just to quickly see what a language is. I never took it as serious learning, that's for books and other sources.

Attacking this site is like attacking a flyer for being too gimped on information.

<comment><USER11> So what you're saying is W3Schools should not be called out for posting misinformation?

<comment><USER25> A the risk of being tarred and feathered for pedantic behavior, the W3Schools doesn't post misinformation. They posted information that was accurate at the time, and then let is sit up there for 5-8 years as the state of the art improved.

[edited for grammar]

</comment></comment></comment><comment><USER26> While the author offers alternative places to learn CSS, Javascript, and HTML, PHP and SQL didn't seem to make the cut. If W3Schools is doing a poor job, what are good PHP ans/or SQL resources?

</comment><comment><USER27> hmm I always use W3Schools but I have never used to learn anything just to refresh my memory on something

</comment><comment><USER28> Would it be wrong to point out that the missing parts of the source for w3fools.com ? Or observing that placement of things like the google analytics code at the bottom, instead of the head?

Or would that make me pedantic?

<comment><USER29> Regarding the placement of GA, this is intentional. You don't want to count a visit before the page has actually been displayed to the user.

<comment><USER11> Sauce: [http://code.google.com/apis/analytics/docs/tracking/gaTracki...](http://code.google.com/apis/analytics/docs/tracking/gaTrackingOverview.html#standardSetup)

</comment></comment></comment><comment><USER30> If you read through the content you'll see it's not an attack. It simply addresses some major flaws in W3Schools as well as some sketchy business practices.

<comment><USER31> Perhaps the using the term "fools" could be seen as an attack. They do bring up some interesting grievances.

<comment><USER32> Their points are valid of course...but it seems laughably naive to treat this as some kind of cause that developers should rally around. And their response to "why don't you build a better version' made me laugh - it sort of encapsulates internet culture in general. I'd like to see more links to better sites for rank beginners than this "call to arms" stuff.

<comment><USER19> I _wrote_ the "why don't you build a better version" text as a response to "Internet Culture," which mandates that if you want to point out that something is bad, you actually have to build a better alternative yourself.

If I ride on a boring, crappy rollercoaster, I don't need to open up my own theme park in order to air my frustrations.

A lot of the people who worked on w3fools spend a lot of time helping actual other human beings who need support in building websites, and encounter the errors from w3schools regularly, and we invest our time in those and other endeavours. W3schools said "we're going to spend OUR time on building an entry-level reference that everyone can use," and we want

a) the community to be well-aware of its caveats b) it to improve</comment></comment></comment></comment>


Amazon is developing three new high-profile sci-fi TV adaptations - <AUTHOR> https://techcrunch.com/2017/09/29/amazon-is-developing-three-new-high-profile-sci-fi-tv-adaptations/ <comment><USER2> Previous discussion:

[https://news.ycombinator.com/item?id=15362522](https://news.ycombinator.com/item?id=15362522)

</comment><comment><USER3> Nice, Snow Crash! I've been waiting for an adaptation for that book. Some interesting writing styles (like the perspective change from Hiro to the girl), but the story overall was great.</comment>


Dijkstra: My Recollections of Operating System Design (2001) [pdf] - <AUTHOR> https://www.cs.utexas.edu/users/EWD/ewd13xx/EWD1303.PDF <comment><USER3> He has really nice handwriting.

<comment><USER4> Ha _d_ , and many people think so. Somebody even made a TrueType font called Dijkstra ([http://ufonts.com/fonts/dijkstra.html](http://ufonts.com/fonts/dijkstra.html))

If you want to keep one, it is worthwhile to download it from a few sites; multiple variants exist. AFAIK the only difference between them is the character set (a couple of fractions, IIRC)

<comment><USER5> >His handwriting was so perfect and distinct that in the late 1980s Luca Cardelli, then from the DEC Systems Research Center, designed a 'Dijkstra' font for Macintosh computers. Soon after, Dijkstra received a letter typeset in this font and thought it was handwritten until news reached him about the creation of this font.

Ddsger Wybe Dijkstra (1930–2002): A Portrait of a Genius - <USER2> [http://homepages.cwi.nl/~apt/ps/dijkstra.pdf](http://homepages.cwi.nl/~apt/ps/dijkstra.pdf)

</comment></comment></comment><comment><USER6> Many times I wondered how OSes relates to Conway's law:

        Any piece of software reflects the organizational structure that produced it.

Do OSes reflect the society that built these?

If we have "Operative Systems", are we ever get "Management Systems" or "Directive Systems"?

<comment><USER7> Operating systems do in fact frequently tend to expose internal organizational boundaries of the company that produces them.

This tends to be more obvious when you start looking at packaging, interface, or documentation where different teams responsible for providing different parts of the product provide components.

</comment></comment><comment><USER8> I saw "utexas" and "2001" and got really hopeful this was Dijkstra. Yay that it is indeed!

<comment><USER9> We'll put his name back in the title. (It was there before.)</comment></comment>


Show HN: Vocable – open-source app that helps those who can't speak - <AUTHOR> https://github.com/willowtreeapps/vocable-android <comment><AUTHOR> This is an open source application that helps people who can't speak communicate with others. I posted the Android github, but it's also an iOS project. Along with development help, we also need help translating this app.

website: [http://vocable.app/](http://vocable.app/) iOS Github: [https://github.com/willowtreeapps/vocable- ios](https://github.com/willowtreeapps/vocable-ios)

<comment><USER2> Cool to see AAC trending on hacker news! My wife is an SLP so the speech language/tech intersection is a point of interest for us. If I may ask: how did you source contributions from SLPs?

<comment><AUTHOR> We call around and get SLPs advice and contributions! We haven't been able to get them more recently, but we're still looking :D

</comment></comment></comment><comment><USER3> Really cool, great work!

Only weird thing I feel is the video. For being an application all about empowering people to be able to "say" stuff without speaking, it doesn't have a lot of demonstration of it actually being used for communicating with people. Most of the time there is music in the background, otherwise it's just a short section of the video with what results you can expect from the app, or people who can actually speak saying something.

</comment><comment><USER4> Interesting, remember seeing a thing on 60 minutes one day randomly flipping channels about non verbal with autism using iPad's to talk. A cool use of tech! Open source is cool too, I know some of these apps are 100 to a few hundred dollars.

Wasn't expecting it could be controlled with head movements. Kinda reminds me that once I was thinking It would be cool if some way tech could read your mind but I don't know if that'd work well and probably could be used for bad. haha. I'm a horrible speller. Then also I feel I can think out code faster than I can type it - so that'd be cool if you could just stare at a screen, click your mouse somewhere and just think code and it writes it.

</comment><comment><USER5> The Vimeo video says that spinal cord injury affects ~300,000 people in the US, and also says that's 2% of the population. Is that percentage referring to something else, or is that a typo?

</comment><comment><USER6> Have you had experience with non verbal autistic children ? Would you say this app is geared toward that persona (sorry to reduce it a persona)? if not, would you know what is missing ?

<comment><AUTHOR> This app is for anyone that needs it, and we're happy to make changes to it so that more people can use it. We've been told that a way to add pictures would be nice, and we'd love to add that feature in. We're focusing on words and sentences right now just because it's something that isn't widely available.</comment></comment>


GitNotifier – Email notifications for selected GitHub repository/profile events - <AUTHOR> https://gitnotifier.io/ <comment><USER2> I'd suggest running this by the Git project, considering they applied for a received a trademark specifically to crack down on use of the Git brand like this, and wrote up a pretty detailed post earlier this year:[1]

> this is necessary to prevent dilution of the mark for other uses, but there > are also cases we directly want to prevent. [...] For example, imagine a > software project which is only tangentially related to Git. [...] We don't > endorse it, and it's just using the name to imply association that isn't > there.

Given that this has basically nothing to do with Git but is instead built around the GitHub API, the name here is a little problematic.

If it weren't the case that this is already such a problem, I'd say you missed out on the opportunity to call this "GitNotified".

1\. [http://public- inbox.org/git/20170202022655.2jwvudhvo4hmueaw@...](http://public- firstname.lastname@example.com/)

<comment><USER3> Author here, the project was originally named GitHub Notifier, however shortly after launch the legal department of GitHub contacted me and was very helpful to guide me through resolving the issues with the naming, they even sent me a mug to compensate for the trouble of going through the name change even though I was clearly violating their terms.

<comment><USER2> It sounds like GitHub talked you out of using a name that was stepping on their own trademark and into using one which was stepping on someone else's (and that they knew about). If you're willing to share the conversations you had with them, that would be pretty interesting.

</comment></comment></comment><comment><USER4> On a related note, is there any git hosting service that will produce RSS feeds with inline git diffs?

I'm rebuilding a hacky RSS feed generator that used bash, cron and webSVN with git, and I've not found any hosted git remotes that produce RSS with diffs inline so I can review changes in my reader.

<comment><USER5> The first thing that came to my mind is you could use Yahoo!Pipes for this. The second was "oh!".

<comment><USER4> Even before they shut it down, Pipes was a bad fit -- it's preferred data format is RSS, and that's the very thing we're lacking here. It's also very error prone; one small change in the HTML and your scraper needs to be rewritten to adjust.

</comment></comment></comment><comment><USER3> I'm the author, feel free to ask me any question, I'm currently in the (albeit very slow) process of rewriting the whole project in Elixir. I'm also planning a few new features like organization notifications and better stats.

</comment><comment><USER6> I have been using this for a while now and really appreciate the extra notifications. Several times I have found interesting forks of my own projects through GitNotifier emails.

</comment><comment><USER7> GitHub should offer this - surprised that they don't. Also, I would love to get stats on repo views in addition to forks/stars, etc. - EDIT - Thank you fs111

<comment><USER8> They provide it through RSS feeds.

</comment></comment><comment><USER9> Nice.

It looks like this will only send me notifications for my personal account. Is it possible to get them for the (public/open source) Github organization I created?

<comment><USER3> Hi, not at the moment, but since it's a frequently requested feature, it's on the roadmap.

</comment></comment><comment><USER10> Love the name! Very straightforward. It should be at GitHub Marketplace</comment>


Ask YC: Stats on Commenting before Reading - <AUTHOR>

Occasionally, I read a comment that seems to plainly ignore the main points of the article: the comment seems to have posted, a'la Slashdot, before they've even read it.<p>I wonder if my impressions are correct? Do many people comment before clicking the article, or within a minute or so after they hit the comments page? We could filter out replies to subcomments -- I'm just interested in whether or not the Slashdot peanut gallery is starting to be replicated here. <comment><USER2> Sometimes I comment without reading when the title of an article suggests it's something that could (and thus probably should) be answered in a sentence or two.

<http://news.ycombinator.com/item?id=180036>

<comment><USER3> Unfortunately, another, connected problem that seems fairly frequent is that of misleading titles which bear no resemblance to the title or content of the linked article. Particularly when it's reprased as a question the article doesn't ask (or attempt to answer). I'm never sure what to do in that case - upvote it because the article was good, or not, because it was misrepresented on n.YC.

</comment></comment><comment><USER4> Often times, someone will write a comment stating a fact, regardless of the article, that may be completely untrue, completely idiotic, etc., that can warrant a reply without the need to read an article. Other than that, chiming in with criticisms and opinions without reading is stupid.

Oh, I didn't notice the second paragraph.

<comment><AUTHOR> Irony.

</comment></comment><comment><USER5> I'm not sure if comments that _plainly ignore the main points of the article_ are totally, or even mostly, from people _before they've even read it._ They may be from people who just don't get it, whether from skimming or not paying close enough attention.

And I don't see how filtering out _replies to subcomments_ solves anything. Often those are the most interesting conversations. I suppose one could have +/- to expand subcomments easily.

<comment><AUTHOR> It's precisely because I'm unsure about this that I want to look at the data.

I apologize for the ambiguity -- I didn't mean to suggest removing the ability to subcomment, only that the data I want is the proportion of people commenting on an article before reading or rapidly after their first click -- and whether that proportion is changing substantially.

<comment><USER6> I post comments all the time that have nothing to do with the main point of the article. That doesn't mean I haven't read it. Usually it just means the article reminded me of something that I thought other people would find useful.

<comment><AUTHOR> But this behavior wouldn't trigger my alarms unless it's changing in magnitude over time for lots of different people. Whereas, I fear a portion of our new users do this on a fairly regular basis -- which would show an increase in the 'commented before read proportion'. Is this actually happening? I'm not sure.

</comment></comment></comment></comment><comment><USER7> One behavior I think is good, is to disclose that you actually didn't read the article at the beginning of the comment.

I think this behavior should be generally accepted _if you actually read the other comments_ as to not duplicate something that was already said.

</comment><comment><USER8> Well, you could use on of the YC post datasets and come up with the stats yourself? <http://news.ycombinator.com/item?id=182374>

<comment><AUTHOR> Is there access to click data in that dataset? I wouldn't suspect so, because it's kind of a privacy concern.

</comment></comment><comment><USER9> There have always been comments like that. I think sometimes it's from not reading the article, sometimes from skimming and overlooking important parts.

</comment><comment><USER10> I try and read before posting but if the title is descriptive enough (I assume) then I don't.</comment>


A homebuilt MOS 6502 based microcomputer system - <AUTHOR> http://www.grappendorf.net/projects/6502-home-computer <comment><USER3> It's so damn cute! Part of me wants to believe that the market could really use a Model 100-type system that is easy to carry, handles the basics and has batteries that last forever. But that's just my inner geek; such a thing would today be a niche product for enthusiasts and special use cases at best. What most people want is a MacBook Air. Or an iPad.

<comment><USER4> I don't know that its inapplicable to todays education market, to be honest. You can learn a lot about computing with an old 8-bit machine that is completely _lost_ on the modern developer.

Maybe if someone put LOAD81 into a small AVR-based, portable box similar to the one in the article, we'd have a new revolution in software development education. Too many times students of today leave the classroom thinking "the IDE will do all the work for me". This is a highly specious and unproductive mindset, imho .. solved by a little contact with micro-controllers and mini- tools.

<comment><USER5> [http://geoffg.net/maximite.html](http://geoffg.net/maximite.html)

That project didn't seem to get much traction.

Maybe it could be achieved with a tweaked Linux on RPi? Create a specific development environment and run a variety of competitions. Things like 1k, or 7DRL, or whatnot.

</comment></comment></comment><comment><USER4> An excellent project .. I'm already jealous and want one! :)

I think there is a lot of potential for machines like this to make a return to relevance in this day and age. I'm using my old 8-bit collection (still working) to teach my kids computing at the most basic level - I can sit them in front of our Oric Atmos battlestation, which in the 21st Century is fulfilling all the dreams of the 80's, and give them a few hours to figure out how to do things without worrying about dodgy Internet distractions, overly burdensome IDE installations, irrelevant tools and utils .. the thing just plain works, from power on until sunrise. And the kids have a blast with direct interaction - when they type something, something happens .. there's no waiting, no distractions. Still an excellent learning platform - <USER2> demonstrates just how arbitrary the value of computers is, in this day and age.

Old computers never die - their users do!

<comment><USER6> I agree - how old are your kids and how did you get them started in being interested with 8-bit systems?

<comment><USER4> 4 and 7, and all I had to do is set it up and turn it on - they took over from there .. ;)

</comment></comment></comment><comment><USER7> I really like reading about projects like this. If I had the means, the patience and the time, I'd do a similar project myself.

Here's Quinn Dunki's Veronica, another 6502 homebrew computer project: [http://quinndunki.com/blondihacks/?p=1937](http://quinndunki.com/blondihacks/?p=1937)

</comment><comment><USER8> Hello, nice project, just one thing, as reported here: [http://www.grappendorf.net/projects/6502-home- computer](http://www.grappendorf.net/projects/6502-home-computer) the author states the 6502 was "...an 8-bit MOS 6502 CPU that was used in many popular home computers of the 1970s and 1980s like the Commodore 64..." which is not correct, the 6502 was on the Commodore VIC-20, when the Commodre C64 was equipped with a 6510 :-)

<comment><USER9> Which is a 6502 with an additional 8-bit I/O port.

</comment></comment><comment><USER10> I'm building an 8-bit microcomputer myself using the popular AtMega328p (basically and Arduino board), as an excuse to learn electronics. Turns out I'm mostly learning AVR stuff, because the MCU will do most of the work; but I digress.

What I love about this project is the keyboard. I'm using the "follow the standards" approach implementing PS2 protocol with a Mini-DIN-6 connector to use an standard PS2 keyboard, but turns out rewiring an existing keyboard could be a good option too (although I guess it depends on the keyboard type).

"Replicability" is a nice thing to have in this kind of project, but not really essential. Well done!

</comment><comment><USER11> Back in the day, I wrote the first book specific to the Apple II and programming the 6502 on that platform. It was pretty popular at the time, and Doom's creator, John Romero, started out with it. Recently Chris Torrence revived the book (Lulu), and it's online as well from the original articles. [http://www.softalkapple.com/content/assembly-lines-roger- wag...](http://www.softalkapple.com/content/assembly-lines-roger-wagner- part-1)

</comment><comment><USER12> Very interesting project.

Although I would rather use Forth, or add Assembly capabilities to the BASIC like BBC BASIC, instead of C.

<comment><USER13> I think you may be quite unique (impressively, I may add!) that you'd turn to Forth ahead of C.

<comment><USER14> On 6502-based computers, C was highly unusual. Not only was C not nearly that widespread in hobbyist computing, but it's really painful on an 8-bit CPU with such a tiny stack (256 bytes) and few registers.

Forth, on the other hand received lots of attention for its small size and compact code, and e.g. I remember articles extolling Forth as easier to learn than BASIC at the time....

<comment><USER15> It's not the runtime that's the problem but the compiler. Though there have been C compilers on 8 bitters.

<comment><USER16> I used to use a C compiler for the Z-80 called BDS C. BDS stood for "Brain- Damaged Software" because it didn't implement floating-point.

</comment></comment></comment></comment></comment><comment><USER17> Why do you removed the monitor from the main firmware ? It's perhaps one of the most useful things that you could have there. Also, perhaps you should been clone Woz's monitor commands. It allow to list&edit chunks of ram in a quickly way.

</comment><comment><USER18> Neat! There was a pretty similar-looking machine back in the day: [http://en.wikipedia.org/wiki/TRS-80_Model_100](http://en.wikipedia.org/wiki/TRS-80_Model_100) though with an 8085 instead.

<comment><USER19> There as going to be C64 laptop, but Commodore's CEO at the time, Marshall Smith, was a total retard (mba recruited from a company selling screws and pipes), and canned the project after TANDY people told him its a bad idea :))))

[http://www.floodgap.com/retrobits/ckb/secret/lcd.html](http://www.floodgap.com/retrobits/ckb/secret/lcd.html)

<comment><USER14> There was a C64 "luggable", though: The SX-64:

[https://en.wikipedia.org/wiki/Commodore_SX-64](https://en.wikipedia.org/wiki/Commodore_SX-64)

(I've only ever seen one of them; they were crazily impractical)

<comment><USER19> I learned about it only very recently thru youtube subscription to a fellow awesome nerd PatheticComputing

[https://www.youtube.com/watch?v=hCO_3KXMde4](https://www.youtube.com/watch?v=hCO_3KXMde4)

</comment></comment></comment></comment><comment><USER20> looked through the first few entries and it seems like a very nice step-by- step writeup. Makes me want to build one as well.

I really shouldn't add another thing to the giant stack of projects I have around though... (especially since I tend to treat it as a stack instead of a FIFO, so it "somehow" doesn't ever get smaller)</comment>