A world war has begun. Break the silence. - <AUTHOR> http://johnpilger.com/articles/a-world-war-has-begun-break-the-silence- <comment><USER2> > Ukraine - once part of the Soviet Union - has become a CIA theme park. > Having orchestrated a coup in Kiev, Washington effectively controls a regime > that is next door and hostile to Russia: a regime rotten with Nazis, > literally.

This bullshit has a place on russian state television, not on HN frontpage.

<comment><USER3> Yep. Propaganda echo.

Russia has nothing to offer to Ukraine today. Literally nothing.

> russian state television

Word "state" is redundant in context of today's Russia. Only oppositional TV station is Dozhd (aka TV Rain) - and it's Internet only.

</comment></comment><comment><USER4> #2 on the front page and no comments? Come on people, let us know what do you think. Without passing judgment, it was extremely strange to see such an out- in-the-left-field opinion piece on HN homepage.

<comment><USER5> I don't think support for Putinism and Russian militarism could be called "leftwing" using any normal definition of that word.

<comment><USER6> I don't believe either of that was in the article. Condemnation of one party does not imply support for the other.

</comment></comment></comment><comment><USER5> _" In the last eighteen months, the greatest build-up of military forces since World War Two -- led by the United States -- is taking place along Russia's western frontier. Not since Hitler invaded the Soviet Union have foreign troops presented such a demonstrable threat to Russia."_

This sentence demonstates everything that is wrong with John Pilger. His default line is that the USA is to blame for _EVERYTHING_. Therefore he writes the above statement, but ignores Russia's recent military excursions and buildup, and more ludicrously he ignores China's military buildup.

The man has some interesting things to say, but his hatred for the west makes him a fringe commentator who is largely ignored.</comment>


Twitter switches from Mongrel to Unicorn - <AUTHOR> http://engineering.twitter.com/2010/03/unicorn-power.html <comment><USER2> This is a good engineering discussion. At the core of it is what we used to call back in the 70s doing real-time medical work "multiple server queues" versus "multiple queues each with one server". The different performance implications of each of these was pretty well known well before we studied it. The reference book we used as I recall was "Real-Time Data processing" by Stimmler (maybe also Robert Martin of Robert Martin fame).

<comment><USER3> I thought the coverage was pretty weak. Not due to unicorn but because there are many options (including passenger (aka mod_rails) for apache) that allow queueing to occur at the proxy instead of at the individual workers.

I wish they had discussed why unicorn instead of mongrel and why didn't solutions like haproxy or passenger or ... didn't work?

This discussion was: our apache configuration didn't work so we switched the load proxy mechanics and our app server at the same time.

I've had great success with mongrels with HAProxy (with maxconns=1 so only 1 request per mongrel at a time) for years. I've also had great success at Passenger with apache.

I think it is a great step forward for twitter's servers, I just wish the article had some meat. Isn't this the twitter engineer blog, not blog for the general audience about how twitter works?

<comment><USER4> (HAProxy + Mongrel) and (Apache/Nginx + Passenger) work great. Don't get me wrong, I've seen lots of different Rails server architectures and I've spoken at RailsConf on this very topic. I would recommend either setup to a Rails startup in an instant.

But in the edge case of immense load, they simply don't keep up to Unicorn.

The thing that sets Unicorn apart is that it does it's load balancing on the Kernel level. All Unicorn worker processes are listening on the same socket. The OS takes care of getting each request to a single, available worker. So unlike Mongrel, you don't end up with per-worker queues. Though HAProxy is smart about distributing load well, Unicorn makes it seamless. The workers simply ask for a new request and the Kernel gives it one.

There are some other niceties too. Unicorn processes are forked from a master process. If you are using REE, they can keep Rails in a shared memory. When we deployed it, we dropped memory usage by 30%.

On top of all that, Unicorn's flawless rolling restarts are a pretty big plus.

In conclusion, if you're in the top 10% of Rails apps by traffic, give Unicorn a look. It is likely that switching over is worth the dev risk and cost. Otherwise, keep it on your radar, but don't consider it a must-have.

[reference]

<http://unicorn.bogomips.org/DESIGN.html>

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

<comment><USER5> (FYI I'm a Phusion Passenger developer.) I find it interesting that you think the shared socket performs better than letting a proxy distribute the load. I've also done some tests and I find that the shared socket harms performance on high concurrency situations because of the so-called thundering herd problem. The problem is that all Unicorn workers select() on the socket, but when a client comes in all workers are waken up, all of them try to accept() the client but only one succeeds, and the rest goes to sleep. We're working on some pretty heavy performance and scaling optimizations for the upcoming Phusion Passenger 3 and we've found that avoiding the shared socket gives us much better overall performance. It'll be nice if the kernel provides an interface for performing select() and accept() in a single atomic operation but until then I think the shared socket isn't that good.

From what I've seen so far, peoples' experiences with both Phusion Passenger and Mongrel/Unicorn can vary drastically. Some people noticed a huge response time drop and performance increase when they switch from Mongrel/Unicorn to Phusion Passenger, others experience the opposite. I guess it depends a lot on the server. Phusion Passenger has got some pretty heavy users though, e.g. the New York Times Obama real time election results page was running on Phusion Passenger. The Dutch national TV broadcasting organization is running all their Rails apps on Phusion Passenger and they get huge spikes of traffic whenever something is mentioned on TV.

</comment></comment></comment></comment><comment><USER6> Amusing quote taken out of context: "..called Stormcloud, to kill Unicorns when they ran out of control."

Tomorrow's headlines: "Twitter is killing Unicorns"

<comment><USER7> Haha! I was about to quote the same line, thinking that somewhere there's an mythical animals and chimeras protecting organization.

</comment></comment><comment><USER8> Seriously? Apache? There is another low hanging fruit guys :-). Tremendous speedups can be had by moving to nginx from apache (something we did at shopify about 2 years ago )

<comment><USER9> Define 'tremendous' and present hardware specs and numbers please. Shopify runs varnish (we run varnish on Twitter search) - are speedups coming out of varnish or ngnix for you?

We've done plenty of simulations, load tests, and lots of graphing that shows ngnix's performance gains are negligible given our hardware configuration. We've also got huge dependencies on mod_rewrite right now and didn't want to convert to ngnix for that very reason.

There seems to be this awful myth, completely unsupported by science, that seems to state that unless you're running Rails with ngnix that you're doing the wrong thing. The prevelance of ngnix in the Rails community is astounding.

It's a good server and it certainly has it's place in the world, but it's just not for us and not supported by our benchmarks.

<comment><USER8> Our web nodes use 6mb of memory for all the web serving each. This frees up gigabytes compared to apache which we can use for more processes ( web and app notes are combined in shopify's case ). The speedup lies there. Added benefit is that nginx somehow manages to terminate SSL with a lot lower CPU load which makes the web/app configuration very appealing. We experimented with terminating SSL in the Ciscos but it seems to be impossible for Cisco that ships a firmware that has this and weighted load balancing working both.

Tremendous, in this case, is because the extremely low resource usage of nginx allowed us to remove an entire layer in our serverfarm flowchart and now we can use our machines much more efficient.

</comment></comment></comment><comment><USER10> I'm not sure why they needed to develop their own process monitoring script, as bluebill does just as good as monit or god, even managing the children processes. With my bluepill script, I have it setup so if I send restart, it uses hot code reload. My deployments consist of git pull origin master && bluepill restart unicorn!

<comment><USER9> When we deployed we didn't know about bluepill and wrote a quick script. Stormcloud does a fair number of other things such as tracking min/max lifetime of children and it attempts to sort out why the process died in the first place.

Thanks for the bluepill link though, we'll take a look at it and might consider a rewrite of our internal tool at some point.

I'd like to open source Stormcloud when it becomes more accessible. Unfortunately, it's laden with internal dependencies to our monitoring systems, and not publicly consumable at the moment.

</comment></comment><comment><USER11> Is there some technical reason I'm missing for why they wouldn't go the Passenger route? Seems to be by-far the easiest way to deploy a Rack-capable web app, and it (correct me if I'm wrong) allows for "hot deploy": update the code on the server and it'll sit there unused until you touch "tmp/restart.txt" under your app root.

<comment><USER12> I had issues with passenger at an event where a couple thousand people were relying on my app (about 1 thousand concurrent). I had a single dual quad machine running a rails 3-pre app on ruby 1.9, which was mem leaking every 30-45 min and melting down the goods. On site, I switched from nginx + passenger to apache + passenger so I could use a max-requests-per-worker type directive (only available with apache + nginx), which didn't solve my problems. I made one more leap (on the spot) to nginx + unicorn, and problem solved. It also saved me at least 1gb of normal operational ram.

I still think passenger is great for low demand sites. It took a while to figure out everything that had to be done for unicorn, which included a proper unicorn config file, a rake task to start/stop/restart, and a matching init.d script for my ubuntu; I also wrote a rake task to install the init.d script. Someone should post that stuff online.

</comment></comment><comment><USER13> Shopping is even more efficient if you distribute all your items across all the cashiers. That way, the time from you are first in line until you are done, is _n_ / _num_cashiers_ instead of _n_.

Someone, please try this the next time you go shopping, and then blog about what happened.

</comment><comment><USER14> For a moment the name made me think it was an early april fools but that turned out to be very interesting.

These days however, almost anything is faster and more stable than apache under load. It's really starting to show it's age unfortunately.

(and darn I wish we had a Fry's here!)

</comment><comment><USER15> _Unicorn surprised us by dropping request latency 30% and significantly lowering CPU usage._

Wow.</comment>


Conference Speakers, Check Your Egos - <AUTHOR> http://davidbisset.com/conference-speakers-check-your-egos/ <comment><USER2> > if you ARE the only person capable of giving the talk then is there is a > diversity issue. Can you take an honest look at the diversity of your > industry and perhaps mentor new ones – especially those from under > represented groups – to be able to speak on such topics?

This seems a bit bizarre to me. Sure, they're the only one who knows right now, but they are giving a talk at a conference, which is supposed to have the purpose of educating a large number of people.

<comment><USER3> I got the feeling the author was saying: "Step out of the way for what ever group we feel is marginalized today"

It's such a regressive statement. If you know what you're talking about and are excited about it. YOU ARE THE RIGHT PERSON. The people who are at the conference and speaking are people who stepped up to do it. You don't just get this granted pass to be up there.

</comment></comment><comment><USER4> Conferences don't exist to convey information. You can learn stuff from conferences, but I don't think I've ever been to one where people were talking about things that weren't already publicly available on the internet. (An exception might be conferences like Apple's WWDC, since that's a place for the company to announce proprietary info)

When people attend conferences, they're doing it _to be seen_. That's true whether you're on stage or off. Everyone thinks they're awesome, or if they don't then they probably want to be awesome. People with big egos, though we get jealous of them, get big attention. If you act important, chances are you'll make people think you're important. It's all business.

If you're at a talk that's truly unbearable, just tune out or walk out if it's that bad. I've done this a bunch of times when a person's egotism is too cringy or when some malcontent is being way too preachy. The latter seems to becoming more common. _Barf._ Sorry, you're not making me pay thousands for this shit so I can be told I'm dumb.

Check your egos? Why are you even going to conferences?

<comment><USER5> I go to conferences for two reasons: to meet people and learn stuff. And really, as I am generally poor at meeting people, the learning part is the bulk of it. So, really, I completely disagree with the foundation of your statement.

Whether or not information is technically available, there are any number of reasons why conference presentations are useful. They provide synthesis of information from multiple sources. They provide use cases and experiences. They dive into things that are poorly documented. They present information in a different mode. They highlight things you might have missed. They share with you the presenter's thinking about thorny issues.

After all, what publicly available resources on the Internet do you actually hunt down when you're researching something new? Chances are, posted conference decks and videos are a big part of them.

<comment><USER6> When you say "meet people" - what does it mean? Does it mean - you just have a 1-time conversation with people or do you hope your conversation goes beyond the conference? If it is the latter, you are not going to "meet people". You are actually trying to foster collaborations. "Meet people" is a broad phrase which encapsulates that concept.

<comment><USER7> I meet new people who I may or may not stay in touch with over time. I put names to faces of people I've met online and may have social time with. I get to spend time with people I've worked with in the past, have met previously, etc.

In my case they're also the only chance I get to get together with a lot of co-workers F2F.

So a lot of things. In a nutshell, a combination of casual (but sometimes illuminating) conversations, begin new relationships, and extend/deepen existing ones.

And learning/new insights/stuff to look into as well.

</comment></comment></comment></comment><comment><USER8> I'm a conference organizer, and I'm not sure what I just read. I feel there must be some angry emails or negative interactions that led to this blog post.

I'd encourage the author to consider if there is anything they can do to attract different kinds of people to their CFP or perhaps manage expectations better?

One thing we did with our most recent CFP [1] was to reply individually [2] to each person who submitted with constructive feedback on their submission. I think transparency and respect goes a long way.

[1] [https://2019.cascadiajs.com/cfp](https://2019.cascadiajs.com/cfp)

[2] [https://twitter.com/crtr0/status/1156602180763152385](https://twitter.com/crtr0/status/1156602180763152385)

<comment><USER9> Replying to each submission is very impressive! Looks like last year you had ~24 speakers, so I assume you had ~100+ submissions. That's definitely dedication!

Have you run into speakers responding negatively to your (constructive) feedback before?

<comment><USER8> Not really. But to be honest, I think people who are upset with the rejection or the feedback are not likely to share that with me.

I like to think that how we message the CFP and how we manage the process and communication with submitters decreases the chance of people being overly upset with the outcome.

</comment></comment></comment><comment><USER10> Huh. Is it just me? I couldn't make it through more than a screen of this post because of the author's ego that seemed to be spilling out the sides of their mouth.

I didn't "read to the end" like admonished, so not sure if it was meant to be humorous.

<comment><USER11> I thought the author was sincere after the first read. I read it after reading your comment and respectfully disagree about the author's ego. I have never been a conference speaker so perhaps I am not the best judge.

<comment><USER12> I skipped the rest after his trying to equate concluding you're not going to get accepted to a particular conference with 'ego'.

Having self-respect and deciding not to keep uselessly abasing yourself to a clique that's never going to anoint you is perfectly reasonable. As the previous poster said the article author seems over-blessed with ego thinking he knows enough to hand out blanket advice putting the fault on others.

</comment></comment></comment><comment><USER13> I really don't understand this preoccupation with policing "humility" in others... Some seem to think that if you don't have impostor syndrome you're a scumbag or something... Can anyone explain?

</comment><comment><USER14> Blog Writers, Check Your Egos

<comment><USER15> Reading this I could only really picture the angered author muttering "I AM the Blog Who Knocks!".

</comment></comment><comment><USER16> I hate the phrase, "check your [facet of personality]." I have asked people to examine their motivations, and I always will - because saying, "why do you believe you are the most qualified person to give this talk?" should really be answered before the person gets up to speak.

And if the answer is, "I'm not, but the person who is doesn't want to evangelize", fine. But yes, consider why you're speaking. That's fine. Otherwise, the message is a load of drivel.

<comment><USER17> It's bandwagoning. When someone uses that phrasing you can safely ignore what they're saying.

</comment></comment><comment><USER18> Well, I dare to say that almost every conference speaker has at least a "sufficiently sized" ego. Otherwise they won't be speaking at a conference about $topic.

</comment><comment><USER19> I've been to a few developer conferences in the UK over the years with "famous names" on the bill. But I don't remember detecting any of the speakers having overly burgeoning egos. In fact I got to speak to a quite a few of these folks at lunch time (most, if not all, ate lunch with the attendees as well), breaks and post conference; and in these encounters so none of these folks made me feel "they were too important" to speak to me.

Sure some of the folks have a certain "showmanship" on stage such as back in the day Don Box (and his bath full of SOAP) and these days Scott Hanselman at NDC or Build. But that's fine, they make what could be a dull presentation highly entertaining and you're learning some stuff as well.

Maybe this is a US thing (seeing as the author seems to be based in the US) or certain types of conferences (WordPress conferences?)?

</comment><comment><USER20> Your ego isn't something you just "check" People toss around the word ego with zero understanding of what ego is and how it functions. YOUR VERY SURVIVAL IS AT STAKE: [https://www.youtube.com/watch?v=i8NNtpzYQx8](https://www.youtube.com/watch?v=i8NNtpzYQx8) But how developed does your consciousness have to be to even begin to grasp it?</comment>


A Year of Monument Valley 2 - <AUTHOR> https://medium.com/@ustwogames/a-year-of-monument-valley-2-36754517a386 <comment><USER2> Reposting my post from medium in the hopes that the devs see it

Thank you for sharing this! There's really not enough data for indie devs to make good decisions regarding marketing. Had a few questions if you have the time to answer them:

1- It seems to me on the charts that weren't any upticks in downloads. Were you overall happy with your 500K investment on marketing costs?

2- Did the award shows cause any significant upticks? I don't see them on your chart either

3- Any idea how many people that played MV 2 also played MV 1?

4- Do you think this big a chunk of your userbase would have been Chinese had it not been for the free download? If not then it would seem prudent for other indie developers to localize their games early given the huge opportunity</comment>


What we've learned about hiring - <AUTHOR> http://blog.metalabdesign.com/post/1685538816/so-youre-hiring#disqus_thread

<comment><USER2> Why have you linked to the comments instead of the article? Here's the direct link to the item itself:

[http://blog.metalabdesign.com/post/1685538816/so-youre- hirin...](http://blog.metalabdesign.com/post/1685538816/so-youre-hiring)</comment>


Show HN: XLpup, usage tracking for excel workbooks - <AUTHOR> https://xlpup.com <comment><AUTHOR> Hey HN,

My name is Aadhi and I'm a long-time excel user. I started my journey with excel when I was working at a F500 running daily / weekly reports for management.

I found out pretty quickly that many of my reports weren't being read even though it took hours out of my week to make them. Hence the inspiration for XLpup ([https://xlpup.com](https://xlpup.com)).

XLpup tracks the usage / traffic your excel workbook gets via some VBA code that pings a server whenever the workbook is opened. It currently only works for Windows machines - but I do plan on including Mac support in the near future as well.

I'm just getting started, so early users / feedback are greatly appreciated!

<comment><USER2> How does your product ensure privacy?

In other words: how does your product make sure people aren't going to abuse it by distributing _unique_ copies of their workbooks so they can track the exact times of individual recipients looking at them?

<comment><AUTHOR> Yeah - great point. I'm actually working on a way to detect if a set of IDs are being used on the same workbook. This is possible technically via some environment variables inherent to the spreadsheet - but it opens up another can of worms on the privacy side of information I'd have to collect.

I think the short-term solution will be to throttle unique ID creation to 5 / email - not perfect, but I'm a one-man team so will have to bite at this problem step-wise :)</comment></comment></comment>


PR - Apple's review embargoes during iPhone X launch week - <AUTHOR> https://one37.net/blog/31/10/2017/pr <comment><USER2> Tl;DR: Upstarts given early access will probably (unjustifiably?) laud the phone moreso than reviewers and sites who actually try to give a fair review, useful when your phone now costs as much as mid-powered laptops.

My guess: Apple needs to justify a 4 figure pricetag after taxes. This isn't necessary with the other devices, but since the X probably needs a hand, this was the strategy: fish for higher odds of good reviews from the upstarts and ones who'd stand to gain traction by claiming "First to review!"

Source: I've been through this exercise in the late 00s with other hardware vendors.

<comment><USER3> The cheapest smart-phone you can buy right now costs $1,100. That's the 2 year cost of a typical service plan, assuming you replace your phone every 2 years and the phone costs near zero.

By comparison, an iPhone X costs $1,700, only $600 ($25 per month) more than a "free" phone . The reason is in two years, you'll be able to sell your used X for around $400.

</comment></comment><comment><USER4> What does this mean?

> Create a multitude of reasons for consumers, of all types, to justify > spending $1,000 on a phone. Although it's a subsidized cost, many consumers > have not considered the true cost of their iPhone ever. Now, with many press > outlets leading with the $1,000 total cost angle, Apple needs to combat that > perception.

Who is subsidising the costs of iPhones? Apple? Do they sell them at a loss? And why would consumers want to consider the true cost if they never have to pay it themselves?

<comment><USER5> The carrier subsidizes the up front cost by charging more for a binding contract.

In the end, the consumer pays the subsidy.

<comment><USER4> Ah right. I think in Europe most people just buy the iPhone standalone from an Apple store without going through their carrier and put their own SIM in.

<comment><USER5> I don't think "most people" do that in Europe, though I do think it is a lot more common in Europe than in my impression is of how things are typically done in the states.</comment></comment></comment></comment>


6 Reasons Why Email Marketing Is Important for Your Internet Marketing - <AUTHOR> http://inboundrocket.co/blog/6-reasons-why-email-marketing-is-important-for-internet-marketing/

<comment><USER2> Good point about email being more personal. Sometimes I think that social media is personal but it was a good reminder that when you post you're talking to a broad audience - especially Facebook.

<comment><AUTHOR> Thanks a lot! Yeah indeed, unless you go towards a private message, social media is still one-to-many.. With email you can build a much more personal relation.</comment></comment>


Ask HN: How do you measure risk with an open source project? - <AUTHOR> If you've found a new project on GitHub that you want to use, how do you quantify the associated risk of using it in a "production" application? For example: the project is only open for 6 months, or has many more open issues vs. closed issues, or has negative sentiment in commit messages. Of course it's a case-by-case basis, I'm looking for examples of what factors are deemed important when making this type of decision. <comment><USER2> * I look at the code and determine, subjectively, whether this was written by first-rate developers or monkeys. I will consider this from various angles ranging from the overall program organization, to the details of how the programming language is used. If I spot bugs in this inspection, I will skip the project and look for something else. In particular anything that is a security flaw or could cause a crash is an instant deal-breaker. Not because everyone should be perfect and write error-free code the firs time, but because I was able to find it just by casually looking, whereas the maintainers have been working with that code for months and are blind to it---that erodes my confidence in the developers.

* I will look for a regression test suite: how extensive is it? If you don't see any tests, that's a big warning sign.

* If you don't see any documentation, another warning sign: the behavior is not specified and could change.

* Who _uses_ it? If the code is reasonably widely used, that de-risks it for you quite a bit, particularly if the existing uses resemble your intended use. They trod through the code paths before you and uncovered the bugs.

* Lastly: if need be, can I just maintain this myself? How easily forkable is the thing? This point can overcome some other issues. If some code is 95% of the way there, and is organized in a good way that I can take it the last 5%, I might just do it.

<comment><USER3> Keep in mind that the last 5% might mean a heck of a lot of time. There is usually a reason why some things go unimplemented in open source projects and the complexity and time required are usually high on the list.

<comment><USER2> The last 5% is _my_ last 5%, not (necessarily) the project's 5%. I.e. the difference between what is there and what I require, not between what is there, and the project's goals.

</comment></comment></comment><comment><USER4> If there's an IRC channel, mailing list, issue tracker, etc., I have a look at it. Active communities are bonus points regardless of the bug list.

I also look at how friendly the project is to pull requests and outside development. If a bug is important to me, I will spend the time to code a fix, but if there's no hope for getting any changes made, that represents a large risk to me. It's not a bad thing if the team in charge pushes back for higher quality code, code style, or solutions practical for wider audiences.

If there's continuous integration in place with automated testing and static code analysis that is fantastic. It's not a deal breaker if it's not, but having it in place is a good sign.

Depending on the project, I may have a look at the source itself. I certainly don't look the source of every application I use.

I have found that online recommendations in developer communities are not always good. More than once I've tried out projects based on people evangelizing them only to find out that they are pretty far from acceptable.

There are differences in how I judge things that will be customer facing or that I'm going to have to support operationally. I'm a lot more critical at that point, but my top 3 points are:

1\. Can I put it in a container. 2\. Are the developers committed to long term support. 3\. Will they give me a t-shirt.

</comment><comment><USER5> I evaluate it the same way that I evaluate any other code that I'm bringing into our project: is it robust, extensible, free of obvious errors, covered by comprehensive unit/functional tests, etc.

I would say that "project is open 6 months" is a pretty poor metric, because 6 months is a _lot_ longer than the handful of days that your custom code will have existed when you add it instead.

<comment><AUTHOR> That makes sense, any time period is probably less valuable than looking at it relative to commits or issue resolution rate.

<comment><USER5> Even evaluating it on historical commits or issue resolution rate is not very productive, IMO. They really aren't an indication of future activity unless there are at least 10s of developers working on it constantly for a long period of time (say, > 6 months). I've been burned too many times by getting hopeful about what a project maintainer is going to do in the future, so my criteria is basically taking the code in it's current state and evaluating it like I would any other code. If it's a matter of opening a PR or two to get things cleaned up, and PRs seem to be merged relatively quickly, I might chance it, but I can't wait on an unresponsive maintainer to merge things. I have deadlines to meet. Ain't nobody got time for that.

</comment></comment></comment><comment><USER6> 0\. Is README in good shape and the API is sane? 1\. Last commit date in last month 2\. Number of stars depending on the complexity of the lib

</comment><comment><USER7> When was the last time the code was updated? How many people have contributed to it?Really I'm looking to see whether the project is being actively maintained.</comment>


The reasons why exhaustion and burnout are so common - <AUTHOR> http://www.bbc.com/future/story/20160721-the-reasons-why-exhaustion-and-burnout-are-so-common <comment><USER2> [http://qz.com/424120/our-poor-sleeping-habits-could-be- filli...](http://qz.com/424120/our-poor-sleeping-habits-could-be-filling-our- brains-with-neurotoxins/)

<comment><USER2> According to the above link, contra BBC, it turns out that the ancient "tar- like liquid in the brain" theory was quite accurate; it's a decent rough description of Amyloid buildup and Tau tangles.</comment></comment>


A-10 looks like it's here to stay after Air Force upgrades - <AUTHOR> http://www.businessinsider.com/a10-air-force-upgrade-2017-1 <comment><USER2> There's waaaaayyyyy too much nostalgia for the A10 - partly from its gun and the impression of it as a solid airborne tank of an aircraft.

It's done its job well but it has so many weaknesses on a modern battlefield it's time to move on. It's roles can be done by many other platforms.</comment>


Qualcomm Snapdragon, DragonBoard 410c Fire Up at World Maker Faire - <AUTHOR> http://makezine.com/2015/09/25/qualcomm-snapdragon-dragonboard-410c-fire-up-at-world-maker-faire-new-york/ <comment><USER2> I have one of these, and so far it's a mixed bag. First off, the wifi is badly broken in ubuntu because _NO_ multicast ethernet packets are received by Linux; they are apparently being filtered in the ethernet card by the binary blob. No solution exists at this time, and the shipped Ubuntu kernel doesn't support any USB network adapters I have.

On the other hand, it did work well enough for me to make a basic port of LinuxCNC to it, though without a working PREEMPT-RT kernel it cannot be used to control hardware.

Of the ARM SBCs I own, this board is way below ODROID U3 and RPi2 -- it's buggy, it's not particularly high spec (other than being aarch64), and it doesn't have the world of accessories that RPi has. (Pick ODROID for performance, RPi for accessories)

But if you want to port an app to aarch64, or just say that you own a 64-bit arm system, and your hardware budget is under $200, DragonBoard and hikey are basically the two games in town.

<comment><USER3> Have you retried with a more recent image? After I kicked them about the USB Ethernet situation Ndec enabled a few more drivers for the kernel in the Ubuntu images. Both my ancient Pegasus USB1.1 and a newer USB3 GBit card then worked out of the box.

The WiFi situation is indeed annoying and I've complained about it, they seem to be since looking into it, but as the driver is open source, someone else could check too and send patches. There even is a debug tool to intercept the proprietary QC driver commands (used in Android images). It should just be reconfiguring the filters away from their broken default state.

<comment> TD-Linux Yeah, I had a similar situation on the Hikey 96board. I ended up downloading their kernel source and building a bunch of additional modules so I could get USB Ethernet, as the wifi was basically useless there too.

<comment><USER3> Yeah, luckily that was very straight forward. Did that too before they released the new images.

</comment></comment></comment></comment><comment><USER4> Though the Dragon Board looks great, the specs on the HiKey board are even more impressive [1, 2], but I haven't found anyone selling them yet. There is a variation of the HiKey board made by LeMaker that has more RAM [3]. The 96boards "Enterprise Edition" boards are just stunning [4, 5] and have two DDR3 SO-DIMM sockets, but again, they aren't shipping yet.

[1] [https://www.96boards.org/products/ce/hikey/](https://www.96boards.org/products/ce/hikey/)

[2] [http://www.em.avnet.com/en-us/design/drc/Pages/HiKey- board.a...](http://www.em.avnet.com/en-us/design/drc/Pages/HiKey-board.aspx)

[3] [http://www.cnx-software.com/2015/09/23/lemaker- hikey-96board...](http://www.cnx-software.com/2015/09/23/lemaker- hikey-96boards-development-board-comes-with-1-to-2gb-ram-sells-for-75-and-up/)

[4] [http://www.cnx-software.com/2015/06/28/amd- announces-96board...](http://www.cnx-software.com/2015/06/28/amd- announces-96boards-enterprise-edition-server-board-powered-by- opteron-a1100-processor/)

[5] [https://community.amd.com/community/amd- business/blog/2015/0...](https://community.amd.com/community/amd- business/blog/2015/06/23/extending-arm-s-ecosystem-for-server-developers)

<comment><USER3> I got mine from Arrow(US) in July. They suspended shipping at some point after that due to missing FCC tests, but you could still get the board if you signed a waiver.

The HiKey board has different pros and cons. Pro: It's received a lot more engineering time, as it was the first 96board. Actual open source first stage bootloader, from what I can tell. Con: WiLink8 WiFi; Initially unobtainium as "produced" by Circuitco in homeopathic doses; HiSilicon also needs quite some proprietary blobs for things.

So far ALL 96borads have their problems and surprisingly all of them seem to violate the LINARO/96boards spec in multiple ways.

<comment> TD-Linux I think there were hardware bugs on a lot of the Hikey wifi boards too. Mine always failed in the driver and I ended up using USB Ethernet after rebuilding the kernel.

The onboard eMMC is also extremely slow, luckily it's easy to switch it to boot off a microSD instead.

The kernel forked at 3.17 and hasn't been updated since.

So far I'm pretty disappointed, both hardware and software wise. I find it surprising Linaro would put their name on this, I really hope this isn't the "reference" for quality.

</comment></comment></comment><comment><USER5> Pros:

* cheapest 64 bit ARM

* 8GB flash

* onboard GPS

Cons:

* relatively slow cores

* 1GB ram

* no usb3

* no ethernet (100 or 1000)

* no sata

For lightweight desktop/server use, this is a horrible board. The XU4 blows it away on all counts. However, the inclusion of onboard GPS shows more what it was meant for: things that move. Likely battery powered things that move.

The utility of the board comes down to the max and idle power draw. The XU4 is the board to compare the DragonBoard against; it does 2.5W idle and 8W-12W peak. If Qualcomm can beat those by a factor of four or so, then I could see a place for the DragonBoard.

</comment><comment><USER6> Would be interesting to see a comparison/benchmark similar to: [http://www.davidhunt.ie/raspberry- pi-2-benchmarked/](http://www.davidhunt.ie/raspberry-pi-2-benchmarked/)

</comment><comment><USER7> Why not choose an Intel ecosystem board, something like:

[http://www.minnowboard.org/meet-minnowboard- max/](http://www.minnowboard.org/meet-minnowboard-max/)

Traditionally they have been behind on development boards like this but things have been improving. Unless you must have lowest power I'm thinking that you are in many ways better off:

        64-bits? No problem.
        Performance? Intel has a matching Atom for every Arm.
        Compatibility? Run desktop Ubuntu.. heck, run Windows
        Drivers? They are all open source and work.

There are a bunch of extremely cheap Z3735F based systems available also, for example: [http://www.geekbuying.com/Search/?keyword=windows+mini+pc](http://www.geekbuying.com/Search/?keyword=windows+mini+pc) ("pc stick" and "mini pc").

(I do like ARM, but at the Cortex-M0 level as a PIC replacement).

<comment><USER3> Minnowboard Max has the same unobtainium problem like the HiKey. That said, it's about to change.

Luckily also there a second manufacturer stepped in and the 'Turbot' version was recently announced. Same as the LeMaker version of Hikey, should have less of the usual Circuitco Unobtainium problems.

</comment></comment><comment> ezequiel-garzon Off topic, I didn't know the spelling "faire", and didn't come across having lived almost a decade in the US. My dictionary just says "obsolete spelling of fair". Does it carry a slightly different meaning? Why this obsolete choice?

<comment><USER8> Renaissance faires use the renaissance spelling. Maker faire is perhaps trying to evoke those.

</comment></comment><comment><USER9> Interesting to see a board with built in GPS for mobile apps, as well as wifi/bluetooth.

Nice to see Cortex-A53 for a bit more CPU performance (compared to raspberry- pi), but anyone know how GFX driver support compares to the r-pi?

<comment><USER3> Note that GPS so far only works under Android with the QC propriatary binary mumbojumbo. Not sure about the graphics drivers, would need to check.

<comment><USER10> I would imagine that there will never be a fully open source gps, as this would allow anyone to bypass the "am I a missle?" test.

<comment> TD-Linux There are already many open source implementations of GPS using SDR.

In addition, most consumer GPSes just have firmware that does the SDR bit and output NMEA strings. There's literally no reason for the driver receiving NMEA strings to be proprietary.

<comment><USER10> Then what is preventing an open source implementation from exceeding the 60,000 ft and 999mph limits imposed by the US DoD?

<comment> TD-Linux Nothing.

</comment></comment></comment></comment></comment></comment><comment><USER11> Looks interesting, but seems a little pricey. It looks like the ODROID XU4 ([http://www.hardkernel.com/main/products/prdt_info.php](http://www.hardkernel.com/main/products/prdt_info.php)) but with the ODROID you at least get 2GB of RAM. Either way, it's good to have competition.

</comment><comment><USER12> I've had one of these on order for about six weeks (from [https://www.96boards.org/products/ce/dragonboard410c/](https://www.96boards.org/products/ce/dragonboard410c/)). Are they shipping now?

</comment><comment><USER13> No gig-e? :(

<comment><USER14> What would you do if it had gigabit Ethernet that you can't do now?

<comment><USER15> Use it as an HTPC/Streaming PC? A lightweight desktop replacement? Digital signage? Home automation? Home server? Built in b/g/n is a nice touch but most prefer the ease of installation, reliability, and goodput of ethernet over wifi for anything important.

I suppose you could use a USB ethernet adapter, but now you're just sacrificing a USB port to have a less capable XU4. I'm not sure what market they're targeting here. I suppose you're just supposed to build mobile devices around this.

<comment><USER16> Yeah, ethernet is nice for a bit of reliability but it's not that important.

But I was focusing more on the 'gigabit' part, and what you listed generally doesn't need it.</comment></comment></comment></comment>


Intel's SGX coughs up crypto keys when scientists tweak CPU voltage - <AUTHOR> https://arstechnica.com/information-technology/2019/12/scientists-pluck-crypto-keys-from-intels-sgx-by-tweaking-cpu-voltage/ <comment><USER2> Suggestion: change the URL to [https://www.plundervolt.com](https://www.plundervolt.com), which more immediately offers a technical overview of the situation. The Ars Technica article is more editorial.

</comment><comment><USER3> [https://news.ycombinator.com/item?id=21759683](https://news.ycombinator.com/item?id=21759683)

</comment><comment><USER4> How likely is changing the voltages to lock up the system vs the attack actually working?

<comment><USER5> I've worked with some secure enclave chips that go into tamper mode (self- erasing of keys, hard fault, etc) when the voltage deviates outside a certain range.

But this chip seems to have programmable voltage changes. Seems like you could prevent crypto access unless the registers were all in spec.

<comment><USER6> Chip power networks are very complicated RC circuits. By modulating both the workload and the voltage it should be possible to create localized brownouts only in portions of the chip. This would bypass normal voltage monitoring. This sort of thing is already a huge problem in chip design today without the adversarial component complicating it further.

It does make the attack much more difficult though.</comment></comment></comment>


I Don't Code in my Free Time - <AUTHOR> http://teddziuba.com/2009/10/i-dont-code-in-my-free-time.html <comment><USER2> After reading this and its complacent I've-learned-as-much-as-I-need-and- besides-I-have-kids attitude, I'd say he does a good job making a case against himself being a very good programmer. His mechanical analogy (socket wrenches) for "computer code" (sic) is particularly revealing.

Ironically, none of this has intrinsically to do with his not liking to program on Saturdays, yet ends up reinforcing the notion that, for whatever reason, there is a correlation.

I know at least five guys who have small children and hack in their spare time. Yes, it's a struggle, but they all do it. I also know quite a few with small children who never do that. They never did before they had kids, either, but the kids furnish a nice excuse. Kids are handy that way. (Edit: notice how the author plays this card, even though he already said he almost never programmed outside of work or class.) Anyway, my point is that the first group are really good programmers and the second are, by and large, not. Anecodotal though this may be, I buy the idea of a correlation.

P.S. Another trait that good programmers tend to have is not seeing themselves as good enough and not getting defensive about proving how good they are. Exercise to the reader.

<comment><USER3> I find this debate insulting.

I have written web apps and low level networking code and plenty of stuff in between, aka a web server. I have worked with computers that have less than 1kb of RAM and distributed networks. I have written code 100x faster than a coworker who was still better than average (30 min vs 7 days). I remember spending a few days coding something so so our customers did not have to the post office website to find zip+4 addresses and realizing using them as a backup was almost pointless because I had a better solution. I love solving hard problems, and most of the time I don't code at home.

PS: Ok, I did just start working on an iPhone app, but that's mostly because I stopped coding at work. There is a life outside a compiler and going snowboarding, watching amine, reading, or any number of other things are just more fun.

<comment><USER2> Don't be insulted; it's just an argument on the internet. Besides, the correlation people like me are claiming is at most a statistical pattern with lots of room for variation. (You sound like a good programmer regardless. But what I find endearing in your comment is how you go and spoil your argument by hacking on an iPhone app in your spare time - and feel obliged by intellectual honesty to fess up to it!)

Of course, you might also mean that the debate is insulting because it's pointless. I can understand why it would seem that way. What does it matter whether someone programs outside of their job or not? It doesn't, intrinsically.

Here's why I think the subject is interesting anyway: there's no cheap way to tell who the really good programmers are. This is not just a hard problem, it's a hard problem that seems like it ought to be an easy one. Why can't you just devise a test? People have tried to figure this out every which way, spending many millions, maybe billions in the process. And no one has a good answer. That's genuinely surprising.

Given that situation, any criterion one can use as a (cheap) proxy for "good programmer" is of interest, even if it's imperfect.

What makes the "hacks in spare time" correlation with "good programmer" interesting is not that it captures all of the good programmers. There are certainly good ones who don't do that; i.e. the test does produce false negatives. What makes it valuable anyway is that it _excludes the overwhelming majority of bad programmers_ , the ones for whom it's a job that they aren't very good at and aren't motivated to get good at, who form 90% if not 99% of the professional population. In short, the test is interesting because it excludes many more false positives than it admits false negatives.

A corollary is that all the people who protest "I don't code in my spare time, yet I am a good programmer" aren't really adding much data to the discussion. The ones we need to hear about are the bad programmers who do. :)

<comment><USER4> Even if all good programmers were programming at home the knowledge that a programmer is coding at home wouldn't give us much.

G - good programmer C - coding at home

      P(G|C)*P(C) = P(C|G)*P(G)

      P(G) = 1% # percent of good programmers among all
      P(C) = 20% # percent of programmers that code at home
      P(C|G) = 100% # assume that all good programmers code at home

Probability that a programmer is a good one given that it codes at home:

      P(G|C) = 1.0 * 0.01 / 0.2 = 5%

<comment><USER2> _P(G) = 1%_ <\-- Ok, that's in the range I suggested.

 _P(C|G) = 100%_ <\-- More than what I said, but I see your point.

 _P(C) = 20%_ <\-- Whoa, where did you get that? That's just an assumption that leads immediately to your conclusion.

<comment><USER3> I think 20% is on the low side. But, you really need to define your terms. I would call 1/3 of all programmers useful, in that they can create more value then they cost. However, when you have a tiny budget and need to find useful programmers willing to work long hours for low pay then you really want young smart programmers with a lot of experience. And they only way to have a lot of experience at a young age is to do a lot of side projects.

There are plenty of programmer that will blow your mind making 150+k/year, finding programmers that will blow you mind and are willing to take far less and a slice of equity is far harder.

PS: There are talented older people that are also under payed, but that's normally because they are happy where they are. Finding them and getting them to work for you is hard and expensive.

<comment><USER2> Good points. It's worth remembering that when it comes to this stuff, we're all anecdotalizing in the dark. I say that because it sounds like we've had quite different experiences. (20% of programmers work on side projects sounds low to you, very high to me.) Frankly, I'm not even sure it's possible to properly define these terms, let alone measure them.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> _"I love it when twenty-something engineers take such a hard-line position on something they have so little experience with, like hiring."_

Uhm, the author graduated from college 3 years ago. It took me about 2 minutes of searching to find out that the "twenty-something" he's referring to (raganwald) is about 20 years older than him.

<http://www.linkedin.com/in/teddziuba>

[http://reginald.braythwayt.com/RegBraithwaiteGH0909_en_US.pd...](http://reginald.braythwayt.com/RegBraithwaiteGH0909_en_US.pdf)

<comment><USER6> This isn't a response to Raganwald. It's a response to this Reddit thread:

[http://www.reddit.com/r/programming/comments/9s3ww/would_you...](http://www.reddit.com/r/programming/comments/9s3ww/would_you_hire_a_programmer_that_does_not_write/)

<comment><USER7> Yes, especially since I agree with much of what Ted is saying.

p.s. Not that anyone needs further evidence I am imperfect, but if we must have a bash at it, here are two flaws with my original article that I think have merit:

1\. I presented a dichotomy between two strategies, first hiring people who know me or whom I know through networking, the Internet, and so on. Second, using monster.com and recruiters. Isn't this a false dichotomy?

2\. Although the linkbait headline of my post said something about people who code outside of work, the post itself actually said something about networks and communities. Clearly someone can belong to the HN community without coding oustide of work. According to my headline, I wouldn't hire them. According to my post, I would. Which is it, Mr. Braithwaite?

<comment><USER5> Note that I didn't actually agree with all points (well, rather the point implied by the title) of your original article, I just thought that the irony was thick of someone who appears to be about 24 leading their argument with a dig about the other side being a bunch of inexperienced 20-somethings.

<comment><USER6> Yeah, I can see that... but I also understand it. I've told people older than me to grow up before. Sometimes people are older/younger than their age suggests.

And, in Ted's defense, back when he started writing he was in the right a lot. I remember his huge article about Meebo, the one that made Uncov famous, because it was all about bashing people for attention. He made point after point about Meebo's failure as a service and he was dead right about all of them. A lot of his earlier posts—the ones about Mahalo and Scoble and Pownce in particular—were smart, critical, and not entirely derogatory either.

</comment></comment></comment></comment></comment><comment><USER8> I think that, regardless of whether the hypothetical correlation applies to Ted, it could survive weakening to eliminate his complaint and still be useful: "Good coders _have_ coded outside of work at some point, or used coding to solve non-work-or-school-related problems." it doesn't mean you're still doing it _now_ when you have -5 hours to spare a day, but it means you would be if it wasn't a matter of prioitizing. Bad coders don't assign "coding as a hobby" a priority value--they simply never consider doing it at all.

<comment><USER9> I don't think we should treat this as a discussion of good coders and bad coders. "I wouldn't hire someone who ____" is a hiring filter. And ANY worthwhile hiring filter will be over-aggressive. So it's more a distinction between groups that contain close to 100% good coders vs groups that contain a much lower percentage.

The point of a hiring filter is to weed out bad coders, and hirers should realize that any filter you set that will weed out most/all bad coders will also weed out a LOT of good ones. So if someone says, "I wouldn't hire someone who ______", they're NOT necessarily saying, "All people who _____ are bad programmers".

Instead, the smart hirer is actually saying, "People who _____ are Group A and everyone else is Group B. Group B contains many great hires, but it's really difficult to distinguish good hires from bad ones, and Group A has almost no bad hires. Therefore I'm only hiring from Group A."

</comment></comment><comment><USER10> > You know what's more awesome than spending my Saturday afternoon learning > Haskell by hacking away at a few Project Euler problems? Fuck, ANYTHING.

I feel extremely lucky to not only have known what I wanted to do from a young age, but enjoy it, and can make good money doing it.

I like to ride my bike, hike, climb mountains, go to the beach, and walk my dog as well as solve problems, math or otherwise. I really hope for Ted's sake that he enjoys development at least a little bit. No one wants to work with people that aren't happy.

<comment><USER11> I worked with Ted at Google. Trust me, even though his articles have a certain sarcastic tone to them, he was definitely enjoyable to work with and clearly did like solving hard problems in development.

His point in this post is that you _can_ do a great job at work but then enjoy your life outside of work.

<comment><USER12> _His point in this post is that you can do a great job at work but then enjoy your life outside of work._

Is doing a little coding outside of work mutually exclusive to enjoying your life? I feel like the article draws a false dichotomy that either you have a life and don't code at all outside of work or you spend all of your non-work time coding.

<comment><USER13> That's my biggest gripe here, too. Why are people so black-and-white about this? I work 40-60 hours/week depending on what's going on. Sometimes while working 40 hour weeks I don't write any code at home preferring to do one of the many other thing I enjoy. Other times I'm practically buried in work and come home and poke around on a side project. This just varies depending on my mood and what (if any) interesting stuff has my attention. If you enjoy something, you'll find time. If you don't enjoy it, why is it your career again?

If you ask me the whole point of this discussion shouldn't be 'coding at home' but instead 'giving a crap'. Even _just a little_ passion for your field will get you a long way in _any_ profession - and I think that is especially true in creative fields like programming.

Here I am on a Saturday afternoon putting some thinking time into my field... have I devoted the day to it? Hardly!

You're right on that there's absolutely nothing mutually exclusive about enjoying coding (and lots of other completely unrelated stuff) as a hobby and as a career.

</comment></comment></comment></comment><comment><USER14> For all this person claims to be wise and experienced, this is a very contentless and juvenile blog post. The tone is condescending and reeks of insecurity.

</comment><comment><USER15> I agree absolutely with him and I disagree with raganwald. Why is this?

Because there are only so many rockstars you can have in one joint. There are only so many people who live and breath code you can have in one room before trouble starts brewing.

Every team needs a crop of solid, dependable and slow developers that do the boring tasks. The guy who does not mind going over all the functions and commenting them. The guy who is satisfied to port a C script to Mac OS X, even though it is mindless bug testing.

And those type of guys don't code at home. If you will never hire such people, then who will do the boring tasks? Your highly intelligent and highly paid coders? You recruit them to put them for 3 months working on some inane and boring database program?

Intellectual diversity is a neccessity in any shop that makes its living from brainwork.

<comment><USER16> It seems to me that "boring" often means "potentially automatable".

<comment><USER15> How do you automate the writing of a script that copies data across 5 servers? Or an Excel macro for some business thing? Or porting an app to another platform

You need developers for many things that cannot be automated.

<comment><USER17> or you just need smarter programs

I mean, I get the point, but making mundane tasks easy to do or removing the need to do them at all is kinda what we do as programmers.

<comment><USER13> It's what _we_ do as passionate programmers who enjoy doing it. To 'the rest' it's just a job that ends every day at 5pm.

In other words, to the 'career programmer' automating something like the examples given is simply lowering your job security.

<comment><USER18> I always laugh at people who talk about the job security in writing bad code. The most secure job is for the one person that knows what he/she is doing, because they will find another one easily.

</comment></comment></comment></comment></comment></comment><comment><USER19> "So, I rigged up a Python script to play AOL instant messenger sounds randomly every 5 to 10 seconds, turned up my speakers, pointed them at the wall, and went on vacation for a week."

ARE YOU F'ING KIDDING ME? You write a blog post on hiring and then proceed to relate a story about how you escalated a personal conflict way beyond reason? This is precisely the kind of guy you don't want on your team, because working in the real world involves resolving personal conflict without needlessly pissing people off.

<comment><USER20> Ted is like Ali G / Borat / Bruno. It's a lot more fun to sit back and enjoy the show than it is to scold him for being an ass. Esp when he's so obviously going out of his way to be an ass. And like Ali G's antics, the AOL script was _really_ funny. I hope he open sources it.

</comment></comment><comment><USER21> "Instead, I spend my free time saying nasty things about people who do - it's easier and more fun!"

Although, to be fair, in this case I agree that it's not an appropriate question for an interview, although I would be unhappy if I didn't have at least a side project or two to hack on, though. I have less time for that now, with a child, but it's something I need to do.

Oh, and I'd much rather spend my time riding my bicycle than fiddling with it. My mechanic is way better and faster than I am in any case.

<comment><USER22> _Although, to be fair, in this case I agree that it's not an appropriate question for an interview,_

Why?

As an interviewer, I think it tells me a great deal. It certainly should not be the focus of the interview, but I want to know things like: 1\. Will this candidate mesh well with the existing team? 2\. Is this candidate going to take the initiative to learn useful things on their own?

It seems to speak quite well to those issues.

</comment></comment><comment><USER23> > "You know what's more awesome than spending my Saturday afternoon learning > Haskell by hacking away at a few Project Euler problems? Fuck, ANYTHING."

This is pretty depressing since last weekend I was learning Haskell by working on Project Euler problems.

<comment><USER24> Why is it depressing? just because some douchebag on the internet said so?

</comment></comment><comment><USER25> "I like to spend free time wrenching on a car or a bike, but I don't set out on Saturday morning and say "I'm going to learn how to use a torque wrench today, because those things are the future of tools"."

That one made me laugh.

<comment><USER26> Really? I'm getting kind of tired of the tool analogies. They are thrown around as answers in place of actual thinking and reasoned arguments. The comparison between learning how to use a torque wrench and learning a language is absurd.

<comment><USER27> It depends.

Learning a significantly different language can be mind-expanding. Going from C to Lisp is not just picking up a different tool. More like a brain transplant.

Going from Java to C# is more ho-hum. There will be no epiphanies. More like "Oh, Microsoft solved problem X. That's nice."

That really is like replacing a Husky brand wrench with a Craftsman brand wrench.

</comment></comment></comment><comment><USER28> I would hire someone who didn't code in their spare time, but I definitely wouldn't hire Teddy boy. Who would want that kind of publicity-addicted blowhard polluting their team?

<comment><USER29> PR talent is important.

<comment><USER30> Judging by the post he has more of an anti-PR talent.

<comment><USER31> Yet we all know who he is.

<comment><USER32> Fame and Infamy have subtle differences.

</comment></comment></comment></comment></comment><comment><USER33> The problem I've noticed with hiring people based on whether or not they code on their free time is that whether they do so is often dependent on how much their work/coursework sucks. If it sucks pretty badly (which it usually does), then the folks who enjoy programming will tend to do as little work as they possibly can, and save their energy for their side projects.

One interesting thing you can infer from this is, if you're running a shitty shop, you actually want _bad_ programmers, not good ones. Bad programmers with a high degree of discipline. I don't mean for this to get sucked into that _other_ discussion about immigration and employment, but I've long thought that this is why the big employers like IBM like to hire foreign talent (it's not for the same reason why _we_ want to keep foreign talent here).

</comment><comment><USER34> I am not sure I agree. The main reason is that when all you do is work, you are only exposed to one codebase, written by one small group of (perhaps inexperienced) people. You are never going to get any new ideas from that; you are going to spend your 8-hour day reinventing the wheel and doing things wrong. You will just continue the same monoculture forever. This may "meet the business needs" (the favorite excuse of the non-programmer], but it's not going to be good code.

(You could be taking an interest in outside programming "stuff" at work, perhaps, but between meetings, lunch, and getting your actual work done, how much time do you have to learn new programming languages and peruse open- source projects? Probably not enough. This stuff is _time-consuming_!)

So anyway, you can probably be a good programmer by not being interested in programming outside of work... but you probably won't be a _great_ one. How many great authors claim they don't read books outside of their 9-5 workday? How many great artists would rather spend time with their kids than painting?

Not many.

<comment><USER6> Cormac McCarthy famously said he didn't read Proust or Pound, because to him that wasn't literature, and it wasn't what he wanted to write. There are lots of artists who famously didn't do much work, because they preferred only to work when they were inspired.

The moral is that it's possible both to be good and hardworking and good and not quite so obsessed.

<comment><USER34> Neither of these are "show up in an office at 9am, work for 8 hours, go home at 5, not think about anything work-related for 16 hours, repeat", however.

</comment></comment></comment><comment><USER35> After seeing Pressflip, I don't blame him.

<comment><USER6> What a snotty, immature response. Dziuba worked for Google before Pressflip, and is now working on Milo, which looks pretty sweet.

But I don't blame you for needing to snark at other people after seeing adamhowell.org.

<comment><USER21> Yeah, but there's only so much one can take of Ted Dziuba's writing before the urge to respond in kind wells up.

It'd just be simpler if people wouldn't upvote his articles.

<comment><USER6> Ted's an asshole, and most of the time I'm pissed off by his writing. When Uncov came "back" early last year it was terrible. That said, this article I agreed with entirely, all respect to raganwald, and it pisses me off that people would stoop to namecalling rather than discussing it. I think this is the rare Dziuba piece worth a good debate.

Above all, I can't stand insulting somebody by insulting the work they've done. Ted is obviously smart, he put a lot of work into Pressflip before retiring to have a kid, and Pressflip, while not brilliant, wasn't terrible when I used it. I just didn't see the point to it. Now he's off working on new things, so he's not exactly lazy or coasting.

<comment> tsetse-fly Any insults that Ted Dziuba receives are well-deserved.

He's written dozens of trollish articles on how useless other startups are or how he hopes they'll fail. It seems fair to me that people are insulting his failure to produce a successful startup when he's spent so long being a hypocrite. You can't expect to be the Glenn Beck of startups and not be on the receiving end of the trolling.

Here are some of his headlines from Uncov, incase you've forgotten his work:

        "Fanboy Driven Development with Arc"
        "Paul Graham, Just Shut Your Face Already"
        "RockYou Dominates The Fake Business World"
        "Surprise, Mahalo Still Blows"
        "Mahalo Is Hawaiian for Useless"
        "Guy Kawasaki Should Stick To Contentless Blog Posts"
        "Web 2.0: So easy a 14 year old can do it"
        "Middio: Another Marginally Useful Feature As A Product"
        "WriteWith: Everybody Point and Laugh"
        "YouOS: YouHave To Be Kidding Me"
        "Wellsphere's Fail Tale, Part 2"
        "Firefox Fanboys: The Only People More Dangerous and Less Competent Than ..."
        "Did Enron Cause Web 2.0?"
        "Web 2.0 Amateur Hour: Sputtr"
        "VoSnap: An Overnight Delivery Of Fail"

<http://www.reddit.com/domain/uncov.com>

<comment><USER6> I actually liked all of those articles, except the Paul Graham one, which was part of later Uncov. Back in the day, Ted had the knack for saying exactly what needed to be said about a lot of ego-laden fellows. He's more a critic than he is a builder; I'm one of those weird fellows that thinks a critic is a valuable part of any ecology.

I'm fine with negativity as long as you're saying something _useful_. The OP just snarked without any meaningful criticism; I attempted to criticize him and got downvoted to the depths of Hades, which I guess is how it goes sometime. For all his numerous failings, I still like Dziuba more than I dislike him, especially when he insults somebody along with a well-delivered counterpoint rather than just insulting.

<comment> tsetse-fly <http://antoniocangiano.com/2009/01/28/lets-all-grow-up/>

</comment></comment></comment></comment></comment></comment></comment><comment><USER36> I wouldn't hire somebody who publishes a picture named "obama-winning-the- nobel-proves-that-white-guilt-is-one-of-the-most-awesome-powers-on-earth.jpg" on his blog (although I'm open to interpretations of that filename).

<comment><USER37> Is it because he thinks that Obama didn't deserve the peace prize, or because he thinks that white racial guilt is a factor in the President's incredible popularity?

I guess this is another example of why keeping your political opinions to yourself if you disagree with the majority is good for your career.

<comment><USER38> Somehow I doubt norwegians would have any of that white guilt.

<comment><USER36> Swedes.

<comment><USER39> Actually, the commitee is five Norwegians, age 58-68, all members or former members of the Storting (Norwegian parliament). One man, the chairman, four women.

See: [http://nobelpeaceprize.org/en_GB/nomination_committee/member...](http://nobelpeaceprize.org/en_GB/nomination_committee/members/)

</comment></comment></comment></comment></comment><comment><USER40> Couldn't you spin not coding outside of work into something positive?

Job interview:

What have you coded in your free time?

Me: I spend my free doing X and Y. I find I'm most effective at work if I save all of my creative energy for the job.

<comment><USER41> _confused look_

"What's 'free time'?"

<comment><USER42> A word-for-word translation of "temps libre" from french. Spare time.

Temps is time, libre is free.

</comment></comment></comment><comment><USER43> Can we remove "Ted Dziuba" from the title? It's in the URL right after, anyway.

Coming from a random unknown blogger, I doubt this would've made it to the front page.

I actually happen to mostly agree with what he says in this post (even though a lot of it is strawman), but really - who cares?

</comment><comment><USER44> _"I would not want to work for a company that wouldn't hire me"_

Me either ;)

<comment><USER15> And I don't want to go out with any hot model that does not want to go out with me!

</comment></comment><comment><USER45> I have a family. I understand where he's coming from, but only to the extent that I have to balance family time with passionate hobby time, but...

I would not hire a writer that does not write in his free time. I would not hire a lead singer that does not sing in his free time. I would not hire a chef that does not cook in his free time. I would not hire a prostitute that does not have sex in her 'free time'.

OK, that last one is a stretch perhaps, but my point is simple: if someone loves what they do, the act of doing it is not a chore and never "something they do for money" but "a state of mind". You can never learn all there is to know "on the job". Perhaps MANAGERS do not have to manage in their spare time, but anyone producing tangible stuff better love it.

He sounds like he's trying to tell himself he can still be a good programmer without putting in the time. I'd like to tell myself the same thing, but sadly, those days are really gone (it's a slippery slope, it started with a kiss, a gf, a relationship, living together, marriage, children... pooof!)

<comment><USER46> I tend not to code in my free time, because whenever I feel like coding, I apply that effort to a project designed to make me money, so that time becomes work time.

</comment></comment><comment><USER47> The debate is not really about whether you program in your spare time. It's a debate about whether you love programming.

1\. People who love doing something are on average going to be much better at it than people who don't.

2\. People who love something find a way to do it, meaning that programming in your spare time is a very strong indicator of whether you love programming.

3\. Therefore, whether you program in your spare time is a very strong indicator of your programming skill.

Whether you program in your spare time is a proxy for whether you love programming, which is a proxy for your programming skill.

If this author has only coded for pleasure one time in his entire life, including college (!), then the probabilities say he's overwhelmingly likely to not be a very good programmer. Maybe he's the exception, I know nothing about him other than what's in my comment.

</comment><comment><USER48> Maybe the reason this guy is pissed off constantly is because he just doesn't like his work.

</comment><comment><USER49> This post gave me a chuckle.

 _You know what's more awesome than spending my Saturday afternoon learning Haskell by hacking away at a few Project Euler problems? Fuck, ANYTHING._

Sorry, why is this guy trying to convince everyone that his hobby is better than everyone else's?

<comment><USER50> If the title of the post didn't disqualify him from my fantasy hiring process, then certainly this line would.

</comment></comment><comment><USER51> If you code in your spare time, it could simply mean that what you do for work isn't challenging or satisfying enough. If you're a good programmer you need to make something beautiful, you need to leave your fingerprint somewhere. If you can do it at work, good; if you can't, you can't not do in the evenings...

It can be a drag though. Few people can do actual coding more than 5-6 hours a day when they're in the good shape. Trying to do a good job and still satisfy your own itches the same day may not be possible, either.

<comment><USER52> Two excellent points! Add to that: I code at work the same type of things I'd make at home else. That free up some time, and wow, you get paid for that :)

</comment></comment><comment><USER53> Me to Ted: And I wouldn't hire you.

Not only are you an asshole (that would be excusable), you are an asshole that consistently writes articles full of sound and fury, but completely vapid. As a writer, you are incompetent, albeit rabble-rousing.

To top it off, from what I gleaned from your articles, you know very little about programming. You consistently seem to misinterpret ideas, either deliberately in order to mock them on unsound grounds, or simply through ignorance.

In short, I wouldn't hire a troll.

</comment><comment><USER54> I work in IT, and the way I see it, there is a certain amount of time that I want to work on computers. When I'm working work on computers 40 or more hours a week for work, I'm unlikely to want to spend any of my free time working on computers. When I've got a lower work load, I tend to spend more time on personal projects related to computers.

If I were actually a programmer, I would probably fall into the same pattern.

</comment><comment><USER55> Well the obedient type is normally what a company would want to hire to work under it. The crazy people who code in their spare time are more startup- founder type anyways. And these types have a tendency to fail the hiring process more often.

</comment><comment><USER56> I've met lots of really smart programmers that don't even seem to talk about coding during lunch, much less program during free time. I'd certainly code more at home if I didn't have a family and lots of other interests besides programming.

</comment><comment><USER57> If Ted doesn't code at home, doest he blog about code at home? Or at least blog about not coding at home? Doesn't that mean he's thinking about it, which is effectively the same thing?

</comment><comment><USER58> then I would not hire you.

</comment><comment><USER59> he works for his startup right? he doesn't have any spare time anyway.

</comment><comment><USER60> So that explains why I've never heard this guy's name before.

</comment><comment><USER61> AMEN.

</comment><comment><USER62> Sorry but I hate the photo on that site!

Yeah it's nature and all but it speaks loudly about the author of that blog!</comment>


Go Micro v2.4.0 – Go microservices development framework - <AUTHOR> https://github.com/micro/go-micro/releases/tag/v2.4.0 <comment><USER2> This post links to a release on github. It might be clearer to link to the project homepage instead: [https://go-micro.dev/](https://go-micro.dev/)

<comment><USER3> A thread from 3 months ago: [https://news.ycombinator.com/item?id=21878659](https://news.ycombinator.com/item?id=21878659)

</comment></comment><comment><AUTHOR> Hey! Asim here (author). Feel free to ask any questions. Was not expecting this to hit the front page.

<comment><USER4> Is it possible to create a tutorial showing features end-to-end (using CLI / Code generation)? I have seen a couple of high quality tutorial series on web - but they are advocating usage of 1.18 version.

<comment><AUTHOR> Sure, what kind of tutorials are you interested in? Written form or video? We're thinking about doing a video walkthrough series potentially in live form.

<comment><USER5> Written form please. This saves time in many ways, such as searching for certain chunks of information when trying to form an early opinion on how this product fits one's need. I went through your dev documentation today and the organization is good. I wish you would present the more detailed booking example in the same conversational style as the shorter hello world example at start. When a developer sees the first page with the bullets of interesting features (service discovery, load balancing, etc), they would want to get a broader picture of the architectural approaches combining these features (through coding examples). Interesting work. Thanks for creating it.

</comment></comment></comment></comment><comment><USER6> This is reminiscent of [https://github.com/moleculer- go/moleculer](https://github.com/moleculer-go/moleculer). I have not used it personally.

I have worked with moleculer-js, which I've had great time using ([https://github.com/moleculerjs/moleculer](https://github.com/moleculerjs/moleculer)).

<comment><AUTHOR> Micro started in 2014 and from what I could tell molecular took a lot of ideas from it to creat something in the JS ecosystem.

</comment></comment><comment><USER7> Built in NATs, RPC, mDNS, this all seems really compelling. Is anyone using this at scale in production? What have been the pain points?

<comment><USER8> I think thats not really micro.service anymore. It creates a lock in we dont want. Why not build a monolith then?

<comment><AUTHOR> Micro focuses on providing distributed systems programming as a single framework, so it takes all the patterns you'd normally leverage and puts them in one place for you to easily build services. We do this with a pluggable model so you can pick and choose underlying infrastructure dependencies or a zero dep model if you choose. Its very powerful and our hope is the next generation of services are built using it.

<comment><USER7> Given that the functionality incorporates a lot of things one would usually create for a service being run on something like Kubernetes does it run well on Kubernetes? Or are there clashes?

<comment><AUTHOR> Most of our users run this on kubernetes. Developers want an abstraction that is not kubernetes or infrastructure. Something simpler entirely focused on the development of services. So it fits well. We run it on kubernetes.

</comment></comment></comment></comment></comment><comment><USER9> I was just posting this on another forum. But I want to learn more about scalability and availability and microservices. I am quite familiar with fullstack and various databases but I need a hands on experience. Does micro have some sort of tutorials that build microservices from scratch?

<comment><USER10> Check "Micro In Action" series:

[https://itnext.io/micro-in-action-getting- started-a79916ae3c...](https://itnext.io/micro-in-action-getting- started-a79916ae3cac)

Note: it is based on v1.18 for now. I'll update it to v2.x soon

<comment><USER9> Oh nice thanks!

</comment></comment></comment><comment><USER11> Would I use micro on top of k8s? Doesn't seem to make sense to mix the two as far as I can tell.

<comment><AUTHOR> Actually Micro is the exact thing you would use ontop of kubernetes. Micro was built to tame the world of cloud-native complexity and focus on developer needs.

You can think of Micro as an abstraction layer over distribute systems infrastructure, hiding the complexity from the developer and providing a pluggable system which allows it to operate in any environment. This means locally a dev can run with zero deps but in prod someone from the ops team can switch to etcd, cockroach, kubernetes, etc.

Predominantly the majority of our users are using Micro on top of K8s. Their primary focus is productivity and velocity of development when building microservices.

<comment><USER12> Using this framework on top of kubernetes (which is itself another framework used to managed microservices) sounds like an operational nightmare. Kubernetes is already filled with operational pitfalls so adding more layers on top only increases complexity.

I think Go-Micro looks cool but I wouldn't suggest layering this much more than you already are. Complexity is death for distributed systems so minimizing complexity means maximizing reliability for the systems.

<comment><AUTHOR> I'm sorry you've misunderstood what this is. This is a Go Framework for microservices development. It's what you use to write services. It's like Rails or Spring. Kubernetes is for running applications not writing them. Kubernetes no opinions about how you write software. We encapsulate the underlying infrastructure and provide a framework for the developer to literally write business logic.

<comment><USER13> The first two features listed on the README are "service discovery" and "load balancing", which is probably where the question is coming from.

<comment><USER11> yup.

Micro seems like a framework + platform for running micro services (ideally on bare metal). (Not saying there's anything wrong with that though)

</comment></comment></comment></comment></comment></comment><comment><USER14> We are looking into Dapr now. How do you compare to it? [https://github.com/dapr/dapr](https://github.com/dapr/dapr)

<comment><AUTHOR> Dapr is attempting to play in the same space as us. Using a standalone server and grpc generated libraries. We're a Go framework first as we believe development is about the tools you put in the hands of the developer meaning how they write code. We deliver the framework as a set of grpc services also which you can start with the command "micro server" and communicate through [https://github.com/micro/micro](https://github.com/micro/micro)</comment></comment>


SpaceX Makes Strides Towards 1st Stage Falcon Rocket Recovery - <AUTHOR> http://www.universetoday.com/111377/spacex-makes-strides-towards-1st-stage-falcon-rocket-recovery-during-space-station-launch/

<comment><USER2> I have yet to find any updated news about the 1st stage ... did it fire when it was supposed to? Did it follow the expected descent profile? Did that Russian boat steal it for Putin? It'd be sure nice to see some answers, and video footage (albeit from the rocket's POV)</comment>


Casual Introduction to Low-Level Graphics Programming - <AUTHOR> http://stephaniehurlburt.com/blog/2016/10/28/casual-introduction-to-low-level-graphics-programming <comment><USER3> I disagree with the introduction of the article. Low-level graphics programming is incredibly math intensive, and a solid understanding of trigonometry, linear algebra and discrete math is __required__ to be succesful in it. When I say discrete math, I mean fundamental understanding of how data is represented, and how you can interpret data as you please. E.g. using textures to store depth maps or even sound data, IEEE754 floats, etc.

There are many areas of design and 3d graphics that do not involve math, but to claim that low-level graphics programming doesn't involve a lot of math is disingenuous and harmful.

<comment><USER4> I think they meant _most_ graphics programmers who don't go deeper than the API know much math, unfortunately. It fits her narrative, say "most graphics programmers don't need math" but then goes to demonstrate how much geometry is relevant to low-level graphics.

</comment></comment><comment><USER5> Excellent introductory post! There's so much to digest when you start playing around with things like OpenGL that you quickly get lost in the details... just memorizing things ("now for some reason I have to type "bindBuffer"). It's hard to build up a mental model for WHY you're doing all the steps. This gives a great bigger picture overview! (though, the next step is still the ocean of nitty-gritty details ;)

</comment><comment><USER6> As someone who's only used high-level UI stacks (DOM, WPF, Android view system, etc.), I would love to read a great article that's a "Casual Introduction to Low-Level Graphics Programming", these are basics that I've been meaning to add to my quiver for a long time. Unfortunately, this less- than-coherent article is not it.

<comment><USER7> This is a really fun way to build your own (raterization based) renderer step- by-step: [https://github.com/ssloy/tinyrenderer/wiki](https://github.com/ssloy/tinyrenderer/wiki)

</comment></comment><comment><USER4> >Vectors have more values, 3 is common. Very useful for things like position or color.

>If two vectors overlap, the dot product is 1. If they are perpedicular (90 degree angle), the dot product is 0. (Note: just for vectors that only represent a direction and have length 1, you can think about varying vector lengths later)

Something is terrible incongruent (pun intended) here. How can three numbers have a length, much less length of one? I think here, the _mathematical_ introduction that a vector is just an arrow is better here. It just so happens you can express the arrow as a set of numbers, which I admit is not obvious at first unless you've taken algebra 2. But the jump from "3 numbers" to length is confusing too.

The truth is people conflate vectors with arrays, but if you want to think deeper than anyone who does computer graphics needs to, you don't need coordinates or any group of numbers to express vectors.

<comment><USER8> I'm not seeing any indication of three numbers relating to length. I see a gap in information, not a leap from "3 numbers" to "length."

What's missing is the definition of a vector: an item with direction and magnitude/length. Using the distance formula, you can determine the length of the vector. So if your vector is <5,4,3>, plug that and the origin <0,0,0> into the distance formula to get a length of 5 * sqrt(2) (approximately 7.071)

Further, you can 'normalize' the vector so that the direction is the same but the magnitude is 1. To normalize, divide each component by the length: [http://www.wolframalpha.com/input/?i=%3C5%2F(5sqrt(2))%2C4%2...](http://www.wolframalpha.com/input/?i=%3C5%2F\(5sqrt\(2\)\)%2C4%2F\(5sqrt\(2\)\)%2C3%2F\(5sqrt\(2\)\)%3E)

<comment><USER4> That's my point...there is a gap in information.

</comment></comment></comment><comment><USER9> I've got a list of computer graphics resources on Github:

[https://github.com/melling/ComputerGraphics/blob/master/READ...](https://github.com/melling/ComputerGraphics/blob/master/README.org)

</comment><comment><USER10> It's bad. One one hand it gives something more or less true in a "casual" manner but on the other it's also intermixed with complete BS. E.g. wtf specular does not depend on view direction? It's called specular for a reason.

While I have no problem with people simplifying things for introduction to laymen, I think introducing falsehoods like this will do more harm than good.

<comment><USER11> It's just a typo. They wrote "normal" twice instead of "camera/eye". With that one-word correction, it's Blinn-Phong.

<comment><USER10> It could be a typo but how are people who is this supposed to target will know? It's not like somebody who was just given a bizarre explanation for dot product (and Lambert's lighting model along with that) will see through it.

</comment></comment></comment><comment><USER12> While its true that you probably do not need to be very good at math to do basic graphics, you do need 'some' math. You need to be able to understand the basic algorithms of the graphics pipeline to use them correctly and experiment. The best source for a detailed and 'gentile' intro is still one of the introduction to computer graphic books. You can sit with a pad of paper and work through some of the formulas on paper until you understand what they do.

One of my favorites, because it does not use any particular language and the math derivations are detailed and easy to fallow.

Fundamentals of Computer Graphics - <USER2> [https://www.amazon.com/Fundamentals-Computer-Graphics- Peter-...](https://www.amazon.com/Fundamentals-Computer-Graphics-Peter- Shirley/dp/1568814690)

</comment><comment><USER13> Maybe my expectations are too high, but that's just a collection of random comments loosely related to graphics. It's a terrible introduction, and it doesn't give any concrete information on how to get started.

My advice for people interested in graphics would be to jump in and get started with a tutorial on the web and then get a book or two to learn more. My recommendations would be:

Introduction To Ray Tracing - It focuses on ray tracing, but many of the topics (vectors, matrices, shading, view transforms, etc.) are applicable regardless of the actual rendering method, and it does a good job explaining all of it.

[https://www.amazon.com/Introduction-Tracing-Kaufmann- Compute...](https://www.amazon.com/Introduction-Tracing-Kaufmann-Computer- Graphics-ebook/dp/B003VWBY18/ref=mt_kindle?_encoding=UTF8&me=)

Real Time Rendering - This also covers all the math, but focuses on rendering at a higher level and covers more ground.

[https://www.amazon.com/Real-Time-Rendering-Third-Tomas- Akeni...](https://www.amazon.com/Real-Time-Rendering-Third-Tomas-Akenine- Moller/dp/1568814240/ref=sr_1_1?ie=UTF8&qid=1477765570&sr=8-1&keywords=real+time+rendering)

Finally, Computer Graphics: Principles and Practice - This is a great general reference for more specific topics. It's like Real Time Rendering expanded to cover more topics and going into more depth. Not a beginner reference, but great to have when you need more information on something.

[https://www.amazon.com/Computer-Graphics-Principles- Practice...](https://www.amazon.com/Computer-Graphics-Principles- Practice-3rd/dp/0321399528/ref=dp_ob_title_bk)

</comment><comment><USER14> Graphics programming introduction, followed by fashion advice for software developers. Heh.

</comment><comment><USER15> Does this person know anything about graphics, or is this some sort of creative writing or reportorial exercise?

How can one introduce vectors without the word "direction"?

How can one so thoroughly screw up the introduction to illumination?

<comment><USER11> When you write an article, and John Carmack responds with a correction, you're probably not actually doing too badly.

<comment><USER16> For the curious [https://twitter.com/ID_AA_Carmack/status/792158370186670080](https://twitter.com/ID_AA_Carmack/status/792158370186670080)

</comment></comment></comment><comment><USER17> js;dr: the page doesn't render without javascript.

<comment><USER18> I'm really not a fan of this Medium-ization of programming blogs. I find this much harder to read than something more crude and basic, like, e.g. [http://lazyfoo.net/tutorials/SDL/index.php](http://lazyfoo.net/tutorials/SDL/index.php) \- static html, no JS (aside from the obligatory analytics, Adwords, and social widget throw-ins), high-contrast, no-nonsense.

<comment><USER19> Man lazyfoo, that takes me back...

I remember extending what I learned in the series of tutorials into a tiny Windows/Android cross platform demo a few years ago to get familiar with NDK</comment></comment></comment>