Evidence that birds sleep in mid-flight - <AUTHOR> http://www.nature.com/articles/ncomms12468 <comment><USER2> I'm reminded that we still don't know conclusively what purpose sleep serves[1]. We know about things unimaginably distant in scale or time -- like quarks and the Big Bang -- but we don't know the answer to something seemingly pedestrian.

[1] [https://en.wikipedia.org/wiki/Sleep#Functions](https://en.wikipedia.org/wiki/Sleep#Functions)

<comment><USER3> It's meant to separate days. That way each day is a new day, and you have some sort of mental partition between each one.

<comment><USER4> meant by who?

<comment><USER3> Whoever you want.

</comment></comment></comment></comment><comment><USER5> I looks like they're referencing this paper[1] which suggests that like dolphins, birds can sleep 1 brain hemisphere at a time. That's pretty interesting.

[1][http://www.nature.com/nature/journal/v397/n6718/full/397397a...](http://www.nature.com/nature/journal/v397/n6718/full/397397a0.html)

<comment><USER6> Ducks do that while sleeping. If you observe ducks sleeping near a pond you'll typically see them sleeping with one eye open and one shut. That way they can still stay alert enough to watch for predators.

<comment><USER7> I've had several pet birds and I've observed the same thing from them. I just assumed they were just pretending to sleep.

<comment><USER6> Your comment made me wonder how common it is with birds and it seems to be trait shared with all of them[1]. Pretty interesting. I asked my friend if her bird does that and it only seems to when it's not in a deep sleep yet, but eventually it will close both eyes.

[1] [https://en.wikipedia.org/wiki/Unihemispheric_slow- wave_sleep](https://en.wikipedia.org/wiki/Unihemispheric_slow-wave_sleep)

<comment><USER8> Gives a new meaning to the term, "sleep with one eye open at night." :)

<comment><USER9> Let me venture a guess: that expression comes exactly from observing animals keeping one eye open.

</comment></comment></comment></comment></comment></comment><comment><USER10> > On land, birds can switch from sleeping with both hemispheres simultaneously > to sleeping with one hemisphere at a time in response to changing ecological > demands17,18. During such unihemispheric slow wave sleep (USWS) birds keep > the eye connected to the awake hemisphere open and directed toward potential > threats.

This reminds me of the low-power sleep states of PCI (L0s, L1, etc.) or a multicore CPU

<comment><USER11> I wonder if it correlates with flocking behavior: More individuals makes it less risky to have a blind-side.

</comment></comment><comment><USER12> We really need to figure out what sleep is for. It seems important.

<comment><USER4> [https://www.nih.gov/news-events/news-releases/brain-may- flus...](https://www.nih.gov/news-events/news-releases/brain-may-flush-out- toxins-during-sleep)

<comment><USER13> So, the brain is an electro-chemical engine, and like other engines, it must be shut down to perform regular maintenance so the engine lasts longer, and is less prone to error conditions.

<comment><USER14> Not just the brain, but the whole body.

If I go without enough sleep, my hair and skin start getting greasy, my immune system is weakened, my muscles start feeling tired, etc.

<comment><USER15> Your hair and skin get greasy because you aren't bathing, not because you aren't sleeping.

<comment><USER14> You are incorrect, as you can trivially verify yourself with a few days' first-hand observation.

Even if you don't bathe at all for a few days, or just rinse yourself with water (skip the oil-stripping soap for this experiment), the greasiness of hair/skin fluctuates noticeably throughout the day, and increases substantially after a day or two of insufficient sleep. (That's right, the greasiness will go up and then subsequently go down, without your doing anything special in between.)

[Side note: it's pretty disappointing when people make confident sounding assertions about things they clearly don't know anything about and didn't bother to do the tiniest trivial bit of study. I find this happens quite commonly even in discussion venues where there's ostensibly a cultural value placed on reasoning and evidence.]

<comment><USER16> I've been sleep deprived for extended periods before and never noticed the difference. Is there sample size > 1 evidence for this you're aware of?

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> I'm currently reading Where Song Began[1] which discusses this, and is super- interesting besides. Has an anecdote of WW1 pilots encountering flocks of dozing swallows at night.

1\. [https://www.amazon.com.au/Where-Song-Began-Australias- Change...](https://www.amazon.com.au/Where-Song-Began-Australias-Changed- ebook/dp/B00KYDSKXW)

</comment><comment><USER18> Just me or the fact that they managed to record the brain activity of birds in flight seems more interesting than the fact that birds sleep in flight?

I mean, the reason I clicked the link is because I wanted to learn _HOW_ they recorded the brain activity.

I just never imagined EEG sensor + logger can be miniaturized to such a degree.

</comment><comment><USER19> Is it possible for a human(for example a meditator) to learn to sleep with one eye open ?

<comment><AUTHOR> Yes. My son used to sleep with one eye open. After serving in Vietnam, my father habitually napped with both eyes open.

<comment><USER20> That seems to imply that the unconscious part of the brain still can use visual input while the 'mind' is sleeping (just like it can 'read' the output of your ears, so that it can wake you when your alarm clock rings)

Does anybody know whether that is true? Similarly, does the knee reflex work when humans are sleeping?

Edit: on the knee reflex, there's [http://ajplegacy.physiology.org/content/68/2/345](http://ajplegacy.physiology.org/content/68/2/345). Paywalled, but the knee reflex seems diminished/absent during sleep.

Edit 2: quite surprising, as the knee reflex is so fast that a nerve signal cannot travel to the brain and back within its response time (and of course, there's the spinal cat, that walks on a treadmill after its brain has been disconnected from its spinal cord ([https://en.wikipedia.org/wiki/Spinal_locomotion)](https://en.wikipedia.org/wiki/Spinal_locomotion\)))

<comment><USER21> I don't know, but I would suspect that doing the knee reflex thing with someone asleep would often cause them to wake up?

But, also, I think I heard that the signal doesn't get all the way up to the brain before the signal to kick or whatever starts going down? (I am unsure of this though.)

So, I would think that the brain being like it is when the person is asleep wouldn't stop the kick reflex thing, because the brain isn't even what causes the kick reflex thing?

So my guess is that they would kick and then likely wake up.

I'm not certain of this though. Please correct me if I am wrong.

<comment><USER22> Yes, the reflex is controlled by the "dorsal root" ganglion, at the spine.

<comment><USER23> Perhaps sleep is a full body affair.

</comment></comment></comment></comment></comment></comment><comment><USER24> Kind of OT, but does anyone happen to know if a person with a severed corpus callosum can sleep with one hemisphere at a time?

</comment><comment><USER25> It would make sense that birds do fall asleep while flying, as they are sometimes prone to fly into buildings or windows that were obviously visible.

</comment><comment><USER26> wow, birds can auto-pilot.

if two halves of the brain can work independently, wouldn't there be a sync problem! I wonder how the brain handles it.

</comment><comment><USER27> Sometimes I can hear myself lightly snoring while asleep. Its kind of weird

</comment><comment><USER12> I wonder if they have that "I'm falling" dream and then wake up.

<comment><USER28> I think that's actually unique to primates (who do/did sleep in trees).

</comment></comment><comment><USER29> Personally, I always have trouble sleeping while flying.</comment>


Google catches French finance ministry pretending to be Google - <AUTHOR> http://gigaom.com/2013/12/09/google-catches-french-finance-ministry-pretending-to-be-google/ <comment><USER2> good read</comment>


Apple launches 'Apple Customer Pulse' feedback site - <AUTHOR> http://www.tuaw.com/2011/05/06/apple-launches-apple-customer-pulse-feedback-site/ <comment><USER2> It is running on Microsoft ASP.</comment>


Russel's Paradox in Probability - <AUTHOR> http://beust.com/weblog/2011/10/27/probability-quiz/comment-page-1/

<comment><USER2> This commenter has the right answer. -> [http://beust.com/weblog/2011/10/27/probability- quiz/comment-...](http://beust.com/weblog/2011/10/27/probability-quiz/comment- page-1/#comment-12590)

The question is phrased such that most people will immediately assume the distribution from which we choose an answer is uniform over {A, B, C, D}. If, indeed, we choose each answer with equal probability 1/4, then none of the answers can be correct. This is _not_ a paradox! It's simply a proof by contradiction that the distribution from which we select our answer "at random" cannot be uniform over all the choices.

The problem is clearly with the phrase "at random," which is ambiguous in a mathematical context, but, in popular meaning is equivalent to "uniformly at random."

<comment><USER3> Meh. If you think of randomness as information entropy, then the uniform distribution is the unique most random distribution. So you can argue, "when you said at random, it's reasonable to assume you meant _completely at random_ (i.e. in the most random way) not just _somewhat at random_ (e.g. 99.9%/0.1%/0%/0%)."</comment></comment>


Ask HN: How do you handle small web/tech requests from friends? - <AUTHOR>

I'm sure most HN'ers are the resident geeks in their wider circle of friends and get a lot of requests like:
* Can you set up a WordPress blog for me?
* Can you migrate my website from sharedHostX to sharedHostY?
* Can you help me pick an e-commerce service to use to put my store online?
* Can you fix my slow/crashing computer?
I get a lot of these (from Non-Tech friends) and stacked up they take up a fair amount of my time.  I've never accepted money for doing stuff like this, even when offered, but now wondering whether for anyone that isn't family or immediate friend whether I should.
I'm wondering how you guys handle these kinds of requests?
EDIT: On the point of learning to say "NO": I guess I've always seen doing requests like this as 'paying it forward' or participating in the gift economy.
But when it comes time for me to need help I'm more likely to Google something/work it out for myself then really ask for help. <comment><USER2> Depends on the person. I always have to fight the urge to send them this link: <http://lmgtfy.com/>

Often I try to find the easiest walkthrough online I can find and e-mail it to them. I add in the messaged something along the lines of "here is a guide to doing this yourself, I should have some free time in x weeks if you get stuck." Usually this gets them to at least attempt to do it themselves and most of the time they are fully capable.

<comment><AUTHOR> Hmmm... for me at least, quite often the requests are from people who are non- technical and so don't have the ability to do it themselves.

</comment></comment><comment><USER3> By and large, I refuse such requests. Often I dodge it in a subtle (yet true) way by pointing out that I run Linux on all of my own computers, have for years, and therefore have lost touch with the state of Windows admin/repair/etc. This suffices to keep my mom, sister, aunt, etc. from giving me too much grief to help them.

Beyond that, my non-techie friends have basically been trained to not bother asking me, as I pretty much always politely refuse, by pointing out how slammed I am with my day-job and startup project. When you explain to people that you routinely work 80+ hours a week (and it's true) they tend to be more understanding.

That said, if it's a question I can answer without doing any significant research, and if the person has shown some initiative in trying to deal with the problem on their own, and if I actually have a spare moment, I'll occasionally try to help somebody by email or whatever. One of my sister's friends was taking an online class on Java programming, and I answered a few Java questions for her, but I never spent more than 2-3 minutes on it.

</comment><comment><USER4> What is your day job? If your day job involves any of those things just quote them a comparable hourly rate and don't feel bad.

I usually let people know up front how much the service they are requesting is going to cost. A lot of the time this scares them away.

You could always try to work out some sort of service exchange. Given the people you are helping offer services that you'd want / need.

or you could learn to just say no.

<comment><AUTHOR> Good point. I'm a consultant/contractor by trade so I have a very clear billable hourly rate...

But my billable rate for SF-based high quality developer network and API ecosystem strategy + development is not good value for setting up WordPress. In fact it's probably a degree of magnitude bigger if you compare it to getting a student or off-shore person to do it.

<comment><USER5> I've had a number of "please setup Wordpress" type requests. These days I just point them at a hosting company with a One-Click-Installer (Dreamhost has worked ok for me) and tell them to have a go.

If I don't think they are going to be capable of doing that, then I point them at Wordpress.org

<comment><AUTHOR> Well I'm a shareholder in WPEngine.com (WP hosting platform!) so yes, I should route all my WP requests I receive to them! :)

</comment></comment></comment></comment><comment><USER6> The Big N.O....

I do a limited amount for close family, and a very small number of non-profits I help out.

For the rest and for complicated requests from the above folks, I refer them to a computer shop or other person, or say I don't have a good recommendation on where they could get help with that.

I just helped out one non-profit by pointing them to some existing web tech they could use instead of writing software, and gave them a quick sample, and offered to teach them or find a consultant to teach them how to do the full version of what they wanted.

With another non-profit, I help them with the stuff that's fun for me, and connect them with other people to do the other, more time-consuming stuff they want to do.

</comment><comment><USER7> Ah, the age old unpaid service request.

I find this very similar to the designer's issue of spec work in the design community - <http://www.no-spec.com/faq/>

The best response I've heard to the spec work issue is making an analogy to other service trades. E.g. if you wanted a bathroom in your house re-modeled, would you pay the contractor only if you liked the job he did?

Maybe we could parallel that to this issue - "if my trade was carpentry instead of computer ______, would you feel comfortable asking me to make you wood furniture?"

</comment><comment><USER8> I actually made an online course with some of my basic "tech knowledge". Now if a friend asks me, for example, about the process I went through to create a Facebook application, I send them to my course. I obviously won't charge my friends for the course.

I still get questions like this and have recently started to refer my friends to Quora.

Ultimately, as you mentioned, the overall lesson is to learn how to say 'no'. You can do this with respect and tact.

</comment><comment><USER9> I think web design is a really good trade to have and you should not stack up a list like that. If you are on HN, I imagine you have grander ambitions of doing your own things, so if I were you I'd learn to respectfully say no more often. I learned this one the hard way, but once I started saying no, it was no big deal, and I was helping others, but in reality these tasks take away time from my own coding projects, and it's not worth the trade off.

<comment><USER9> Find a different way to pay it forward with friends and family rather than offering your professional technical skills (if it's becoming too time consuming, maybe you'll have down time some times, and you'll know you can pick it back up).

</comment></comment><comment><USER10> I'll say "yeah, I usually charge $X for that, when can you work on it with me/when would you like that done?"

If they're willing to pay for it, it shows that it's actually a legitimate help to them. If not, it saves my time.

</comment><comment><USER11> For good friends I'll do it if I have the time (it's not like any have asked me to build them a facebook yet). For family I'll usually always do it - they've earned the favours many times over.

</comment><comment><USER12> For friends and family? I do any favor they ask for.

I am not so self-righteous that I refuse my friends/family favors.</comment>


Game Programming Patterns - <AUTHOR> http://gameprogrammingpatterns.com/ <comment><AUTHOR> This is from the same fine gentleman that gives us [http://www.craftinginterpreters.com/](http://www.craftinginterpreters.com/)

Thank you so much for your work.

</comment><comment><USER2> Great book. I recommend buying a paper/ebook version to support the author. His writing style is very concise and funny so it's easy to follow and it reads very fast. The only thing I didn't like is that for code examples he uses C++ with unnecessary classes where vanilla C functions would've been sufficient, but I understand his reasoning for doing so ("It is the lingua franca of the industry").

Does anyone have any recommendations for other books about game engine design?

<comment><USER3> I enjoyed reading this book:

[http://www.gameenginebook.com](http://www.gameenginebook.com)

<comment><USER2> Thanks, I'll give it a try.

</comment></comment></comment><comment><USER4> I use extensively in my projects the Component decoupling pattern: [http://gameprogrammingpatterns.com/component.html](http://gameprogrammingpatterns.com/component.html)

The Observer and Mediator patterns can then be used for wiring components.

</comment><comment><USER5> I had to come here after reading up to the "Command" interface idea. This book has a lot of things that look good on a 3 to 4 element case but, when scaled up, will become unwieldy.

Adding all of this complexity to button clicks does not sound very intuitive. The original if statement wasn't either but the Command interface wasn't a good replacement. I've always liked using event systems for handling actions like this. C++ would probably be a great language to implement a fast priority based, cancellable, and event system. For something along the lines of what I'm talking about see [1]. It's not perfect (you need a dispatcher for every event) but it still better captures the idea that "Something happens and it triggers N many actions".

Maybe it's just different style. Maybe it's just different ways of thinking about the problem. Maybe it's just that I'm not a gamedev and I work in a different sector.

[1] - [https://codereview.stackexchange.com/questions/118628/c14-ev...](https://codereview.stackexchange.com/questions/118628/c14-event- system)

<comment><USER6> Given that the book talks about it being used for controller buttons and for undoable actions in strategy games and editors, performance is not a significant concern and event-dispatchers are insufficient. Your comment is not particularly on-topic.

<comment><USER5> > Given that the book talks about it being used for controller buttons and for > undoable actions in strategy games and editors

The state should be managed by a UI object if you're talking about calling up UIs. The key presses will be subscribed to in that object and, when the event is triggered, the UI object takes over. Then the button is clicked again the UI object can undo whatever state it has created.

> performance is not a significant concern

Performance isn't my concern. My concern is that you've created 6 new classes to handle 5 button clicks. That sort of class bloating makes it very difficulty to enter the code base (lots of unneeded wrappers for actions).

It also decouples the action from the object that the action is built for. This spreading doesn't make sense to me. The UI object should handle all things UI. The player's object should handle all things player. A Command object shouldn't be extended by 10 other objects who all touch different objects doing different things.

> event-dispatchers are insufficient

Why?

> Your comment is not particularly on-topic.

It is. I am talking about how I only got a few pages in and found it to be promoting patterns I'd consider harmful which either use an abstraction that doesn't fit the problem, or do things that make it very hard to enter a new code base.

<comment><USER7> Yup.

See, this is why I struggle to recommend this book.

> In some ways, the Command pattern is a way of emulating closures in > languages that don't have them.

...

> For me, the usefulness of the Command pattern really shows how effective the > functional paradigm is for many problems.

So close, yet so far. The Command pattern is a brilliantly useful pattern, and I've seen it used to great effect; but it's not remotely about callbacks or closures; thats just an implementation detail.

You're completely right, do you really need a JumpCommand, a JumpCommandHandler, and an UndoJumpCommand (?? What does that even mean?) when you could just have one class, called Player, with a method `jump`?

No. You don't.

It's a daft example.

The Command pattern is about have _composable atomic state transactions_ over your game state.

For example, if you have a SpawnMonsterCommand, and a ApplyStatusEffectCommand, you can create a hoard of raging monsters using a SpawnHoardCommand; that _calls_ the SpawnMonsterCommand 100x and then calls ApplyStatusEffectCommand to the monsters.

Then you can have a SpawnBattleCommand that calls SpawnHoardCommand twice, with a different faction, or say, three times with 3 different factions to generate a battle.

Or perhaps you're using an async resolution model, where you're commands are like MoveToLocationCommand, and AttackTargetCommand; and you need to start the MoveToLocationCommand then wait for it to finish before you run the AttackTargetCommand.

Abstracting the functionality into small chunks lets you easily build complex chained behaviour, and you can even test it easily because each 'Command' is an isolated and known behaviour.

...but yeah, totally. A flurry of classes. Don't use it if you don't get some value from it.

Having an undoable 'JumpCommand' falls firmly into the 'dont bother' category.

<comment><USER5> With that use case I can understand why people would want this! You should make one of these books.

</comment></comment></comment></comment></comment><comment><USER7> I don't know.

I have such mixed feelings about this; it's free... but, I don't actually think it's... good? I mean, it's well written, and it has examples that try to tie it into practical examples, and _thats_ good, but there are just lots of little technical details that I find are slightly off.

For example, a considerable amount of time is devote to showing that the 'observer' pattern isn't a bad idea.

...but, although its not always a bad idea, there are a number of people (see [1]) who have comprehensively covered why it is troublesome.

On the prototype pattern:

> With all of these options, I honestly can't say I've found a case where I > felt the Prototype design pattern was the best answer. Maybe your experience > will be different, but for now let's put that away and talk about something > else: prototypes as a language paradigm.

...what? Then why did you bring it up at all?

Each of the chapters is really long, covering what is really quite basic material mixed in with some kind of questionable content and some examples... but no actual working code to show how to use the examples.

I like [https://en.wikipedia.org/wiki/Software_design_pattern](https://en.wikipedia.org/wiki/Software_design_pattern)

...I'd like this too, if it was just... I don't know. Slightly more technically sharp and less rambling?

Surely you could cut down the discussion slightly, show a practical example of where each pattern is _actually useful_ that _actually compiles_ , and just drop any patterns that... aren't useful, and you'd have an excellent book.

[1] - [https://infoscience.epfl.ch/record/148043/files/DeprecatingO...](https://infoscience.epfl.ch/record/148043/files/DeprecatingObserversTR2010.pdf)

<comment><USER6> It's a reasonable introduction to many concepts and design patterns that are useful in many areas of programming, including games. Even if it's not the best treatment of each, the quality, style and pace keeps it useful and engaging. If it's not for you, that's fine, but if your comment becomes the top one, I think it could dissuade a lot of people who could benefit from giving it a read.

<comment><USER8> I agree with this assessment. One of the issues I had with the GoF patterns book (from the perspective of one's first book on patterns), is that it's heavy reading for the target audience (i.e. people clearly not exposed to patterns before). If you're in that situation, you'll struggle to stick with the book and appreciate it. For everyone else, it's probably preaching to the choir.

This book on the other hand - while perhaps lacking on implementation details - does a wonderful job of introducing a variety of patterns and their usefulness as abstractions.

</comment></comment></comment><comment><USER9> "What is software architecture". Just skip all that part and refer to ISO/IEC 42010 instead. This description of software architecture is the equivalent of the Industrial Revolution description from Adam Sandler's movie "Billy Madison". In fact, 99% of people speaking about software architecture haven't even bothered to read the actual definition of it.

I read this book some years ago: [https://www.amazon.com/3-0-Design-Patterns- Real-World-Proble...](https://www.amazon.com/3-0-Design-Patterns-Real-World- Problems/dp/059652773X) , it's rather dated now (from 2008, targetting C# 3.0), but illustrates patterns well with clear, concise and self-contained code and a more general approach.

</comment><comment><USER10> This is an excellent programming book, even if you don't intend to make games. Highly recommend

<comment><USER11> Yes, the "game" part of the title is slightly misleading. I have never touched any game related code and I still found the book very helpful.

</comment></comment><comment><USER12> I jumped into a few topics at random and this seems like a good book, definitely filled the void it intended too. When I was getting into game programming in the early 90s there was literally nothing for me in the book store specifically about game programming.

</comment><comment><USER13> Wow, the free web version looks great. Will give it a read, as all my game projects ends up with me reinventing a game engine or getting stuck with some dataflow that should be a solved problem with a cleaner solution.

Like the landing page as well, very clean and to the point.

</comment><comment><USER14> Will this book teach me to code videogames? If not where can I learn that before reading this book?

<comment><USER15> Start by learning OpenGL. Two resources I would start with are the OpenGL Red Book [1] and NeHe [2] tutorials.

The OpenGL Red Book has everything a beginner needs to know about OpenGL and NeHe is a bunch of tutorials that you can study to learn more about the concepts. If you search around the web you should be able to find NeHe examples in your programming language of preference.

[1] [http://www.opengl-redbook.com/](http://www.opengl-redbook.com/)

[2][http://nehe.gamedev.net/](http://nehe.gamedev.net/)

<comment><USER13> Thats way too much complexity to get into game programming. Just start with something where you can draw shapes and images to some canvas, and make it interactive. No need to start with 3d, and at least not the low level 3d stuff. Then you will never actually end up creating something.

<comment><USER16> Agreed. I'm currently teaching myself OpenGL, but only after getting pretty comfortable with using SDL and SFML for 2D graphics (drawing directly to a buffer in SDL, and using SFML to draw textured shapes, sprites, and such).

3D has a whole ton of boilerplate; it's better to start with something a little simpler to experiment with some patterns.

</comment></comment></comment></comment><comment><USER17> Somewhat related - are there similar resources for other other kinds of software?

</comment><comment><USER18> What did you use to generate the web version of the book?

<comment><USER19> Have a look at the author's blog and at the book repository on GitHub [http://journal.stuffwithstuff.com/category/book/](http://journal.stuffwithstuff.com/category/book/) [https://github.com/munificent/game-programming- patterns](https://github.com/munificent/game-programming-patterns)</comment></comment>


Ask HN: Would you use a GUI to design React Native layouts? - <AUTHOR>

Hi all,
I'd like to get your opinion on a technical strategy question.
Neonto makes a visual tool that generates UI+controller code for native mobile apps:
http://neonto.com
Currently the tool covers the iOS and Android platforms by outputting Objective-C and Java code. This can be quite scary for users because the native languages and frameworks are complex.
One possibility would be to add a React Native code generation back-end to Neonto Studio. This would either complement or replace the existing iOS/Android backends.
If you're already using React Native, would you find such a product useful?
If you're interested in learning React Native, would you consider using a GUI tool that generates view and controller code? <comment><AUTHOR> Clickable link:

[http://neonto.com](http://neonto.com)</comment>


IEX Outduels Citadel, NYSE as 'Flash Boys' Exchange Approved - <AUTHOR> http://www.bloomberg.com/news/articles/2016-06-17/iex-outduels-citadel-nyse-as-flash-boys-exchange-is-approved <comment><USER2> A novel proposal for the exchanges that object to IEX: let the market decide.</comment>


Phasing out fairware - <AUTHOR> http://www.hardcoded.net/articles/phasing-out-fairware

<comment><USER2> To me, the most notable thing in this article is that selling open-source software -- the software itself, not support or consulting -- actually worked.</comment>


Announcing node.ocaml (OCaml + Libevent = Fast Fun) - <AUTHOR> http://blog.mathgladiator.com/2010/09/announcing-nodeocaml.html

<comment><USER2> You might want to consider looking into using the LWT library? (<http://ocsigen.org/lwt/>)

It's fairly mature, has a bunch of standard libraries already wrapped up into continuation-passing / callback style (I believe this includes libev, a cousin to libevent) and has a nice syntax extension too that can save the typing required to explicitly wrap things into callbacks.

</comment><comment><USER3> I still think that something like Arc + LLVM's vmkit + fast FFI and async IO is a still good idea. Anyone? ^_^</comment>


To understand how group dynamics work online, look no further than Numtot - <AUTHOR> https://www.nytimes.com/2018/08/10/style/numtot-urbanism-memes.html <comment><USER2> I joined a popular video games forum back in about 2000 which, at the time, had some industry folks. Everybody was generally very polite and reasonable but as time went on and more people joined the forum it became more and more tense and the industry people got berated for their games or their commentary and slowly left. The quality of discourse degraded to the point where there was an outright rebellion against a certain set of trolls who weren't being "dealt with" which led to a mass banning and an exodus that included me.

Most of the refugees wound up at another forum which repeated almost the exact same pathologies over the course of the next few years. I eventually left that community as well.

The conclusion I came to was that I was not gaining anything valuable from my interactions on these forums. I also suspect that pure online interaction that is not backed by in person interaction is ripe for serious problems. Knowing someone in person and interacting with them on some routine basis is a huge bulwark against mistreatment. It's much harder to mistreat someone you have to face in person again soon.

My online interactions are now very limited. I may share an opinion or an answer and I'll read and appreciate the same from others, but I refuse to get into an argument with people that I don't know. I don't think it's edifying to me and I suspect it may not be edifying for most people.

</comment><comment><USER3> I don't doubt that the bad dynamics would happen regardless, but Facebook is just such a terrible way to have this group. First, it's private so you can't view any of it without joining the group which is a little icky though I guess they do that for moderation reasons. Second, there's just way too much content. I joined and it was producing multiple times the amount of content as the entire rest of my Facebook feed (which I otherwise keep to just actual friends and happily block people who post too much). And too much of the content is filler "look a train" type stuff. Having that crowd out actual friends' pictures etc wasn't worth it to me. I'd much rather have had it a subreddit I could occasionally go through and sort by best in the last month. So I left that group after a week for reasons largely independent of the problems talked about here.

</comment><comment><USER4> This is the right question to be asking. So many good things are only good at the right scale. If Google or Amazon were not two of the most valuable companies on earth and instead say, even a tenth as large, people would have an endearing trust in the way their whimsical, easy to use products make their life better. Now we view them as omnipotent gods to rebel, almost on principal. Micro socialism (sharing resources in a family for example) is basically the default if not the only model: the concept of "keeping score" is seen as pathological in relationships at the family unit scale, but standard and even necessary the larger the group of people sharing (specialisation and trade). Democracy is a great example too: there are less than one representatives per million people in the US. Early on it was a fraction of this, and therefore much easier to meet their needs. Medicine is can range from a useless waste of money to deadly and in the middle be extremely useful, even within the same order of magnitude. Society and social systems are not immune to these effects.

<comment><USER5> It's like we have a cultural or maybe even evolutionary aversion to large, powerful, monopolistic authorities. Maybe because so often they lead to human suffering.

<comment><USER4> Certainly power seems to be a corrupting force in almost all cases, I would just argue that to a certain extent, what we perceive as good (a disregard for the status quo) when small is endearing and even admirable, but once those rebels take over the world we want them to magically fall in line. It's obviously a cultural immune system of some kind.

</comment></comment></comment><comment><USER6> The story of life - which our kids and their kids will repeat for etenerity "it was good when it was small."

It's good when it's new and unpredictable and you're in the mindset of "oh let's see what else is there" (aka, an open mind)

</comment><comment><USER7> Which "Brutalism" is BIMBYISM referencing? I don't use Facebook so maybe someone here can answer this. Is it:

\- The architectural style?

\- The social housing traditions that birthed the architectural style?

\- The contemporary literalist misappropriation of the term to reference dystopian urban infrastructure which punishes the needy? (like spikes under bridges)

I'm hoping it's the first and will be pleasantly surprised if it's the second. But not getting my hopes up.

<comment><USER8> It's referring to the architectural style.

Re: spikes under bridges, AFAIk that's referred to as hostile architecture. I've never seen the term Brutalism applied to that.

<comment><USER7> That's refreshing. Unfortunately, I have. At least in the past few decades, brutalism has been conflated with being unkind, authoritarian, or Stalinist. But maybe this wave has passed and I'm out of the loop. I also didn't think brutalist architecture was appreciated in circles like this, so I clearly am out of the loop to some extent.

</comment></comment></comment><comment><USER9> "All it takes is one person being like, 'Oh not all police are bad,' and it can get very bad," she said.

<comment><USER10> It might sound intolerant if she's criticizing the statement itself, but I can see where she's coming from if she's saying it acts as a dog whistle attracting awful stuff regardless of the intentions of the original poster.

I've noticed elsewhere, on a non-political site, where a particular post, say, relates to the military and people drop in with the sort of toxic comments you never heard before the last couple of years.

</comment></comment><comment><USER11> It's funny this article came up today. I was just thinking about how much the 2016 election and the crypto bubble of 2017 changed the dynamics of HN, mostly for the worst. The article mentions scale as being the problem. I think it's more than that as HN was already a large community. I think it comes down to a community reaching a critical mass of people that don't respect the existing rules. At that point, other users, even those that largely respect the existing order, are forced to a.) break the rules to try and combat the newbs or b.) flee. Either way the destruction of what was is complete.

</comment><comment><USER12> My difficulty is that every splinter group has a firm set of beliefs that never seem to me to be quite aligned with reality or adaptable enough to be effective. I see all of these viewpoints being based on fundamental structures and technologies that should actually be changed.

</comment><comment><USER13> _"We will not ban you outright for being a capitalist, but don't expect us to defend you either."_

The sheer lack of self-awareness embodied in this statement. Facebook is not the WELL.

But the issue of the size of a group is well-studied [https://en.wikipedia.org/wiki/Dunbar%27s_number](https://en.wikipedia.org/wiki/Dunbar%27s_number)

 _A recent study has suggested that Dunbar 's number is applicable to online social networks[13]_

(As an aside I am getting a "you're posting too fast" warning, my last post was 46 minutes ago on another thread, hmm)</comment>


Genius: Shortmail restricts emails to 500 characters, no attachments - <AUTHOR> http://thenextweb.com/apps/2011/07/01/genius-shortmail-restricts-emails-to-500-characters-no-attachments/

<comment><USER2> Genius: Body restricts reach to arm length...</comment>


Show HN: lpepfinder.com – online vinyl shops search engine (using CSE) - <AUTHOR> http://lpepfinder.com

<comment><AUTHOR> This is a small tool made for a friend. He seems to be satisfied with it, but maybe one could come with some feedback/feature ideas?</comment>


Apple's organizational crossroads - <AUTHOR> https://stratechery.com/2016/apples-organizational-crossroads/ <comment><USER2> This post makes the case that Apple is not organized in a way to allow it to effectively run services like iCloud, iTunes, Apple Pay, etc. I haven't worked there in ten years, but back then at least, I'd agree with that. Teams and orgs were heavily siloed and vertical.

However, then it goes on to say a few things that I think are harder to defend. The author talks about how it's hard for Apple to build good services since they're so focused on achieving perfection with a tightly integrated device that has a new release once or twice a year. Basically, the thesis is that since the market penalty for releasing a bad device is so high, Apple has thrown a lot of resources into getting the device right the first time, which makes it very hard for them to think or operate at the tempo you need when operating services:

"You only get one shot to get a device right, so all of Apple's internal rhythms and processes are organized around delivering as perfect a product as possible at a specific moment in time."

This isn't right in a couple ways. First, Apple has released all kinds of sub- par hardware in the past. And will likely do so in the future. Apple says they are looking to achieve perfection, and it sounds noble, but it's more of an iterative process than this article makes it sound like.

Second, many of a device's features, especially the integration that the author lauds, are actually in software. Particularly the integration pieces that make the device seem like magic. And those are updated often as one can see with the release tempo of iOS updates. The pattern has been the same for a long time--release a bunch of new features in iOS X.0, then do point releases to fix bugs, plug security holes, and make minor tweaks to fix annoying things and make the user experience feel more smooth.

The other conclusion I don't agree with is that the author says that in order for them to build better services, they need more accountability, which would be achieved by tracking profit and loss for each service and making the leaders financially accountable. I agree that accountability is something that's required to create strong services, but it's not the primary lever I would use. And I certainly wouldn't bring P&L into the accountability equation since that incentivizes the different service orgs to grow adversarial relationships. It's old company thinking IMO.

Instead, I feel you need to build better services by building a better infrastructure culture. A lot of people look at situations like this and look for punitive or regressive measures to fix the problem, i.e. using the stick instead of the carrot. I think however they would build better services by focusing on other levers like open communication (the heavy siloing meant a lot of duplicated work), being open to criticism (lots of politics and defensiveness meant fiefdoms and grudges were created), a focus on instrumenting and measuring performance of services to have the right picture for how everything is working together (instrumentation and visualization of performance was terrible), a culture of learning from mistakes instead of assigning blame, having embedded SRE-like engineers who focus on production quality and availability instead of having separate second-class ops teams, etc. I could go on, but I have a really strong objection to boiling all their problems down to not making each service unit financially accountable. That won't fix things, it will instead make the internal culture on the infrastructure side much worse.</comment>


Apple's government Mac sales surge 200%, enterprise grows 50% - <AUTHOR> http://www.appleinsider.com/articles/10/08/23/apples_government_mac_sales_surge_200_enterprise_grows_50.html <comment><USER3> From a very low base, I'd imagine, compared to the big corporate & government seller's, like Dell, Microsoft, etc... Apple have traditionally fared very badly in this space and the article is all relative sales percentages - <USER2> have any marketshare/absolute numbers for enterprise/gov mac sales?</comment>


The core memory inside a Saturn V rocket's computer - <AUTHOR> http://www.righto.com/2020/03/the-core-memory-inside-saturn-v-rockets.html <comment><USER2> My dad used to work as a customer engineer for IBM. When I was about seven years old he took me to work, and showed me the printing press and mainframe at the Washington Post. He opened up a cabinet and there was the core memory with its thousands of crisscrossing wires. Now when I look at a multi-gigabyte chip, I still occasionally think of the time I could see a little donut for every bit.

</comment><comment><USER3> An often forgotten fact is that core memory is why a "core dump" is called that.

Core memory isn't wiped on loss of power, so you could read the contents out of a dead machine, to see the last state.

<comment><USER4> I used to program a KA-10 (one of the main primary research architectures of the ARPANET -- ask yourself why Berkley sockets work the way they do). Anyway it had core memory except for the machine registers which were semiconductors (DTL, not TTL). Those 16 machine registers were also the first 16 addresses in memory BTW.

Aaaanyway, the power in Cambridge would sometimes go out, and when it did whatever process was running would die, as all the register state (including PC which was a separate register) would be lost. But otherwise you could just restart since the core was fine. Of course if the monitor (i.e. kernel in today's parlance) was running, well you were sunk.

<comment><USER5> > ask yourself why Berkley sockets work the way they do

Interesting... Is it possible to shed some light on how Berkley sockets were influenced by that architecture?

</comment></comment></comment><comment><USER6> "The contents of core memory are retained when the power is disconnected, so it's likely that the module still holds the software from when the computer was last used, even decades later."

A useful feature if the vehicle containing the module is involved in an accident and ends up on the ocean floor. A successful core dump would reveal the state of main memory at the instant power was lost.

<comment><USER7> I use to program the F-15 central computer. One went down in Alaska. The computer was underwater for 2 weeks. Once retrieved, we washed the core memory boards in distilled water. We were able to determine the state of the jet when it lost power.

<comment><USER8> Did the F-15 use an IBM 4π computer or something else? What language did you use to program it. (I think aerospace computers are underappreciated, so I'm interested in whatever you can tell me about it.)

<comment><USER9> That information may be sensitive. The F-15 platform is still under active development, and even if it wasn't those details might be too much to ask.

</comment></comment></comment></comment><comment><USER10> My company still builds core memory for a military flight computer. It's cheaper than re-qualifying a new computer.

<comment><USER8> I'd be interested in knowing what core memory computers are still in use, if it's not secret.

</comment></comment><comment> 4x5-Guy I started working at Burroughs in 77 as a field engineer. We still had one or two tube/core based computers out at customers sites. Just amazed me at the time when I got to see them. I never got to work on them, I started with the systems built with dtl chips. Memory was 1k x 1bit chips.

The good old days...

</comment><comment><USER11> There is a great Linus Tech Tips and Smarter Every Day Youtube video about this. Highly recommended!

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

<comment><USER12> Ever since I learned Destin from Smarter Every Day works in defense I have lost interest in his channel. That was a disappointing discovery, though I did suspect it.

<comment><USER13> Upvoted you because I got turned off his channel by a similar but different issue last year: firearms.

He was doing a lot of episodes involving rifles, such as viewing the bullet's turbulence with polarization (iirc) and slo-mo. It was still scientific, but just a lot about guns. Then in the intro to one episode (sorry, I can't be bothered to go reference all of these), he said something like: people have criticized me because I talk a lot guns, but they're just so cool. In other words, "sorry not sorry." I closed the tab and never went back to his channel.

I'm in the US and I know guns are mainstream in the US, and he was actually good at studying them (not even really glorifying them). But there had been a lot of high profile shootings (Sandy Hook, Las Vegas, Florida, etc.), so it just seemed off. And frankly, I'm not into guns myself (just like I'm not into the foodie trend), so since he stated clearly he was going to focus on firearms, I just stopped following.

It's a youtube channel, and we all have limited time, so I see nothing wrong with stating a reason for giving up on it--even if it's a politically or culturally charged issue. It's not like the parent comment or I are criticizing the channel or even arguing he shouldn't do what he does.

<comment><USER14> They kinda are though.., or at least it's the most obvious implication. The entire comment is them saying they stopped watching after finding out he worked in the defense industry. Nothing to do with the content of the linked video, nothing to do with the original article. Just a statement that they think working in the defense industry is bad enough to stop watching the channel. If they aren't implying that we shouldn't watch SmarterEveryDay because of his career background, then they should have more clearly stated their point. As it stands the comment sounds like the classic "phrase a controversial point as an obvious implication so when people call you out on it you can backtrack and say they misinterpreted".

</comment></comment></comment></comment><comment><USER15> In the 80's I went to a college's "yard sale" and picked up a HP 9100B programmable calculator; they have core memory. When I plugged it in I remember it starting to run the program it had in it, not missing a beat. I still have it, maybe it's time to see if it still works.</comment>


[Show HN] Compress web files to improve your performance - <AUTHOR> http://www.minifyhtml.com/

<comment><USER3> I think you are removing whitespace too aggressively: "performanceof", "andnew", "linecharacters", "googlegenerally". "this thisamazing product" is a grammar typo after you put the space back in.

<comment><AUTHOR> Thanks for pointing out the bugs. Some how this was missed and not caught during our testing cycle. All the bugs have been fixed. Please do try the product.

Regards

</comment></comment><comment><USER4> It would be really cool if I could plug some URLs in and then see how well it works / make sure it doesn't screw anything up. That would be a lot more convenient.

<comment><AUTHOR> The reason you can't do that because this is an application. The compressing will happen as a pre deployment step. So as a process you compress and then deploy it to your production server.

<comment><USER4> At it's guts it's some kind of .NET project, you could reference the project and put an aspx interface straight over the existing classes.

The reason the online testing would be good is it's so easy for html minification to break stuff, but testing it manually is asking too much - <USER2> don't want to download + figure out how to use + integrate it into our teamcity + _then_ finally test to see if it didn't bork anything.

<comment><AUTHOR> I added a sample online testing page, where you can upload your file to test the compression performance. This is a very easy tool which you can learn in 5 to 10 minutes.

Please refer to the following help documentation

<http://help.minifyhtml.com>

Regards</comment></comment></comment></comment>


First steps with Scala, say goodbye to bash scripts… - <AUTHOR> http://playlatam.wordpress.com/2011/12/05/first-steps-with-scala-say-goodbye-to-bash-scripts/ Playframework 2.0 is right around the corner, and it's core is programmed in Scala, so it's a wonderful opportunity to give this object-oriented / functional hybrid beast a try… Like many others, I will pick a very simple script to give my first steps… <comment><USER2> I still prefer a simple shell script for these use cases. Here's a snippet for the translated file size calculation:

      translated_files=$(grep "todavida no ha sido traducida" *)
      total_size=$(du --summarize . | cut -f 1)
      translated_file_size=$(du --summarize --total $(echo translated_files) | tail -n 1 | cut -f 1)
      echo "translated size: ${translated_file_size}KB/${total_size}KB $(($translated_file_size/$total_size))%"

<comment><USER3> I find that much more elegant; four lines of bash script which would run on nearly any Unix-like system, versus 49 (or a bit less if you drop the whitespace) of Scala, which won't. Even the shebang is three lines instead of one!

I guess this example is nice as an introduction to Scala, but it doesn't seem like Scala is a particularly appropriate replacement for any of the things one would normally use a shell script for.

<comment><USER4> > which would run on nearly any Unix-like system

Did you mean on nearly any Unix-like system which has the output of du in the same format as the one on your machine? I don't believe those can be treated as standard if you want any kind of portability.

<comment><USER3> Okay, I'm not an expert on variations between different Unices, that may well be the case. The point I was trying to make was more that it would run without having to install a great wodge of Java/Scala dependencies which aren't on most systems by default.

</comment></comment></comment></comment><comment><USER5> A nice article, but its worth mentioning that scala for bash script usage is a non-starter for most stuff you might use bash for because JVM startup overhead, even for the client VM, is so substantial

<comment><USER6> See [http://www.scribd.com/doc/36045849/Practical-Haskell- Program...](http://www.scribd.com/doc/36045849/Practical-Haskell-Programming- scripting-with-types)

Type safety, much better type inference than Scala, and no JVM overhead.

</comment></comment><comment><USER7> I don't get how the bash scripts are not used. It's still used at

        #!/bin/sh
        exec scala "$0" "$@"

<comment><USER8> That's a one-line Bash wrapper to invoke Scala (line 2) with the original arguments sent to the Scala script, compiling the Scala code which follows below. You can read more at the bottom of the man page here: <http://www.scala-lang.org/docu/files/tools/scala.html>

<comment><USER9> I wonder why they don't use

#!/usr/bin/env scala

as the first line instead. If there's some hack to support #!/bin/sh in the scala interpreter... ew.

<comment><AUTHOR> I tried it, and got:

sas@ubuntu:~/devel/apps/playdoces/documentation/1.2.4/manual/tmp$ ./status.scala error: script file does not close its header with !# or ::!# one error found

<comment><USER9> If you do:

        #!/usr/bin/env scala
        !#

it appears to work.

</comment></comment></comment></comment></comment><comment><AUTHOR> Thanks to everybody's feedback on this one... You encouraged me to write another article, mainly because I felt a little guilty for bashing (pun intented) bash and python ;-) Hope you like it [http://playlatam.wordpress.com/2012/01/13/first-steps- with-s...](http://playlatam.wordpress.com/2012/01/13/first-steps-with-scala- revisited-bash-and-python-strikes-back/)

</comment><comment><USER10> nice article, but they could have removed the last part of the title. Its a nice way to learn scala, but a poor way to say goodbye to bash.

<comment><AUTHOR> you're right jez, I guess I couldn't resist the temptation of a catchy title, just changed it to: First steps with Scala, a functional alternative to bash scripts… I think it's more appropriate: [http://playlatam.wordpress.com/2011/12/05/first-steps- with-s...](http://playlatam.wordpress.com/2011/12/05/first-steps-with-scala- say-goodbye-to-bash-scripts/)

<comment><USER10> sounds great now, i loved it anyway!

</comment></comment></comment><comment><USER11> What's wrong with Python?

<comment><AUTHOR> nothing - [http://playlatam.wordpress.com/2012/01/13/first-steps- with-s...](http://playlatam.wordpress.com/2012/01/13/first-steps-with-scala- revisited-bash-and-python-strikes-back/#conclusion)</comment></comment>


Reverse-Engineering an IP Camera - <AUTHOR> https://dalpix.com/reverse-engineering-ip-camera-part-1 <comment> j--r Sounds cool to have something like OpenWRT for IP Cameras... really nice, hope this story will be continued</comment>


Wikileaks running on 220.127.116.11 - <AUTHOR> http://18.104.22.168/

<comment><USER2> Interesting aside: what are the legal consequences of donating to an organization that is branded a "terrorist organization"? Can you be punished retroactively?

<comment><USER3> There, I just donated 50 euros. I'll let you know if I get audited. Of course if they do, they'll just end up owing me money.

<comment><USER3> Whew, just in time! Paypal caved!

</comment></comment></comment><comment><USER3> Also here's a list of Wikileaks mirrors:

<http://pastebin.com/2ASAUkR6>

</comment><comment><USER4> It's actually a whole range of addresses 22.214.171.124 - 126.96.36.199

[http://news.netcraft.com/archives/2010/12/03/wikileaks- moves...](http://news.netcraft.com/archives/2010/12/03/wikileaks-moves-domain- to-switzerland.html)

</comment><comment><USER5> New official domain: <http://wikileaks.ch/>

Source: <https://twitter.com/wikileaks/status/10621623082156033>

</comment><comment><USER6> Pure speculation, but I wonder who is behind the DDoS? My guess would be the RBN.

</comment><comment><USER7> it doesn't work for me (Sydney/ Austraia) :(

<comment><AUTHOR> I'm pretty sure I read that Australia is blocking access to Wikileaks.

<comment><USER6> And how, exactly, would Australia do that? (block an IP address?)

BTW: Also in Sydney - working here now.

<comment><AUTHOR> No idea. Could be very wrong.</comment></comment></comment></comment>


Nate Silver Gets Real About Big Data - <AUTHOR> http://readwrite.com/2013/03/29/nate-silver-gets-real-about-big-data

<comment><USER2> _"...Schonberger and Cukier urge us to trust data, not worrying about trying to understand correlations but simply to accept it."_

My reading of Silver's book is that he thinks the way you filter signal out of noise is exactly through the use of theories/hypotheses to generate the priors. Have I misunderstood?</comment>


Ask HN: What's a good machine learning independent study project? - <AUTHOR> My school doesn't offer very many CS electives, and the ones they do offer aren't interesting to me.
So, I m going to propose an independent study around machine learning - which I know nothing about right now. The highest level math classes I've taken are multivariable calculus and linear algebra. Other CS courses I've taken are data structures, OO design, OS & networks, web design, database fundamentals. Coming up I'm taking: languages & computation, and algorithms analysis.
I was thinking about making an AI that learns to play chess over time, but I don't know if that's too much work for an 11 week quarter.
What other projects would fit within the scope of 11 weeks? <comment><USER2> YMMV on this, but I studied CS with an informal concentration on AI/natural languages. Here's some take-them-or-leave-them suggestions.

If you want to maximize the return on your time for this class, do a project which:

1) Uses one or many data sources which are publicly available but which, ideally, are not quite as simple to access as straight downloading a CSV file. A bit of practical experience with scraping, API use, or data processing doesn't hurt. Bonus points if you get a taste for working with large data sets.

2) You will not make an AI which learns to play chess in 11 weeks, or in 11 years. Just to set expectations. A more reasonable task for the same timeframe given your current skillset is e.g. "Given a large corpus of documents and a small number of them are hand-tagged, explore a few different approaches for classifying the remainder of the documents." A motivated undergrad can succeed at implementing a Bayesian classifier, but you will not advance the state of the art on chess.

3) A lot of academic projects focus on toy problems, like e.g. chess or a contrived simplification of a real system. There is no reason that you have to adopt this academic convention: consider picking a real system with consequences. There exist many websites which have information on them that actually impact decisions which people care about -- wouldn't you rather learn to do analysis on that rather than pulling out arbitrary trivia out of e.g. the British national corpus (which, I rush to mention, is an excellent tool).

4) Think about the presentation layer for findings in more detail that the typical academic paper, which spits out a sentence or two of summary stats and maybe graphs them. This might be an opportunity to have a bit of fun doing, e.g., a website which lets you search through your (voluminous) findings.

Putting it all together, you could imagine something like "I have developed a website and/or Chrome plugin which, when pointed at an Etsy item, predicts the likelihood that it will sell. Or it predicts the likelihood that a KickStarter campaign will succeed. Or it predicts the final sale value of an eBay auction -- better in some categories than others, see page 6. Or it successfully paints a red/blue map of the United States using no prior knowledge other than a geolocation database and the Twitter stream. Or it asks you ten questions about seemingly irrelevant trivia and then makes a surprisingly accurate prediction on how long it has been since you ate sushi."

<comment><AUTHOR> This is some solid advice, thanks!

</comment></comment><comment><USER3> Simple idea:

Given a post text or image, give the three boards it was most likely posted to on 4chan.

Data is easily available on the 4chan API, and you can do things from very simple (matching word frequencies) to complex (NLP and image recognition).

EDIT:

Bonus round--train it to generate posts for a given board.

</comment><comment><USER4> I'm doing some work for a small UK based charity.

I have several clustering/prediction problems in my pipeline at the moment.

Drop me a line (email in profile) if you are interested in having a crack at one of them. Should give you insight into all sorts of stuff apart from big data

</comment><comment><USER5> Students in my place usually end up going through all the content in [http://www.cs.waikato.ac.nz/ml/weka/book.html](http://www.cs.waikato.ac.nz/ml/weka/book.html)

In terms fo projects etc. there are about 4 or 5 assignments that range from spam detection, to parameter setting optimisation.

</comment><comment><USER6> Check out Restricted Boltzmann Machines and Deep learning.</comment>


Simplest possible examples of HTML, CSS and JavaScript - <AUTHOR> http://www.simpl.info/index.html <comment><USER2> Interesting. Would be nice if the source was presented as embedded gist files so that one did not have to leave the site to see the code.

Or, maybe better, just embed all the code in the page.

"View source" to see the code.

"Save as HTML" to save a working example to your machine.

In any event, slick idea.</comment>


Common Lisp is the best language to learn programming - <AUTHOR> http://carcaddar.blogspot.com/2011/10/common-lisp-is-best-language-to-learn.html <comment><USER2> I think Scheme comes the closest to being an ideal teaching language. It has all the same advantages adduced (great books, simplicity, power) in even greater measure. For instance, there's no 'funcall, 'apply, and sharp-quoting everywhere, and no powerful but baroque object and package systems deeply integrated into the language. Scheme macros are a bit complicated (especially implementation-wise) but can be sugared over (e.g. define-syntax-rule or CL- like syntax for basic macros) and at least they're "correct".

Scheme isn't perfect, of course, and I'd love to see a modern Scheme-like Lisp with a canonical implementation and borrowing freely from Haskell, Erlang, and friends while preserving its minimalist ethos (somehow neither Racket nor Clojure is this).

Of course, the readiness is all ... while there's a beauty in simplicity, can a novice without any higher mathematics really appreciate the style of programming one does in Scheme?

<comment><USER3> I tried learning Scheme. I found that the syntax was easy, basic recursion was easy, solving simple math problems was easy, and even dealing with cons and cdr was pretty easy. What's difficult is learning functional programming.

Anyone can pick up Scheme syntax really fast. Where it gets difficult is when people start telling you to not use state, not change values of variables, and to stop using side-effects.

Most people have _never done functional programming_. How does one make the leap from imperative programming to functional programming?

<comment><USER4> Here's how I did it for Scala. I went to project Euler, and did the first problem. Then I looked at other people's answers in the same language. I discovered they were doing these tiny little 1 line solutions using functional programming techniques, where I did much larger solutions. I started studying every aspect of how these solutions worked. Along the way I learned about fold, filter, map, and so on. Then I re-implemented my solution using functional idioms. Then I moved on the the next project Euler problem. It didn't take long until I had a pretty firm grasp of it. I did this in Scala; perhaps the same approach would work for you in your language of choice.

</comment></comment></comment><comment><USER5> After learning a large number of programming languages, if I was going to start someone fresh with learning to program, I would pick either a scheme ( in particular racket ) or a smalltalk.

Scheme is a little bit on the 'toolkit-y' side and slightly less accessible than smalltalk for someone just starting out but, both have what I consider most important:

a minimum of rules and syntax. anyone learning to programming in either would be primarily focused on how to solve the problem in front of them rather than solving the language.

This all said, I haven't tried this out in any scientific fashion so it is mostly just intuition.

</comment><comment><USER6> This feels like something that someone completely removed from people who don't know how to program would say. I can't imagine the horrors I would've gone through if I couldn't fall back on the fact that my first language (C++) basically looked like the mathematical notation I was used to (infix binary operands, prefix functions). Until the standard is to write math in prefix (I'm definitely not condoning this), Lisp is not the right language to start with.

This remains the biggest problem with places like HN. When everyone has a similar background, they can agree on conclusions that the rest of the world would find ludicrous.

<comment><USER7> As far as I know, the hacker news site is written in some lisp, with lots of lisp fans here.

I'm with you though. Lisp can be great for some problems but it's mostly not. The lisp guys hate hearing that and shout you down.

One measure of a language is how well it works to pass on a source base to a new team of programmers. I bet if someone were to go measure lisp against C they would find at least a 100x greater success rate with the passing on of C.

The lisp guys are profoundly focussed on how easy it is for them to write code. The real world is more concerned with how easy it is to maintain, review, enhance code.

<comment><USER8> This seems like a strange accusation. It seems like the usual complaint is that lisp programmers are more concerned with elegance than getting anything accomplished.

I think this provides an interesting counterpoint: <http://www.infoq.com/presentations/Simple-Made-Easy>

<comment><USER9> Heh. As much as I agree with pretty much everything he says in that presentation the GP's point is pretty relevant here: Rich Hickey is far, far to the right on the programming bell curve. Things normal people will have real difficulty grasping are going to seem glaringly obvious to someone like that.

</comment></comment></comment></comment><comment><USER10> I definitely agree, with a caveat: I would say that (Common) Lisp is the best language to learn computer science. If I had only an hour to teach a young child some fundamental CS concepts, I would make sure to include the concept of recursion. Common Lisp makes this, as well as a few other CS 'building blocks', trivially easy.

(The reason I'm distinguishing between programming and CS here is that 'programming' is a broad term that encompasses a number of use cases. If someone wants to learn 'programming' to throw together a few simple webapps or do some text processing, Lisp will get the job done, but they probably won't care too much about learning these fundamentals).

</comment><comment><USER9> That's not what I would teach first. I'd start with a simple assembly language, like 8080A. After that C, and _then_ lisp. The problem with starting students on lisp is they have a hard time grasping what's going on under the hood.

<comment><USER11> Er...depends on why the students want to program, right? I studied assembly and I may be taking for granted the computer science foundations that it gave me, but it has almost no bearing in what I do in my current day programming. And I had learned C, C++ and Basic before my assembly classes.

Teaching students assembly as their very first language seems akin to teaching students Latin before they can learn French, German, Spanish, etc. Sure, it's helpful and...IF they get pass that first dry session.

<comment><USER12> An simpke, elegant 8-bit microprocessor is very simple to hold in one's brain. That said, the 8080 and its offspring would never be my choice. I'd suggest the 6502, the 6809 or the 32032 (which is not 8-bit, but very easy to understand)

<comment><USER13> There's a big difference between 'simple to hold in your brain' and 'simple to do something useful with'. For someone just starting out programming, the second is arguably much more important. The article mentions Land of Lisp presenting a simple web server in 15 pages of text. What would you be able to explain in 15 pages of text for assembly?

<comment><USER14> Well, JonesForth manages to explain a self-hosting Forth compiler/interpreter (as well as the language itself) in about 30 pages of assembly, including extensive references and ASCII-art diagrams: [http://git.annexia.org/?p=jonesforth.git;a=blob_plain;f=jone...](http://git.annexia.org/?p=jonesforth.git;a=blob_plain;f=jonesforth.S;hb=66c56998125f3ac265a3a1df9821fd52cfeee8cc)

Seems like that should qualify as comparable.

</comment></comment></comment></comment></comment><comment><USER15> I think it's Python not Lisp. This is my opinion.

<comment><USER16> If you want the newbie to learn something immediately useful and with the potential for deep understanding of some programming concepts, there's one clear choice. Unfortunately, that choice is JavaScript.

JavaScript is the language the modern web is written in and it's a language you can use to build and automate cool stuff that you can show immediately to your friends. You can build interactive programs, save state (in cookies), deal with formatting and input, and even do graphics with CSS or canvas. jQuery or its competitors will cover up most of the warts.

It's not a brain dead verbose bondage experience like Java nor deep in the metal like assembler. It isn't historic and systems oriented like C or mathy and abstract like Scheme or LISP. It can take advantage of much of the semantics of those languages as you learn it if you need them.

The tools to write and run it are simple and some good debuggers are built into your browser. Everyone owns a few client interpreters with a great application environment.

It's not pretty (boy is it ever not pretty) but JavaScript is the best language to start with.

If I couldn't choose JavaScript, I'd point my friends at Python or Ruby. They're better languages for both beginners and experts but they're not JavaScript.

<comment><USER17> I agree on a few points and also disagree on some.

I agree that javascript is very easy to get started with. The syntax is similar enough with other languages (C, Java) such that you could just into one of them easily after a bit of experience with javascript. It's also very easy, as you said, to actually DO something with it. You don't have to import 500 libraries to draw a line on the screen or make highly interactive (or even beautiful) interfaces. Javascript is also somewhat close to lisp in its functionality.

That being said, I feel as though learning javascript first is putting the carriage before the horse. If someone is learning to program, I believe it's best they start off learning the basics. The idea is to learn the concepts behind mathematical thought...to learn the rules, and then learn to break them. I think someone who learned javascript first would know how to do things great in javascript, but not necessarily any other languages. They would know how to program interactions, but not necessarily how to program in general.

Another thing to keep in mind is that javascript is highly concurrent. You almost can't do anything in it without dealing with layers of events interacting with each other. This could be confusing and detrimental to someone who's just beginning to learn.

I'd argue it's best to start with C/assembly for a low-level view of how computer work, and then afterwards lisp and perhaps javascript for higher mathematical programming.

</comment></comment></comment><comment><USER18> As I've said elsewhere, your choice of language must be driven by what libraries you want to use. I read Land of Lisp earlier this year and went through the Racket guide a few months ago. Currently I'm rewriting my blog using Seaside on Pharo Smalltalk. The one thing that keeps coming back to bite me in the ass is that there are few libraries available for any of these languages. When libraries are available, they're poorly documented.

Of course, this is becoming less of an issue in Common Lisp thanks to QuickLisp. There's a Racket book coming out next year, which might help with adoption and result in better libraries. Still, it will take years before any of these languages catch up to Python/Ruby/Java.

Edit: I thoroughly enjoyed learning and playing with all three languages. Smalltalk, in particular, felt very natural. It has the eerie property of seeming like an extension of your brain.

</comment><comment><USER19> Depending on the goals of the learner, something with immediate visual feedback is nice. Logo/turtle graphics or Smalltalk would be good for this.

While you're not going to write my-first-blog in Logo, it's something my 5 year old can get her head around. And it's the thin edge of the lisp wedge :)

<comment><AUTHOR> Agreed. Warren Wilkinson had an idea for a simple Lisp wrapper to SDL for this purpose ([http://formlis.wordpress.com/2011/01/22/teaching-children- pr...](http://formlis.wordpress.com/2011/01/22/teaching-children- programming/)). But it needs to be something even simpler, "Logo easy." HTML5 Canvas is actually a good system for this IMO.

</comment></comment><comment> daniel-cussen The first language I learned was clisp and it was the only one I used for the first two years.

It was awesome. It was a long learning curve, and I couldn't do almost anything for a really long time, but I got to a point where I knew everything about this tiny universe and had a solid foundation to branch out from. With that I went on to learning java, python, js, and c, and became fascinated at how much faster things became as I used more state and therefore got closer to the hardware.

For a while I was a little worried that I would only be able to use functional programming and would not be able to learn how to use state, but that was not the case.

</comment><comment><USER20> Yep, just like the best way to learn carpentry is "Hammer".

Languages are tools, people learn differently, there is no best way.

If there was though, it'd be Ruby. ;)

<comment><USER10> > If there was though, it'd be Ruby. ;)

I know you're being tongue-in-cheek with that, but I think there are three distinct use cases for learning to program.

For people who want to learn CS from a ground-up, theoretical foundation, Lisp is a nice choice. It is very easy to teach functional programming while simultaneously teaching the fundamentals of theoretical computer science, so you get the best of both.

For people who want a bit more 'traditional' approach, and also want to learn about computer science from a low-level perspective, C is a good choice. It teaches memory management and gives an insight into computer hardware & systems that higher-level scripting languages don't. (This latter part is where Java fails - how can you appreciate references and garbage collection until you've mucked around with pointers and malloc() in C?)

For people who just want to dabble in programming, or for people without a mathematical background, or for people who just want to prototype small projects quickly... then yes, scripting languages like Ruby (or Python) would be the 'best' way.

As you said, languages are like tools, but I think these three categories of tools cover the majority of use-cases nowadays for the beginning programmer.

<comment><USER21> I'd add a fourth use case (which is somewhat similar to case three). People who don't want to be "programmers", but just want to learn how to simplify and optimize the normal day to day tasks they do. In that case I'd recommend whatever scripting language is standard in whatever app they use. For example I know people who probably would never claim to be programmers and never had any desire to learn programming for programming's sake, but have still taught themselves to do pretty advanced stuff in VBA, AutoCAD Lisp or MEL (Maya's scripting language) because they saw how much easier it made their work.

<comment><AUTHOR> RMS has an interesting anecdote about this in his speech on Emacs:

"[Bernie Greenberg] wrote a version of Emacs in Multics MacLisp, and he wrote his commands in MacLisp in a straightforward fashion. The editor itself was written entirely in Lisp. Multics Emacs proved to be a great success — programming new editing commands was so convenient that even the secretaries in his office started learning how to use it. They used a manual someone had written which showed how to extend Emacs, but didn't say it was a programming. So the secretaries, who believed they couldn't do programming, weren't scared off. They read the manual, discovered they could do useful things and they learned to program."

<http://www.gnu.org/gnu/rms-lisp.html></comment></comment></comment></comment>


How to switch between your Chrome tabs using your keyboard - <AUTHOR> https://www.fatosmorina.com/how-to-switch-between-your-chrome-tabs-using-your-keyboard/ <comment><USER2> I have been using the chrome plugin vimium ([https://chrome.google.com/webstore/detail/vimium/dbepggeogba...](https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb?hl=en)) for a while which does some similar things while at the same time emulating a Vi style interface for page navigation.

</comment><comment><USER3> control + page up / control + page down

Doesn't need an extension.</comment>


Travelers Box: A smart way to use leftover foreign currency - <AUTHOR> http://www.travelersbox.com/ <comment><USER2> So instead of getting ripped off with crappy rates by a person at the airport forex booth, you can now get ripped off with crappy rates by a robot. For gift cards.</comment>


Gmail Is Integrating Google Chat, Rooms, and Meet to Take on Microsoft and Slack - <AUTHOR> https://www.theverge.com/2020/7/15/21325966/google-gmail-g-suite-chat-rooms-meet-integration-redesign <comment><USER2> Alt Title: 'Google is killing off Google Chat, Rooms, and Meet and launching a new product that combines all three in one product'

It is striking how much of a clone the web-ui is from Microsoft Teams, almost a 1-1 copy.</comment>


Reddit Names Y Combinator CEO Michael Seibel as Alexis Ohanian's Replacement - lame-robot-hoax https://www.theverge.com/2020/6/10/21285835/reddit-board-replacement-alexis-ohanian-michael-seibel-y-combinator <comment><AUTHOR> I get the feeling Alexis felt it was time to move on and this was the perfect opportunity. I know others will disagree with my sentiment but having been apart and then later an observer of the Reddit community I can see why he would want to move on and do so as gracefully as possible.

</comment><comment><USER2> I have kind of a weird opinion of this. I actually think Michael Seibel is too quaified for that position. What we want in technology is more diverse voices in leadership positions, not more of the same voice in multiple places. Obviously he's a great voice for Reddit to have on its board, and more diverse voices at reddit is good, but I do worry that we're still fulfilling this idea that the standard we're holding non-(straight-white-male) people to is actually higher because we're scared of being accused of hiring someone as a diversity hire.</comment>


Oh, Go Ahead, Overthink FizzBuzz (2008) - <AUTHOR> http://chalain.livejournal.com/68788.html <comment><USER2> The EnterpriseQualityCoding version of FizzBuzz[0] is the ultimate (hilarious) version of this. Though, there is still some room for development of node, js, etc versions.

[0] [https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition)

<comment><USER3> I don't know. Java seems like the one true language for the Enterprise version of FizzBuzz.

<comment><USER4> The Node version could be pretty great anyway. Huge list of modules required, multiple implementations of the same basic thing in use, separate modules for "fizz" and "buzz". And MongoDB used for something, for no good reason.

<comment><USER5> "fizz", "buzz", and "fizzbuzz" should be separate microservices each with their own failover and redundancy systems.

<comment><USER6> Many years ago I stumbled on a programming golf contest on the old Something Awful forum. The challenge was to convert a byte string to a hex dump. I wrote it as a distributed JNI system with CORBA based RPC. The boilerplate stuff alone was like 500 lines. This is what I did for fun in high school. I wasted my youth.

</comment></comment></comment></comment></comment><comment><USER7> I worked for a while for an IT services company. For our entry level tech support position, I put together a quick interview document that we emailed applicants, asking them 4 questions. They had to help someone fix their printer via email, fix their email client, write a powershell script to copy files from one directory to another, and solve FizzBuzz.

We honestly didn't care if they blatantly plagiarized the answers (especially on the last two), because the point was the right answer as much to see if they knew enough vocabulary to know how to Google the question.

Out of 30 responses, including recent college graduates with good GPAs, people claiming 20+ years of IT experience, owning their own IT consulting firm, etc, not one of them got all four right. Some even said, "I don't know how to solve this" on FizzBuzz.

The person who actually got them all correct? My wife, an ESL teacher who I gave the questions as a control, and told her to not spend more than 15 minutes on them.

Anyone who overthinks FizzBuzz is an automatic hire in my book. (yes, I know about [http://www.joelonsoftware.com/items/2005/01/27.html](http://www.joelonsoftware.com/items/2005/01/27.html) )

<comment><USER8> In fairness, someone with 20+ years of IT experience could very legitimately not have needed to do any significant amount programming. Maybe they built servers all day.

<comment><USER7> In general, I would agree with you. In that particular case (which I remember because the person with 20+ years of experience was recommended by a client), that person claimed they had written their own CRM system.

(Way, way off topic, but are you the ceejayoz who used to be a Homeworld webmaster? I spent a month or so of my life on Homeworld in late 2000, fun times.)

<comment><USER8> That definitely changes things.

And yes, I am. :-)

<comment><USER7> Yeah, we only gave that candidate the document because we were had just come up with it, we figured he would completely ace it. When he came back with really bad answers for all of the questions (including, "I've never heard of Powershell and I'm not sure how I would use it to do this" in 2012 with claiming the last 10 years as a Windows admin), my boss called me into his office and we just stared at the answers in shock.

Awesome. I was a bigger Total Annihilation fan/community member than I was for Homeworld, but still, it tickles me when I see names I recognize from gaming being 'real people' somewhere on the internet years later.

</comment></comment></comment></comment></comment><comment><USER9> I used FizzBuzz when interviewing candidates at Facebook.

Call it over-thinking, but I preferred to think of it as "jamming"... like calling out a Jazz or Rock standard that everyone knows, as a warm-up... and giving the candidate an opportunity to explore and stretch.

Blog post at [http://www.embracingthecloud.com/2012/10/22/EvolutionOfASale...](http://www.embracingthecloud.com/2012/10/22/EvolutionOfASalesforceApexClass.aspx)

</comment><comment><USER10> Can optionally include this solution - [http://codon.com/programming-with- nothing](http://codon.com/programming-with-nothing) (at the end).

</comment><comment><USER11> What this article misses is my favourite bit: maintainability and extensibility.

If this were real code two things would happen;

1\. Someone would refactor the `fizzbuzz_word(n)` method and this would all break

2\. Your PM would ask for a new feature "multiples of 7 should be said 'Wuzz'"

So that 2 minute test becomes a 10 minute venture into real world problem solving.

</comment><comment><USER12> I've tried overthinking FizzBuzz myself, but from the architectural point of view: [https://medium.com/@sbichenko/the-wrong- fizzbuzz-81cb8e67ef4...](https://medium.com/@sbichenko/the-wrong- fizzbuzz-81cb8e67ef4a)

<comment><USER13> I agree that string concatenation is the optimal solution and always take the chance to bring out a properly generic solution.

        let fbg s l u=unlines[case concat[w|(w,c)<-s,mod i c==0]of[]->show i;m->m|i<-[l..u]]
        let fizzbuzz = fbg [("Fizz",3),("Buzz",5)] 1 100
        main = putStrLn fizzbuzz

</comment></comment><comment><USER14> im gonna learn the random number seed by heart and put it as an anwser every time im asked to do fizz buzz from now on

<comment><USER15> You're going to be so in for a surprise when the RNG used on the machine you're showing off your skills on has a different underlying implementation than the one that you suspect!

</comment></comment><comment><USER16> Tangentially related: [https://github.com/AbstractBeliefs/BadBuzz](https://github.com/AbstractBeliefs/BadBuzz)

A collection of terrible fizzbuzz solutions.

</comment><comment><USER17> I like the fact that the information theory adds up. To specify 30 bits he used a 26 bit number and then specified one of 24 permutaions, and this is just right because

26 + log(24) = 26 + 4.58... > 30

<comment><USER18> Even if the number he specifies has leading zeroes, it's still one out of the set of 32 bit numbers.

<comment><USER17> Having leading zeros does make the length of the source code itself smaller though.

</comment></comment></comment><comment><USER19> Great article thanks. I recently launched the elixirgolf.com web site and there were some really interesting FizzBuzz solutions. Mine used Fermat's little theorem

[http://elixirgolf.com/articles/elixir-fizzbuzz- golf/](http://elixirgolf.com/articles/elixir-fizzbuzz-golf/)

</comment><comment><USER20> A girl on irc once asked if there is a way to solve FizzBuzz with just one comparison. Yours is indeed one and it is pretty clever :) Here is another one [https://gist.github.com/giuseppeg/5939177](https://gist.github.com/giuseppeg/5939177)

<comment><USER21> FizzBuzz from 1 to N (supplied as command-line argument) and exiting gracefully without using loops, conditionals, or segfaults - in C:

        #include <stdio.h>
        #include <stdlib.h>

        int i(const int i) { printf("%d\n", i); return i; }
        int f(const int i) { printf("Fizz\n"); return i; }
        int b(const int i) { printf("Buzz\n"); return i; }
        int fb(const int i) { printf("FizzBuzz\n"); return i; }
        int (* PC[15])(int i) = { i,i,f,i,b,f,i,i,f,b,i,f,i,i,fb }; // Printer Cycle

        int go(const int arg) {
            return PC[(arg - 1) % 15](arg) + 1;
        }

        int stop(const int arg) {
            PC[(arg - 1) % 15](arg);
            exit(0);
        }

        int (* LC[2]) (int index) = { go, stop }; // Logic Cycle

        void recurse(const int i, const int kill_num) {
            recurse(LC[!(i % kill_num)](i), kill_num);
        }

        int main(const int argc, const char *argv[]) {
            recurse(1, atoi(argv[1]));
        }

<comment><USER22> So at what input value does it overflow the stack on your machine?

<comment><USER15> 261876 here.

'0' and no number input also crash it.

<comment><USER22> Believe it or not its a weird palindrome for me: 65059

<comment><USER15> First I thought 'that's a palindrome?', then I saw what you meant. Is it repeatable?

</comment></comment></comment></comment></comment></comment><comment><USER23> Ok, now we need a ridiculously simple version in C, that will probably fit in 64 characters and require a page of explanation :-)

</comment><comment><USER24> This is awesome. And funny. I can imagine how this would piss off people interviewing you who think they are smart.

I think I will use it.</comment>