Black box optimization competition - <AUTHOR> http://bbcomp.ini.rub.de/ <comment><USER2> I really dislike the term "Black box optimization". There's no such thing. You _have_ to make assumptions about your function, so in the end this is just rewarding people whose optimizers happen to match the chosen functions; but those functions are not made explicit whatsoever. That doesn't make any sense.

For example, if the output/input are floating point numbers than you can assume the domain/range is [-M,M]. Otherwise, with even the most clever function you have no guarantee of ever approaching the optimum, even if the function is continuous. Now even with a limited range there are no guarantees if the function is not well behaved -- so you have to again assume the function is well behaved. And for any assumption you make there is a condition on function for which it is terrible. There is no best assumption, or best algorithm, then. You could, for instance, _assume_ the function is adversarial (trying to make your life difficult), for which the best algorithm is perhaps just sampling randomly the range, which is really a terrible algorithm -- but that's of course just another assumption, and a terrible one.

I would much prefer 'Typical function optimization', if you're optimizing unlabeled functions so frequently, or at least not try to hide the inevitable assumptions.

TL;DR: The contest may be useful, but the concept of "Black box optimization" is nonsense.

<comment><USER3> Yes, there is such a thing.

There exist many more techniques than trivially assuming some "template" function and fitting the function parameters against the data.

Have a look at nonparametric modelling techniques. For example kernel regression or gaussian processes. You either don't make any assumptions, or you take an uninformative prior that distributes over all possible results.

This competition evokes modelling, optimisation __and __the exploration /exploitation tradeoff. I'm sure there will be very interesting theory behind the winning entries...

<comment><USER2> The point is, I don't even need to look up your techniques (although I did out of respect) to know there really isn't such a case; what I stated is a simple, almost trivial principle (apparently it has a name [1] as some pointed out).

Mathematics models data, and you can't model without assumptions. It's like developing a theory which can't have axioms. For example, kernel regression probabilistic model is a terrible model (assumption) with very large error for a large class of distributions[2], and so on. We're talking about picking the _best_ technique; this technique is going to pick some assumptions arbitrarily that will or will not work well based on an unclear choice of the organizers. That's why I would prefer if they stated instead "Functions with some real world relevance", or "Typical functions", or maybe "Poorly behaved functions", and so on.

[1] [http://en.wikipedia.org/wiki/No_free_lunch_in_search_and_opt...](http://en.wikipedia.org/wiki/No_free_lunch_in_search_and_optimization)

[2] On the wikipedia page you can see they do make assumptions on f to minimize the squared error for choosing the kernel. It's inevitable.

<comment><USER3> You are fighting a mathematically pure interpretation of black boxes that are making no assumptions at all. Your observations are correct. But nobody actually interprets the term "black box" the way you deem wrong.

Taken from here [1]:

White-box models: This is the case when a model is perfectly known; it has been possible to construct it entirely from prior knowledge and physical insight.

Grey-box models: This is the case when some physical insight is available, but several parameters remain to be determined from observed data. It is useful to consider two subcases.

1\. Physical modeling: A model structure can be built on physical grounds, which has a certain number of parameters to be estimated from data. This could, for example, be a state-space model of given order and structure.

2\. Semiphysical modeling. Physical insight is used to suggest certain nonlinear combinations of measured data signal. These new signals are then subjected to model structures of black-box character.

Black-box models: No physical insight is available or used, but the chosen model structure belongs to families that are known to have good flexibility and have been 'successful in the past'.

[1] [http://www.sciencedirect.com/science/article/pii/00051098950...](http://www.sciencedirect.com/science/article/pii/0005109895001208)

<comment><USER2> Fair enough. I wasn't not familiar with the literature to be honest, it was just a remark.

I still dislike the term and concept, but it's hard to argue with a conventional definition. I believe assumptions should be made as clear as possible and the term seems like a futile attempt at hiding them.

</comment></comment></comment></comment></comment><comment><USER4> It's a little strange that they do not have a track that gives gradient information, given that it is often a real world possibility. Also, this basically allows unlimited time between eval... So this becomes a contest about \- coming up with a distribution over R^n -> R function \- finding the optimal evaluation points to do Bayesian update

I predict the winner will use some a mixture of Gaussian processes with various kernels and stochastic control (with a limited look ahead, otherwise it blows up) to pick the test points.

<comment><USER5> You can compute the gradient, it just has a high budget cost.

The usual winner is a flavor of CMA-ES, though they may have picked up the functions to avoid this.

<comment><USER4> You're missing my point. In many real world problems, it is cheap to compute the gradient. Thus, black box optimization methods which can use gradient information are inherently valuable, and it is surprising that they do not have a track that would allow showcasing those.

<comment><USER6> In a great many real world problems, including most of the most expensive ones gradients are _not_ available, or can only be expensively computable... even if your objective is differentiable, automatic differentiation isn't cheap on non-trivial functions.

Experiences differ, but in mine the most common place to find objectives with gradients is in optimizer challenges.

That said; sure, there should be a track that gives you the gradients. I agree that it would be nice if there were another track.

</comment></comment></comment></comment><comment><USER7> Seems really interesting. Too mathy for my skillset.

If I may, I propose that the organizers remove the restriction on disassembling the client library or intercepting network connections. This restriction seems like it cannot benefit the organizers, unless the protocol is insecure. People are going to ignore this rule anyway, and you can't stop them or even detect them doing it. So why put it in there? It's only going to generate ill will.

<comment><USER8> It's probably insecure, because you don't want to do 75,850,000 sequential evaluations over a network. It would take over a week for a single track with even just 10ms response time.

<comment><USER7> Presumably a secure implementation would just batch up evaluations into groups of ten or a hundred. You could make something like this work.

</comment></comment></comment><comment><USER9> Whoa. The servers for this competion are about 8km away. That's the most 'local' content I've ever seen on HN.

Unfortunately I have to agree with obstinate here. The pure math is too much for me and reverse engineering (still daunting, but interesting/possible) is not acceptable. If any HN person wins this contest, I offer beers close to the black box :)

<comment><USER5> Shameless plug: anyone interested should be able to get baseline results and above easily by using libcmaes. I am one of the authors with no time to compete, but am interested in reports on how it goes. Also if you are a researcher or a student the lib should let you experiment easily with various custom strategies.

[https://github.com/beniz/libcmaes](https://github.com/beniz/libcmaes)

</comment></comment><comment><USER10> Wish I had seen something about this sooner. The competition began in January and ends on the 30th of this month.

<comment><USER6> That was my thought too! but instead of even click on the HN comments I went and wrote a contestant. Within a couple hours all my runs will have completed; assuming no big power failure I'll make the deadline! :)

(Uh, no doubt I won't do well, since I had no time to ... like.. actually test my code on any functions except a couple trivial trials. :P ... I hope they put up some kind of ranking information as soon as it closes. I have no idea if my results are awful or merely bad :) (and I probably shouldn't share best numbers before it closes) )

</comment></comment><comment><USER11> 1\. You do not know what the function looks like, even there is no gradient information

2\. You have a fixed number of probes M

2\. Among M, You have N number probes to get the silhouette of the function (exploration).

3\. Then from the rest of the (M - N) trials, you need to find the optima (exploiation).

Sounds more like a pseudo-science than a math problem to me.

<comment><USER12> Huh? Who said it was a math problem? And pseudoscience? Most real world optimization problems are like this. Sometimes don't get gradient information or unlimited trials.

The point of the task is to reward methods that work efficiently with limited trials and domain information, rather than who can run hillclimbing on the biggest computer or hand tune the parameters the best.</comment></comment>


Ask HN: Suggest a platform for a status page (eg. like status.linode.com) - <AUTHOR>

Hi,
I'm looking to build a status page for a webapp of mine ... something that looks and functions like http://status.linode.com.
(Obviously, this could be fulfilled by a simple blog or any number of solutions.)
The only reason I'm looking for a solution is because it has to be hosted outside of my own infrastructure. Hence if my webapp or my servers go down, the status page is still up.
Then I thought I'd just throw this question out there and see what people think.
Criteria:
o Quick and easy to setup and update.
o Looks decent. Brandable.
o Custom domain.
o Third party infrastructure. Preferably highly scalable. (Would like static page / Varnish-like performance)
o Cheap.
(Dammit, if it didn't need to be hosted outside, I could just add to an existing server for free)
Possibilities:
o Typepad (which is what status.linode.com seems to use)
o Wordpress at wordpress.com
o Drupal at Acquia Gardens
o Jekyll with Github pages (Can't find pricing just to post a private blog)
o Some dirt-cheap shared hosting somewhere (but having stopped using shared hosting for many years, I don't really want to return to this)
Thoughts, anyone? <comment><USER2> You could use Amazon S3's static page hosting - [http://aws.typepad.com/aws/2011/02/host-your-static- website-...](http://aws.typepad.com/aws/2011/02/host-your-static-website-on- amazon-s3.html)

Some cursory searching found one company using it as such - [http://onemoredigit.com/post/3660651034/custom-domain- with-s...](http://onemoredigit.com/post/3660651034/custom-domain-with-static- amazon-s3-websites) . They seem to use JavaScript to pull reports of outages from their Twitter account.

<comment><AUTHOR> Interesting. For a tiny blog, I'd be looking at about ~$1-2 per month hosting. Thanks for the tip.

</comment></comment><comment><USER3> I've actually used Tumblr for this quite a bit, I've set up a Nagios output to update the Tumblog (Via the Tumblr API) for automated alerts.</comment>


Move to NYC. Hack on cool stuff. Enjoy startup life - old-gregg

We are small, self-funded, profitable startup located in a sunny loft in Manhattan and we are hiring. About you:
- Smart, gets things done
- Knows usual CS trivia
- Comfortable with Linux/UNIX
- Languages don't matter. We process lots of data and pick whatever works best.
About the company:
- Profitable. No VCs involved.
- Founded and ran by engineers
- Great product. Actually, it's quite awesome.
- Meaningful stock option plan
- Competitive salary, even in NYC.
See my profile for contact info and/or forward this to someone you know who may be interested. We may offer relocation assistance for a right candidate. <comment><AUTHOR> I guess it's a good sign that you're no longer struggling :)

[http://22.214.171.124/search?q=cache:FdNycnEnwhsJ:news.ycomb...](http://18.104.22.168/search?q=cache:FdNycnEnwhsJ:news.ycombinator.com/user%3Fid%3Dold- gregg+oldgregg.nyc%40gmail.com&cd=1&hl=en&ct=clnk&gl=us&client=firefox-a)

<http://news.ycombinator.com/user?id=old-gregg>

</comment><comment><USER2> oh, and you forgot to add:

Lots of chicks, as soon as you get out of the office.

If I wasn't under H1B stuff, I would consider moving in NYC, just for the dating scene is so awesome there.

Silicon Valley is like the dead sea in comparison.

<comment><USER3> "'Chicks'? You're such a man."

</comment></comment><comment> old-gregg To answer both questions:

Yes, we are in stealth mode and our site is running in a rack 10 feet away from me. This may sound a little unusual but that's determined by the market/niche we are in.

<comment><USER4> Let me guess: high-frequency trading?

<comment><USER5> We in the industry call it "low latency". Does anyone know where this term "high frequency" came from? Not that it matters.

<comment><USER6> It is somehow related - one can not achieve usable "high frequency" without low latency. So frequency = volume, latency = price accuracy in time.

</comment></comment></comment></comment><comment><USER7> No information at all with respect to industry or responsibilities?

<comment> brown9-2 Seriously as someone in the area who might be interested, I'd feel weird sending around my resume/contact info without at least knowing what kind of industry the work would be in.

</comment></comment><comment><USER8> I have heard multiple stories of these "low overhead" operations of high frequency trading. They are making millions.

Makes me wonder if a large enough cluster of these operations trying out their (same) ingenious (simple, but effective) algorithm on the market would manipulate it enough to just feed into itself.

</comment><comment><USER9> Why are you keeping your company secret?

</comment><comment><USER10> How large are you?

<comment><USER11> Maybe he's self-conscious.

<comment><USER10> Sorry, how large is your team? :)

</comment></comment></comment><comment><USER12> Just out of curiosity, what's your site? (Or are you in stealth-mode?)

</comment><comment><USER13> What's "usual CS trivia"? And does relocation assistance include people outside the states?

</comment><comment><USER14> If you're interested in dealing with immigration hassles, sign me up :)</comment>


Rtrace is an x86/x86_64 native code debugger written in Ruby - <AUTHOR> https://github.com/yahoo/rtrace <comment><USER2> I am the author of this code. If you're interested in getting started with it right away then check out Eucalyptus: [https://github.com/yahoo/rtrace/tree/master/Eucalyptus](https://github.com/yahoo/rtrace/tree/master/Eucalyptus)

I wrote Eucalyptus as the primary unit test for rtrace but its a fully functional native code debugger. Here is an example of how you can configure it using Ruby to trace calls to malloc() and print out some information:

[https://github.com/yahoo/rtrace/blob/master/Eucalyptus/examp...](https://github.com/yahoo/rtrace/blob/master/Eucalyptus/example_configuration_files/dsl_example.rb)

If you're interested in contributing, the signal handler in Rtrace could use some cleanup. Helper methods for interacting with procfs and the process memory are always useful too.

</comment><comment><USER3> I hate using gdb. Because their scripting API sucks so much and the user interface too (some little changes would help, but the source code is nothing I want to get in touch with). Actually I looking something like pry for native code.</comment>


The Evolution of Postmodern Thought – Helen Pluckrose on Cancel Culture - <AUTHOR> https://www.youtube.com/watch?v=xoi9omtAiNQ <comment><AUTHOR> This is a well-reasoned and well-informed analysis of the current debate around cancel culture, and I found it incredibly thought provoking (and enlightening).

Posting this here to celebrate the level of clear thinking and nuance that has recently been discussed on the front page.</comment>


Bill Gates's Next Big Thing - <AUTHOR> http://www.nytimes.com/2009/01/25/opinion/25kristof.html

<comment><USER2> This micro-article tells us nothing about "Gates's Next Big Thing," but only offers a thin sketch of what we all know about Bill's _current_ work. Unfortunately, even the link to reading Bill's "Annual Letter" (inspired by Warren Buffet's) at GatesFoundation just allows you to "sign up" (leaving your email) to receive the Letter (once available in 'early 2009'). A disappointing article, symptomatic of a _slow news day_.</comment>


Where does the T, U, V convention for generic type params come from? - <AUTHOR> Java, C#, and TypeScript use T, U, V, etc. to represent generic type parameters. Ostensibly that's because T stands for "Type", and U and V follow T in the alphabet.
On the other hand, Scala uses A, B, C and so on, and OCaml and Haskell use a, b, and c.
Where do these conventions come from? Is it because the functional languages are closer to math proofs, where α, β, and γ are used by convention?
Does anyone know of an early mailing list, commit message, etc. where this convention was discussed? <comment><USER2> I found out some old documentation introducing generics to C# 2.0 (source: [https://msdn.microsoft.com/en- us/library/ms379564(v=vs.80).a...](https://msdn.microsoft.com/en- us/library/ms379564\(v=vs.80\).aspx)) where it is said, that <T> stands for "Type" (as you said in your question).

I also looked at Scala's documentation and found out the following: "Generic classes take a type as a parameter within square brackets []. One convention is to use the letter A as type parameter identifier, though any parameter name may be used." (source: [http://docs.scala-lang.org/tutorials/tour/generic- classes.ht...](http://docs.scala-lang.org/tutorials/tour/generic- classes.html)).

Hope it helps.</comment>


Twitter's Facebook fixation could be sending the company into crisis - <AUTHOR> http://www.theguardian.com/technology/2015/jul/29/twitter-facebook-fixation-growth

<comment><USER2> There's a much greater market need for Facebook than Twitter. It's very surprising to me that Twitter got as big as it did.

<comment><USER3> Twitter solves a much better "news feed" infrastructure. That said, it's much better at being a protocol (similar to email) than a straight business (a la facebook).

<comment><USER4> Facebook is a terrible example of "straight business".

<comment><USER3> Not really, they're a pretty textbook advertising platform business.

<comment><USER4> "advertising platform" is a terrible example of "straight business". The fact that such non-straight businesses pre-date the internet is irrelevant.</comment></comment></comment></comment></comment>


Vi Hart and Khan Academy Join Forces [video] - <AUTHOR> http://youtu.be/e1a6Bxc0OYQ

<comment><USER2> Vi Hart is an absolutely awesome artist with incredibly enthusiastic and inspiring pedagogical math videos. This would seem a match made in heaven.

Also be sure to check out her hobby of building musical instruments out of paper and then playing them while they are on fire.

</comment><comment><USER3> Awesome, what a great combo. For those unfamiliar with Vi's work, she makes very entertaining and accessible video series called "Doodling in Math Class". Here's one of my favorites, called "Infinity Elephants" <http://bit.ly/zEiugp>

<comment><USER4> no need to use bit.ly <http://www.youtube.com/watch?v=DK5Z709J2eo>

</comment></comment><comment><USER5> Woo, I love it. I wondered if something was up ever since they collaborated on a video about scale: [http://www.khanacademy.org/video/vi-and-sal-explore-how- we-t...](http://www.khanacademy.org/video/vi-and-sal-explore-how-we-think- about-scale)

In hindsight, it looks suspiciously like the practical problem-solving part of an interview.

Vi seems like a well-rounded addition to Khan Academy: She makes videos and also does great hands-on educational inspiration with her artist-in-residence stints and all (update: <http://vihart.com/blog/tags/Harvard.html>).

Sal Khan wants to run a real school, and Vi will be a world-class camp counselor.

</comment><comment><USER6> Good thing to do. Khan does great work, but to be true, he is quite boring sometimes. Getting somebody else in with better grasp of how to make a video educational and entertaining at the same time would be a great idea.

</comment><comment><USER7> A longer explanation: <http://www.youtube.com/watch?v=eWuAYoHysIo>

</comment><comment><USER7> Well i've never heard of Vi Hart but she seems to do a similar sort of thing to Sal making educational videos, so it seems like a natural partnership. The Khan Academy seems to be going from strength to strength. :)

</comment><comment><USER8> She joins the dark side of _gasp_ verbal education?

</comment><comment><USER9> Yay! I love Vi. She got me into math again</comment>


New Look and Feel for the Netflix Website - <AUTHOR> http://blog.netflix.com/2011/06/new-look-and-feel-for-netflix-website.html <comment><USER2> There are exactly 5,000 comments on this blog post right now. It appears almost all commenters oppose the new design changes. It will be interesting to see whether Netflix will roll back their changes.

</comment><comment><USER3> Wow! Don't think I've ever seen a stream of comments so uniformly negative anywhere.</comment>


How much would you pay for digital content? - <AUTHOR> http://www.theguardian.com/media/2015/apr/09/uk-news-websites-iab-digital-ad-spend-2014

<comment><AUTHOR> I think content in this link raises an interesting debate. On the one hand the righteous will argue that the Internet should remain a source of free information. On the other hand, it's ethically fair that people are remunerated for their work; furthermore, it's pragmatic to expect people to pay for digital content, so that we can continue to cover the running costs.</comment>


Demoscene guidebook (2018) - <AUTHOR> https://github.com/psenough/teach_yourself_demoscene_in_14_days <comment><USER2> I've followed the demoscene for nearly three decades, and the demos get put out every year have always been hugely impressive. The old Amiga stuff like Technological Death was great but the more modern demos like Intrinsic Gravity by Still ([https://www.youtube.com/watch?v=-ZxPhDC-r3w](https://www.youtube.com/watch?v=-ZxPhDC-r3w)) are just _amazing_.

You can get pretty far making demo effects in CSS and JS these days. A couple of my attempts over on Codepen;

Text flash - [https://codepen.io/onion2k/full/WyLoNg](https://codepen.io/onion2k/full/WyLoNg) (Warning: flashing images)

Bitmap text wobble scroller - [https://codepen.io/onion2k/full/rYgxdJ](https://codepen.io/onion2k/full/rYgxdJ)

<comment><USER3> > _Intrinsic Gravity by Still_

This one is fun to watch on a 3D display. (As much of it is black & white, anaglyph should also be worth a shot.)

Most of the effects could have plausibly been rasterised or blitted into a flat plane; alternatively, all of it could be done in a pixel shader which just colours in two triangles that fill the screen. But (as I discovered to my delight one day when I happened to have access to a Windows machine with a 3D monitor) it's all 3D geometry with a perspective projection.

For example, the wibbly-wobbly cone[0], viewed in 2D, could just as well be a flat bunch of sinusoidally gyrating discs all XORed together. But these discs are properly stacked along the Z axis.

The demo doesn't natively support stereo displays, so you have to find a tool that can inject itself into the graphics pipeline and modify the projection matrix for each eye. I don't remember which one I used when I tried that, but it had a nifty feature you should seek out: Hotkeys that let you adjust the mapping of depth to the stereoscopic shenanigans (separation and convergence) on the fly. Being able to make such tweaks on a scene-by-scene basis helps a lot with a production that was only designed for cyclops mode originally.

The same technique can be applied to many PC demos, but usually it only amplifies a 3D effect that was already there in the first place. In the case of Intrinsic Gravity, it gives you an extra dimension of ' _whoa_ '.

Bonus recommendation for those who can't be bothered with any of that and just want to watch a neat recording on Youtube: Stargazer by Orb & Andromeda[1]. Nothing earth-shattering; just a personal favourite with a modern take on old- skool demoscene aesthetics and neat effects that don't fall apart in a video capture with limited bit rate.

[0] [https://youtu.be/-ZxPhDC-r3w?t=67](https://youtu.be/-ZxPhDC-r3w?t=67) [1] [https://youtu.be/xgtghVdWlVY](https://youtu.be/xgtghVdWlVY)

<comment><USER2> Stargazer is a great demo.

</comment></comment></comment><comment><USER4> "A Mind Is Born" [https://linusakesson.net/scene/a-mind-is- born/](https://linusakesson.net/scene/a-mind-is-born/)

> Making a demo in just 256 bytes would be a formidable challenge regardless > of platform. A Mind Is Born is my attempt to do it on the Commodore 64.

<comment><USER5> I'm convinced Linus Akesson is a warlock practising black magic. His "chipophone" is one of the best hacks I have ever seen.

</comment></comment><comment><USER6> Everything the C64 demo scene produces is cataloged and archived at [https://csdb.dk/](https://csdb.dk/) You can find the latest releases here: [https://csdb.dk/latestreleases.php](https://csdb.dk/latestreleases.php) \- The C64 demo scene is still very active. There are nearly 40 releases from the last 4 days.

</comment><comment><USER7> The fact that kids barely older than me in the 80s were cranking out stuff that used the C64 to its limits blows my mind. The demoscene is intensely inspiring, if really impenetrable to an outsider.

<comment><USER8> The best way to penetrate it is to just write a demo! It's fairly certain that it will be terrible, but the point is you tried and you will improve. Hopefully you'll get some pats on the back along the way, inviting you to try again with a second demo, and so it begins...

<comment><USER9> A demo seems like a seriously high hurdle. Maybe a 4K intro.

<comment><USER10> A 4K intro (a decent one anyway) is much harder than a larger one. "If I had more time I'd write you a shorter letter..."

I found a 256k intro to be a pretty good balance, constrained enough that you don't need a pro-quality art team to look good, but still enough space that you don't have to go too deep into procedural generation and compression.

<comment><USER9> I find a lowish size limit is a good equalizer. Higher chance to succeed as an individual.

I don't know about 4K vs 256b. A particularly appealing format is amiga bootblock, which is a little under 1K because a signature is needed.

With no limits, you'd be going against large groups with much experience. A new scener stands no chance.

<comment><USER11> 256k not 256b

<comment><USER9> Oh. 256KB is a quite odd format to pick.

<comment><USER10> It used to be one of the standard brackets: 4k, 64k, 256k, and open (although there was often an upper limit like 4MB to limit download time.)

<comment><USER12> When was 256k a standard bracket? Can't remember. There might have been some odd exceptions, but it's always been 4k, 64k and (big) demo (indeed often limited to a few MB, dunno if that rule is still effective).

Those categories you would have at every party. Usually times categories for PC/Amiga/C64. The 256k or 256b or the 96k game categories were usually one- offs or specific to a party.

Now it's been about 15 years since I was active in the demoscene, so maybe 256k demos have become a thing in the mean time. But I would think that's silly because going from 64k to 256k doesn't really give you a new world of possibilities, it's just a bit bigger than 64k.

There are 64k's that show eye candy which can compete with the big demos, yes it's hard but not a lot of big demos are doing things you couldn't do in 64k. Why put 256k in between that? It sounds like a category for people that started out writing a 64k and then ran out of space.

I'm really curious, name me one thing you can do in a 256k that you simply cannot do in a 64k? (for the other categories these have easy answers)

<comment><USER10> It's a long time ago but I'm sure I remember 256k brackets being a thing. Maybe not as big as 64k intros but still.

And you're right, there's nothing really that you could do in 256k but not 64k, it's just much easier to fit your assets and code into the limit so you can spend more time on the demo itself and less time on space optimisation, so it's more casual-friendly.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> I smiled when I read the word "graphician" in the guidebook. That word doesn't really exist, or rather, it didn't exist until my scene group friend going by the handle OMG [https://csdb.dk/scener/?id=2772](https://csdb.dk/scener/?id=2772) at the time invented the word: [https://www.urbandictionary.com/define.php?term=graphician](https://www.urbandictionary.com/define.php?term=graphician)

<comment><USER13> I remember the word from '90s demoscene. I always assumed it's a clunky direct translation from "grafiker", which means "graphics artist" in both Swedish and German.

Congratulations to your friend for this efficient space-efficient word coinage ;)

</comment></comment><comment><USER14> This should probably mention Notch[0], a program for real time graphics that's written by a programmer[1] in the Fairlight group. It started as their demo tool and seems to have evolved to something more general. Other demo makers use it too now.

[0] [https://www.notch.one/](https://www.notch.one/)

[1] [http://www.pouet.net/user.php?who=191](http://www.pouet.net/user.php?who=191)

<comment><USER15> In all fairness, Smash is mostly a Jazz musician.

<comment><USER14> I'm afraid this reference went over my head. This Smash is an alias for Matt Swoboda.

<comment><USER15> I just spent several minutes explaining it, then deleted the comment because it's obviously an in-joke that's not funny when explained. Sorry, in-jokes don't belong on HN (except HN-in-jokes ofc).

The gist is that Smash is not only a spectacularly skilled coder and artist, but also an extremely nice guy (like just about every demoscener) and that sceners have a habit of colloquially mocking one another.

<comment><USER14> Ok. As you can tell, I'm not really a part of the demoscene, merely an admirer from the outside.

</comment></comment></comment></comment></comment><comment><USER16> One day I watched a 3D engine demo in a 1KB executable file.

It was unbelievable ! With my business partner we always wanted to have time to make one (not even in 1024 bytes, just one)

Those guys were (and still are) amazing.

<comment><USER17> The most important thing to understand here is that these people are NOT actually that amazing! They are a wide spectrum of coders, artists and musicians of widely varying capabilities.

What people do have is some very PARTICULAR skillsets. You can pick up those skills too! People will help you out if you ask! You can learn all these tricks if you want to. It takes some effort and inspiration, but it is doable for most people. It's not magic, it's just learning things. Things that are often utterly useless, but fun!

<comment><USER2> It's also important to note that we only see the end result, and not the 100 iterations before that evolved to the final, impressive version. Very few developers could just jump in and code what gets published.

That said, if you watch some Shade Showdown competitions on YouTube you'll see demosceners effectively doing exactly that. It's quite intimidating how good they are.

<comment><USER18> I think very few people are able to hold with the 100+ iterations of improvement... This persistence and the quality of the result are where they are amazing. Skills can be taught and learnt, but obstinacy is a quality that cannot be developed just by anyone, it is a character trait.

</comment></comment></comment></comment><comment><USER19> I was really into the demoscene back in the early/mid 90's. These days it's fun to find out about some old demoscene people who went on to interesting things. Mostly I hear about people getting into the game industry. Some of my favorites of note: Some of the Future Crew guys went on to make Remedy Entertainment (and made Max Payne and Alex Wake games, among others) and Rovio (makers of Angry Birds) was started by some TPOLM people.

<comment><USER20> I loved Purple Motions music back then. He's still awesome: [https://en.wikipedia.org/wiki/Jonne_Valtonen](https://en.wikipedia.org/wiki/Jonne_Valtonen)

</comment></comment><comment><USER20> This brings back some fun memories. Back in 94 i attended the Assembly in Helsinki, Finland. Amazing people with incredible potential.

<comment><USER21> That's funny, because so did I! =)

<comment><USER20> Maybe we saw each other :)

The group i was with reached 5th place with this demo: [http://www.pouet.net/prod.php?which=41739](http://www.pouet.net/prod.php?which=41739)

<comment><USER21> Maybe we did, who can say? I was not attached at the time, and didn't have anything prepared. Did a little on-site 4K though. Started out with Turbo Pascal, and then migrated to hand coded assembler on a function-by-function basis until I ended up with pure asm. Then did a bit of whole-programme optimisation, mostly the parameter handling. T'was kind of a shitty prod, but fun. Didn't even need a packer.

IIRC I mainly hung out with the guys from The Coexistence and a BBS operator called Scythe. Nice guys all, and Scythe gave me a good ratio on his Box. Good times! =)

<comment><USER22> Funny, a guy called Scythe, operating a board called Burning Chrome was a member of my group (Paranoia). We mainly developed PCBoard PPEs. Good times indeed! ;-)

<comment><USER21> Omfg, Burning Chrome, that's the one! I remember I dug the Gibson reference, still do in fact!

Btw Paranoia rings a bell as well, definitely not an obscure group at all. This is turning into a blast from the past! ^_^

<comment><USER22> Hehe, sometimes Hacker News is unbelievable. ;-) So, I take it you're from the Cologne area as well, given the Burning Chrome's proximity to the city (if memory serves) and long-distance calls were outrageously expensive.

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> This is awesome!

These knowledge bits surprisingly work really well if you are launching your own ideas in other formats (business, art, code, etc...), or doing other stuff just for fun.

Made my day :D

</comment><comment><USER24> If you are into javascript there is a lot of nice demos here: [https://js1k.com/](https://js1k.com/)

<comment><USER25> And here: [https://www.dwitter.net/top/all](https://www.dwitter.net/top/all)

</comment></comment><comment><USER26> Going through the guidebook, anyone would know the difference between the graphician and the coder roles in making a demo? I've done a bit of Processing and P5js and these two roles seem to me to be overlapping, aren't they? As you're coding the graphics.

Is the difference the same as Web Designer vs. Web Developer in a more familiar context?

<comment><USER27> I think that's a made up word that just means a graphics artist.

<comment><USER28> Then again, for things like C64 picture formats, you need to work within the various limitations and the cheat programming one can use to extend the palettes and forcing badlines more frequently and so on which makes the artist need a lot of programming skills too.

</comment></comment></comment><comment><USER29> How about that program that says, "Water detected in drive A:" and then it spins the drive to dry it. Can it be in the demoscene?</comment>


Ask HN: Best practices for startup banking - <AUTHOR>

This may sounds silly but after talking with our accountant and other startup CEOs it seems like it is common practice for companies to keep 6+ figures of cash in their checking accounts.
Long ago when I opened my first private checking account with a debit card, my bank gave me some "best practices" for use. For example only keeping a few thousand dollars in checking as that account is of course most vulnerable to fraud. Seems like a good rule for companies as well.
I am curious what other startups are doing for best practices for their banking. I know for us, our funding was high enough, and our burn rate is low enough that we don't need to keep most of our cash that available. For example are there companies putting sums that they wont need for a few months into short term (3 month) secure vehicles like CDs? <comment><USER2> 1) Ensure the full amount is federally insured. 2) Verify requirements from the bank to relieve yourself of any liability should funds go missing, i.e. 2-factor, strong passwords, dedicated terminal for accessing the account.

Businesses do not get the same protections as consumers. For example, if your laptop gets malware and they steal your corporate banking password and transfer out your money, you could be on the hook for it depending on how your agreement with the bank is written.

3) I don't see any reason to keep more cash in the high traffic account than is needed to clear the checks coming out of it.

4) Have a clearly defined policy on who can transfer how much and to whom. Do not depend on this policy to save you if more is taken than is authorized, but it might help in court.

5) Treasuries, sure. CDs? I'd want a Board resolution authorizing it, and again keep it under the FDIC limit. I think the biggest risk factor comes down to liquidity. Of course, slightly illiquid funds are also _perhaps_ harder to steal?

[1] - [http://krebsonsecurity.com/2015/03/hospital-sues-bank-of- ame...](http://krebsonsecurity.com/2015/03/hospital-sues-bank-of-america-over- million-dollar-cyberheist/)

</comment><comment><USER3> Also note that best practices for a company may not match those for an individual. You may need to have a LOT more in checking at a given time because you need to meet payroll and office and server rent every month.

Currently, too, interest rates on any investments safe enough to park money you'll need within 6 months are so low that they probably don't pay for the time you spend shuffling that money around and worrying about it. As a funded founder, your most limiting resources are time and head space. Let it go and spent your energy worrying about something that will have a much bigger impact on how muc money you have in the bank 18 months from now.

</comment><comment><USER4> Zaroth has really good practical advice, but regardless of how much you have in the bank, I'd caution against doing anything too creative with the money. Investors aren't looking to make half a point on their money and they aren't giving you money to invest anywhere else. It's a good idea to make sure your money is secure and you aren't being negligent in your cash management practices, but I don't suspect your board will be impressed if you come up with a fancy scheme to make investment returns on the money they gave you to run your business.</comment>


Write Your Own Regular Expression Parser - <AUTHOR> http://www.codeguru.com/cpp/cpp/cpp_mfc/parsing/article.php/c4093 <comment><USER2> Now you've got 3 problems?

</comment><comment><USER3> This brings back old memories. We were given this task as an assignment for a course in college called "Theory of Computation". I stayed up for 3 days without sleep to implement this thing. I did it in c++ though, so a lot of that time was due to the choice of the language.

Edit: Forgot to add, got 140pts on it(over a 100, there was a bonus). Yeah, I'm awesome.

<comment><USER4> Indeed. In college, I implemented a regular expression compiler in Java, targeting JVM bytecodes directly, which ended up outperforming java.util.regex of the time (JDK 1.4).

For regular expressions in actual practice, keeping the expression as an NFA is often done, as things like captures with backreferences cannot be expressed as a DFA, and also the NFA to DFA conversion may, in pathological cases, result in an exponential explosion in states.

If you're comfortable with your lexing and parsing, tree building and threading (i.e. threaded tree), you can implement a basic NFA regex matcher supporting captures and backrefs quite easily, in no more than a day. Matching is basically a recursive visit over the threaded parse tree nodes, with some creative threading links, such as in series for concatenation, in parallel for alternation, and in cycles for closures. Backing out from recursion handles the nondeterminism.

<comment><USER5> Exactly. And that in a nutshell is the problem with this article. It's an exposition of the kind of regex engine we all learned about in school, not the kind of tool that is useful for practical software development.

A regex matcher, alone, isn't really useful for much beyond a lexer generator. It's captured subexpressions and backreferences (well, really just captures) that turn it into the gadget we all love. And as you point out, that is _not_ achievable with the simple state machine engine we all remember from class.

<comment><USER6> > It's captured subexpressions and backreferences (well, really just captures) > that turn it into the gadget we all love. And as you point out, that is not > achievable with the simple state machine engine we all remember from class.

Did you read [0]? It demonstrates that submatch extraction can be (and has been) implemented with DFAs:

"The extraction of submatch boundaries has been mostly ignored by computer science theorists, and it is perhaps the most compelling argument for using recursive backtracking. However, Thompson-style algorithms can be adapted to track submatch boundaries without giving up efficient performance. The Eighth Edition Unix regexp(3) library implemented such an algorithm as early as 1985, though as explained below, it was not very widely used or even noticed."

[0] <http://swtch.com/~rsc/regexp/regexp1.html>

<comment><USER4> I said captures with backreferences, not captures alone. As the link you cite mentions, "as far as the theoretical term is concerned, regular expressions with backreferences are not regular expressions. The power that backreferences add comes at great cost: in the worst case, the best known implementations require exponential search algorithms, like the one Perl uses. [...] No one knows how to implement regular expressions with backreferences efficiently, though no one can prove that it's impossible either. (Specifically, the problem is NP-complete [...])"</comment></comment></comment></comment></comment>


A Short Rant About Hosting  - <AUTHOR> http://blog.pinboard.in/2011/08/a_short_rant_about_hosting/ <comment><USER2> After reading Maciej's last post about his "cathedral" of a server, I moved NewsBlur off of half a dozen Linode VPSs (512MB and 2GB machines, for app/task and db respectively) and onto a hosting provider that offered both dedicated bare metal and a variety of VPS configs.

I'm now paying $405 / month for 6 servers, and they range from 2 dedicated db machines with 12GB and 16GB of memory to 1GB virtualized app and task servers that cost $10 to $20 per month.

What I've learned is that where it really matters, in terms of I/O performance, the dedicated servers make great machines, naturally. But the insanely cheap VPSs, which I use for distributed feed fetchers (task servers) and web servers, are wonderful because they are so inexpensive. I have redundant load-balanced machines, so when I need to take down an app server or it fails for some reason, nginx immediately routes around it. And it's costing me only $10 / month per machine.

And task servers have served me especially well as VPS. It depends on the intensity of the task, but for such a small expense, you get 4 cores and enough memory to go nuts. And if you're pulling off a task queue, you can programmatically spin up more to deal with a higher queue load. When you move entirely to dedicated machines, your spin up time is on the order of hours to get it prepped and connected.

I'm just thrilled that many decent hosting providers (with <table>s for salespeople) offer both. I wouldn't last without being able to have a mixed setup.

<comment><USER3> What provider is that?

<comment><USER2> I use reliablehostingservices.net. Been solid for about 6 months now. Billing sucks (credit card for every server because I bought a few of them at different times -- so different billing cycles), but that's part of the benefit.

<comment><USER4> Glad to see another reliablehostingservices.net customer - been using them for > 1 year. Decent value for money, I do wish they had a good selection all the time - it's a little hit/miss at times - but overall happy with them!

</comment></comment></comment></comment><comment><USER5> "Quick quiz: can your entire sales staff be replaced by a nicely formatted HTML table? If the answer is 'yes', then you are subtracting value and wasting my time."

My god that is good. I spent two weeks about three years ago going around the country looking at data centers to move our systems to (30+ servers that were currently in a co-lo and we were looking to go to managed/leased).

We'd get pricing estimates that changed by the time of day and who emailed it to us. The shopping process made the migration seem easy.

<comment><USER6> Why do people think a spreadsheet is less likely to rip them off than a person?

I mean, sure, if you want to, feel free to walk into a car dealership and pay sticker price. Go to the mall and buy that hardcover book at MSRP.

<comment><USER5> A spreadsheet doesn't waste time in the negotiation dance. I'll gladly pay for convenience and directness, which I do frequently.

Think of it this way, given the choice between paying X for a service, or having to "Call for pricing..." which will you do?

Personally I'd take the X option even if it cost more.

<comment><USER7> And that doesn't mean you can't still call for a better deal.

The sticker price should at least help you scope out whether your project is feasible on their system.

</comment></comment></comment></comment><comment><USER8> As someone who runs both AWS and my own dedicated servers I'm starting to see a pattern.. MBA types talk about 'new trends', 'data centric startups' and new opportunities opened up by AWS and such. OTOH practical advice from real people with successful startups - marco arment, jakewalker, others, seems to focus more on the unseen problems of virtual and advantages of just getting your own server. Am I right?

<comment><USER9> "When art critics get together they talk about Form and Structure and Meaning. When artists get together they talk about where you can buy cheap turpentine."

\- Pablo Picasso.

<comment><USER10> Good one.

</comment></comment></comment><comment><AUTHOR> I particularly like this nugget:

> Quick quiz: can your entire sales staff be replaced by a nicely formatted > HTML table? If the answer is 'yes', then you are subtracting value and > wasting my time.

<comment><USER11> What if the person doesn't know exactly what it is that they need? I know a lot of people who know software but aren't as solid on knowing how to scale the hardware side. For those people a table isn't really helpful.

That said however, it should be an option to have that access. I personally prefer Joyent as a web host. They've shown really solid I/O numbers via their benchmarking. I've been a happy customer since it was TextDrive.

<comment><USER10> _What if the person doesn't know exactly what it is that they need? I know a lot of people who know software but aren't as solid on knowing how to scale the hardware side. For those people a table isn't really helpful._

I don't think a salesman is the first person you want to talk to to help you in this regard.

<comment><USER12> This is actually a sad state of affairs. It used to be that the salesperson was exactly the kind of guy who could solve this. Now they're just too busy padding deals with stuff almost everyone knows you don't need.

<comment><USER13> It's a top-down problem. If the company's executives are pushing salespeople to work in the 1990's-era enterprise sales model, you get websites with zero useful information and a phone number for upselling.

</comment></comment></comment></comment></comment><comment><USER14> I wish there was something with the flexibility of AWS (scriptable machines, disk, etc) but for whole machines and networks - no multi-tenancy.

<comment><USER15> If you can stomach month-long commits, many shops will give you bootp/dhcp visibility in your private vlan, so you can burn/update machines however you like. I managed 140 systems at Softlayer with ~500 lines of provisioning script.

<comment><USER16> Softlayer also has hourly rates for their "Bare Metal Cloud" offering: <http://www.softlayer.com/cloudlayer/computing/>

</comment></comment></comment><comment><USER17> It was "Edsger Dijkstra", not Edgar. (Probably no one else cares about this.)

</comment><comment><USER18> Yes, a thousand times.

And I can also vouch for LeaseWeb. Their signal-to-bullshit ratio is indeed as excellent as their bang-for-buck.

</comment><comment><USER19> I can relate to this guy. About month back I noticed that one of my servers (VPS at HostV) had dropped and hadn't come back for a week. It's used for dev stuff and acts mainly as storage for repo archives. Long story short, HostV had suffered some sort of file system problem, all my files were gone and they didn't even bother to send me an email. I can live without the files and shit happens but not emailing the customer, that's just idiotic.

</comment><comment> B-Scan One thing I additionally take into account is reviews of customers on <http://www.webhostingtalk.com/>

</comment><comment><USER20> I like when you do email sales and they don't get back to you ... someone lost a large order from us this month for that.

</comment><comment><USER21> Softlayer are great at this. Their sites lists prices over $1200 but talk to sales and you can get it close to cut in half and if you order enough servers you'll get it at 75% discount. I guess the value of sales staff knowing about the customer is quite high.

<comment><USER22> So anyone who wants servers needs to talk with sales and negotiate a discount? I think the point of this post was:

 _Quick quiz: can your entire sales staff be replaced by a nicely formatted HTML table? If the answer is 'yes', then you are subtracting value and wasting my time._

When comparing between hosting providers, most lack the time and resources to negotiate with each provider to find out what the "real" rate is. Hosting should be a commodity, providers should treat it as such. I think there are probably good opportunities for hosting providers that provide an honest rate.

<comment><USER23> SoftLayer has the nicely formatted table. The prices on it seem quite reasonable - except they charge up the wazoo for RAM.

</comment></comment></comment><comment><USER24> comparing contegix managed hosting to others like AWS is apples and oranges. There is no level of AWS where you get a team of sysadmins answering your emails within seconds, 24/7.

contegix is worth every penny.

</comment><comment><USER25> I've had several sites with Dreamhost for a long time and am very satisfied so far. They give you a lot for a low price. I don't use their Dedicated packages however, just shared and VPS.

</comment><comment><USER26> I'm curious to know why he chose the company he did among all the companies he looked at. I agree with the concerns about the difficulty of sourcing these services, and this may be a large part of why AWS is successful-- they provide the service as a utility.

One of the cheaper companies on his spreadsheet is hetzner.de They have dedicated servers that go down in size to about $20 a month: <http://www.hetzner.de/en/hosting/produkte_rootserver/x2>

Note that their price includes VAT. If you're not a EU company, you don't pay the VAT and so the actual price is cheaper.

For our needs, we're going to start off buying a cluster. Probably 4-5 machines. As load grows, we'll add nodes and larger nodes over time. (A nice feature of Riak is that you can do this, just give the ring time to rebalance and you can migrate from one set of hosts to a larger one relatively quickly.)

VPS offerings lose a lot of their appeal in the face of a $20/month 1GB dedicated server! And with no setup cost, it is pretty elastic, though as you get to larger dedicated servers hetzner has a setup cost.

I'm not shilling for hetzner, I am just sharing them because I'm considering being a customer and and curious as to what others think about them. Also, curious if anyone else is facing the "we need to start with a cluster of machines, but we're a tiny startup at this point" issue...

<comment><USER27> desktop grade hardware - if that's your thing go for it.

I believe that if you're going dedicated, might as well pay for enterprise grade hardware (with ECC RAM, RAID disks) because you dont get all the nifty backups/clones/spin-ups that you get from the cloud.

</comment></comment><comment><USER28> _If your server enclosures are made of elemental silver and polished daily with static-free cloths by computer science PhDs who are related by blood to Edgar Dijkstra, then I definitely want to know about that. Put a paragraph about it right under your price chart._

Now, that certainly would be something to pay for. Who provides that?</comment>


Ask HN: What's the problem with AngularJS? - <AUTHOR>

Seems a lot of people here are starting to push it away for other technologies, mostly ReactJS which I struggle to see how the two frameworks are even alike. <comment><USER2> Angular abstractions leak everywhere: [http://stackoverflow.com/questions/18826320/what-is-the- hash...](http://stackoverflow.com/questions/18826320/what-is-the-hashkey- added-to-my-json-stringify-result) [http://stackoverflow.com/questions/16935766/run-jquery- code-...](http://stackoverflow.com/questions/16935766/run-jquery-code-after- angularjs-completes-rendering-html) <\- "You might need this timeout to be sure its run after DOM render." wat

\- You have to do everything the "angular way". Timeouts, intervals, http, modules, angular.toJson. It's a pain. Why can't I use the regular setTimeout, or ES6 or Common JS modules, or JSON.stringify?

\- You end up having to dig inside the source code to debug issues with Angular.

\- You basically HAVE to understand the digest cycle.

\- Its way of doing templating is crippled in the sense that it's not as expressive as javascript.

\- Honestly I think it's for people who doesn't like javascript and its ecosystem (npm).

React isn't alike angular because that's the point. React embraces javascript whereas Angular doesn't. If you want a http library use one of your choosing from npm, like axios. You want to use Common JS modules? Go ahead.

<comment><USER3> \- The answer to why you have to use $timeout, $interval, etc. is simple. If you do it that way then AngularJS knows when you might have made a change in the scope and can look to see if there are updates to be made in the UI or watches to fire. It is a convenience system to avoid you having to tell the system that new data arrived from an earlier call to the web server and that you assigned it to a variable that also happens to appear in multiple spots on the page. React does not "embrace" that issue either. It does not magically know when to update itself on timer events or AJAX responses without some help.

P.S. You can absolutely use anything you like other than the provided wrappers. If you do, just call $apply() afterward. That's the signal to AngularJS that you changed something that might require it to do updates elsewhere.

\- In two years of doing AngularJS work as a full time job (plus weekend projects) I have never ended up digging through the source code. Nor have any of the people working for me on my team at work. So the idea that you have to do that is patently false.

\- I'm not sure how much is there is to understand about the cycle. It happens whenever events fire which indicate changes might have occurred. Later, when browsers directly support watching variables for change, I'm guessing there will be no need for it anymore.

\- Hmm. The templating thing is an interesting way of thinking about it. Yes, it is crippled in one sense because it doesn't have the full expressiveness of JavaScript. I can see that. On the other hand it's elegant because you don't have to drop out of your HTML to do your templating work somewhere else using a completely different syntax or location. I think there are really good arguments to be made on both sides of this argument.

\- Fascinating. Almost all of my AngularJS code is JavaScript. The portions of the code devoted to keeping AngularJS happy are a very small portion of the total. Based on what I've seen of 2.0 controllers, services, etc. are simply standard JavaScript objects so it seems a hard argument to make that they aren't fully embracing JS.

\- And the final argument is one of my favorites. I've seen it over and over again, "Don't use a framework at all! Cobble together your own thing out of best-of-breed pieces to make a system." That may work well for an individual (though I think it will not) but for a team?!? No way.

I'm not anti-React or anti-Ember, but I am anti-throw something together based on intuition and try to use it to build something real.

<comment><USER2> It was a rhetorical question. I understand why we need to use a special version of setTimeout or a special HTTP module, but the fundamental problem is that Angular's "reactive javascript" abstraction leaks in a way that you're forced to do it the Angular way.

React's abstraction also leaks, which is evident when it doesn't automatically know to update itself so you have to call `setState`. But I'd choose this set of leaky abstractions over Angular's. Plus it makes it easy to spot all the places where the UI can change which is a huge plus for debugging. The beauty of React's set of abstractions is that it doesn't force you to do things a certain way (use $http, use $timeout) or use observables which embraces mutability.

Also to further my point that Angular (and any other framework that provides templating) doesn't embrace javascript, every time you use `ng-repeat` you're not doing javascript. You can't put a debugger in the middle of the loop to check the scope. You can't use Immutable-js because `ng-repeat` loves arrays. (Ok you can convert the immutable to an array before hand, but then when it changes you'd have to incur an expensive rerender of the list) You can't use static analysis tools.

</comment></comment></comment><comment><USER4> Angular is popular and anything that's popular gets criticized heavily.

Most of its criticisms are from people who don't fully understand angular and that's to be expected. Usually you can find issues with anti-angular rants that would apply to any javascript framework or large library.

Angular provides a very broad set of tools that takes a while to fully appreciate and learn. Of course React or Flux or something else will be "better" than angular at something or other because Flux and React are very specialized frameworks that do one thing very well.

</comment><comment><USER5> AngularJS is a fine framework. Like any technology it has it's positives and negatives. The biggest issue people seem to have with Angular at the moment is that the upcoming Angular 2 is a complete rewrite of the framework and the angular team isn't sure if there will be an upgrade path from the current versions.

I've used Angular for both prototyping and in large enterprise applications and it's served me well personally. It takes a bit to get used to the angular way of doing things but once you learn it - it's as good as any framework.

</comment><comment><USER6> The problem with internet discussions is that the raw number of people who have informed opinions are low compared to the number of people who want to participate in a given discussion.

Because of this, many people end up parroting the ideas they've heard from others without having the proper context or nuance in their arguments that you would normally get through actual experience.

The truth of the matter is somewhere in the middle of "Angular.js is good" and "Angular.js is the second coming of Satan." That truth probably lies closer to "Angular.js is good" than the general consensus on the internet would lead you to believe.

At the end of the day, take internet opinions as just that - opinions, and try to form your own conclusions.

</comment><comment><USER7> For React, you should be comparing React + Flux to Angular.

The biggest problem with Angular is that it has a _very_ steep learning curve, and writing bad Angular code is worse than writing bad jQuery soup.

\- Using watchers/observers are encouraged, which makes control flow impossible to read for sufficiently complex pages. It effectively creates a potential side effect on any variable that can't easily be traced, and multiple watchers can casacade changes to eachother.

\- Because of the way watchers/events work, Angular's digest loop implements a TTL, where it will keep evaluating watchers/events until there are no more changes, with a hard stop at $TTL+1. While this solves a lot of problems, it can make it very difficult to monitor state changes in the view, when a console.log/debugger/breakpoint will get triggered ten times as often as you'd expect.

\- Angular has a _lot_ of terminology[1], and each concept has its own set of idiosyncracies. When you combine this with the additional bootstrapping logic in Jasmine (and things like isolateScope), it ends up being very complex for a developer's first framework.

\- Parent/Child relations in Angular are inferred from the structure of the DOM. This means you need to read your templates to figure out how your app is structured, and you'll end up with tight coupling unless you're diligent about your design decisions.

\- It's very easy to let a lot of view logic slip into ng-bind and similar attributes. All of this logic should be extracted into objects and unit tested, but this means that a lot of the convenience of using Angular's declarative syntax end up being minimal at best.

\- Like any framework -- expanding on what #quadratini said -- you need to use Angular's built-in libraries to do anything. While the syntax is reasonably similar, $timeout, $interval, $http, $q, etc all need to hook into the digest cycle, and this means you'll be wasting time figuring out when to call $apply or when to wrap a piece of code in $timeout just to get it to play nicely with Angular.

Angular is very powerful and not necessarily a bad framework, but based on my experience using it in a team environment for the past year and a half, unless everyone is senior-level at Javascript, you're going to quickly end up with a lot of hard to maintain, mediocre code.

[1] [https://docs.angularjs.org/guide/concepts](https://docs.angularjs.org/guide/concepts)

</comment><comment><USER8> It's a framework, it tries to do everything, but it does a half-assed job at most of them.

It has its own module system, but it's half-assed.

Its architecture is a mess; not simple, not easy to understand.

So many people adopt it just because it's from Google, and then these people find themselves fighting with the framework and having to ask tons of questions, so you get these statistics that seem to imply "lots of people are talking about Angular", so more people jump on the bandwagon .. and so on.

Personally I recommend Knockout.js + Require.js + Durandal + rsvp.js (for Promises).

</comment><comment><USER9> I see no problem with Angular, but at the moment 1.x is dead tech, and 2.x is not here yet. So it's difficult to start a new project with Angular without feeling a bit nervous.

<comment><USER10> How is 1.x dead?

1.4 is going to be released in March.

<comment><USER9> I would not use it for a new project now, if you know you will maintain that code for more than a few years.

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

[http://www.breck-mckye.com/blog/2014/12/the-state-of- javascr...](http://www.breck-mckye.com/blog/2014/12/the-state-of-javascript- in-2015/)

</comment></comment></comment><comment><USER3> The level of FUD here is astounding. AngularJS is not perfect, nor certainly are the major competitors. React seems to be dribbling out a piece at a time to us and each piece gets its own name and arrives in its own time. That makes it a little bit difficult to use as a framework. Hopefully it will all eventually jell and provide a really different take on how to build the front- end. I'd love it if there was a third choice with the same level of support behind it out there to give both of them a run for their money.

But this is reality here: [http://www.google.com/trends/explore#q=angularjs%2C%20ember....](http://www.google.com/trends/explore#q=angularjs%2C%20ember.js%2C%20backbone.js%2C%20reactjs%2C%20durandal%20js&cmpt=q&tz=)

See those lines hugging the bottom of the chart? They're everything that isn't AngularJS and React. React is clearly on the uptick and AngularJS on the downtick for the partial Feb data they've got, but everybody else is in the noise level.

Yet people here would have you think:

1: It's old! - Really? 1.0 shipped in mid 2012. In three years we will have gone from 1.0 to 1.4 and some work done on 2.0.

2: It's going to change tomorrow when 2.0 comes out. - Really? Have you spoken to the other guy just above? He seems to think it's decrepit, you're worried that anything you build with it will have to be thrown away tomorrow because of its astounding rate of change.

3: Using the Chinese menu system of putting together a front-end framework is perfectly viable. Just pick something from columns A/B/C/D and throw it together and start using it. You'll find lots of people who can answer your questions, there are books written on that particular combo of tech, and there are developers out there by the hundreds you can hire who will have no problem diving right into your projects.

No. It doesn't really work that way. Pick an arbitrary grab bag of stuff and maybe you'll make some excellent choices. But you'll have to live with that decision for quite a while. Even a less popular stack like Ember.js is going to get more third party support than whatever you decide upon for yourself.

Above all, please do a quick experiment for me. The next time somebody tells you that AngularJS is a dead end and you can't rely on it for years to come, ask them what they would have recommended back in 2013? Just two years ago. What set of stuff would they have advocated then that would be doing so well today and have this long lived future into 2017+ that wasn't AngularJS? Backbone.js? I don't know of anything.

My point is this, the front-end and JavaScript tech is changing at a rate way too high for anyone's predictions about two and three years down the road to have a lot of merit. AngularJS seems like a reasonable bet to have done well and have lots of info available about migration from 1.X to 2.0 so at the moment I'm still on that path. In the meantime I hope to learn more about Facebook's stuff to see if it gives me useful ideas or to see if I can incorporate parts of it into AngularJS (Flux seems interesting for instance and would likely slide into most of the frameworks). But the people below who speak with such certainty about the future... Maybe they don't see it as clearly as they think.

</comment><comment><USER11> AngularJS is not a great framework. In fact, it's a horrible framework. You should really be using ReactJS. It's leagues ahead and much more robust. BTW, Angular is also getting old.</comment>


Pedestrian detection systems don't work well, AAA finds - <AUTHOR> https://arstechnica.com/cars/2019/10/aaa-finds-your-new-car-probably-wont-stop-you-from-hitting-pedestrians/ <comment><USER3> Once I'd had it pointed out to me that these articles go out of their way _never_ to refer to people on foot as actual people, I just can't unsee it.

The only thing referred to as human here is the driver, and the only person whose safety is discussed is the driver. Clearly at some point during the composition process the writer got bored of using the term "pedestrian", because it looks like he hit up the thesaurus, discovered the term "biped", and decided that would be a good term to use. (But I bet you a fiver these cars won't stop for kangaroos or ostriches other than as part of some generic collision avoidance system.)

In the writer's defence, the sentence about the driver's safety is a mite ambiguous - but it could have been more explicit, so I'm going to be uncharitable here. And I do give him points for sneaking the term "run people over" in the last sentence, because he could so easily have referred to it as an accidental unavoidable pedestrian collision incident or something.

<comment><USER4> Kind of like how they go out of their way to refer to people operating cars as drivers instead of actual people?

This kind of language is par for the course because these articles basically use a less terse version of whatever language the study or official report uses and those kinds of documents tend to shy away from things like "people driving cars" and "people walking".

You are finding meaning where there is none.

<comment><USER5> No, this is actually a real thing that happens when the news covers driver pedestrian interactions.

[https://usa.streetsblog.org/2018/03/28/how-coverage-of- pedes...](https://usa.streetsblog.org/2018/03/28/how-coverage-of-pedestrian- fatalities-dehumanizes-victims-and-absolves-drivers/)

<comment><USER3> Yes. Thank you for this post - this was exactly the sort of thing my comment was referring to.

</comment></comment></comment></comment><comment><USER6> Just because they aren't perfect doesn't mean they don't make your car safer. The writing here almost sounds like the author would prefer not having it. Having AEB on your car can't make it more dangerous unless the AEB system accelerates into pedestrians. You have two options-

1\. A car that only brakes when you react

2\. A car that brakes when you react, and also sometimes when you don't.

The only way that AEB might conceivably make you less safe is if you pick up bad driving habits because you expect the all-knowing robot to keep you safe. This certainly applies to some people, but that's the person's fault, not the manufacturers fault for rolling out systems that are better than nothing, even if they aren't perfect.

Edit: I'll acknowledge that unexpected braking events might mean that AEB equipped cars have a higher risk of being rear-ended, but this test was about pedestrian safety. I'm including this edit just because I know someone will bring it up thinking it proves that they are smart even if it wasn't the point of the study.

<comment><USER7> Abrupt, unexpected breaking could cause a rear-end collision, which could conceivably kill quite a few more people than if the breaking had not occurred. Imagine a car breaking hard directly in front of 16-wheel semi- trailer. That could lead to a pile-up and quite a few people dead.

<comment><USER8> A rear-end collision is caused by the following driver being too close. A car in front could at any time, for any reason, use full breaking force and you have to plan your following distance appropriately.

That said, a good way to get an angry rant from a truck driver is to talk about cars cutting in front so they no longer have an appropriate stopping distance.

<comment><USER9> > That said, a good way to get an angry rant from a truck driver is to talk > about cars cutting in front so they no longer have an appropriate stopping > distance.

If you do that then I'd imagine that the trucker is going to be more likely to just steamroll you rather than risking jackknifing.

<comment><USER10> If you hit a pedestrian because you don't want a 16-wheeler up your backside, you're as much at fault for murdering that person as the trucker who murders you by following too closely.

<comment><USER11> seriously? I get it, drivers in general are not cautious enough of pedestrians and cyclists. but if a 16-wheeler is following so closely that the other driver is at risk of getting rear-ended when they stop, the pedestrian is probably toast anyway. the semi is just going to push the car straight through the pedestrian. now instead of one person dead there's 10 tons of mass careening through the street out of control, putting a lot more lives at risk.

</comment></comment></comment></comment></comment></comment><comment><USER12> Actual studies show it decreases rear end collisions around 40% and pedestrian insurance claims 35% [http://bestride.com/news/new-study-by-iihs-shows- automatic-e...](http://bestride.com/news/new-study-by-iihs-shows-automatic- emergency-braking-dramatically-reduces-accidents-with-injuries-in-gm-vehicles)

</comment><comment><USER9> It's weird that they didn't include Subaru's eyesight system, given that it generally performs much better than Tesla.

[https://www.caranddriver.com/features/a24511826/safety- featu...](https://www.caranddriver.com/features/a24511826/safety-features- automatic-braking-system-tested-explained/)

<comment><USER13> Agree completely - Eyesight impresses me on a regular basis on the complexity of scenarios it seems to be able to react to, both when it comes to collision alerts / automatic breaking and when used for assisted cruise control.

I haven't had any experiences with pedestrians at speed in front of the vehicle, but the rear automatic breaking in my Subaru is very aware of / sensitive to people walking behind it.

</comment></comment><comment><USER14> NCAP footage seems to show the opposite.

[https://youtu.be/cMiZa3HgRVE?t=125](https://youtu.be/cMiZa3HgRVE?t=125)

The systems work as described and don't claim to work in every scenario.

[https://www.tesla.com/sites/default/files/model_3_owners_man...](https://www.tesla.com/sites/default/files/model_3_owners_manual_north_america_en.pdf#page=93)

<comment><USER15> I've seen that NCAP video and was really impressed by it at the time. It doesn't jive with the results in TFA at all - where it sounds like the Tesla (and most of the other cars they tested) hit the dummy every time, and often never even slowed down.

I wonder how to explain the disparity. Could the video you linked have been taken with AutoPilot enabled maybe?

<comment><USER16> From reading the description it seems like AAA used tests where there was a bend in the road and / or the pedestrian was moving across so they weren't actually in the path of the vehicle until a couple seconds before impact. These systems are going to be conservative in classifying potential obstacles as in need of emergency braking, as they should be - you don't for example want your car slamming the brakes because it sees a pedestrian on the sidewalk next to the lane you're driving on.

That said, it should be noted that the Honda Accord actually did quite well in these tests.

</comment></comment></comment><comment><USER17> Touchscreen dash; training people to expect their car will do stuff for them (beep if something is behind, alert if someones in the next lane, break if something is in the way, drive); cellphones (both drivers and pedestrians); pedestrian crosswalks in the middle of busy roads with new signaling most drivers have never been formally trained on; motorcycle lanes between car lanes; bike lanes on the side of the road, sometimes second lane from the side, sometimes on thruways. The list goes on and it's getting worse everyday. Keep it simple stupid.

</comment><comment><USER18> FYI, worth reiterating, a deep learning vision system will not necessarily recognize a dummy as a human. Particularly if it operates in both visible and IR spectrum.

<comment><USER19> That's a fair point which also occurred to me while reading the article. It is, I think, indicative of a deeper issue with using ML in these sorts of safety contexts. If the only way to really test your safety system is to actually put people in danger your whole concept may be problematic.

<comment><USER18> That's why Tesla's approach is pretty brilliant IMO. It's easy to collect samples where there was hard braking and there was a real, actual human visible in the path of the car while the car is under human control. No dummies are needed, and AI was not in control of the car, so there's no ethics issue either. Your Tesla will upload such samples automatically if Tesla deep learning system wants them.

</comment></comment></comment><comment><USER20> So one good thing about the (perhaps unfair? perhaps disproportionate?) media attention that failures of semi-autonomous systems get, over the long term I'm pretty sure it helps focus the teams to make the tech better.

It's how aviation got insanely safe. Every passenger airplane crash is scrutinized. The very distortion in thinking that makes people think flying in airplanes is more dangerous than cars is what motivates every crash to be scrutinized.

<comment><USER21> _It 's how aviation got insanely safe_

Not by media attention though; it took an authoritative, hard-line government body to reach that level.

</comment></comment><comment><USER22> I have former colleagues working on some of these systems, and they tell me some pretty scary horror stories of the simple and obvious ways in which they fail. Some of the stories that I have heard just blow my mind - and seem all- too-reminiscent of the VW emissions-test defeat-device scandal.

</comment><comment><USER23> There's so much talk about false-positives in this thread, but I have yet to experience that on my own car, even when people cut me off dangerously close. Not once has AEB mistakenly been activated by the car.

<comment><USER24> My car doesn't have AEB, but it does have the front collision warning sensors. I get plenty of false alarms, particularly with an S-turn (quick right then left turn). On the final turn, there's a guard rail which sets off the FCW about 25% of the time I drive through there.

</comment></comment><comment><USER25> Last time this was discussed on HN:

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

</comment><comment><USER26> Looking at the methodology here, I don't think this test is likely to be representative. There are two important differences between a test dummy and a pedestrian. First: pedestrians glow in infrared; and second, pedestrians move, even if it's only shifting in place. Both of these features of pedestrians are _extremely_ useful for a sensor that needs to find them, so I expect using a still, cold dummy to make them perform worse than they would in the real world.

<comment><USER27> > ..pedestrians glow in infrared; ..

> ..using a still, cold dummy..

The kind of infrared you're thinking of is probably not the kind the sensor can detect. Only thermal imaging cameras can detect far infrared range - <USER2> one that can help distinguish hot objects from cold ones. 'Normal' IR cameras only capture near infrared - which tells you nothing about the temperature.

<comment><USER28> > The kind of infrared you're thinking of is probably not the kind the sensor > can detect. Only thermal imaging cameras

Parent is talking about far-infrared (ie, thermal) sensors. Many car models have high-resolution thermal sensors.

<comment><USER27> [https://en.wikipedia.org/wiki/Automotive_night_vision#Automo...](https://en.wikipedia.org/wiki/Automotive_night_vision#Automobiles)

Tested cars unlikely to have the feature

</comment></comment></comment></comment><comment><USER29> What is the reasoning for the vehicle not also sounding its horn while it's braking?

<comment><USER30> Probably because it's only legal to use the horn if it's to avoid an accident, but it's almost always legal to use the brakes.

</comment></comment><comment><USER31> welcome to real-world, where out-of-labs conditions are far harder than expected.

</comment><comment><USER32> Now let's put a person talking on the phone and texting at the same time and have that person do the same exercise that AAA conducted..

</comment><comment><USER33> These systems would work better if people were made out of metal.

</comment><comment><USER34> It's a bit scary that the Tesla Model 3 doesn't fare well at all.. and this is the same company shipping live metal torpedoes in parking lots via the Summon feature.

Scary.

<comment><USER35> I think this is a little over the top. Vehicles being summoned have a top speed of 5 MPH, hardly a "torpedo".</comment></comment>


20 Websites to Help You Master User Interface Design - Six Revisions - <AUTHOR> http://sixrevisions.com/usabilityaccessibility/20-websites-to-help-you-master-user-interface-design

<comment><AUTHOR> I found that, coming from an engineering background, many of these 20 websites helped me begin to really understand information architecture and user interface design. There are so many competitive designs out there that I find it challenging to prototype and build launch ready applications that look as attractive. What I was most pleasantly surprised to find was UI PATTERN sites. Breaking layouts down into chunks makes it much easier to put the pieces together.</comment>


Atom (is greater than) Other Text Editors - <AUTHOR> http://codebytes.us/atom-text-editor/

<comment><USER2> Not to start an editor-war but this guy, who is a vimmer, praises atom for being an extensible editor.

How on earth did he miss the elephant in the room?</comment>


Bug in HN? - <AUTHOR> http://imgur.com/lu6sm.jpg

<comment><USER2> I sent a screen shot of this to PG last month. He responded that he's aware, he just hasn't had time to fix it yet.</comment>


Pure CSS new 3D effect - <AUTHOR> http://www.romancortes.com/blog/pure-css-coke-can/ Even better than the 3D Meninas <comment><USER2> The other examples on his blog are even cooler... check this out. <http://www.romancortes.com/blog/css-3d-meninas/>

<comment><USER3> And that one points to an explanation of the method, with diagrams and the partial pictures used:

<http://www.romancortes.com/blog/3d-meninas-explained/>

</comment></comment><comment><USER4> Nice effect.

I think a bit of JS is being used to create the DIV structure, but that's not important.

It could also be improved a bit: you could remove the shading gradient from the Coke can mask PNG, and render the shading using an CSS gradient with RGBA values. That would mimic the specular highlighting, and you could also animate the shading.

I still haven't quite grok'd the displacement method though... it must be carefully calculated background x pos offsets? (I don't have firebug on this machine)

<comment><USER5> I got js disabled. And the effect worked fine.

<comment><USER4> Yep, cool - it just means a lot of empty div structures (n * width) to contain the samples... I assumed JS as it would have been more efficient.

</comment></comment></comment><comment><USER6> Awesome hack. I don't really have any application for this, though.

<comment><USER7> Why are you interested in hacks? What's wrong with using better tech such as OpenGL?

<comment><USER8> > Why are you interested in hacks?

Did you notice the name of this site? (And yes, for practical purposes OpenGL can be better.)

<comment><USER7> This site is more about startups than hacks.

<comment><USER8> Perhaps. And the focus was even more sharp in the early days, when the name was still "startup news". Still, interesting hacks seems to have their place here.

</comment></comment></comment></comment></comment><comment><USER9> <http://m00d.net/mirror/coke/> <\- mirrored.

</comment><comment><USER10> This experiment is definitely worthy of a post. I haven't looked at how he did that or the "CSS Bird" shadow effect but I'm impressed that can be done without Javascript.

</comment><comment><USER11> Very cool. My question is.. how did he scan the coke-can? <http://www.romancortes.com/ficheros/coke-label.jpg>

<comment><USER12> I bet you could do it without "scanning it" per se.

Taking a set of pictures and then using stitching software, followed by some Photoshop touch-ups would probably give you a pretty good start.

</comment></comment><comment><USER13> This is slick. I wonder how long it took to build that image/

</comment><comment><USER14> PROTIP: Try hiding the the width and the float on p and/or the padding and width on the 'div div' with firebug.

</comment><comment><USER15> That looks great. No trying to be a dick, but what's the point?

<comment><USER16> To demonstrate cool shit you can do with CSS.

</comment></comment><comment><USER17> wow!

</comment><comment><USER18> Seems cpu intensive :) Server down.

<comment><USER16> Were it CPU intensive it would be so on the client side and have no affect on the server, and fwiw, scrolling back and forth quickly I saw no cpu spike (fairly new MBP, granted).

It's more likely that the site has been taken down by being posted on sites like HN/reddit/digg/etc (it was easier when we could just say it was "the /. effect").

</comment></comment><comment><USER19> Wow amazing. Now I feel like a total CSS noob.</comment>