Ask HN: Resources to Learn Functional Programming? - <AUTHOR> <comment><USER2> _How to Design Programs_ for a longer, beginner oriented text. The Racket tutorials for a shorter and multi-level introduction. Several Edx programming courses from University of British Columbia use Racket and are built around the _HtDP_ methodology. The Racket ecosystem, like any engineering artifact makes tradeoffs. In the case of Racket, some of the tradeoffs are driven by a goal of _teaching_ functional programming in addition to allowing/encouraging/requiring functional programming.

Circling back to _HtDP_ , though organized as an introductory text, a more experienced programmer might benefit from working through it as a way of developing a discipline for functional programming. That is, when _HtDP_ is the only exposure to programming a beginner has, programming == functional programming. On the other hand, an experienced programmer has programming habits which must be set aside when learning functional programming and that may be a harder task.

<comment><USER3> HtDP vs SICP who will winner in your opinion ?

<comment><USER2> The person who reads both. My recent comments that came out overly harsh in terms of the initial criticism of _HtDP_ 's aesthetics, [https://news.ycombinator.com/item?id=16563160](https://news.ycombinator.com/item?id=16563160)

</comment></comment></comment><comment><USER4> Considering both the language and the ecosystem/community, I'd recommend Elixir.

Both the language and the community bear resemble my experience with Ruby. Like Ruby, the language is relatively beginner-friendly, and the community is very welcoming and helpful.

The language is probably my favorite so far. For me it hits the pragmatic sweet spot between enforcing functional programming without being needlessly strict/pedantic about it, or overwhelming me with FP concepts. That can be considered a downside too, of course, but in my case it really helped me ease into functional programming in a way that other languages did not (Haskell was a bit too much, and Clojure felt too alien, for example).

The friendly community matters a lot when you're in the 'stupid questions' phase. More than once my undoubtedly very silly questions were answered promptly, often even by the creator of the language. My experience with quite a few other 'functional' communities is that there's an unfortunate tendency toward condescension, or a kind of academic elitism that made me avoid asking what I thought might be stupid questions.

Furthermore, people actively try to teach functional principles, and in particular the Phoenix web framework is great even just to see how things are done (I often add it to my projects just for reference). Dave Thomas, who is an excellent and prolific teacher/language enthusiast, has more than once expressed his affection for Elixir as a language to teach functional programming.

Another advantage is tooling. One of the explicit goals set by the creator (Jose Valim) was to make the language 'friendly'. So very often error messages give hints on how to do things instead, and there's an automatic formatter that 'fixes' stuff for you (proper indentation, idiomatic code style, etc.). The documentation for the language, packages and functions are probably my favorite ever, and it comes with other goodies like a testing framework, interactive code shell (REPL), a really nice package manager and probably some other stuff I forgot.

And finally, even though it's by no means a very popular language (yet), it's well on its way to being a 'mainstream' functional language, and it's something you can actually _use_ for a lot of stuff (backend development, scripting, or to start a telephony company ;).

Btw, if anyone else is already playing around with Elixir, I can highly recommend searching for Dave Thomas' articles and videos. They're an excellent way to learn FP as well 'why' FP is interesting/important/worthwhile.

</comment><comment><USER5> 'F# for scientists' by Jon Harrop is excellen. It's a bit pricey, but provided tremendous value on the how and why of functional paradigms within the scope of practical, brief programs.

'Expert F#' by Don Syme et all is a fantastic reference.

Real World Functional programming by Tomas Petricek is very good as well.

'Programming language concepts' by Peter Sestoft is fantastic as well, as programming languages are perhaps the most obvious domain where functional approach shine, and the concepts are needed everywhere even though one was not implementing an interpreter.

<comment><USER6> I was about to post pretty much this list, perhaps also with Scott Wlaschin's stuff. His blog F# For Fun and Profit:

[https://fsharpforfunandprofit.com/](https://fsharpforfunandprofit.com/)

And his talk on functional "design patterns":

[https://vimeo.com/113588389](https://vimeo.com/113588389)

</comment></comment><comment><USER7> I'm assuming you already have experience with one imperative language.

Graham Hutton's programming in Haskell is a really great book and will get you up and moving in no time.

If you're new to programming, id suggest Haskell Programming from first principles by Chris Allen And Julie Moronuki. It's a very large book(1000+ Pages) but teaches you functional programming concepts from scratch in Haskell without assuming any previous exposure to the language

</comment><comment><USER8> Here's some I've used. Mostly just beginner stuff though.

Professor Frisby's mostly Adequate Guide to Functional Programming by Brian Lunsdorf is great[1]. A pretty solid book meant for beginners that introduces functional programming in a simple manner without over burdening you with all the math. It uses JavaScript, and helps you create a lot of the functional programming patterns yourself.

Learn You a Haskell For Great Good [2]. This book is pretty light hearted and an entertaining read. It's for beginners. I've heard a good follow up to this one is Real World Haskell, but I've also heard the code for it is outdated, but I'm not certain whether it is (I've never read it.)

There is a course on egghead.io that is free by Brian Lonsdorf the author of the Mostly Adequate guide [3]. I hesitate recommending this one as it's got a pretty different approach and uses stop motion that can take some getting used to and the voices can be somewhat annoying, but overall great content wise and covers many of the things in the Mostly Adequate guide. He also does a course on Frontend Masters which is just him giving a workshop in person so no stop motion or weird voices.

Lastly I haven't actually read this one even though I believe I purchased it when I first saw it announced by the author and it is, Functional Light JavaScript by Kyle Simpson [4]. Great author that always takes a r ally great approach to explaining things he wrote the You Don't Know JS series that he released through O'Reilly and also put up on github. Kyle Simpson also has a course on Frontend Masters modeled after his book Functional Light JavaScript.

[1]: [https://github.com/MostlyAdequate/mostly-adequate- guide/blob...](https://github.com/MostlyAdequate/mostly-adequate- guide/blob/master/README.md)

[2]: [http://www.learnyouahaskell.com](http://www.learnyouahaskell.com)

[3]: [https://egghead.io/courses/professor-frisby-introduces- compo...](https://egghead.io/courses/professor-frisby-introduces-composable- functional-javascript)

[4]: [https://leanpub.com/fljs](https://leanpub.com/fljs)

<comment><USER9> I've been reading the Mostly Adequate guide. It's helped me. The explanations for functors and what not really helped things click after going through other articles.

</comment></comment><comment><USER10> Brilliant introduction to static FP, uses F# but applicable to Elm, Occaml, Purescript, Haskell, etc.

[https://fsharpforfunandprofit.com/](https://fsharpforfunandprofit.com/)

</comment><comment><USER11> Resources that truly taught me functional programming were Erik Meijer's course on edX and it's companion book, Programming in Haskell by Graham Hutton, and then Learn you a Haskell web book.

</comment><comment><USER12> Assuming you are starting from scratch - start with the Lua programming language. It is very easy. Practise writing everything as a function, practise composing everything from standalone, unit functions, practise writing recursive functions that use proper tail calls, practise writing co-routines. From there is will be a lot easier to pick up languages like OCaml, F# and Erlang - it will all be syntax, libraries and type systems.

</comment><comment><USER13> I've recently used Lambdacast - [http://lambdacast.com](http://lambdacast.com) and I recommend it.

It's a podcast which focuses on teaching FP "to the working programmer". One of the authors was a novice when the podcast started, and he asks questions "keeping the discussion grounded" (most of the time). It's not centered on one particular language or framework. I've been listening to them while doing menial tasks like cleaning up my kitchen and I can understand some concepts now that I could not before.

</comment><comment><USER14> You can just visit [http://www.4clojure.com/](http://www.4clojure.com/) and start practising Clojure. No need to install anything.

</comment><comment><USER15> This isn't the type of answer you were asking for, but...

Apprenticeship is invaluable. If you can, find an adept functional programmer to learn from.

I was fortunate enough to get a job at a place using Elm and Elixir, and I had the opportunity to learn from another developer with a lot of passion for FP. It was incredibly helpful for learning.

Good luck! FP is a great tool for your tool belt and teaches a lot about good code design.

</comment><comment><USER16> I found the funfunfunction videos on functional programming [0] very useful

[0]: [https://m.youtube.com/playlist?list=PL0zVEGEvSaeEd9hlmCXrk5y...](https://m.youtube.com/playlist?list=PL0zVEGEvSaeEd9hlmCXrk5yUyqUag-n84)

</comment><comment><USER17> "learn you a haskell for great good" is a good light introduction to haskell and functional programming

</comment><comment><USER18> Learn Haskell and use Clojure/Elixir/Scala/ReasonML/Elm...</comment>


Google OS Could Put Squeeze on Other Flavors of Linux - <AUTHOR> http://www.pcworld.com/businesscenter/article/168099/google_os_could_put_squeeze_on_other_flavors_of_linux.html

<comment><USER2> The Linux blowback is crazy to me. Follow my logic here (because the first sentence seems crazy but I think it makes sense in the end):

Chrome is not really a Linux Distribution. Sure they're using Linux. Why not? It's a core that's well tested and does everything they need it to do. But the very reason they're picking it is because they don't care about that part of the equation.

They're using Linux to jump right to the part they're interested in which is a Web OS.

But they aren't trying to be another version of Linux or any Desktop OS for that matter. They're just using Linux as a stable infrastructure to build their OS on top of. So it's not a Linux distribution in the traditional sense. Meaning it's not really a replacement for anyone who was interested in a Linux netbook.

It's a third option not a Linux replacement

<comment><USER3> Its still going to use the Linux kernel, and that makes it Linux I think, though we're messing with semantics.

Regardless, I agree with your view that the blowback is ridiculous. The more people that are using free software, the better for all of us. I think people are irrationally tied to the Microsoft brand and any comfortable step away from that is nothing but a good thing.

I am excited that a big-name like google is doing something like this. It means I likely have to worry less and less about good drivers for more hardware.

<comment><USER4> _The more people that are using free software, the better for all of us._

but if the entire point of this exercise is to build a thin client gateway to google's web-based applications, which aren't open source, are you really gaining anything?

<comment><USER5> Thin clients are likely to be a viable market, so I expect multiple OS vendors to create them. Some will be open source; some will be closed source. If morally opposed to Google's closed source server side apps, one is free to go to other sites. Are you suggesting boycotting Google's open source project because they operate other apps that are closed source?

<comment><USER4> _Are you suggesting boycotting Google's open source project_

no, i don't think i suggested anything like that.

a computer running google's operating system is going to be reduced to just a kernel and web browser, so while that is a "gain" in terms of open-vs-closed software running on your actual cpu, the fact that you'd have to use google's web services to actually do anything useful on the computer means you lost everything you just gained since you are now using much less free software.

of course you can use the browser to use other websites, but then we're not really talking about google's operating system, are we? now you're just using a small portion of it (the kernel and browser) and making your own operating system of sorts (but if you wanted to do that, why not just run a regular linux/bsd distribution in the first place?)

</comment></comment></comment></comment></comment><comment><USER6> Not all Linux are GNU/Linux.

</comment><comment><USER7> Google OS will, I'm sure, be really great for the average netbook customer. However, the people who use Linux for the increased privacy, customization, and individuality aren't going to find any of that in Google's apps. So I think the OS will be hit for its target market, but expecting it to "destroy" any other part of the market is quite silly, IMHO.

<comment><USER8> I think they're looking to create a new market for a web centric cheap netbook where developers can rely on the fact that their web app will run perfectly across any number of Chrome OS based machines.

I would imagine that this thing won't even be marketing the fact that it's Linux based when it hits Best Buy...

</comment></comment><comment><USER9> >"The strength of its brand, and its reputation as a company that builds sleek and easy-to-use products, means it could steamroll over the other Linux candidates, said Joshua Martin, senior analyst at the Yankee Group."

Not to mention that it might actually be sleek and easy to use.

</comment><comment><USER10> Chrome OS isn't competing with Windows or Linux, in the same way the iPhone OS isn't competing with Windows. They are for two different types of device, bought by different markets for different reasons.

Chrome OS and iPhone are both about operating systems for small, portable, constrained devices. Chrome OS will power miniature web browsers, while Windows and distros like Ubuntu will power full-fat machines for real work.

Basically, Chrome won't be a mini-Windows or a mini-Ubuntu, but a maxi- Android.

</comment><comment><USER11> This will be good for linux I think. Ubuntu is doing a good job making a desktop competitor linux flavor but the Google name and power will push through __nix based OSs to desktops. How can linux supporters be mad about this.

<comment><USER10> They're not looking to put it on desktops -- they're looking to put it on dedicated appliance web browser devices.

Also, no-one will know that this has anything to do with linux. People will just see the Google label, and they'll call the product 'Google' without realising that it has anything to do with linux; linux will just be a plumbing detail.

Personally, I don't think this will impact desktop devices at all.</comment></comment>


Yet another piece on Basic Income - <AUTHOR> https://www.theatlantic.com/business/archive/2015/05/what-if-everybody-didnt-have-to-work-to-get-paid/393428/?single_page=true <comment><USER2> Original title: "What If Everybody Didn't Have to Work to Get Paid?"

From the guidelines: [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

> _In Submissions_

> _Please don 't do things to make titles stand out, like using uppercase or > exclamation points, or adding a parenthetical remark saying how great an > article is._

> [...]

> _Otherwise please use the original title, unless it is misleading or > linkbait._

<comment><AUTHOR> Just saw your comment. Can't edit the title anymore, as too much time has passed. Can't delete it either. Best hope is if a mod could change it. Apologies for title.</comment></comment>


New EU Law Forces Online Companies to Remove Personal Data - <AUTHOR> http://voices.yahoo.com/new-eu-law-forces-online-companies-remove-personal-10884369.html Whilst not new I do note that ycombinator does not appear to accomodate the ability to delete your account in any way shape or form.<p>Why is this? <comment><AUTHOR> I note that ycombinator afford no such compliance - ie no way to delete your account and related posts in any way shape or form.

Why is this?

<comment><USER2> That's a terrible article. It wasn't a law they passed it was written into a proposal for a directive. It may be law in a couple of years. Even then HN is a US based operation and not obliged to comply with the "right to be forgotten" even if it does pass.

<http://www.bbc.com/news/technology-16722229></comment></comment>


Record-size hole opens in ozone layer above the Arctic - <AUTHOR> https://www.theguardian.com/environment/2020/apr/07/record-size-hole-opens-in-ozone-layer-above-the-arctic <comment><USER2> Just an anecdote, but I spent the past 2 years in Canada / US, and never got sunburnt. Rarely, if ever, applied any sunscreen. Spent plenty of time outdoors.

I came back to Australia in March (Melbourne) and on the first day, sat outside for lunch, 1-2 hours tops, got visibly burnt on the forehead.

It's not summer either, that's just what it's like in the sun.

In Australia that seems normal, we have to leave to realise it's insane. As for the rest of the world, you should come and see if you like it.</comment>


The FSF supports AVC (H.264) - <AUTHOR> https://www.fsf.org/blogs/community/the-fsfs-approach-to-using-online-videos-for-advocacy <comment><USER2> Related discussion of the Stallman/FSF attitude toward non-Free codecs: [https://news.ycombinator.com/item?id=24108214](https://news.ycombinator.com/item?id=24108214)

</comment><comment><USER3> The title should probably be:

> The FSF provides AVC (H.264) videos

or

> The FSF tolerates AVC (H.264)

This sounds like they're endorsing it.

<comment><USER2> Agreed. 'Support' can mean compatibility, or it can mean endorsement.</comment></comment>


Why Do Girls Throw Like Girls? - <AUTHOR> http://www.washingtonpost.com/national/health-science/throw-like-a-girl-with-some-practice-you-can-do-better/2012/09/10/9ffc8bc8-dc09-11e1-9974-5c975ae4810f_story.html

<comment><USER2> I am calling bullshit.

Amazing Fact (TM): I've been throwing right-handed for my whole life. Make me throw lefty and I throw like a girl. Something to do with an urgent need to get base runners out.

Another Amazing Fact (TM): If you play catch with an Aussie, notice their motion will be more overhanded than yours, if you are a Yank.

It's nurture not nature here. Go get a softball and try to fast pitch. I bet there's a girl nearby that could beat you.

<comment><USER3> To be fair the article did make it clear that they were talking about overhand throwing, not underhand.</comment></comment>


Lego Macintosh Classic with e‑paper display - <AUTHOR> https://jann.is/lego-macintosh-classic/ <comment><USER2> Is somebody able to explain why certain e-ink displays are so slow to refresh while others are much faster? For instance my Garmin Vivoactive HR e-ink display, that is even capable of displaying 64 colors, is like an LCD display in terms of refresh rate apparently, you can't see the difference easily, while the one that was used to build this project takes a lot of time to even show a single frame (see the Youtube video where the display is presented, following the link Jann provided in the blog post). My best guess is that they use completely different technologies.

EDIT: Vivoactive HR uses a Transreflective LCD actually. This web site explains very well how it works:

[http://t17.net/transflectiveTFT/](http://t17.net/transflectiveTFT/)

<comment><USER3> That's because your Garmin actually uses a type of 'transreflective' LCD and not e-ink...

[https://en.m.wikipedia.org/wiki/Transflective_liquid- crystal...](https://en.m.wikipedia.org/wiki/Transflective_liquid- crystal_display)

<comment><USER2> Ok cool, thank you. The contrast is actually _not_ like an e-ink display, but under sunlight it becomes excellent.

</comment></comment></comment><comment><USER4> Incredible work jayniz -- I guess everyone and their mother is suggesting improvements, are you preparing a new version with the rpi zero W and non-cut lego blocks?

Disclaimer: resin.io founder, we're so happy you chose resin for this awesome project ;)

<comment><USER5> Ha, exactly, but it's all good :) One guy actually made an LDD model that would require no cutting. I'll post it as a follow up on my blog.

Also to everybody reading this: I'd respond to the other comments but hacker news doesn't let me ("you're submitting too fast" even though I didn't write anything since half an hour or so)

</comment></comment><comment><USER6> I'd love a pi with an e-paper display (larger than the lego Mac) which just booted into Raspbian CLI. Has such a thing been done?

<comment><USER7> I'd also love something like that. It seems there is a lack of demand though, as larger e-ink displays get expensive [0] and the only kits designed for the Raspberry Pi are small (<3"), so you'd need to figure out the protocol yourself.

That combined with a small keyboard and a phone for a hotspot would be awesome, I'd love to be able to sit in a park and code in the summer...

[0] 7.4" for $122, they sell a 10" for $300 [http://www.digikey.com/product- detail/en/SW074AS182/SW074AS1...](http://www.digikey.com/product- detail/en/SW074AS182/SW074AS182-ND/4898789)

<comment><USER8> Look into jailbroken e-readers. Not as much freedom with the hardware, potentially driver issues for peripherals, but cheap.

Recent relevant HN thread: [https://news.ycombinator.com/item?id=13863046](https://news.ycombinator.com/item?id=13863046)

<comment><USER9> Hey, that's my thread! In case anyone's wondering, I ended up with a $25 Nook Simple Touch. If you just want the screen and no touch capability, then look through the rest of the thread. Unfortunately, I have not had the time to play with it much yet, but I can tell you the rooting process works very smoothly for the NST.

</comment></comment></comment></comment><comment><USER10> It looks like there's a business opportunity here for someone to make a really slick browser based LEGO editor that does cost estimates and orders all the correct components for you when you're finished. I'm curious how large the market for such a thing would be.

<comment><USER11> There's this: [https://www.mecabricks.com/en/workshop](https://www.mecabricks.com/en/workshop)

No integrated purchase though.

<comment><USER10> I see. As with any decent obvious idea, it's already been done 10x better than I could hope to. Thanks.

</comment></comment></comment><comment><USER12> The Mac 128k was not from 1988. In that time frame, The Mac plus was the first really usable model with a 20MB HDD.

<comment><USER13> jayniz - all your comments on this post are dead, it looks like you may have been shadowbanned

(apologies for hijacking the comment!)

<comment><USER14> Well that explains why my post of this story got no upvotes. Thanks for telling me. No idea why my account would be shadowbanned. How do I unban it?

Anyways, here's my response to walrus01:

The Mac 128k is a different model, check out the floppy slot!

<comment><USER15> > No idea why my account would be shadowbanned.

3 years ago you committed the offence of punning on HN, [https://news.ycombinator.com/item?id=5144413](https://news.ycombinator.com/item?id=5144413)

<comment><USER16> Shunnnnnnnn

</comment></comment></comment></comment></comment><comment><USER17> I don't get it.. is it just using e-ink to display greyscale image? So that's just a screenshot of app chrome and the hello text?

</comment><comment><USER18> I wish exist a e-paper suitable for use as monitor (21" at least)

* I mean, not a prototype in a galaxy far away

<comment><USER19> My dream is an e-paper laptop

<comment><USER20> Don't let your dreams be dreams: [https://www.engadget.com/2010/07/19/how-to- install-pixel-qis...](https://www.engadget.com/2010/07/19/how-to-install- pixel-qis-3qi-display-on-your-netbook-and-why/)

(A friend of mine is about to order this, i've seen it, it's as awesome as you'd imagine)

<comment><USER21> That's not e-paper.

</comment></comment></comment></comment><comment><USER22> Now it just needs to accept "something" through the slot to trigger "something" to happen on the screen.

</comment><comment><USER23> Pics need a banana for scale

/E I'm serious though, it is hard to tell how large it is from the pics

<comment><USER24> In the colourful prototype picture there's a bottle cap for scale. It's a breach of Internet etiquette, which would require a banana, but it works for the purpose.

<comment><USER25> "Banana for scale" is really just Reddit and Imgur.

<comment><USER24> And Reddit is the front page of the Internet ;).

</comment></comment></comment></comment><comment><USER26> Cutting lego bricks? Eugh. There's specific bricks that would have worked exactly.

<comment><USER14> Don't worry, I discussed this with the folks at LEGO already and we're good: [http://imgur.com/dOkyl4S](http://imgur.com/dOkyl4S)

But yeah, after this post some nice folks showed me how a <2mm wall can be achieved without slaughtering bricks (special wall pieces, mounted sideways to allow for the left side of the display's board to disappear in in the Mac's frame).

<comment><USER27> What bricks are those? I don't really see how you would build that wall. It looks like it needs to be thinner than 1 unit.

Also can the floppy slot be used for the microSD card?

<comment><USER28> This brick:

NzRyg7XKhGLLe6BXzQn7p1wMA9PG1ouPG2a6DO1ey5gmlqqAT6YDwdTAjOXZGlZc6k8bYqlm2Q5DuHmtFj4oJWemEFmi9MhJ6h1Q

I think there others too

<comment><USER29> Um. Did you mean to post a link? All I see is garbled text.

</comment></comment></comment></comment></comment><comment><USER30> How powerful is this small replica compared to the original hardware?

<comment><USER31> 8mhz vs 1.2GHz

[https://en.wikipedia.org/wiki/Macintosh_Classic](https://en.wikipedia.org/wiki/Macintosh_Classic) [https://en.wikipedia.org/wiki/Raspberry_Pi](https://en.wikipedia.org/wiki/Raspberry_Pi)

</comment></comment><comment><USER32> Looks really slick! Is there any way to interact with the system though?

Is the Pi actually running Mac OS or is it just a static image?

<comment><USER33> It should be able to run Mac OS software using an emulator, similar to a previous project that used a Raspberry Pi:

[http://retromaccast.ning.com/profiles/blogs/honey-i- shrunk-t...](http://retromaccast.ning.com/profiles/blogs/honey-i-shrunk-the- computer) [https://www.engadget.com/2013/08/28/mini-classic- macintosh-m...](https://www.engadget.com/2013/08/28/mini-classic-macintosh- made-with-raspberry-pi/)

</comment></comment><comment><USER34> Awesome project!

Would anyone else chose a different software solution rather than Docker with resin.io? I love working on projects like this but I've stayed away from Docker so far. Docker plus a third-party service to manage it seems like it could be overkill, but it obviously got the job done.

<comment><USER35> Speaking as a resin fan, you need to know 0 about docker to use it. It does virtually everything for you, the fact that it's docker underneath is hidden entirely except in that you can write a dockerfile.

It's like how you don't need to provision hardware with Heroku. You just git push. And it works.

</comment></comment><comment><USER36> That's awesome... but can you really play shufflepuck on eInk? I miss shufflepuck too!

<comment><USER37> Yea, I was expecting he was going to run an emulator of some kind; was confused about the docker image.

<comment><USER38> I'm also wondering if it's running software or displaying a static image.

</comment></comment></comment><comment><USER39> Now this really needs to be running Basilisk II and a System 7 ROM. Hook up a Bluetooth keyboard and mouse, and you're set.

</comment><comment><USER40> Probably that's how we will build computers in 20 years.

<comment><USER41> Docker emulator images on ARM hardware? Hardly.

</comment></comment><comment><USER42> Does it emulate the Macintosh Classic?

</comment><comment><USER43> Why would you put an e-ink display on this if it's not going to be used?

</comment><comment><USER44> Pretty cool. I like it!

</comment><comment><USER45> nice font

</comment><comment><USER46> Thats a good loooking website. Thumbs up!

<comment><USER14> Thanks, it's just the default theme from ghost.org :)

</comment></comment><comment><USER47> no mac os?</comment>


Is Life a Smoother Ride If You're a Chicken? - <AUTHOR> http://www.npr.org/blogs/krulwich/2012/11/28/166059579/is-life-a-smoother-ride-if-you-re-a-chicken <comment><USER2> After seeing the bird defecating on their kitchen counter, I decided this would be the _perfect_ thread to ShowHN my latest creation: a 3 axis gimbal stabilizer for those not lucky enough to have cooperative avians. It's electromechanical, not biological, so don't get your hopes up.

[https://vimeo.com/81292853](https://vimeo.com/81292853)

The video shows a synchronous split screen of the very same flight, with an unstabilized GoPro on left half and a stabilized one on the right half.

(other than the aircraft and the camera, everything there is self developed: firmware, hardware, gimbal mechanics)

Some more videos here: [https://vimeo.com/user22741569/videos](https://vimeo.com/user22741569/videos)

<comment><USER3> FYI the audio is distracting, consider blanking it out and replacing with silence.

The gymbal is pretty effective, do you use a 6DOF system to provide the feedback? I have a system that I had hacked together with a 3 axis accelerometer and never could get it critically damped to the point where you wouldn't see some oscillation in the view. I speculated that if you had a gyro as well you might be able to use the magnitude of the gyro signal to tune the feedback loop with the accelerometer such that you could keep it critically damped over a wider variety of changes in orientation.

<comment><USER2> There are other such systems as you describe using 6DOF (like Alexmos, used in many DIY projects and commercial handheld gimbals), but none get to this level of performance. In particular these systems develop a lot of horizon drift under lateral loads affecting the accelerometer. Our system can be configured to use up to 19DoF (that's 9DoF x 2 sensors, and a barometer), which is partially the reason for the performance you see here.

</comment></comment></comment><comment><USER4> Pah. Chickens are for the budget low-end steadicams. Real pros use owlcams: [http://www.youtube.com/watch?v=9hBpF_Zj4OA](http://www.youtube.com/watch?v=9hBpF_Zj4OA)

<comment><USER5> Funny, this owl video shows that when blindfolded, the owl's vestibulo-ocular abilities are undiminished. I was wondering about that when the chicken video guy was speculating about blindfolding to prevent the chicken from rapidly changing targets. I guess it would actually work. Seems kinda mean though.

</comment></comment><comment><USER6> It's great to see SmarterEveryDay [http://www.youtube.com/user/destinws2](http://www.youtube.com/user/destinws2) get some press. Be sure to check out the Deep Dive play lists.

</comment><comment><USER7> There's a big flaw in the NPR writeup. The research is on _head_ tracking, but the writeup leads with an example of _head + eye_ tracking, which is a much more difficult-to-test but more important hypothesis.

<comment><USER8> Yeah, I thought that was a little odd too, but remember that birds can't move their eyes, so for them the two are equivalent.

<comment><USER9> This… this is almost certainly why chickens' heads track more "smoothly" than humans. We don't need our heads to track; our eyes can with much less effort.

</comment></comment></comment><comment><USER10> Someone already made a song out of this topic: [http://www.youtube.com/watch?v=9hBpF_Zj4OA](http://www.youtube.com/watch?v=9hBpF_Zj4OA) (this is the original scientific video this song was based on: [http://www.youtube.com/watch?v=k6M-h5g3PwI](http://www.youtube.com/watch?v=k6M-h5g3PwI)).

<comment><USER11> I was about to link it.

</comment></comment><comment><USER12> I wonder how this would have helped 'Mike the Headless Chicken', a chicken that survived for years without a head, being fed with a pipette and raking it in at freak shows:

[http://en.wikipedia.org/wiki/Mike_the_Headless_Chicken](http://en.wikipedia.org/wiki/Mike_the_Headless_Chicken)

</comment><comment><USER13> This is too funny. Thanks HN for bringing some much needed amusement to my morning :D

<comment><USER14> At first I thought the article was a lesson about taking risks in life. But this was an amusing surprise.

</comment></comment><comment><USER15> Just use a camera with OIS instead!

[http://www.youtube.com/watch?v=Xbd7TtKrDFc](http://www.youtube.com/watch?v=Xbd7TtKrDFc)

</comment><comment><USER16> How has no one mentioned this video yet: [http://www.youtube.com/watch?v=nLwML2PagbY](http://www.youtube.com/watch?v=nLwML2PagbY)

Mercedes discovered this property of chickens a while back, and made a great commercial out of it.

<comment><USER17> And slightly older, Fuji: [http://www.youtube.com/watch?v=26bw- fF3QbY&feature=player_em...](http://www.youtube.com/watch?v=26bw- fF3QbY&feature=player_embedded)

The Mercedes one is way better, though.

</comment></comment><comment><USER18> I actually thought this was going to be an article about whether people with a smaller risk appetite have more stability, but nope, really is about chicken.

</comment><comment><USER19> A useful application for readers of HN: Save money on a steadicam and just buy a GoPro + chicken instead.

<comment><USER20> Or just let YouTube stabilize the video for you.

<comment><USER4> Perhaps they have warehouses full of chickens who do the video stabilizing, just like their armies of pigeons for search? - [http://www.google.com/technology/pigeonrank.html](http://www.google.com/technology/pigeonrank.html)</comment></comment></comment>


Dear Growth Hacker, nice personalized email. But... - <AUTHOR>

Dear Growth Hacker, nice personalized email. Good job.<p>But if you can't hide the SMTP settings in Gmail, I don't think I will respond. <comment><USER2> You probably won't respond, but the other 99% non-tech world will :)</comment>


Ask HN: Review my "coming soon" page - <AUTHOR> http://scholr.ly/coming-soon

<comment><USER2> Pardon the unsolicited suggestion but you may want to reconsider your domain name.

I'm not sure how academics would be on misspelling "scholar" even if it's a clever URL hack. It's sort of like wearing a suit with sleeves too long and pant legs too short to your job at a fashion designer - it just doesn't fit in that context. That's just my opinion.

Also, there's another site at scholar.ly that has its own coming soon page.

<comment><AUTHOR> I've reached out to the owner of scholar.ly, but he isn't interested in selling. This is an ongoing contention with us- do you think it'd be valuable, considering the time tradeoff, to survey grad students and test a few names?

<comment><USER2> When I was in a similar situation a few months back, I chose to find another option rather than running the risk of confusion by my customers with me on the losing end.

While instinctive for many HN'ers, remembering to misspell and use .ly is an unnecessary burden for people like parents and non-tech friends. In my case, the average age of someone in my market is 50+ so I went with a .com.

A disclaimer is that I do invest some in domain names on the side. Unfortunately I hadn't bought this particular name years ago so had to pay $1500 for it.

</comment></comment></comment><comment><USER3> The font you use for your tag line is too silly — it doesn't make me feel particularly learned or wise or any of the things I associate with scholarliness. Ditto that wishy-washy blue color.

The "email-subscribe" widget is ugly and gray. The border is too thick on the "email" and the slightly rounded "subscribe" box feels like a parody of web 2.0.

"to get updates on our progress" should not be on a separate line from "subscribe" but in general it should not be there at all. Think of a more concise way to say what you want to say.

The "h" and the "r" in your logo font make me want to punch a baby even though said baby has done nothing wrong. I don't know what font that is but it makes me feel kind of like the bondage rape scene in Blue Velvet makes me feel.

"We're taking it back" should not be on a separate line from "The internet was built...", nor should it be in bold.

So inasmuch as "coming soon" pages go, you managed to incorporate all the things you're supposed to have while simultaneously making them all very unpleasant. But why is this posted here? Why does it matter? Is this an attempt to make us subscribe and build up your prelaunch audience? Or are you a designer trying to master the art of coming soon pages? Otherwise I don't know why you'd care enough to ask for a critique.

(Also: WAS the Internet built for universities? What does that even mean? Do you mean the old old Internet that started as a university project? Or do you mean 2005-era Facebook? I am so confused. Please explain.)

<comment><AUTHOR> (Also: the old old Internet. Any ideas on how to make that more clear?)

<comment><USER3> I'm still confused myself; the Internet hasn't been restricted to university usage since the way-early 90s, right? What specific service are you providing? Without that I can't be more clear.

(If it's something you'd rather keep secret, I understand, but can't exactly help much. Or if you want to talk privately, send an email and I'll try to get back to you quickly.)

</comment></comment></comment><comment><USER4> Build it then it will be more logical to ask for review. Ideas and Coming Soon pages are of no value.

</comment><comment><USER5> What do you want us to review?

<comment><AUTHOR> I'm really interested in initial impressions - "the brown/blue is ugly", "like the copy, wish there was more explanation", etc.

<comment><USER5> I think the browns is ugly and the fonts need some work.

Seems like a bit of a waste getting the HN community to review some colours and fonts though. If you told us a little more about the idea maybe we could give you feedback on that instead? I mean, the coming soon page is pretty insignificant with respects to the idea itself, no?

</comment></comment></comment><comment><AUTHOR> We're building an academic network to provide academics with papers and people relevant to their research. Please let me know what you think.

<comment><USER6> I really like the tag line ("The Internet was built for Universities. We're taking it back.").

The design sucks, but at least it's functional.

You should explain what the product does (ie. put some variation of the above text on the page?).

Also, maybe you should consider a "better" domain name...

<comment><AUTHOR> Jumping on giving an explanation of the product. I was hoping to go for mysterious, but most people I've talked to think that's silly.

I don't love the design- we're still working on a logo- but is there anything in particular jumping out at you?

</comment></comment></comment><comment><USER7> You should explain what the product does (or will do) so I have an incentive to be on your mailing list.

</comment><comment><USER8> The text "The internet was built for" is overlapped by "universities"

<comment><AUTHOR> Is it? What browser/resolution are you using?

<comment><USER8> Firefox 3.6.12 1366x768

Feel free to give me an e-mail if you want a screenshot too.

</comment></comment></comment><comment><USER9> How about: Review my "Ask HN: Review my "coming soon" page (scholr.ly)" post?

<comment><AUTHOR> I'm new to (posting on) HN, so those responses are great, too.

</comment></comment><comment><USER10> Horrible fonts. Horrible tagline.

I have no idea what you do, why would I want to get updates on your progress?</comment>


Ask HN: Apart from search engines, what kind of websites capture user intent? - <AUTHOR>

<comment><USER2> E-commerce:

Price comparison sites. Obviously they are good at aggregating opinions, reviews and prices.

Online Communities. Forums, blogs, etc where you ask the community for product recommendations.

Wikipedia. Most users do research before purchasing products and Wikipedia is fairly objective.

Amazon. It has become a knowledge library for lots of people who want to read product reviews, see ratings, find similar items, etc.

Consumer advocacy / testing labs. You know, unbiased sites that do more or less rigorous product testing.

</comment><comment><USER3> I'd say "how to sites".do:

"how do I fix my refrigerator?" "what's the cheapest insurance?"</comment>


Microsoft Windows 10 Event - <AUTHOR> http://news.microsoft.com/microsoft-event-2016/ <comment><USER2> After seeing the Surface Studio, it's hard to imagine what Apple can produce that will compete on the "wow" factor tomorrow, even if the Studio ends up not quite delivering for its price. It definitely set a bar for what we might expect with an innovative brand. I say this as a long time Apple customer who would actually just be fine if they released a new external monitor. I haven't been able to find a decent non-Apple monitor that doesn't exhibit wonky behavior when connected to my MBP (this includes the small things, such as responding to the Brightness function key)

<comment><USER3> > (this includes the small things, such as responding to the Brightness > function key)

The sad part — that seems to play _yet again_ — is that there's a standard just for that: DDC/CI. But none of the GPU vendors nor display vendors care enough to make it work reliably, if at all (apparently it's mostly used for automated display calibration, so if you fall out of that use case, tough luck).

I effectively hacked quite a lot of things around it, and ended up frying a couple gfx cards, because you can easily shoot yourself in the foot, write to the wrong part, and end up with a PCI card as useful as a waffle, only inedible. In the end I managed to pass some commands in very specific scenarios, but behaviours ended up highly dependent on the GPU, display, and combinations thereof I had available (from nothing, to glitchy screen, to aforementioned waffle, but it _did_ work in one specific case \o/).

<comment><USER4> Is it really that hard? My shit Phillips VGA monitors brightness can be controlled with software via an AMD E350 APU that I used to have...

</comment></comment></comment><comment><USER5> OT: This guy is a poster child of horrible ergonomics [https://ncmedia.azureedge.net/ncmedia/2016/10/Surface- Book-w...](https://ncmedia.azureedge.net/ncmedia/2016/10/Surface-Book-with- Performance-Base-Lifestyle-web.jpg)

<comment><USER6> But their new ergonomic keyboard looks really nice. Hope it works with other computers.

<comment><USER7> I have the "Microsoft Sculpt" keyboard, the older version. (Lovingly dubbed the "Batman" keyboard due to its resemblance to Batman's helmet)

It looks like Microsoft addressed all the pain points:

\- An actual bluetooth device, so no need for the little wireless dongle.

\- Function keys are actual keys and not plastic buttons.

Too bad they filled in the space in the middle. Oh well. Guess it's no longer a true Batman keyboard. But it's still the best I've used.

<comment><USER8> They also fixed the 6-key block (the one with Home, End, etc.). The older version had a nonstandard layout.

On the minus side, it has a non-detachable numpad, so you'll have to reach further to use your mouse.

<comment><USER9> Relatively recent convert to the old sculpt ergonomic keyboard, which I love.

The real escape key, and fn key to toggle the top row are likely to make me upgrade along with the standard home/page/arrow keys l, but it's a shame they dropped the tilt bar, integrated the numpad (particularly as I use a touchpad) and that colour makes me keep thinking the photos are bare 3D or clay renders. After reading about the rest of the presentation I realised that may have been intentional.

I'm also going to miss the split.

</comment></comment></comment></comment></comment><comment><USER10> I find it interesting that Msft is choosing to battle Apple head on in the consumer space, I recall Sun Tzu "attack where your enemy is weak". Yet, msft is attacking Apple at their most loyal user base—designers.

Not only that but the machines, at a glance, resemble Apple's, so there is little physical differentiation. Is aluminum gray the only color for computers these days?

This strategy strikes me as incredibly odd, I wonder if anyone here sees the angle that I'm missing.

<comment><USER11> Hi, I'm a pro artist.

I've been an Apple zombie for a long time. Since like 2000 when I finally retired my beloved Amiga. Windows does everything the "wrong" way from the perspective of my habits. Yet I would be using a Surface 4 for most of my art nowadays if not for the fact that Adobe Illustrator, my main tool, doesn't talk to the Surface's NTrig stylus properly. So I'm still hauling around a four-year-old Air and a Wacom tablet. I have been ready to give Apple money for a new machine to do my work on for about a year now and they haven't put out anything that's worth bothering with for me.

And when's the last time Apple updated their super-high-end desktop machines for the Serious Major Power Users?

They've been focusing on phones and tablets, and that leaves the segment of the market whose work is "using Serious Art Power Tools" unserved.

Unless Apple's announcement tomorrow has something in it like "oh hey we finally decided to build a tablet that can run desktop apps" I'm probably gonna be pretty meh about it. And the rumors all point to "new Pro lappy with a touch panel instead of the f-keys", which is about as exciting to me as a lukewarm glass of milk.

I do not pretend to speak for all artists. Just for myself.

<comment><USER12> I don't think I'll be getting a Surface anytime soon but I'm curious, what sort of Illustrator/Surface NTrig stylus issues would one encounter?

<comment><USER11> It drops about the first half-second of every stroke when you're using the pencil or brush tools, and completely loses some very short, quick lines. Which is a problem for someone like me who's been trained to draw with a lot of quick, confident strokes.

</comment></comment></comment></comment><comment><USER13> Clicking any of the links at the top gives me

        Your connection is not secure

        The owner of mnc.ms has configured their website improperly. To protect your information from being stolen, Firefox has not connected to this website.

        mnc.ms uses an invalid security certificate. The certificate is only valid for the following names: *.po.st, po.st Error code: SSL_ERROR_BAD_CERT_DOMAIN

</comment><comment><USER14> Guarantee they release a 3D printer in the next 12 months. I wonder who they are going to acquire to fill that void?

</comment><comment><USER15> Microsoft has always made nice hardware. Until recently, that has been limited to simple devices (like keyboards and mice). That has definitely changed.

I was pretty excited about the Surface Book when it came out (I'm an Apple fan). But I was unsure if that line would continue. That fact that it has been refreshed is good news.

The only thing that's missing is being able to plug an external video card (like the Alienware and Razer laptops can do). Once they are able to do that, switching to the Book is a no-brainer. I like MacOS, but it's only worth so much (specially with the unix subsystem on Windows now).

The one thing Microsoft needs to learn from Apple is how to design websites. The event URL is cluttered, the "fact sheets" are horrible.

</comment><comment><USER16> What I find disappointing is that they emphasized how the base is quiet and yet they're using a HDD (hybrid)?!... in a $3K machine... You can get 1TB SSD for $300. Where is all that $3K going?

<comment><USER17> A significant portion is going to the panel and the stand, probably.

</comment></comment><comment><USER18> Microsoft seems to be going through a second renaissance right now, exciting times!

</comment><comment><USER19> Still trying to mimic Apple.

<comment><USER20> Products Apple doesn't have: a big touch-screen desktop, a touch-screen laptop with detachable keyboard, that weird puck thing

<comment><USER21> >that weird puck thing

Belkin makes them. They are continuous and have a pushbutton. They're like $130 or something ridiculous. I've only ever used them for tuning around in a software defined radio, but a lot of music/video editors use them as jog dials.</comment></comment></comment>


Show HN: A smarter way to share links - <AUTHOR>

http://readdis.com
Hey everyone,
Readdis is a project that I've been working on recently and I would love to get your feedback on it.  I originally wrote it for internal use to help my team and I better track the links that we send to each other.  We found it quite useful so I decided to open it up and see if anyone else was interested.  It definitely is at the MVP stage right now with lots of things left to be done.  I would greatly appreciate any feedback, ideas, and most importantly, comments on whether or not you find it useful.  Thanks!
Kevin <comment><USER2> Nice, but I could have sworn bit.ly and other link shorteners also do this.

For instance, it tells me how many times it's been opened / clicked.

But are you trying to tell me, THIS PERSON clicked it? Vs, how many clicks it received.

Just curious on the difference?

<comment><AUTHOR> Thanks for the comment. So with Readdis I can send a link out to my team in preparation for a meeting, and before the meeting, I can check who (which user) has read it, who hasn't, and take the appropriate action (ie. send a reminder). I find bit.ly is made for mass sharing where you make a post and there's very little feedback on the people consuming it. All you really know is how many people click on it. What I am trying to do with Readdis is make it more like real life sharing where you know who's consuming it, when, and take action accordingly (which is what the instant notification and weekly updates are trying to do).

</comment></comment><comment><USER3> I think you should have a bookmarklet, that's how everyone bookmark/share links nowadays. It really improves the usability of the app, not to mention easier for new users to adopt the app.

<comment><AUTHOR> Totally agree with you. Thanks for the feedback.

</comment></comment><comment><USER3> clickable: <http://readdis.com></comment>


Hackathon Starter – Boilerplate for Node.js web application - <AUTHOR> https://github.com/sahat/hackathon-starter

<comment><USER2> If you want boilerplate, the Yeoman collection tools: [http://yeoman.io/](http://yeoman.io/) is what you need. There's boilerplate for a huge amount of projects, with generators of the parts (like: service for Angular, models for Ember, routes for Backbone...). The angular-generator is a very complex piece of work, but is extremely efficient. I highly suggest you to try it twice: once to fuck things up, another to understand the good way.

You can eventually use these CSS and HTML skeletons ([http://html5up.net/](http://html5up.net/)) to do something neat, but I don't think someone will judge you because you used bootstrap.

In term of javascript development, I've found SugarJs ([http://sugarjs.com](http://sugarjs.com)) to be extremely productive and efficient for what I need, combined with the front-end framework of your choice.

And you, what's yours ?

<comment><USER3> If you find that the Yeoman flow requires too much setup and ceremony, Brunch ([http://brunch.io/](http://brunch.io/)) is a good lightweight alternative - faster to set up and also just faster in general at compiling assets. They have a lot of community-created app skeletons, and I've found it pretty useful at getting projects bootstrapped quickly without reinventing the wheel.

<comment><USER2> Thanks ! I'll definitely test that !

</comment></comment></comment><comment><USER4> There's also a nice tool called Lineman [http://www.linemanjs.com/](http://www.linemanjs.com/). It's a simple convention-over-configuration-get-out-of-your-way command line utility that does all the heavy lifting so you can just code your app.

There are a number of templates[1] to get you started and once you get over the initial learning curve lineman fades into the background while you iterate on your app.

For a comparison with Yeoman see: [http://www.linemanjs.com/#lineman-vs- yeoman](http://www.linemanjs.com/#lineman-vs-yeoman)

[1]: [http://www.linemanjs.com/#project- templates](http://www.linemanjs.com/#project-templates)

<comment><USER5> Wow thanks for the kind words!

</comment></comment><comment><USER6> The use of the word "kickstarter" is pretty confusing here. My first thought was that this was something people at hackathons could use to put up ideas and see who's interested in joining them. I guess I should have noticed the lowercase "k".

</comment><comment><USER7> You should also checkout Drywall ([http://jedireza.github.io/drywall/](http://jedireza.github.io/drywall/))

Has all major oauth integrations and a fantastic user system... I have also heard that it was used a bunch at node knockout recently. Definitely worth checking out-

<comment><USER8> I've used Drywall - it makes standing up a service nice, however I dislike their backbone on every page vs single page app. I wish they would have done that diff, but its easy to use the existing API for things like resetting passwords and sending emails.

<comment><USER9> Another vote on Drywall as well. I do agree though with your backbone vs single page comment. That bugged me - but can't complain.

</comment></comment></comment><comment><USER10> Is XCode or Visual Studio really a prerequisite? I guess I'm missing something, but looks like I could do this in IntelliJ or even sublime. Looks very interesting but I don't use either of those and don't have the current ability to run out and buy a Mac and have no interest in developing on Windows.

<comment><USER11> Via the GH issues list:

> Both mongoose and bcrypt libraries (and could be a few others) require gcc > build tools in order for those packages to be installed. On Ubuntu you would > do sudo apt-get install build-essential. On Mac you would need to install > Xcode to get the command line tools, and on Windows you would need Visual > Studio.

<comment><USER12> On newer versions of OS X, invoking gcc will prompt you to install the command line tools. This means you don't need all of XCode.

The best (visual) example I could find is on this page: [http://railsapps.github.io/xcode-command-line- tools.html](http://railsapps.github.io/xcode-command-line-tools.html) (scroll down a bit).

</comment></comment></comment><comment><USER13> This is so cool! Has anyone seen anything similar for a python flask app boilerplate (with OAuth + how to use guide)?

<comment><USER14> I'm working on one for this Wednesday. Let me know if you're interested.

<comment><USER13> Definitely! Let me know

<comment><USER14> Sure thing - just drop me a line (email in profile).

</comment></comment></comment></comment><comment><USER15> I know it's shameless, but what are comments for if not self-promotion... I'm working on something like that too:

[https://github.com/rocco/node-base](https://github.com/rocco/node-base)

My focus is on clean structure, completeness of tools and documentation (mostly inline) so you not only get a node/express/jade/everyauth/mongodb app but also can learn what's going on and how it all works together.

SPA app on top coming up ...

<comment><USER16> Can I ask why you chose everyauth over Passport? (I'm the developer of Passport.)

By all accounts, Passport is by far the more popular authentication package (95,000 downloads from npm in the last month vs. 2,100 for everyauth). Furthermore, maintenance of everyauth seems to have come to a halt, leaving outstanding bugs and issues unaddressed. In contrast, Passport has 100% test coverage, and has an API that's been proven stable over ~2 years.

<comment><USER15> Sure!

I guess when I decided everyauth over passport about 4 months ago (there was an actual decision process IIRC) it seemed like everauth was more mature, I found more examples and other repos explaining how I could bend it to my needs.

Recently I've come across passport quite often and it appears to be the gold standard nowadays... So yes it's going in at some point in time (this is a minor side project only).

I will happily merge a pull request if you care to go for it - I currently only support facebook and twitter and was working on local user/pass up until an hour ago ... ;)

</comment></comment></comment><comment><USER17> A _boilerplate_ for Node.js would be less confusing.

</comment><comment><USER18> Very nice! This is a much better (and updated) version of my express- foundation project I created for hackathons: [https://github.com/driverdan/express- foundation](https://github.com/driverdan/express-foundation)

I've pretty much abandoned express-foundation since I haven't been to a hackathon in a while. This repo pretty much seals its fate.

</comment><comment><USER19> I think the differentiator here is the amount of documentation and that they make no assumptions about your system. For instance, telling me I need XCode to even build some of the libraries - not something I see in very many docs but absolutely something I see people run into at events like Startup Weekend.

</comment><comment><USER20> As a casual hackathon participant, this is a really great tool. I've seen countless teams with winning ideas go down in flames when they spent two days on the log-in page. And I attribute any success I've had at hackathons more to my ability to prioritize away from those activities than my actual programming chops, which are average at best.

The biggest advantage you'll get out of this system is that it's simple, and you know it in and out because you built it. With all of the other tools that do the same thing, you run into the same problem: you don't have time to learn a new tool at the hackathon. By the time you've figured out Yeoman (which looks really cool), you only have a few hours to implement your app's actual functionality.

<comment><USER21> I don't think I've ever even tried to implement a login page at a hackathon. I just pretend that every user is authed and go to work on the cool stuff that I'll actually demo.

Since it takes up valuable time to show off "auxiliary" pages like account setup, I think it's okay to just skip 'em. Most people won't mind, as it's well understood that hackathon projects are not ready for prime-time.

</comment></comment><comment><USER22> Unfortunately requires Mongodb as every other boilerplate Node.js app.

<comment><USER23> Eh, typical HN hip technology framework ;).

</comment></comment><comment><USER24> Cool work, but like others say, the title here is confusing.

</comment><comment><USER25> I wondered when this day would come. This project doesn't consider Linux a platform you develop on [https://github.com/sahat/hackathon- starter#prerequisites](https://github.com/sahat/hackathon- starter#prerequisites), but rather a platform you deploy to, if that. Heroku is so abstract it could be almost any OS.

</comment><comment><USER26> Jesus, this is an enormous step up from mean.io and also from CLEAN[1], my fork of mean. Huge thanks for this, will become my new boilerplate. Anyone up for mantaining a Coffee fork? I think I'll do it.

[1] [https://github.com/gadr/clean](https://github.com/gadr/clean)

</comment><comment><USER27> Kudos !!

Awesome, this is what I wanted to make. We should make this config driven. say what Oauth/logins to be enabled, etc.

Any one starting a new project should use this this config and be able to get desired features up and running in minutes.

</comment><comment><USER28> The instructions for setting up authentication accounts on github and google saved me so much time. I wish I could give this all the stars.

</comment><comment><USER29> Thanks for posting this. I am particularly interested in the OAuth2 portion. I'm going to go pick through your code now. :D

</comment><comment><USER30> Cool! Is there anything like this for Rails?

<comment><USER31> I usually reach for Rails App Composer to spin up quick apps. [http://railsapps.github.io/rails_apps_composer/](http://railsapps.github.io/rails_apps_composer/)

</comment></comment><comment><USER32> Or you could use [http://hull.io](http://hull.io) and not even need backend code

</comment><comment><USER33> Awesome work! I think the tag line "boilerplate for node.js hackathon apps" would be more fitting.

</comment><comment><USER34> Does anyone know of a similar project in Ruby?

</comment><comment><USER35> I think it should include a Gruntfile.</comment>


How I Conduct Interviews: Technical Level Setting - <AUTHOR> https://medium.com/dm03514-tech-blog/how-i-interview-technical-level-setting-7bf2b99f4edd <comment><USER2> When in the interviewer role, I've found it essential to know what the candidate is interviewing for. Intern, junior, mid, and principal level interviews should be totally different. But, no matter the interview, I try to hold off making a judgment until we're wrapping up, but definitely know which way I'm leaning by the end. If it's looking good, I strive to allot time for selling the position to the candidate... even in the technical interview.</comment>


Show HN: Condor – A library for building scalable TCP servers in Erlang - <AUTHOR> https://github.com/sinasamavati/condor <comment><USER2> I'm not sure that a library is really the right way to do this. In my experience, socket handling is a key part of the application, adding a library layer will make it harder to deal with the inevitable cases where the abstraction doesn't fit. An example of a simple, scalable TCP server (and a scalable client, so you can demonstrate the server), would be a better approach -- building a new server starting with the example would allow someone to make the changes they need when they need to. Avoiding unnecessary layers is a hallmark requirement of scalability, but this approach is adding one. One thing I can definitely see where the approach shown would be limiting is that often TCP servers would like to have a connection idle timeout, but if your peer is sending you a large application packet over a very slow connection, you wouldn't want to consider it idle because you hadn't received a complete application packet in some time -- having received partial packets should be enough to show that the connection continues to be alive (subject to concerns about slowloris).

Also, it's frankly hard to judge your claim of scalability, when you haven't provided any data. How many millions of connections can this handle (on which particular hardware), how many thousands of connections per second, how many gigabits of data transfer can you push, how many connections can you gracefully close per second, etc. What erlang settings did you have to tweak, what operating system limits did you have to tweak, etc to get there.

</comment><comment><USER3> There's no Netty type thing for Erlang? Netty is so nice to have on the JVM, I don't know much about TCP and it lets me be dangerous, asynchronously.

<comment><USER4> The Erlang VM (BEAM) is non-blocking by design, you don't need anything like Netty on BEAM.

<comment><USER3> There's a standard, built-in way to handle events on a TCP socket? Like Netty or Node's `net` package.

<comment><USER4> I'm not familiar with Netty, but in Erlang you set `active` mode which means Erlang will send your process messages for all incoming events for a socket: [http://erlang.org/doc/man/inet.html#setopts-2](http://erlang.org/doc/man/inet.html#setopts-2)

You can further use `{active, N}` to limit the "events" to a certain number as to apply back pressure to the OS socket level and beyond.

</comment></comment></comment></comment><comment><USER5> How Condor differentiate itself from Ranch?

<comment><AUTHOR> Ranch is merely a socket acceptor pool. Condor takes care of framing and buffering, also.

<comment><USER6> Doesn't native erlang handle that? With {packet, Len} and {active, once}?

<comment><AUTHOR> Not the buffering.

<comment><USER4> You can set a user level buffer size of the socket driver, and a receive buffer size (see [http://erlang.org/doc/man/inet.html](http://erlang.org/doc/man/inet.html)).

Why is another level of buffering needed?</comment></comment></comment></comment></comment>


Is TikTok a Chinese Cambridge Analytica Data Bomb Waiting to Explode? - <AUTHOR> https://qz.com/1613020/tiktok-might-be-a-chinese-cambridge-analytica-scale-privacy-threat/ <comment><USER2> I doubt that TikTok has the capacity to mine meaningful data. From what I've seen it's mostly teenagers doing lip-sync and making memes. Maybe marketers can establish a link between certain preferences of memes and proclivity to buy certain goods? Perhaps there's some potential for data monetization.

But this is nowhere near the level of analysis that Cambridge Analytic did on Facebook. The data Facebook collects is way more useful, and even contains people's estimated political leanings (which are fairly accurate in my analysis).

<comment><USER3> Could be a long-term investment, one of those teens will rise up to be have political or business power and who knows what they can leverage on them. Then again it could be just a fun app. [https://www.nytimes.com/2019/03/28/us/politics/grindr- china-...](https://www.nytimes.com/2019/03/28/us/politics/grindr-china- national-security.html)

<comment><USER4> Dear Mr. politician, it seems the video you uploaded 30 years ago sing a particular song which directly contradicts your current manifesto which claims the usage of traditional words to express color is racism and you propose to use RGB value instead for politically correctness reason. By the way, on a completely unrelated fact off course, but we offer a protection service.</comment></comment></comment>


Hacking Into The Indian Education System - <AUTHOR> http://deedy.quora.com/Hacking-into-the-Indian-Education-System <comment><USER2> Wow, bold move to publish this. Don't know if it was smart.

But I had to laugh as the author asks in the article:

> What kind of horrible graph is this?

The wrong one. He should have used a bar chart instead of this line chart. Doesn't change the content and meaning of the chart, but actually makes it accurate and readable as the data it not about the relation between the number of students that got these marks but actually about the number of students that got these marks. A bar chart is much better to show that.

<comment><USER3> I agree, I had to puzzle over that graph for a a minute or two before I realized what exactly was wrong with it.

</comment></comment><comment><USER4> Wow. Really good read. Thanks!</comment>


Show HN: Redox Rust OS – v0.3.3 release - <AUTHOR> https://github.com/redox-os/redox/releases/tag/0.3.3 <comment><USER3> I've been seeing Redox develop for a while now, and I've got to say—it's really amazing what such a small group of people can accomplish. They have innovative tools in all sorts of areas of computer science. Including coreutils, binutils, a shell (along with a custom shell scripting language), common GUI applications, a hash function, a file system, etc.

One of the coolest aspects of all of these tools are that they aren't exclusive to Redox. In fact, they are rather portable. For example, the new file system (tfs) can run on operating systems other than Redox. One of the team members wrote an "atomic hash table" for it, and it was open sourced as well. It even uses an open source hash function by the same author.

Congrats to the team. Writing an operating system is incredibly hard, and it's great to see something like this written in Rust. I'm a big fan of all of the core contributors, and can't wait to see where Redox goes.

<comment><USER4> I've always found it weird that things like file systems in the Linux kernel are so tightly coupled. Why isn't, say, Ext4 written like a library? (Or is it? I don't think it is?)

Stub out the interface that the kernel needs, and provide an interface for the bits (reading disk blocks and so on) that the file system needs from the kernel. This way, you can decouple it completely from the kernel, test it independently, port it without forking the code, and then it can easily be used in userland, too.

<comment><USER5> This is the recurring argument about "monolithic kernels" vs "microkernels". In the latter different user-space processes can be used to implement filesystems, networking, etc.

There are a lot of small operating systems that take the decoupled route - <USER2> you'll almost certainly never see them because they're either research-based, or suffer from the problem of most hobbyist operating systems which is "lack of hardware support". Doesn't matter how modern/sexy an O/S is if you cant run it upon your hardware. (Relatedly once you can run it you need software on it too..)

That said there are some compromises available, even with Linux. If you use something like FUSE you can write your own filesystem in 100% user-space - something I've done for a couple of niche applications.

<comment><USER6> Notably, NetBSD has recently undergone a successful effort to implement such a decoupling of subsystems, _while still remaining a monolithic kernel_. Lo and behold, it immediately boosted the ecosystem of hobbyist FOSS OSes, by letting them easily reuse chosen subsystems (see e.g. Haiku, GenodeOS). It also certainly helped that NetBSD is BSD-licensed. If you want to learn more about the effort, search about "rump kernel".

</comment></comment></comment></comment><comment><AUTHOR> I am the creator of Redox OS. It is a microkernel based operating system mostly written in Rust.

Please ask any questions or make any comments you have about Redox!

EDIT: I am going to sleep soon. I will be up in 8 hours, 7 A.M. Mountain Time.

<comment><USER7> Your works are very amazing! I have three questions :)

1\. Could you say your opinion about future of Rust. Will it become mainstream?

2\. Pros/cons between Rust and C for system programming?

3\. I heard many times that implementation of standart data structures like RBTree, Graphs without recursion traversal in Rust it's very difficult and painful tasks with unsafe hack code. So if i am Rust beginner i should avoid learn this language through implementations my own data structures(BST, AVL, LL, ...)?

*sorry for my English. It is not my native language.

<comment><USER8> Not OP, but maybe can help:

1\. I can definitely see its future in drivers, filesystems, codecs (areas where both performance and correctness is required).

2.

\+ Rust has fantastic error handling. No null pointers. Mandatory error checking, but with very light syntax.

\+ Dependencies and modularization in Rust are soooo much easier than in C.

\+ You never have to write `free()` again.

\+ Thread-safety can be guaranteed at compile time.

\- Significant learning curve. You need to "get" Rust's ownership approach before you even manage to compile a non-trivial program.

\- It's still "new", so it may be hard to convince people to use it. C is 45 years old, so it seems like a safe bet (it has flaws, but the flaws are well- known).

3\. What Rust calls "unsafe" is what all of C _is_ , so it's never worse than C. The idea is that you carefully implement these structures using raw ("unsafe") pointers, and wrap them in a safe Rust API. This way you need get it right once, and rest of the code doesn't have to worry about breaking things.

<comment><USER9> > You need to "get" Rust's ownership approach before you even manage to > compile a non-trivial program.

I'm not entirely certain that's true. I wrote a useful (to me) cli script and only have the vaguest understanding of how the ownership model works. I think for text processing sorts of tasks, it's not too difficult to use.

<comment><USER10> As someone learning rust and currently going through this, I would consider that a trivial program. You will know once you get there because you hit kind of a wall where you have to learn and understand what is basically a language inside of a language. And the language is kind of this mapping for logic that only used to be inside of your head (ownership logic), and so translating that fluently into this brand new language is a real roadblock.

The ownership model isn't too bad for strings, but those are easily the most simple way to start using the ownership model. At least for me, getting into the more advanced ownership stuff is a whole different beast entirely.

</comment></comment></comment></comment></comment><comment><USER11> I've been watching Redox on and off since its inception, and I must say I'm really impressed at what it has achieved till now. It is a fully functional OS with binutils, terminal, calculator etc, and this is a win for the whole FOSS culture.

What are the potential areas where Redox could be beneficial ? I would love to run on Raspberry pi, older Androids or Routers etc. Is it doable?

I'm also curious about the benefits that redox offers vis-a-vis bare metal Linux (Alpine/Void etc)?

<comment><USER12> > I'm also curious about the benefits that redox offers vis-a-vis bare metal > Linux (Alpine/Void etc)?

Security (Redox' stems form the language, Linux' stems from being widely used). Hackability (smaller, more modern, more hackable language). Simplicity.

> What are the potential areas where Redox could be beneficial ?

To put apps on VMs with a very tight and secure OS underneath.

<comment><USER13> > To put apps on VMs with a very tight and secure OS underneath

Hmm. Have you bounced off ideas with the Qubes OS team yet? It could be an option for the core OS/microkernel of Qubes OS.

<comment><USER6> And/or, maybe even better, with the GenodeOS team?

</comment></comment></comment></comment><comment><USER14> What is the security model of Redox? We've heard a bunch recently about the capabilities security model in Fuschia/Zircon, which is the other new operating system that excites me. Can you compare the two?

<comment><AUTHOR> Somewhat capability based. If you do `cat sys:iostat`, you can see part of what I mean. Most operations happen on a file handle which has the properties of a capability.

We still need to do more work on it though.

</comment></comment><comment><USER15> I expect this sort of work doesn't get enough praise because it's just the start of what a full OS would look like, but I think having OS kernels written with more memory safety is awesome and necessary.

<comment><AUTHOR> I believe it is only just beginning. There are only about a dozen regular contributors, which would be very small if comparing with Linux distributions.

</comment></comment><comment><USER16> I wonder why Redox has so high requirements, 1GB of RAM looks like a lot for pretty much toy OS. I'm using server running on 256 MB RAM and it's enough for quite a lot of services.

<comment><AUTHOR> Redox can run in 256 MB if it is installed to disk, and is not running the GUI.

</comment></comment><comment><USER17> What is the breakdown of the ISO size? It's now 430MB - what are all those bits? (I ask because, as a new OS, I'd expect it to be _really tiny_ since it's so new.)

<comment><AUTHOR> \- 64 MB - Preallocated kernel buffers

\- 256 MB - Live filesystem

\- The rest - Running applications

<comment><USER17> Hey there, thanks for the response. Just DL'd the ISO and it's only 38MB. I think there is some ambiguity when you say "Lower Memory Usage" and then talk about "ISO size". I was expecting the download to be 430MB!

Also, I ran the ISO in Virtual Box and it's _far_ more than I thought it would be. It's not just a barebones kernel and shell, you actually included a simple window manager and some GUI applications! It booted nice and fast, too.

Great work.

</comment></comment></comment><comment><USER18> How realistic is it to run processes of this OS (like the netstack processes) on top of existing microkernels like minix/QNX/etc. ?

</comment><comment><USER19> Will it work with virt-manager, or it requires manual Qemu/KVM setup?

<comment><USER20> Pretty much all standard functionality in QEMU is supported by virt-manager, only for weirder things you need to escape to manual command line use.

<comment><USER19> Great. I'll give Redox a spin.

</comment></comment></comment><comment><USER21> Very impressive, but I'm still disappointed they are mostly copying Unix, rather than trying to improve it. E.g. based on the names, the coreutils are identical.

<comment><USER22> While I completely agree that there are Unix idioms that could go by the wayside, the team is already taking on an enormous project. Reinventing standard practices at the same time (and the ridiculous bike shedding that would ensue) seems like an even more impossible task.

<comment><USER21> Good point, but opportunities to fix fundamental things like 'dd' existing, or unstructured piping are rare. Shame to waste them.

<comment><USER23> Ok, I have to ask. What's wrong with dd?

</comment></comment></comment></comment><comment><USER24> Any null pointer deference, overflow so far and how if so?

<comment><AUTHOR> There have been overflow bugs, usually logic errors during subtraction.

I encourage the use of checked subtraction and addition to prevent these from becoming issues.

</comment></comment><comment><USER25> Hey Ive built it on Voidlinux and ran it with Virtualbox but my touchpad dont work yet with qemu no problems with touchpad. Superb efforts! Great work devs and contribs! Such an enormous task and I hope joy is a result :)

</comment><comment><USER26> I have a question. In the fuchsia/zircon thread some people (committers?) were saying that Rust was not suited and would be difficult. Redox is also a microkernel. So are there any limitations or not?

<comment><USER27> _> In the fuchsia/zircon thread some people (committers?) were saying that Rust was not suited and would be difficult._

The only thread that I saw was someone decrying that Zircon was written in C++ rather than C, which later turned into a discussion on Rust. I haven't seen any Zircon committers comment on Rust; can you find the link you're thinking of?

<comment><USER26> I may have been mis-remembering. I was hoping to see more Rust in it since it was new.</comment></comment></comment>


Ask HN: What does your CV/resumé look like? - <AUTHOR>

PDF, web page or other? How far do you stray from the traditional black-and-white bullet-point list approach? <comment><USER2> It depends from job to job. _In my opinion there are no general CV /resumes_. I'm programmer, growth hacker and project manager. I had different jobs to complement my skillset -> in next 5 years I'm want to start my own company.

To startups I apply with GitHub page :) To big companies -> black&white bullet point, As a freelancer -> web page with showcases</comment>


Conduit Labs (Cambridge startup) hosting Election Party in Boston - <AUTHOR> http://blog.conduitlabs.com/2008/10/30/election-night-party-awesome/

<comment><AUTHOR> Drop by and meet some cool people from the Boston/Cambridge startup scene, drink some beer, celebrate (or mourn), maybe find yourself a co-founder or a job..</comment>


The Nutritional Reversal of Cardiovascular Disease – Three Case Reports - <AUTHOR> http://cardiologyacademicpress.com/?p=20690

<comment><AUTHOR> From the Abstract: "The authors have experience beyond 25 years demonstrating the success of plant-based nutrition in arresting and reversing cardiovascular disease. Nevertheless, the medical community is still skeptical of patients' adherence and efficacy of this method. We, therefore, report three case histories of carotid, coronary, and peripheral vascular disease. Each case demonstrates disease progression and the failure of the standard cardiovascular approaches in contrast to the prompt, powerful and enduring resolution of disease with whole foods, plant-based nutrition."</comment>


Flappy Royale, a 100-player Flappy Bird battle royale - <AUTHOR> https://flappyroyale.io/# <comment><USER2> yep, just wasted 10 min on this :)

<comment><USER3> What was your top score?</comment></comment>


FCC comes through with Consumer Broadband Test app for iPhone, Android and home - <AUTHOR> http://www.engadget.com/2010/03/12/fcc-comes-through-with-a-consumer-broadband-test-app-for-iphone-a/

<comment><USER2> This article highlights the iPhone app. Here is a links for the other versions:

<http://www.broadband.gov/>

(Although I haven't noticed the Android app).

I did test the iPhone app, worked as advertised. Of course this is all just a government wrapper for services like Speedtest.net.</comment>


Refinements in Ruby — Monkey patching for friendly monkeys - <AUTHOR> http://timeless.judofyr.net/refinements-in-ruby

<comment><USER2> This feels a lot like scala implicit conversions/views made into idiomatic Ruby.

In scala, you could write an "implicit function" that converts Foos to Bars. If and only if you imported the function, you could then (1) pass an instance of Foo to a function accepting Bars and (2) call methods of Bar on a Foo.

For example, if you defined an implicit mapping from Int to IntWithTimeMethods, you could then call something like 1.seconds_from_now, and get a Time back. You can see something like this at work in [https://github.com/robey/xrayspecs/blob/master/src/main/scal...](https://github.com/robey/xrayspecs/blob/master/src/main/scala/com/twitter/xrayspecs/Time.scala)

In scala, it's not required that the class you convert to is a subclass of the original, but it's a really common use case. This "refine" behavior gives you this same ability, but just with an anonymous subclass.

FWIW, I like Scala's implicit conversions. Usually, I see them with things like 1.seconds, or object.toJson, and then you just look among the imports for something referencing time or json. I guess people could think up absurd uses, but then, those people were writing bad code anyways.

</comment><comment><USER3> Thanks for the summarized analysis Magnus. The syntax for defining and using refinements looks very clean. I'm looking forward for this feature to be included natively.

</comment><comment><USER4> I think Classbox is the better way to go, but this is an improvement. The performance hit is currently very significant, but I suspect it can be optimised to a negligible level.

As with the .append_features hack, I think it is only good that refinement in no way implies inclusion. It will probably be better to keep the two types of modules explicitly separate.

</comment><comment><USER5> I have mixed feelings about this.

It's good because you gain an ability to scope your monkey patches.

It's bad because it incentivizes monkey-patches.

<comment><USER6> I don't get it. What's bad about incentivizing monkey-patches that _don't_ interfere with other code?

<comment><USER7> The only thing that comes to mind is its not immediately obvious when source diving when a piece of code has been refined or redefined.

IMO, this is the justified cost of flexibility provided by monkey-patching.

<comment><USER8> This isn't specifically a problem with monkeypatching. Not knowing what is in scope right now is a generalized problem with object oriented programming. Scoped monkeypatches doesn't really add to the problem, IMHO.

(Please note I don't even mean that as a criticism of OO per se. Like everything else, it has costs and benefits, and that is, well, actually a bit of both. Things being hidden from you is annoying, but if you switch to something like Haskell you'll find that everything being shown isn't always entirely cool either.)

</comment></comment></comment></comment><comment><USER9> Just a poor idea</comment>