hacker news with inline top comments    .. more ..    25 Apr 2014 Best
home   ask   best   5 years ago   
Project Naptha: a browser extension that enables text selection on any image projectnaptha.com
959 points by antimatter15  2 days ago   131 comments top 66
atourgates 2 days ago 1 reply      
Wow - this is amazing.

Right this very moment (well, a few moments ago when I wasn't procrastinating on HN) I was in the midst of extracting data from a client's old website in preparation of creating a new website.

A lot of that data is contained within images.

From a few preliminary tests, I'm hugely impressed. This seems on-par with any other OCR software I've used, and the fact that it happens in realtime in the browser is amazing.

I tried it on a piece of content I'd just had to type out, that was originally in an image. Typing out the content took about 10 minutes. Copying and pasting with Naptha, and then making some minor edits/corrections, did the same thing in about 2 minutes.

jgj 2 days ago 1 reply      
> Unfortunately, your browser is not yet supported, currently only Google Chrome is supported.

FF 28 seems to be working fine with the "Weenie Hut Jr." version...is it just the add-on that isn't supported?

awesome tech, btw

trishume 2 days ago 1 reply      
Holy crap, antimatter15 does so many cool things. I keep finding things that are really cool and then scroll down to find they are all written by him. First Shinytouch, then Protobowl years later and now this. And he's only a year older than me (19) so it isn't that he's had more time. Check out his Github profile for more of his projects: http://github.com/antimatter15
x0ner 2 days ago 1 reply      
Extension is awesome and while the code is messy, it has enough little jokes to keep you amused. For those looking to access the backend OCR service, it seems to be down right now, but will hopefully come back up soon.

Here were the API references I could find for the remote OCR:

- GET https://sky-lighter.appspot.com/api/read/<chunk.key>

- GET https://sky-lighter.appspot.com/api/lookup?url=<image.src>

- POST https://sky-lighter.appspot.com/api/translate

Apparently the author was one of the winners of HackMIT 2013 according to some of the comments. Couple of fun things in there if you decide to poke around in the code. Jump into naptha-wick.js for the remote logic.

Note from the Dev (http://challengepost.com/users/antimatter15, http://antimatter15.com/wp/, https://twitter.com/antimatter15):

/*It's April 16, 2014.

It's been six months since I started this project.

Just under two years after I first came up with the idea.

It's weird to think of time as something that happens,to think of code as something that evolves. And it maybe obvious to recognize that code is not organic, thatit changes only in discrete steps as dictated by someintelligence's urging, but coupled with a faulty andmortal memory, its gradual slopes are indistinguishablefrom autonomy.

Hopefully, this project is going to launch soon. It looks like there's actually a chance that this willbe able to happen.

The proximity of its launch has kind of been my own littleperpetual delusion. During the hackathon, I announced thatit would be released in two weeks time.

When winter break rolled by, I had determined to finishand release before the end of the year 2013.

This deadline rolled further way, to the end of Januaryterm, IAP as it is known. But like all the artificialdates set earlier, it too folded against the tides ofprocrastination.

I'll spare you February and March, but they too simplyhappened with a modicum of dread. This brings us to thepresent day, which hopefully will have the good luck tobe spared from the fate of its predecessors.

After all, it is the gaseous vaporware that burns.


pinaceae 2 days ago 1 reply      
Very cool stuff, but need to satisfy my OCD:

It's spelled Naphtha (http://en.wikipedia.org/wiki/Naphtha). And for the HN hordes - read the bottom of the linked project page, it is supposed to be a reference to Naphtha.


vidarh 2 days ago 1 reply      
Reminds me of Powersnap on the Amiga. Many applications did their own text rendering without supporting cut and paste, and so this guy called Nico Francois had the bright idea of letting you select a region of a window, and matching the standard fonts against the windows bitmap.

Of course then it was "easy": almost all the text would have been rendered with one of a tiny number of fonts available on the system, with little to no distortion.

pestaa 2 days ago 0 replies      
This is great news for those who have to live with disabilities.

Maybe soon I won't feel guilty for leaving my alt attributes empty.

skizm 2 days ago 2 replies      
Doesn't work great. Went to reddit's advice animal page to try it out and it doesn't seem to work with livememe (I think they have an invisible layer over their images to try and block hot linking).

Here is a copy/paste example from imgur:




Maybe it needs to be a certain font for better results. Still pretty cool. Hopefully all the kinks get worked out. I would definitely find this useful.

EDIT: need to make sure the language is set to "internet meme" and it works much better.

leeoniya 2 days ago 1 reply      
@antimatter15, i have a project that does client-side image analysis and decompses document structures. it looks like your OCR code would be a great replacement for the server-side Tesseract ocr i currently use :)

here's what the project does now with js + web workers:


processing time is < 1500ms in Chrome and < 2000ms in FF

the code is open source, though using it isnt yet polished. i'm working slowly on a blog post series to detail how to use the lib(s). https://github.com/leeoniya/pXY.js

a walkthrough of the base lib is here: http://o-0.me/pXY/

RyanMcGreal 10 hours ago 0 replies      
I tried it on the handwritten all-caps text on this page: http://xkcd.com/1271/

It (sort of) worked:


yaddayadda 1 day ago 0 replies      
1) Very, very flippin' cool!

2) Erase Text option menu locationUsing version 0.7.2, the "Erase Text" option is displayed under the "Translate" section (certainly not where I would ever intentionally look for it).

3) Select Text -> Right-click changes selectionAfter selecting my text, when I right-click the selected text often (almost always) changes. For example, with the kitten text, I selected both paragraphs, but when I right-clicked to go to Translate->Erase the first paragraph ceased to be highlighted. After erasing the second paragraph I tried in vain to select and erase the first paragraph, but everytime I'd right-click the selected paragraph only a single word would still be highlighted. I eventually tried erasing text while only one word was highlighted and the entire first paragraph was erased.

4) I really appreciate the Security & Privacy section of the project page.

5) I would love to see a Firefox version of Project Naptha!

elwell 2 days ago 3 replies      
Every time I click "Allow" on "Access data on all sites" for an extension I creep closer to my security hole paranoia threshold. If it was all in JS, who cares? But this sends ajax to remote servers of course.

Am I alone?

tiles 2 days ago 0 replies      
This is amazing! Is there a planned open-source license or commercialization of this?
bigbugbag 1 day ago 2 replies      
I wonder how deep this project is in violation of the GPLv3.

For starter it's based on gnu ocrad [1] but fails to state a license and to publish any source code.

[1]: https://www.gnu.org/software/ocrad/

userbinator 2 days ago 1 reply      
I have a feeling that if you just make the OCR better, a lot of users are going to use this for entering CAPTCHAs...
jpasden 23 hours ago 0 replies      
This is amazing, and it has truly revolutionary implications for learners of scripts like Chinese, which are still truly indecipherable to learners when embedded in images. I was really happy to see that this extension supports both simplified and traditional Chinese. I tried it out, and while it shows promise there, it definitely still needs a lot of work.

I posted a review on my blog here: http://www.sinosplice.com/life/archives/2014/04/24/can-proje...

OP, I'd be happy to work with you on improving the recognition of Chinese text. Just get in touch with me through my blog (linked to above).

tehaaron 1 day ago 0 replies      
This is really neat. I was playing with it on pictures of street signs and buildings and realized that if I select some text and then do ctrl+a it tried to select everything it thought was text...Then I used right click > translate > reprint to see what it thought each thing was.

Here is the picture: http://thesuperslice.com/wp-content/uploads/2012/04/downtown...

And the text outcome - found it most interesting what symbols it thought it recognized:




Ic 0on






G %T1


. o C-7' H ' .-.-." '~3;


$16 O-O

D Q-=1











,-.5 ,:~L.


sailfast 2 days ago 1 reply      
This looks very cool and could come in quite handy.

In case anyone from the project is monitoring - text selection did seem to work fine for me in FireFox (ESR 24.3) despite the "Not Supported" text being displayed.

m_ke 2 days ago 0 replies      
Cool, I implemented the stroke width transform for text detection about a year ago. Nice to see someone else using implementing it, but I'm pretty sure convolutional neural nets do a better job at text localization.
3JPLW 2 days ago 1 reply      
The biggest thing I'd like to see is enabling in-page (control/command-f) search. In my quick scan through the page it looks like it doesn't do that is that right? Are there plans to add invisible text to the DOM that control-f can find?
JoelHobson 2 days ago 0 replies      
This is simply incredible. I'm just blown away by it.

I wonder if you could get better performance when running locally by sending the result through a spellchecker and doing some Bayesian magic on the word choice...

aalpbalkan 2 days ago 1 reply      
Certainly a cool idea but it didn't work fine on an XKCD comic:

http://www.xkcd.com/ bottom line here is recognized as: "T1EN5'lI'ONAl.1?EONNH\56PNCE(YHCEPlP6N(N)SURLHPR3AO-ilDlsIr'7E5IJ%z"

SchizoDuckie 2 days ago 0 replies      
Wow. Just wow. How did I live my life before this?

Once again, such a simple implementation by somebody that grabs some components that have been around for ages and mashes them up in a way that makes people question why it wasn't invented before

I've got this installed and it'll probalby never leave my chrome profiles. Keep up the awesome work!

steren 1 day ago 0 replies      
Very impressive work. I'm not surprised to find antimatter15 behind it.

The website was not very clear if work was done client-side or not (mentioning server calls). It turns out that server calls can be disabled and the extension is working quite fine without. By default, I would disable this option and offer opt-in, it is better for privacy I think.

StringyBob 2 days ago 0 replies      
This is great. I'd love to see this extended for natural images with whatever algorithm Google uses for OCR in streetview - http://googleonlinesecurity.blogspot.co.uk/2014/04/street-vi...
iooi 2 days ago 1 reply      
Couldn't get it to work on:http://graphics8.nytimes.com/adx/images/ADS/37/09/ad.370964/...

Also for:http://www.wsoddata.com/clients/8bec9b10/ads/300x250_static/...It can't get the top-right text correctly

Awesome tech though

rooted 2 days ago 1 reply      
Very slick!Does it automatically start OCRing every image, or does it wait for a user to try to select the image text? Asking because I'm concerned about this decreasing performance.
Omnipresent 1 day ago 0 replies      
This is extremely powerful for the end user. I've been doing a bit of OCR work using some pre-processing methods combined with Tesseract and OpenCV. I am curious to know how you are doing this on the fly and also as a chrome extension. Is the processing done in JS?
michaelchum 1 day ago 0 replies      
I remember your 2nd place win at HackMIT, congratz again. It was THE most useful hack by far and I'm glad you've made it a public product now, and free. Wow, it seems like you beat all those years industrial OCR products... and by far. This is simply amazing, keep on the great work!!!
RaphiePS 2 days ago 0 replies      
Saw you demo this at the hackathon session at CPW! Really, really cool.
frankosaurus 1 day ago 0 replies      
I had high hopes for this, as I sometimes need to manually transcribe serial numbers from customers' screenshots.

However, it seems to confuse letter O and number 0.Since serial numbers are not English words, I'm not sure how you would solve this unless you had a lookup for commonly used web fonts.

Tsagadai 2 days ago 0 replies      
I have wanted an extension to do this for so long. I even started coding my own at one stage but hit various issues. Thank you so much for creating this.
vanderZwan 2 days ago 1 reply      
> In a sense thats kind of like what a human can do: we can recognize that a sign,

Oh god... how does it finish! I need closure!

(PS: this is awesome)

swah 15 hours ago 0 replies      
Great idea, this should make a couple million for the creators.
plicense 2 days ago 1 reply      
This isn't particularly awesome, because

1. The implementation of Stroke Width Transform is not super good. So far, http://libccv.org/ has the best implementation of SWT. But again, you can neither make the head nor the tail of that implementation.

2. There are just too many false text regions and the text detection accuracy is no where near what you can call good. A mixed use of multiple OCR engines might give better results.

All that said, you can't take away the cleverness of the application of detecting text. Mind == Blown, on that area.

nileshtrivedi 1 day ago 0 replies      
Very nifty. Although, it would have been even more awesome if it worked with Google Books.
bigbugbag 1 day ago 1 reply      
Seemed like an interesting project, clicked on the linked scanned the page an it seems to be an empty pointless web page trying to explain over pages worth of scrolling that it allows to deal with text trapped inside images which I already knew when I clicked the link.

Going back to the page after closing it once, I noticed written in smaller characters that this somewhat pointless page is for a useless extension as it is exclusively limited to the worst offender privacy wise of a web browser that I would not touch with a stick. google chrome is the new internet explorer to me as its main use is to download firefox.

In conclusion this looked promising but a confusing web page and browser lock-in renders it useless and shows that it is far from doing what it claims."... on every image you see while browsing the web" should be "...on every image you see while browsing the web in google chrome".

No github and no open license tells me that as a linux user of opera I'm pretty much assured I will never see a version of this extension.

jawerty 2 days ago 0 replies      
You guys should consider making an API for this. It would be awesome to have an API that inputs images via url and outputs the text of said image.
jpdlla 1 day ago 3 replies      
@antimatter15 any recommendations for optimizing Tesseract?
Aardwolf 2 days ago 0 replies      
I would like it if this would work on ANY text in webpages.

Too many webpages make it too hard to select even actual plain text.

username42 1 day ago 2 replies      
Just tested with a random scanned page (http://www.hpl.hp.com/research/info_theory/ShannonWeb/fullsi...) the result is almost garbage. It seems as bad as most OCR software I have encountered. This was to be expected as it is based on ocrad.
sscalia 2 days ago 1 reply      
Badass. Now support Good Browsers like Safari and Firefox.
cornholio 1 day ago 0 replies      
I like the way this extension removes text in the image, but I would much rather have a video delogo filter for that does not suck. It would be very useful for removing hard subtitles, station logos, screener warnings etc.
ernestipark 2 days ago 0 replies      
Awesome. How does this affect page performance?
eddyb 2 days ago 0 replies      
The Mentalist reference, anyone?

In any case, pretty cool project, I'm a bit amazed how far we've come since I've last played with OCRs (and defeated one bad CAPTCHA implementation, still in use at pastebin.com it seems).

krsunny 1 day ago 0 replies      
Completely agree with the "where has this been all my life" sentiments. This is awesome, thank you.
darkhorn 2 days ago 2 replies      
What project won the first place in HackMIT 2013?
Craque 16 hours ago 0 replies      
Please help, it looks brilliant, however, only the test page works for me. Can't get any other pages to work. Text simply isn't selectable - cursor remains as a pointer, not an'I' :(

I'm using the latest version of Chrome on a modern Mac and have Naptha properly installed and Chrome has been relaunched.

Any hints would be appreciated.

adem 2 days ago 0 replies      
Cool idea, definitely worth exploring the possibilities. A quick run showed me that it often interprets the "i" as "l" whenever the the gap between the line and dot is not apparant
deviltreh 2 days ago 0 replies      
Now that is pretty damn cool. Will help at work when marketing people do not copy paste email/article and just put screenshot of it and if you want to quite something from that picture...
swavaldez 2 days ago 0 replies      
Everyone deserves to have this extension. It's even better if it could be a browser's default feature. ;P
Thiz 1 day ago 0 replies      

Indistinguishable from magic.

jonnynezbo 2 days ago 0 replies      
This is pretty cool, but not perfect. Upon copy & pasting the captured text, several of the words and letters are wrong.
bananas 17 hours ago 0 replies      
This is EXACTLY what I need at the moment.

I get a big problem with various people sending me screenshots with stackdumps in. This is perfect for extracting them into the ticket bodies and it does it perfectly (I've just done 20 with it and manually checked them!)

This is the sort of stuff that really improves people's lives by making all data equal.

darkhorn 2 days ago 0 replies      
In Firefox 31.0a1 I can copy the text only with Ctrl+C.
amazd 1 day ago 0 replies      
This seems like a great addition to my side project (amazd.com)
yeukhon 1 day ago 0 replies      
Awesome. I was actually at HackMIT. It is great to see you actually continue working on this. As a matter of fact, I told my friends who were working on similar idea for their senior project your project name last Fall. I emailed you for the Microsoft reference papers :) Not sure if I should copy and paste that.

Anyway, good luck!

valbaca 2 days ago 0 replies      
Worth it for the dozen-click easter egg.
nemrow 2 days ago 0 replies      
Way cool! I am impressed.
jbeja 2 days ago 0 replies      
This my friends is called "Innovation".
bz123 1 day ago 0 replies      
cool idea, a bit buggy yet and when i am trying to actually save images i do get the custom extension right click bar instead of the normal chrome bar to save the image, but i guess its still under development.
seshakiran 2 days ago 0 replies      
Very nice. Will give it a try.
est 2 days ago 0 replies      
bonus points to scan QR-codes
atixid91 1 day ago 0 replies      
wow a step ahead! amazing extension....
bondolo 2 days ago 0 replies      
I can imagine quite a few blind people are creaming their jeans about now.
batmansbelt 2 days ago 2 replies      
Now the NSA will be reading the contents of your animated GIFs.
Game Programming Patterns is now finished gameprogrammingpatterns.com
836 points by rockybox  1 day ago   69 comments top 33
Arjuna 1 day ago 1 reply      
Congratulations, Bob!

He had some interesting comments on his writing process in a previous thread entitled, "Write Code Every Day." [1]

He also graciously answered some questions I had regarding his writing workflow, as well as his plans to self-publish a print version of the book. [2]

[1] https://news.ycombinator.com/item?id=7569108

[2] https://news.ycombinator.com/item?id=7569660

pvnick 1 day ago 2 replies      
I remember seeing one of Bob's posts earlier about how he struggled to finish this. Congratulations to him, I know how difficult it is to complete big projects (they say there's the first 90%, then when the finish line is in sight, there's the second 90%). His perseverance is inspiring!
Jun8 1 day ago 2 replies      
Looks great! I think it would add greatly if you have a chapter that illustrates the development of a simple game where many of these ideas are illustrated.

I teach coding to high-school kids. When I tell them that "We'll be building a game" attention increases exponentially; unfortunately I know nothing about how to program anything beyond simple board games, e.g. tictactoe. I can totally use ideas from your book in my course.

Also, many of the students are also in the school's FIRST Robotics Team. I noticed that programming the robot and game programming are quite a similar (at a high level). So this might help with that, too.

Thanks a lot once again, I entered my email and will definitely be following along.

wtallis 1 day ago 0 replies      
Why doesn't the section on double buffering mention triple buffering? Double buffering is useful but it has a very important limitation: if the consumer is slower than the producer then the producer can stall while the consumer is still working, and then the consumer gets stale data for its next iteration. The extra memory cost of triple buffering is always worth it for gaming, because none of the ephemeral state data is all that large, and latency matters.
forgottenpass 1 day ago 6 replies      
Bob, if you're lurking this thread:

Congrats. Any idea when I'll be able to buy it?

Like the other free-online-first books I've read, I've gotten enough value from it that I'd like to thank you by paying for it.

TillE 1 day ago 2 replies      
Thanks so much for all of this. It's extremely well put together.

I'm still trying to figure out the optimal way to organize every part of a Dwarf Fortress-style simulation (but multi-threaded of course), and I feel like I'm reinventing the wheel somewhat poorly. Component-based design is an important part of that, but there are still so many hairy problems to solve.

These are problems which most games don't encounter because they're not complex simulations. And the agent-based simulation literature isn't much of a help either.

DanAndersen 1 day ago 0 replies      
Thank you so much for writing this! As someone working to transition from webdev and enterprisey CRUD app development to something that, if not gamedev itself, deals more with simulation and modeling worlds, it's been difficult to deal with the true change in mindset that's needed. Over the past few weeks I've had "read a chapter of Game Programming Patterns" as a recurring to-do item, and it's opened my eyes greatly.
mattgreenrocks 1 day ago 1 reply      
I had to force myself to close the window to get back to work. Great job on the content. I was pleased to see a reference to entity-component systems on the component page, too.
softbuilder 1 day ago 1 reply      
Congrats to Bob! He's been working on this forever, in public.
RevRal 1 day ago 0 replies      
I'll gladly purchase an epub for this, looks wonderful.
pachydermic 1 day ago 0 replies      
This looks awesome - I have been wishing for a resource exactly like this for a while now. With my first game under my belt I learned the hard way how difficult game programming can be. I need some high level advice and this looks perfect.


winter_blue 1 day ago 0 replies      
I've really enjoyed reading your book since I last came across it on HN! Thanks for writing this! I'd be glad to donate a bit, if you add a donation option.
badlogic 6 hours ago 0 replies      
I don't often login and comment, but i just have to say thanks to Bob. yYou thought me one or two new ways to think about things :)
gboudrias 1 day ago 1 reply      
Congratulations! That's a great achievement, and you finished it much faster than I thought. As soon as I get it, it's next on my to-read list :)
Chromozon 1 day ago 0 replies      
This is a great read. It goes into detail about the practical application of design patterns- when to use them, when not to use them, and some gotchas that are not mentioned in other books. I'd pay for a downloadable PDF version of this!
joshdance 1 day ago 0 replies      
Exciting to see this finished. I remember his comments in Write Code Every Day - https://news.ycombinator.com/item?id=7569108

Super excited to see that his writing strategy worked and it is released. Nice work Bob.

rambojohnson 9 hours ago 0 replies      
love the way this stuff is written. no overloaded jargon. the Command pattern chapter was amazingly straight-forward and everything else learned was immediately applicable to a game project I'm refactoring. hard to say that about many similar books on the subject. bravo! :)
k__ 1 day ago 2 replies      
Does anyone know about such a book/list with game-play patterns?

Most of the time I work with game engines, which already use the patterns mentioned here. I struggle with stuff like moving entities in specific directions, collision detection, physics, gravity, etc.

wenbert 1 day ago 1 reply      
Good choice of font. I can't stand reading long online material with sans-serif.
dimillian 1 day ago 0 replies      
This is a marvel, I can't thank you enough. I'm a mobile application developer, and I really wants to make game someday. The introduction is one of the best I've read.
chaghalibaghali 1 day ago 0 replies      
I've been looking for something like this for a long time, game development still seems like something of a dark art and a lot of the resources I've found online are either too high-level or too focussed.

Does anyone have a script to package this into an ebook format? I'd love to be able to read it on my Kindle.

dt3ft 18 hours ago 0 replies      
This is pure gold. Well written and informative. Thank you!
z3phyr 20 hours ago 1 reply      
Has game development got a target singularity? What would it be? Simulated Worlds like Matrix?
nathankleyn 1 day ago 1 reply      
Congratulations Mr Nystrom! I've been reading through each chapter as you posted them, and I've found your writing style throughly enjoyable and your ability to describe complex code patterns with ease.

It's really hard to get the motivation to finish such a project, serious kudos to you; I shall be buying that e-book!

pcmccull 1 day ago 0 replies      
Thank you Bob! I've been reading through your book and applying the patterns to both work (web applications) and my hobby game projects. The way you describe the patterns, especially the component pattern, made it clear exactly how to apply it to my projects. This is an awesome resource.
vuldin 1 day ago 1 reply      
This is a valuable resource, and congrats on completing it! Although I don't know if it 100% complete... please provide source for the lurchIneffectively() method mentioned in the Command patter chapter :D .
exacube 1 day ago 0 replies      
The drawings are cute and immensely helpful. I will pay money for this once it's in print!
codecondo 1 day ago 0 replies      
Great work, and thank you from the community.
niix 1 day ago 0 replies      
This is great, congrats. I've been wanting to get more into game development.
varg 1 day ago 0 replies      
Great work!

Looking forward to ponder on it.

tsenkov 1 day ago 0 replies      
computerjunkie 1 day ago 0 replies      
MQ_stack 23 hours ago 0 replies      
Cool!Start reading now.
The New Deal ycombinator.com
561 points by sama  2 days ago   178 comments top 36
chaseadam17 2 days ago 3 replies      
A lot of companies talk about changing the world, but Teespring really puts their money where their mouth is. Not only have they been quietly supporting us (Watsi) since the beginning, but to commit $50k to every YC non-profit is truly incredible. Teespring is setting the standard for the next generation of startups, and we're proud to call you guys our friends.
chimeracoder 2 days ago 1 reply      
I predict that this is going to lead to an increase in the number of applicants who have already raised some money (though not a full round).

> Most people dont do YC for the financial investmentthey do it because they want the advice, the help of the network, the benefits of the program, etc. But still, more money for less equity is definitely better.

This is good news for people who've issued convertible notes before YC, since the implicit valuation is now $1.7MM instead of ~$300K. This is great for PR purposes (read: bragging rights), but can also have concrete implications:

I know at least one company that had a sticky situation[0] when they were accepted into an accelerator after already raising money from an angel investor - the investor ended up owning a huge chunk (the majority?) of the company on paper, because the note converted[1]. They didn't even need the money (it was just a standard part of the accelerator).

[0] it was resolved in the end - but it caused extra headache and legal costs

[1] A well-written conversion clause in original note can also avoid this problem (e.g. by including a threshold), but hindsight is 20/20 - I know a number of companies that would have been impacted in a similar way.

austenallred 2 days ago 4 replies      
I'm more excited about the effect this will have in general than the effect it will have on YC companies.

The difference for a YC company is that they don't have to give up an extra percentage as they raise their seed round to cover the convertible note/SAFE that they got from YCVC. With no discount, if a YC company raised at a $10M valuation that 80,000 would be worth .8% of the company - not enough to really move the needle.

The difference for the industry as a whole is that most accelerators are trying to mimic YC to a certain extent, and as YC now gives $120K straight-up others might follow suit. It's really easy to say, "We give you 20K for 6-7% because that's YC does." That seems to be almost industry standard, despite the fact that $20K for 3-5 months can be really hard to live on. It will be interesting to see how other accelerators react.

cperciva 2 days ago 7 replies      
I can't help thinking that this seems a little bit unfair. While there's a nominal out for "exceptional cases", it seems to me that a company like Stripe deserves a much higher valuation than a company like Tarsnap... not to mention the difference between companies which are joining YC after they're already established and companies which are merely a twinkle in their founders' eyes.

What exactly is the problem being solved by having a standard deal which almost everybody gets?

rdl 2 days ago 0 replies      
The old terms weren't bad, but this is unquestionably better: simpler, and higher valuation. Great news for everyone in YC.

I don't know if any other accelerators had the same core + YCVC investment model, so I don't know what changes it will have elsewhere except maybe pushing valuations at the accelerator stage a little closer to the demo day amount. (Still higher than $1mm pre, in all but exceptional cases.)

(Also, WOW. The teespring guys are doing $50k for each non-profit? That is amazing.)

wiwillia 2 days ago 2 replies      
Just wanted to say that we're excited to be a part of the non-profit side of YCombinator.

It's been humbling to have Watsi working with us in our office and watching the amazing things they achieve on a daily basis. I have no doubt that amazing non-profits will continue to emerge from YC.

nlh 2 days ago 1 reply      
This seems great - simple, better terms, higher valuation. Kudos @sama and YC.

Stepping back a bit, it's also a sign of the times -- especially given the tone of the last paragraph, it's clear there's pricing pressure on incubators/accelerators and the competition is heating up a bit. There are more competitors in the space, valuations are rising, and YC is adjusting accordingly. This isn't a good or bad thing per se -- just an observation of a byproduct of capitalism and the realism of the market in 2014.

danielweber 2 days ago 0 replies      
Things I had to look up because I never knew or had forgotten:

LP is Limited Partner, basically an investor.

A safe is like a convertible note but better. http://ycombinator.com/safe/

Beliavsky 2 days ago 10 replies      
I have wondered if affluent parents can replicate at least the money part of Y Combinator.

$120K is about the list price of two years of Harvard/MIT/Stanford . With a son who loves to program, I have wondered if sending him to a cheaper school and giving him the difference in installments after he graduates is better than paying for a "name" school. It depends on the quality of the cheaper school, of course. And I think school prestige matters more for investment banking than tech, so I'd be less inclined to suggest a cheaper school to a budding banker.

Patrick_Devine 2 days ago 1 reply      
The 17k for 7% is what always stopped me from considering the Y Combinator route. It's a huge chunk of your company for not very much money. If the new deal had been in place when we started, I think we would have been very tempted to join.

The real benefits of YC though are the focus it brings you, and being able to get access to the YC ecosystem. Oh, and being able to attend Demo Day, but with so many companies in the YC program, I think Demo Day isn't what it used to be (I think you get 90 seconds now?).

We would have loved to have had access to those resources, but since we had already invested far more into our company in terms of cash, it's hard to justify giving up that much equity for so little. Kudos to Sam for the new program.

sanj 2 days ago 7 replies      
Getting accepted into YC immediately values your company at $1.7M.
devinmontgomery 2 days ago 0 replies      
This says a lot about the alternatives YC says it's really competing with - the other things people who could build great startups would otherwise be doing.

$17k is what two engineering students might have made at a summer internship in Boston in 2005.

$120k is now what two entry-level engineers might make in six months in the Valley.

jscheel 2 days ago 0 replies      
Props for cleaning things up. Startups have enough difficulties to overcome, without having to spend time and brain cycles navigating a complex funding structure.
ebabchick 2 days ago 2 replies      
How can Teespring afford / justify giving every non-profit $50k?
billclerico 2 days ago 1 reply      
hey sam - is it 7% of common stock or preferred?
iandanforth 2 days ago 0 replies      
I really like this model. There are plenty of people who enjoy haggling and the finer points of contracts, but I'm not one of them. If all deals were this simple I think SV startups would save a lot of time, headache and money spent on lawyers.
tc_ 2 days ago 1 reply      
sama: While you have our attention, you might as well explain the details about the $120k/7% happening in two chunks.

[Edit 1:] Thanks; OK. I had read it as potentially indicating the money came at two different times rather than just from two different sources. All clear now.

crystaln 2 days ago 0 replies      
While going through YC for no money and 7% would probably be worthwhile for many startups, simply for the exposure and advice, I know for a fact the ostensibly terrible terms have deterred many good applicants. I tried for years to apply to YC with a partner who insisted on not taking such terms. While I think he was wrong (and perhaps that signaled some other problems with the partnership,) I'm happy to see the issue go away. A valuation of $1.5-$2M is quite fair for an early stage startup, particularly with the value-add of YC.
jcchee88 2 days ago 2 replies      
What does it mean for a startup to be non-profit? When YC and Teespring each invest 50k into a non-profit, do they expect a return on investment? or is it purely a donation?
huslage 2 days ago 1 reply      
Why do nonprofits get less money?
debacle 2 days ago 0 replies      
Is this going to change what the YC cycle looks like for the funded companies?
brandonhsiao 2 days ago 0 replies      
Can someone explain what the difference is between before and now? Is it that before you could only spend $17k until you raised your next round but now you get it all at once?
mikikian 2 days ago 0 replies      
@Sama, is YC still encouraging founders to use SAFEs for their seed round or is that dead?
espitia 2 days ago 1 reply      
It would be great to see this annotated on RapGenius in order to learn all the terminology and how investment like these work.
ycaspirant 1 day ago 1 reply      
Upon getting accepted to YC, your company is promised $120K for 7%. Does this imply that if your company is accepted to YC, then it is worth $1.7M (because 7% of $1.7M is $120K)? Or is this not the right way to look at it? Why / why not?
hauget 2 days ago 3 replies      
Forgive my ignorance, but what does LP stand for?
midas007 2 days ago 0 replies      
That's an immediate average valuation boost of around 5x.

(1.5 mil vs 300-ish k previously)

tsenkov 1 day ago 0 replies      
I don't know how much of this idea comes from Sam Altman, but YC looks better and better since he took over.
nsxwolf 2 days ago 0 replies      
This will help applicants cover the ever increasing SV rent.
suyash 2 days ago 0 replies      
Seems like YC has come to realize how easy it is out there to get massive seed funding. About time they upped their seed amount.
suyash 2 days ago 0 replies      
Sam: Time to update the 'New Deal' on the home page. It still mentions the 'Old Deal'.
shawn-butler 1 day ago 0 replies      
Has YC / Teespring taken a position on whether a L3C is a "non-profit"?
iRaj 2 days ago 0 replies      
The simple truth is that the new deal is better than the previous one and there is no denying the value add on that YC brings to startups. Also, the fact that many accelerators and incubators would follow the YC lead and increase their initial investments augurs well for the startup ecosystem. Well done YC.
snambi 1 day ago 0 replies      
this sounds simpler than the previous one.
samstave 2 days ago 0 replies      
>$120k, which we hope is enough for the founders to run their business and pay their living expenses for at least 6 months, and sometimes longer.

So, do you provide personal expense guidance to the founders?

How can I get, without joining YC, just this portion of the program ;)

Goopplesoft 2 days ago 0 replies      
> Most people dont do YC for the financial investmentthey do it because they want the advice, the help of the network, the benefits of the program, etc. But still, more money for less equity is definitely better.

I know advice is a big part of it but this is a exaggeration right? Most of that network/benefits/etc that surrounds YCombinator is about the financial investment.

You have ruined JavaScript codeofrob.com
398 points by PhilipA  1 day ago   225 comments top 50
skore 1 day ago 9 replies      
I have no idea why the author tries to judge a framework by a stackoverflow post. A lot of the examples are needlessly verbose and some are even wrong, like the "providerprovider" he rightly mocks.

Well, how about we look into the actual documentation?


What you find is that you define a provider like so:

    myApp.provider('Car' //...
and then, if you want to configure it, you inject it with the suffix 'Provider' into your config function (called when launching the app):

    myApp.config(["CarProvider", function(CarProvider) { //...
So - what's so ridiculous about that?


Next up he still does not seem to understand the difference between Services, Factories and Providers. That's cool and all and might even prompt some to, you know, investigate further and assume that maybe they haven't understood it correctly yet before clicking "must blog now" button. He jumps the shark (straight to ridicule) by making up his very own nonsense:

> Of course we we can configure providers if we need to configure our applications. How else could we configure our applications and make them configurable for our enterprise scale configurable applications.

You know, actually the distinction makes perfect sense. A provider is an object that you know you will want to configure globally before it is being used (data source providers, url routers etc.). A service sits on the other end of the spectrum and is being called freshly right when you need it (more in the direction of the pure objects he has in mind). Factories sit in between those two - they cannot be configured ahead of the application, but allow for more internal functionality instead of just returning an object.

Having the distinction helps people editing the code figure out what they want to do and others, in turn, to understand what the other programmer was up to. Yes, you can use them somewhat interchangeably, but that's life for you: things overlap. How well and strict they are used is up to the programmer.

Now, I'm not bashing plain, custom OOP Javascript - If that's your thing, by all means do it, knock yourself out! But what's with the hating on people who seem to have a different approach? Wouldn't it be healthier to first try to understand where they are coming from? Surely they can't all be totally in love with wasting their time on "ruining it".


In the end what this comes down to is that the author doesn't seem to have sufficient experience with the kinds of environments that make the structures in AngularJS not just pleasant, but actually a life saver. That's fine - we don't need to all have the same perspective. I just don't get this style of argumentation that boils down to "don't understand, must bash".

He also makes fun (as does one of the SO comments) of this quote from the (old?) angular docs:

> An Angular "service" is a singleton object created by a "service factory". These service factories are functions which, in turn, are created by a "service provider". "The service providers are constructor functions". When instantiated they must contain a property called $get, which holds the service factory function.

You know what? Fuck it. When I tried to understand the Servicy/Factory/Provider distinction, I stumbled upon the same SO post and you know what ended up being the perfect way of understanding it? Forcing myself to go back to that paragraph right there until I understood it.

> No, you are not reading a thesis, you are reading the angular docs apparently. If it were a thesis it would probably be trying to explain a solution to some sort of problem instead of describing a made up solution to a made up problem. (Actually, that's not strictly true because academics are in a world of their own too but close enough).

> It's okay, I don't really do enterprise any more.

I'm as sceptical as the next guy about frameworks, hate "enterprise" with a fiery passion and I escaped academia before it fried my brain.

But I don't think myself too cool to do my due dilligence before dismissing something that I very obviously don't understand yet.

pavlov 1 day ago 1 reply      
So much of the bad stuff in enterprise-style web frameworks is basically a software reinvention of classic bureaucracy. Concepts like inversion of control are meaningful, but applied in accreting layers they turn APIs into a re-enactment of Kafka's The Castle.

The application developer is left holding the receiver of the telephone that supposedly allows him to receive calls from the Castle. If only he can get the right person at the other end of the line, then everything will certainly be sorted out! The Castle is there to serve the developer, so of course there is someone at the Castle who cares: it must be that he just hasn't got the word yet...

"My dear Land Surveyor," replied the Superintendent, "how on earth should I know all the sons of all the under-castellans?"

"Right," said K., "then you'll just have to take my word that he is one. I had a sharp encounter with this Schwarzer on the very day of my arrival. Afterwards he made a telephone inquiry of an under-castellan called Fritz and received the information that I was engaged as Land Surveyor. How do you explain that, Superintendent?"

"Very simply," replied the Superintendent. "You haven't once up till now come into real contact with our authorities. All those contacts of yours have been illusory, but owing to your ignorance of the circumstances you take them to be real. And as for the telephone. As you see, in my place, though I've certainly enough to do with the authorities, there's no telephone. In inns and suchlike places it may be of real use, as much use say as a penny in-the-slot musical instrument, but it's nothing more than that. Have you ever telephoned here? Yes? Well, then perhaps you'll understand what I say. In the Castle the telephone works beautifully of course, I've been told it's going there all the time, that naturally speeds up the work a great deal. We can hear this continual telephoning in our telephones down here as a humming and singing, you must have heard it too. Now this humming and singing transmitted by our telephones is the only real and reliable thing you'll hear, everything else is deceptive. There's no fixed connexion with the Castle, no central exchange transmits our calls further. When anybody calls up the Castle from here the instruments in all the subordinate departments ring, or rather they would all ring if practically all the departments -1 know it for a certainty - didn't leave their receivers off. Now and then, however, a fatigued official may feel the need of a little distraction, especially in the evenings and at night and may hang the receiver on. Then we get an answer, but an answer of course that's merely a practical joke. And that's very understandable too. For who would take the responsibility of interrupting, in the middle of the night, the extremely important work up there that goes on furiously the whole time, with a message about his own little private troubles? I can't comprehend how even a stranger can imagine that when he calls up Sordini, for example, it's really Sordini that answers. Far more probably it's a little copying clerk from an entirely different department. On the other hand, it may certainly happen once in a blue moon that when one calls up the little copying clerk Sordini will answer himself. Then finally the best thing is to fly from the telephone before the first sound comes through."

pilif 1 day ago 3 replies      
It's the same pattern that repeats itself all over the place. We've seen it with Java, with Ruby, heck, even with PHP. And now with JS: As applications grow, we tend to search for tools to help us cope with the growth.

After doing similar (but still slightly different) things over and over, we start building abstractions and with every thing our abstraction can't deal with, we make them more complicated.

Whether you use the official name of your thing ("factory") or you just run with your own idea and term - the outcome is always the same.

As a library, you feel the need to be abstract enough to cope with every feature request ever asked from your library and there will be tons of feature requests and tons of little parts people want to customize.

And honestly, don't we all prefer using some public API of a self-contained library to patching said library (think of the maintenance as that library gets updated)?

This isn't about ruining a language. This is about making the right choice of library or about the decision of building your own little customized thing that exactly fulfills your requirements (and nothing else), but as your requirements change, you're going to add abstractions yourself and suddenly you're back at the AbstractSingletonProxyFactoryBean, though you might have chosen a different name that nobody but your team understands.

As a library author, try to resist the feature creep; try to be opinionated ("I'm really sorry, but logging isn't pluggable. You want to log to your XML based logging server? That's fine, but you'll have to build your own thing or use a different framework") then you remain accessible and buzzword-free, even though that might cost you some users in the short term.

Language has nothing to do with this.

haberman 1 day ago 4 replies      
What the actual fuck is this? I read this as "in order to do a hello world, you must first create a hello world service to create the hello world factory to create the hello world sercice so you can print hello world on the screen."

Well, you misunderstood, and now you're ranting according to your misunderstanding.

I'm not an Angular, expert, but I'm pretty sure that the situation is this:

1. "Hello world" does not require any dependency injection whatsoever. (ie. it does not require services, providers, or factories). Note: if this was not true, I would agree with this rant completely.

2. If and when you decide you want dependency injection, if what you want to inject is a simple value, you can just provide it directly, without using a service, provider, or factory.

3. If and when you decide that you want to provide a dynamically-generated value, you can specify a function instead which will get called whenever the value is requested. This is called a "factory."

4. If and when you decide that you want your factory to just "new" an object instead of running an arbitrary function to provide the value, you can register that object type as a "service."

5. If and when you decide that you want to configure that object type first, you can register it as a provider.

If you want to stay at step 1 forever to keep things simple, groovy.

This is a example of success, not failure: you pay for only as much complexity as you actually want to use.

cs702 1 day ago 0 replies      
This reminded me of "Why I Hate Frameworks," a great post from 2005 in the Joel on Software forums: http://discuss.joelonsoftware.com/?joel.3.219431.12 -- my favorite quote from it:

"I'll get around to building [it] one of these days, as soon as I've got my factory factory factory all up and running."

Frameworks often are helpful, but as project complexity increases they tend to make it harder to get things done.

pron 1 day ago 6 replies      
Sigh. I can't say anything about Angular because I've never used it. But this constant ridicule of "the Enterprise" is getting on my nerves. Obviously, software design patterns change a lot over the years. Old practices are abandoned -- sometimes more slowly than we'd wish -- and others replace them. But much of this criticism comes from the fact that the critics 1) use technologies that are not mature enough to have growing pains, and 2) don't really know how software is made in the real world.

RE 1, the factory/provider/whatever pattern, comes in real handy when 2 years from now, a crucial ODE library that your air-defense system uses, absolutely has to be replaced by something else. And it's not like a kid could write a quick re-implementation in Go over the weekend.

As for 2, many of these patterns have been designed for software that does not resemble web applications at all. Just to give a sense of how out-of-touch SV developers can be with regards to the software world at large, IBM, Oracle and SAP combined employ more people than Google, Facebook, Twitter and LinkedIn combined, ten times over; there are more Java developers in the world than the entire population of the entire Bay Area.

I'm not saying that the maligned "enterprise" patterns have a place in a client web framework, or that some of them aren't dated. All I'm saying is, stop treating some software patterns that you think are unnecessary just because all you build are CRUD web-apps as inherently stupid. They are not. One of the reasons people working on CRUD web-apps can "move fast and break things", and just "rewrite the whole thing in a couple of weeks", and say stuff like "what's wrong with a simple 'new'?" is precisely because the software they develop is, frankly, not that complicated.

I would also like to remind the author that his beloved Erlang was developed in the very same environment he thinks so little of.

Drakim 1 day ago 4 replies      
I keep reaching the conclusion that frameworks are evil and libraries are awesome. Frameworks promise to organize your code and keep things structured, but the inherent verbose nature of JS frameworks ends up harming more than the structure helps.

Ultimately, if naked JS is too difficult to manage due to the lack of types and interfaces, I much prefer to use another language that translates to JS, rather than attempting to force it onto the JS language, because it always becomes messy and half-baked.

protonfish 1 day ago 5 replies      
It makes me so happy so see some hate for Angular. I decided to specialize in front-end web development a few years ago because the state of back end frameworks was so abominable. I escaped to HTML, JS, and CSS so I could quietly develop in peace. Now we have Angular, Knockout, Bootstrap - please for the love of all that is good, just stop. This nonsense is nothing but mountains of technical debt. When I tell this to framework fanboys, they counter with "But you can get things running so quickly using frameworks." This is the definition of technical debt (doing things fast now at the expense of doing things slow later) but it is also complete nonsense. I challenge anyone to a contest to create a quick font-end site where you can use as many Rube Goldberg contraptions as you like and I only use jquery. So then when they back down because they know they will lose their excuse is "But Chris, you are just so smart - the average dummy developer can't do what you do." My final rebuttal is "If you agree that I am such a genius, why won't you listen to my advice?"
mercurial 1 day ago 3 replies      
I can sympathize with the article, but on the other hand, when you reach a certain level of complexity, OO kind of forces you to use dependency injection. Which means providers and factories of some sort for short-lived objects, at least if you want to have testable code. I don't know if it's "enterprise hand-holding bullshit", but having seen code with and without DI, the DI one is definitely easier to work with and refactor. This doesn't mean Angular is not over-engineered, since I don't use it I have no opinion on the matter.
PhilipA 1 day ago 2 replies      
The author might be confused by AngularJS, but all of the projects I have converted from simple JS to Angular have more than halved the amount of code needed, and made the applications much more easy to maintain.
fauigerzigerk 1 day ago 1 reply      
It's even worse. In Java the whole factory/provider approach was down to a limitation of the type system. Yes they (we) went completely overboard with it and the ridicule is deserved.

But what on earth is the justification for using that pattern in a dynamically typed language that lets you tack anything onto an existing object without controlling its creation?

bitL 1 day ago 1 reply      
Is actually anyone considering JavaScript not to be "ruined" by default in the first place?
rafekett 1 day ago 3 replies      
I feel like these articles come up every few weeks. people don't understand angular (particularly why DI is useful) and criticize it for being verbose or confusing, usually using the provided sample code -- would it hurt to spend some time actually trying to understand the framework than to dismiss it on face because it looks kind of like something people don't like in Java?
thruflo 1 day ago 0 replies      
I switched to angular explicitly for the dependency injection. Registering a singleton so it can be passed in to other functions and mocked out easily in tests is something I find extremely useful.

Whether the framework should provide three different ways to register the object is another matter (a design decision along the harder-to-grok vs accommodate-variety axis) but, frankly, if you don't like factories, don't use them.

taude 1 day ago 0 replies      
I don't really agree with the sentiment. I think JavaScript is being pushed harder and in much larger apps these days, which is why these frameworks and design patterns have cropped up. Try getting a large team, building a large app writing cohesive code without some of these patterns. It's true, though, maybe Angular takes it a little too far...but maybe not, I don't know, each project is different in size, scope.

At first, we rewrote an app using mostly just JQuery, but it quickly turned into spaghetti. Then we added four more devs to the team because it's a pretty large project and this is when you need to start reeling in peoples coding style, and applying some design and patterns so that when a new person comes along in 8 months, they aren't totaly WTF?

The author sounds like he's working on a small team (maybe just with himself, since he's writing bot the video streaming/encoding backend along with the front-end), and therefore his style of coding while effective for a team of one or two, likely won't scale up.

julius 1 day ago 0 replies      
For me, the most helpful feature of AngularJS is the separation of DOM and data.

If you just want to use that feature, but you do not want all the framework stuff, you actually can. Here is my way of doing it: https://github.com/julius/AngularLite

Disclaimer: I actually like the framework stuff. I just made this to use it in an existing project (which is too big for a total conversion into the framework structure).

marknutter 1 day ago 0 replies      
I wish a more thoughtful criticism of angular without all the vitriol was getting up-voted to the top of HN rather than this drive-by blog post. It's clear that anti-framework people are up-voting to validate their own world views.
brudgers 1 day ago 0 replies      
Screw the technical merits of arguments for and against frameworks in general or Angular.js in particular - that's not really the point. By internet standards, it's a great article because it has an interesting topic, personal narrative, a strong opinion, a bit of humour, consistent tone, and a reasonable style. In the tradition of wistful paeans - the author is longing for a more wholesome past when JavaScripts roamed unfettered by barbed wire across a pastoral landscape of virgin DOM's [yes, intentional] and free of proletarian factory classes.

It's entertainment not evangelism. Nobody whose work-a-day problems are soothed by Angular will go native because of it. It's sermon about 'those people' and the choir's Schadenfreude...and then once the act writing this comment hit 'Schadenfreude', I had to ask myself is it a good article by HN standards?

Empirically, probably yes. Theoretically no. The problem with Schadenfreude is that it comes at the price of another's misfortune, and that is a route to the meanness that both entertains the internet and harms StackOverflow. Telling people that you are laughing at them is the hell of junior high bullying - it's just that cool kids get paid to do Erlang and the kids in Toughskin dungarees are getting mocked for using JavaScript boiler plate.

It dawned on me that the best HN articles are written in the spirit of mudita - finding joy in the good fortune of others, not their misery unless our humor is black and shares their burden.


michaelochurch 1 day ago 6 replies      
I've come to the conclusion that this non-programming programmer "design pattern" fad is a way of obfuscating mathematical and computational concepts while making them no less hard (as we see by them often being poorly used) but seem less hard (and, paradoxically, more intelligent due to buzzword compliance) to the businessmen who, because of programmers' weak professional identity, call the shots.

Curried function? Too mathematical. Let's call it a Factory.

Tree-walking algorithm? Let's call it a Visitor.

Sinusoidal curve? Again, too mathy. Let's call it the Vibrator pattern.

Lots of words get spilled, mediocre employees remain employed, good people leave or get fired while trying to fight the current of stupidity, and nothing gets done. Brilliant! Now, you can go a step further by creating a system to monitor those mediocre employees, making them basically employable while bringing down the top, and call it "Agile" when it's the exact opposite of agility.

antocv 1 day ago 2 replies      
For all the negative comments about FactoryProviderBeanCreator whatever style of enterprise-programming: There is a point to it all.

The point is software exists mostly within its socio-economic context - software is mostly made for people by people and will be used by people.

The SingletonProxyFactoryBean enterprise-programming tries to solve people-problems, it tries to waddle through dependencies between libraries, frameworks, language specifications, implementations, organizational structure and various teams within an organization.

This angular.js enterprisy-feel tries to do the same - push responsibility onto the others, or separate responsibility down (separation of concerns) where nobody actually has to do anything but "configure". Or "run" it. Or just "buy" it.

Thats the ultimate goal of enterprise and this style of programming - which eventually leads to somebody being required to know a language on top of a language on top of a language to adapt it to the business needs.

Its the same reason why abominations such as SAP and Microsoft Dynamics (or basically any closed source very expensive suite of software) exist - those products are on the altar of Enterprise, they fit well to the organization and culture of capitalism. They fulfill the goal of "just buy it" or "just install it" and it will do _everything_ a manager or team thinks of. So the programmers make it so - sure the program doesnt actually do anything without the correct set of configurations and options, but now its not an application thats developed inhouse, its a product we buy and can get support for, kind of.

boobsbr 1 day ago 3 replies      
This type of writing is getting really tiresome.

"Enterprise sucks, frameworks suck, X language sucks..." You don't like, but other people like it, get over it. Just don't use them and stop complaining all the time.

swalsh 1 day ago 3 replies      
I loved Angular when i first stumbled on it. Binding was cool... the rest of it, i'd throw away and be really happy.
guard-of-terra 1 day ago 0 replies      
I still write inline javascript blocks in my internal /admin service. Who wants to touch me?
ses 1 day ago 0 replies      
This indictment of angular and 'enterprise' frameworks is pretty one-sided and self-righteous. I hate the bureaucratic and restrictive nature of some frameworks too, but you can't dismiss the entirety of them and the problems some of them solve because of it. It's very easy to criticise without suggesting or showing any better alternative. For example... if you are a software manager with the 'power' to choose an entire stack for a new product, what would be your choice and how would you justify it on criteria such as: availability of documentation, developer skillset, testing, security, performance, platform compatibility, time to market etc?

Unfortunately all this type of 'boring' shit that enterprises deal with, they have to deal with for a reason. If you don't like that then you have a problem with the structure of the economy, larger businesses, and their politics as well as the technology.

denibertovic 1 day ago 0 replies      
This article really hits the nail on the head. In the comments, many people confuse layers of indirection with dependency injection. Those are 2 separate things, you can have dependency injection and not have 100 layers of indirection that confuse the hell out of people.

And while we're at it. Why the is there a term "Dependecy injection"... it's freaking argument passing to functions, and it's been around a really really long time. I'd expect this kind of crap from the JVM and other OO only worlds, but JS is more functional then it is OO, you have higher order functions...why the hell would you want to think in OO terms?

rquantz 1 day ago 1 reply      
This is silly. It basically amounts to "waaaah I don't know angular!" because they saw funny words I a stack overflow example.

Factories etc., in angular are not the same as the Java equivalents. And you're usually not going to be using providerProviders in your application code, that stuff goes in libraries that, yes, need to be configurable.

Angular is a boon for writing testable, changeable javascript apps. Just because one of the features happens to use words you don't like in java doesn't mean JavaScript is ruined.

Cthulhu_ 1 day ago 0 replies      
I think the OP and some of the people in the comments thread just don't have the kind of experience needed to realise why Angular is the way it is. The OP does not seem to be a JS developer, definitely not with experience in larger applications or in larger / multiple teams working on the same codebase. Checking his profile, all I'm seeing is short weekend projects and a small (code size based) library; definitely not the kind of thing where using AngularJS would help out with.

Just saying; if your only experience is small solo projects (instead of >10K loc, team-based projects etc), then yes, AngularJS will quickly smell of enterprise and eww, especially if based on just that one SO post from a long time ago.

If however you've trudged through unmaintainable jQuery code, wrote >30K multi-team BackboneJS applications, etc, then angular is a relief. It allows you to stick to patterns, to isolate your logic, to not have an excuse to not write unit tests anymore, and to actually write an application instead of struggle with your framework or how your views get rendered and when.

mmaldacker 1 day ago 0 replies      
This is just the same rant as the classic "Why I hate frameworks" http://discuss.joelonsoftware.com/?joel.3.219431.12

but applied to Javascript instead of Java.

zoomerang 1 day ago 1 reply      
Another case of "I don't understand something so I'm going to just say it's too complex and stupid". The author completely misses the point of service injection in Angular, and then goes on to offer a simpler "solution" that doesn't even remotely do what service injection is trying to do.

Here's the thing - Inversion of Control exists for a reason. Once your codebase gets to a certain size it becomes far, far more manageable to work with loosely coupled components that have no direct knowledge of each other.

These abstractions are a good thing. Lord knows how many projects I've had to fix because some idiot decided that "Architecture" was just some silly crusty of enterprise thing, and "Frameworks" are too opinionated - so instead they decide to ignore 50 years of industry conventions and write a spaghetti code pile of shit (But at least there are no factories!)

Whether you're using procedural, functional, or object-orientated style - A large codebase is still going to be unmaintainable if you don't understand how to write loosely coupled components. (More specifically, don't write a large program - write lots of small ones and compose them together).

jebblue 1 day ago 0 replies      
Good article, I do a lot of Java coding that isn't complex at all, the stuff he shows in the article looks like the EJB people got hold of JavaScript and went wild. That's sad because I'm getting back into the front-end more and finding jQuery has stood the test of time and is actually fun to use.
ColdHawaiian 1 day ago 0 replies      
> Start thinking for yourselves, ditch this shit before its too late and learn how to write some actual fucking code. The information is out there, you can do it. If you need handholding with factories and providers and service provider factories then consider that the world doesnt need your bullshit code and go and get a job youre actually good at. Stop ruining it for the rest of us.

It's unfortunate that this post was written in a provocative manner with a very inflammatory tone, because once you look past its rant-y nature, I think it raises an interesting argument.

From what I could tell, the gist of the post seems to be that instead of relying on someone else's pre-made, out-of-the-box general framework solution (which you have to heavily configure to your specific needs, and is so complicated that you end up needing to hire highly trained consultants), you can create simpler, more elegant solutions simply by writing them yourself from scratch.

I'm not going to agree nor disagree with that argument, I'm only trying to state what I think the gist of it is.

sklivvz1971 1 day ago 1 reply      
It's not the language, it's the people... Most developers are... not very good. It's a fact of life. Abstractions are a phase in learning how to code: I am not surprised that people reinvent the wheel in [insert-currently-trendy-platform].

I am surprised that people think that a LANGUAGE can make any difference. Languages are tools, stop pretending they make any difference and fix the people :-)

joekrill 1 day ago 0 replies      
This is just plain absurd. We are not in a one-size-fits-all industry. Far from it. Just because you don't quite understand the benefit of a very specific framework (that, incidentally, you know virtually nothing about) does NOT mean it is not useful, or that it has "ruined" anything. We pick the best tools for the job. In some cases that actually IS Angular. In many cases, it is not. But to make broad generalizations like this does nothing but show a lack of understanding.
outside1234 1 day ago 0 replies      
One word: Ember.js

I can't for the life of me understand the popularity of Angular.js.

facorreia 1 day ago 0 replies      
For the application I'm developing I've decided to keep it simple. Instead of relying on a complex framework with a lot of abstract concepts and layers, I'm using jQuery Mobile, Riot.js events and Handlebars templates. The actual application code is plain old JavaScript and I can actually understand what's going on at any given time.
taude 1 day ago 0 replies      
The OP got a two-fer: mixing the arguments for/against Angular and the arguments for/against JavaScript frameworks in general. I think they are separate conversations, which is evident below (or above) depending on which threads your read.
colemorrison 1 day ago 1 reply      
Angular can be confusing, but the speed of development you can achieve with it has helped give me back many hours of my life.
inglor 1 day ago 0 replies      
What's the fuss? JavaScript attracts people who complain about solutions to problems they don't understand
epayne 1 day ago 0 replies      
Thank you Rob. Although there are perhaps some things to nit-pick about your post, I think you have expressed something important about recent changes (last 5 years) to attitudes in the JS community.
ulisesrmzroche 1 day ago 0 replies      
When was the last time ya'll went 'hell yeah' when you saw the team you joined was a) was not using a framework or b) built their own?

You're just begging to be swirlied, my dudes.

nakovet 1 day ago 0 replies      
This post just remembered me of this question: http://stackoverflow.com/questions/245062/whats-the-differen...
CmonDev 1 day ago 1 reply      
It's like a decorative tuning of a broken car. But it was already broken to begin with. The problem is that everyone is too familiar with how to drive that specific brand of broken cars.
KhalPanda 1 day ago 0 replies      
Sorry, you only get 9/10 from me, not enough swearing.
weavie 1 day ago 1 reply      
Factories are singletons.Services are not.Providers let you configure stuff before they are invoked.
justinhj 1 day ago 0 replies      
This web page is one of those that is just unreadable on mobile.
ilaksh 1 day ago 0 replies      
If you think AngularJS is too complicated, I agree. Check out Polymer and web components.
jimejim 1 day ago 0 replies      
Can we all just agree that premature patterns is similar to premature optimization and move on?
kuchaguangjie 1 day ago 0 replies      
Jquery & extjs is just enough, things like Angular are too complex and abstract, make programming no fun any more.
flyworldhan 1 day ago 0 replies      
I totally understand the point. You only need to do is choose the right 'framework' for your work. Dont make it angryler.js
ff_ 1 day ago 0 replies      
The only thing I'm able to say after this piece is: "WOW."
F.C.C., in Net Neutrality Turnaround, Plans to Allow Fast Lane nytimes.com
390 points by tysone  1 day ago   256 comments top 48
parfe 1 day ago 5 replies      
In six months FCC Chairman Tom Wheeler will be a VP at NBC Universal/Comcast.

Not a bribe; just coincidence.

kevando 1 day ago 0 replies      
Fred Wilson wrote some thoughts on this and I fear very much that he is accurate.. http://avc.com/2014/01/vc-pitches-in-a-year-or-two/
quotemstr 1 day ago 2 replies      
Decisions like this lend a certain credence to recent studies showing that only the desires of the economic and political elite actually affect policy.
dandrews 1 day ago 1 reply      
Legislating "net neutrality" is a crude hack. The real problem is telco hegemony in the ISP space, as pointed out in John Gilmore's 2010 essay at http://www.nnsquad.org/archives/nnsquad/msg04177.html
oneandoneis2 17 hours ago 0 replies      
America in a nutshell: bunch of smart guys make an amazing system that changes the world; bunch of politicians cheerfully destroy it in return for a quick profit.

If Snowden's revelations weren't enough to ensure the rest of the world got busy on routing traffic around America, legislation like this will.

This move isn't just going to screw American consumers & startups. It's going to remove America from its status as the hub of the Internet.

And all thanks to a few profit-obsessed monopolists.

Yay capitalism.

rsobers 23 hours ago 2 replies      
Apparently the reports are incorrect and the FCC will issue a statement shortly refuting the claims by the NYT:


mikeyouse 1 day ago 2 replies      
This is largely due to the US Federal Courts' recent rulings that invalidated the FCC's previous attempts to guarantee Net Neutrality.

1. http://www.nytimes.com/2014/01/15/technology/appeals-court-r...

2. http://www.nytimes.com/2014/02/20/business/fcc-to-propose-ne...

mmanfrin 1 day ago 0 replies      
This makes my blood boil. The FCC is perhaps the one agency that could do something to step the dominance of the internet in the US by Comcast/Verizon, as nothing seems like it will happen legislatively. I have a feeling things will get a lot worse before they begin to get better.
sytelus 1 day ago 2 replies      
This law is the worst thing that could possibly happen to Internet. We need to as zealously fight against this as we did against SOPA. All the tech millionaires and billionaires out there: THIS IS YOUR CHANCE TO SAVE INTERNET BY WIELDING YOUR CONNECTIONS. I'm not even sure how a cable lobbyist dick like Tom Wheeler got in FCC in first place and I continue to wonder how people like him would never hesitate to kill something as beautiful as the system that connects entire human being for their personal profits.
transfire 1 day ago 3 replies      
Here comes the proverbial "Consumer Choice": Which primary Internet package would you like: Google Plus, Microsoft Office with XBox Live, Facebook, or Yahoo? Do you need any specialty cloud services: Amazon, Dropbox, Spotify? Would you like full access to uncertified internet sites for an additional $15/mo?
sroerick 1 day ago 9 replies      
It's so frustrating to me that this is all based around the stupid legal assumption that we have to stream everything.

God forbid your user should download something to watch later, to prevent having to redownload every time you watch it.

And then during peak Netflix hours, I just can't use the internet reliably.

If anyone knows any source for Libre video works, that I can download and watch with complete freedom, please let me know. I'd pay for it.

smokinjoe 1 day ago 0 replies      
> The Federal Communications Commission will propose new rules that allow Internet service providers to offer a faster lane through which to send video and other content to consumers, as long as a content company is willing to pay for it, according to people briefed on the proposals.

Willing? I'm fairly sure it's going to end up being a "mandatory" fee in order to compete with similar online services.

guelo 1 day ago 1 reply      
In the coming decades our current golden age of internet innovation will be looked back in wonder.
noobermin 1 day ago 0 replies      
I have a question for those more knowledgeable about this than me: compare this to recent EU [1] votes on net neutrality. What do you think, will this give European internet companies an advantage over ones here (specifically startups that don't have the big bucks to shell out to the large internet providers)?

[1] http://gigaom.com/2014/04/03/european-parliament-passes-stro...

jkelsey 1 day ago 0 replies      
When the Democrats come around here soon during the next two elections, with their hand out towards the tech community -- remember this. They only promise openness when they're trying to get elected, not governing.
xedeon 17 hours ago 2 replies      
Let's all contact the F.C.C. and let them know how we us consumers are against this! I can't believe not a single HN user suggested this on this thread yet!

Federal Communications Commission

445 12th Street, SW

Washington, DC 20554

To Contact the Commissioners via E-mail

Chairman Tom Wheeler: Tom.Wheeler@fcc.gov <<<<<<<<<

Commissioner Mignon Clyburn: Mignon.Clyburn@fcc.gov

Commissioner Jessica Rosenworcel:


Commissioner Ajit Pai: Ajit.Pai@fcc.gov

Commissioner Michael ORielly: Mike.O'Rielly@fcc.gov

Complaints: File a Complaint

Freedom of Information Act requests: FOIA@fcc.gov

Elections & political candidate matters: campaignlaw@fcc.gov

1-866-418-0232 FAX: toll-free

1-202-418-1440 Elections & political candidate matters

gnoway 1 day ago 1 reply      
Well it is a little premature to cry doom before these guidelines are even adopted.

But if they are, it will be kind of funny to read in a few years the comments from ISPs re: anti-neutrality policies stifling 'new' streaming services:

"Our research shows there is weak to no consumer demand for alternative services"

kator 1 day ago 0 replies      
Can we get the FCC to rule that Bit Torrent is a form of carpool lane and we should get faster access?
Touche 1 day ago 2 replies      
Game over. The internet was fun while it lasted.

Anyone want to start a mesh network startup?

pushedx 1 day ago 0 replies      
I'm the lead developer at a video startup. This policy may make our concept economically infeasible. I'm so angry that I can't even think straight right now. I thought we won this battle. I thought it was over. I want to take to the streets. We need to do something. We can't let this happen.
ihuman 1 day ago 1 reply      
I don't have the best knowledge about the FCC's plan for Net Neutrality, but doesn't this go against everything that the plan stood for?
baconner 1 day ago 1 reply      
I read this as FCC plans to allow slow lanes.
andyl 1 day ago 2 replies      
I want to drop my Comcast home internet (Palo Alto CA) and switch to a net-neutrality friendly ISP. What other service should I consider?
Afforess 1 day ago 0 replies      
Fuck you, Tom Wheeler.

That is all.

dragonwriter 1 day ago 0 replies      
Its not clear to me that this is a "turnaround", since it is not clear to me that pay-for-quality offered under the terms that the leaks about this have suggested (commercially reasonable terms open to all content providers equally) would have been prohibited by the previous order (had it not been struck down.)
rayiner 1 day ago 3 replies      
People say: this could hurt startups. Which makes me think: so? Isn't it inherent to startups that they have a competitive disadvantage in areas where expensive infrastructure is required? Isn't it an inherent advantage big businesses have over startups?

Let's take the history of telco monopolies off the table for a minute. Let's say these are purely privately funded networks with no government sanctioned subsidies. Is net neutrality still a good idea? Does't artificially take away an advantage big companies inherently have?

markbao 1 day ago 1 reply      
Honestlywho does this benefit, apart from ISPs?
azinman2 1 day ago 1 reply      
And... there goes the internet.
darrenkopp 1 day ago 2 replies      
Signed up for yesterday, had to pay $5 comcast tax for HBO go (HBO = $15, them "letting" me use HBO go - $5).

This system is bull shit.

rasz_pl 1 day ago 0 replies      
Fast Lane? more like 'not slowed down lane'
jthomp 1 day ago 1 reply      
Looks like I wasted my time writing Mr. Wheeler an email on this very subject a few weeks ago.
lucb1e 1 day ago 1 reply      
As I was reading, I thought this was just a move by the FCC to get the people to understand that the internet without net neutrality is a nightmare. As I'm reading the HN comments, I'm not so sure anymore...
hemancuso 1 day ago 4 replies      
To strike a contrarian tone, how much is this going to matter a handful of years from now as the internet at large and bandwidth to the home continues to increase? In a decade is it unreasonable to expect that "really fast" home internet is 1 gigbit? At that point even your pokey 50mbit connection already has 10x-20x the bandwidth Netflix sees for a "good" connection (their metric). Does this make it harder for Netflix and future video streaming companies to send us 4k video, sure, but I struggle to come up with too many other ways that this will hurt.
omgitstom 1 day ago 0 replies      
Between this and the comcast / twc merger, there should be no doubt in anyone's mind that the government cannot act on behalf of the consumer.

Please feel free to reach out to Tom Wheeler on twitter https://twitter.com/TomWheelerFCC

AngrySkillzz 1 day ago 0 replies      
Where's Genachowski when you need him... Oh, he's stuck in the revolving door.
Taniwha 1 day ago 0 replies      
Don't for get to call your ISP and demand your cut of the money they're now earning for pimping you out to the content providers
NAFV_P 1 day ago 1 reply      
As of 23:52 BST this article has 63 comments, 18 of which have been downvoted.
knodi 1 day ago 1 reply      
WTF!!! I'm so pissed of at our fucking government, it can't get one god damn thing right.
toasted 1 day ago 0 replies      
Can americans explain to me why cable companies seem to have a monopoly on internet in the USA when presumably most houses still have copper phone lines capable of running VDSL connections capable of 52mbps?
ademarre 1 day ago 1 reply      
Are there to be any regulations to prevent ISPs from artificially degrading delivery of low-priority content providers? Prioritizing content is one thing, but artificially withholding or delaying delivery of content is quite another.
cheetahtech 22 hours ago 0 replies      
This all from a president the YC is hosting for a fundraiser. I bet he's saying, how do you like me know! Sorry my cynical behavior, but this is horrible.
kin 1 day ago 2 replies      
we can trust Google Fiber to be net neutral... right?
wnevets 1 day ago 0 replies      
now this is the death of internet as we know it.
dredmorbius 1 day ago 0 replies      
The Edge in one of its recent "Question" issues ran a piece by Charles Seife on capture, in response to the question "what should we be worried about".

It's a tremendous problem, and not just of government (principle-agent problems in management and business are also rampant). Recommended reading:


And the answer isn't "don't regulate". It's "regulate appropriately and effectively". Just realize that this is an eternal challenge.

NB: Sadly the formatting of the questions and responses is horrible. In particular, navigating the full list by title is all but impossible. I've highlighted the specific essay in question.

jrjr 1 day ago 0 replies      
the pigs are creating a slow lane, not a fast lane.
massappeal 1 day ago 1 reply      
if these rules are actually implemented, Silicon Valley will cease to be Silicon Valley.
robbiet480 1 day ago 0 replies      
grandalf 1 day ago 4 replies      
I realize this view is controversial, but net neutrality is about as logical as arguing that all residential bandwidth should be dedicated symmetrical up/down.

As content + routes become mainstream (the top 1-2% of bandwidth), the price of hosting them approaches the dedicated bandwidth price. This is because the usage pattern variability is arbitraged upstream of the ISP.

Preferential QoS based on content source is a predictable consequence of this, since the ISP begins to have no opportunity for bandwidth arbitrage and must rely on some other revenue stream to avoid having to charge dedicated bandwidth prices.

Stripe Open-Source Retreat stripe.com
350 points by gdb  6 hours ago   60 comments top 24
cvburgess 6 hours ago 2 replies      
I wish more companies and hacker spaces would launch programs like this. With so many companies relying on open source, giving projects a little bit of stability is crucial.

The no-strings attached is also a huge deal. Versus being employed, this program lets people work on something that they are passionate about without the risk of the company assigning them to a new project that they aren't interested in.

chriskelley 6 hours ago 1 reply      
I'm interested to know where ideas like this originate within the company. Outreach like this is great for their brand within the dev world, though this may be more altruistic than CTF (semi-recruitment tool). There's no question that both initiatives are clever enough to make one wonder how they come to life internally. Love the idea(s)!
thedob 2 hours ago 1 reply      
This is really great. Kudos to Stripe. I'm curious about what the ideal scenario is at the conclusion of the 3 months? Some options are...

- The project has progressed significantly to the point where the developer can hope to find continued sponsorship at Stripe or elsewhere.

- The project has progressed to the point where it no longer needs the tender loving care of the maintainer full time. Either it got more contributors or has reached a new level of stability.

- The developer joins Stripe (or somewhere else) full time and the project is left better off, but without a full time contributor/maintainer

Any thinking about what the end-game is from the developer's perspective. Either way, it's an incredible opportunity.

afarrell 5 hours ago 0 replies      
Can we nominate other developers who are working on projects we're not?
tericho 2 hours ago 4 replies      
I'm generalizing here but I would hazard to guess a good majority of OSS project maintainers (myself included) do so in their spare time and have full-time jobs. It's unrealistic to leave a job for a 3 month "retreat", regardless of how great the opportunity is.

I'm not suggesting it won't work, I think it's a fantastic program and I'm rooting for its success. I'm just suggesting you may want to consider remote opportunities (maybe with occasional visits for in-house tech talks) for future iterations which would undoubtedly increase the talent pool and presumably be more effective at delivering your end-goal.

dochtman 5 hours ago 1 reply      
So, hopefully some OpenSSL developers will apply?
Bootvis 5 hours ago 0 replies      
It's amazing how many cool things they come up with and follow through on. Respect.
maccard 20 minutes ago 0 replies      
Are you guys accepting recent graduates for this?
jw2013 2 hours ago 0 replies      
Even it is not explicitly mentioned, I wonder if Stripe will let 'whether the applying project can be used somewhere inside Stripe' be one deciding factor, or the project can be totally irrelavant to what Stripe is doing.

It is great seeing YC companies giving back to the community, first teespring and now stripe. I can see it is the future that it is startups pushing forward the technologies and communities, much more than big corps.

joshdance 6 hours ago 1 reply      
Stripe does a good job about staying top of mind for devs by doing things like this. When I think of a great company to work for, Stripe and Github are usually near the top.

And benefiting open source? Double win.

chandraonline 5 hours ago 0 replies      
If there is ever a company to look at to model your developer relations, Stripe is it. It is really a joy to see the stuff these guys come up with.
justincormack 4 hours ago 3 replies      
I wonder if US immigration would count this as "work" for people without ability to work in US?
derekchiang 5 hours ago 1 reply      
Wow, this is the exact idea I have been thinking about!

For successful companies like Stripe, the cost of doing this program is negligible. And yet many open-source projects (OpenSSL comes to mind) can really take a huge step forward by having several professional developers working full-time on it for three months. Lots of kudos to Stripe for doing this, and hope to see more companies follow this example!

jhenkens 6 hours ago 1 reply      
Is there a reason this article is future dated by 5 days?

"Greg Brockman, April 29, 2014"

s9ix 6 hours ago 0 replies      
This is super cool. Love seeing all the new incentives for open source and nonprofit startups.
niix 3 hours ago 0 replies      
This is really awesome. Super inspiring and wish more companies would do this.
knodi 5 hours ago 0 replies      
Wow, this is amazing.
rjf1990 5 hours ago 0 replies      
This is awesome, can't wait to see what comes out of it.
pyb 5 hours ago 1 reply      
Sounds like you wouldn't be willing to give a grant to a pair?
sinzone 2 hours ago 1 reply      
outstanding hiring strategy.
razfar 6 hours ago 1 reply      
anyone know what software Stripe is using for their blog?
boulderdash 6 hours ago 2 replies      
smart hiring strategy!
hurtubia 3 hours ago 0 replies      
This is a pretty inspiring initiative. Thank you for doing this!
jjallen 6 hours ago 6 replies      
I thought this meant that Stripe was retreating from open-sourcing internally-developed software.

A potentially better title is "Stripe offering open-source retreat for select software developers".

Parallax effect from Google Lens Blur photos depthy.stamina.pl
340 points by bergie  2 days ago   58 comments top 21
aleyan 2 days ago 1 reply      
Well done. I have been working with animating 2d images with a hand constructed depth map in the past to a decent 3d effect[1]. The illusion when guided by your mouse as in the OP seems to be much stronger then in left-right strafing that I did.

One point that can be worked on, as pointed out by other people here is the occluded pixels (this is an issue when an image has sharp changes in distance from the camera). You simply can't show what wasn't seen by the camera, so you have to fake it. In the pre-baked animations I did, the occluded pixels were duplicated and then manually fixed by me in Photoshop.

Perhaps the solution here would be to capture and store images from several perspectives. These could then be used to generate the depthmap using what algorithms Lens Blur used, and also to interpolate the occluded pixels when viewing the photo from different perspectives.

[1] http://fooladder.tumblr.com/

arscan 2 days ago 1 reply      
It might be helpful to separate the code that creates the parallax effect from the angular app that displays the website & examples. This is a really cool trick and it would be nice to be able to easily reuse it. For those looking, it seems like the "magic" happens in a couple of spots (I think):


and in


roeme 2 days ago 7 replies      
Surprisingly well faked in face of the fact that there's no real 3D information in the pictures.

There simply cannot be new 'pixels' appearing that were (i.e. before applying the effect) hidden from objects in the cameras line-of-sight. This is evident upon closer inspection (look at edges around the approximate middle of the DOF). The trompe-l'il then falls a bit apart.

Interestingly, I did not notice above with the IOS7 background parallax; I'm wondering why? Special images, or a stricter constraint on movement?

bostonpete 2 days ago 0 replies      
Any way to save the hypnotize view to an animated gif? That'd be really cool...
bergie 2 days ago 0 replies      
ctdonath 2 days ago 0 replies      
Interesting contrast, the next-gen Lytro camera featuring such refocusing & perspective shift: https://preorder.lytro.com/lytro-illum-pre-order
andybak 2 days ago 2 replies      
Nice work! Are you doing any 'content-aware fill' style magic on the invented occluded pixels?

I wonder what else can be done with the depth data... Fog is the obvious one. You could potentially insert elements into the scene that knew when they were behind foreground items.

I'm sure some kind of point-cloud or mesh could also be derived but not sure how good it would be.

Funnily enough I nearly posted to /r/android/ earlier "I wish you could save the generated z-buffer" - it didn't occur to me to actually look!

jameshart 2 days ago 0 replies      
Interesting that on the shelf image, it's the slightly diffuse reflections of the items on the shelf in the wood grain that breaks the illusion for me.
aaronetz 2 days ago 0 replies      
Related (works from a single image): http://make3d.cs.cornell.edu/
redthrowaway 2 days ago 3 replies      
I'm putting the over/under on how long till this is used for porn at 4.5 days. Any takers?
juanpdelat 2 days ago 0 replies      
How is the parallax effect working without using my mouse and shaking my laptop? Am I going crazy or do Mac Books Pro have accelerometers?

Edit: Had to google it, they have something called Sudden Motion Sensor http://support.apple.com/kb/HT1935

prawn 1 day ago 0 replies      
This could be an effective differentiator for a real estate web site featuring property photos. Or even an online store where product photos are done in this way.
kordless 2 days ago 1 reply      
I can't seem to get the top view when I upload an image. The image and map display correctly below. I'll try downloading it and running it myself.
hadem 2 days ago 1 reply      
"Try using Chrome on your desktop or Android device"... I am...
general_failure 2 days ago 0 replies      
Very nice. Is there a writeup on how this works? It appears the shadow on the pole in the second picture moves! (maybe it's just some gimmick).
Aardwolf 2 days ago 1 reply      
This requires a depth map in the image.

Would it also work on any image by calculating a depthmap from the blurriness?

tst 2 days ago 0 replies      
I would be interested to see how this effect affects the conversion rate. I could imagine that it could work very well on physical products.
splitbrain 2 days ago 1 reply      
All I see is a black page? (Chromium 33.0.1750.152)

404s for the script and CSS files

than 2 days ago 0 replies      
Damn this is cool. Even though there's some smearing to make up for the lack of information, especially behind the railings on the deck, the effect is striking, and subtle enough to be believable at a casual glance.
judk 2 days ago 5 replies      
Android Chrome gets "your browser does not support WebGL. You'll not see the parallax effect...Try using Chrome on your desktop or Android device"
ahassan 2 days ago 0 replies      
It would be cool if this was added to the iOS parallax effect.
Mail-in-a-box: easy to set up modern SMTP/SMTPS server stack github.com
339 points by api  1 day ago   144 comments top 37
thisishugo 1 day ago 11 replies      
It remains a constant frustration to me that Postfix, Exim, Cyrus, Dovecot and the like still feel as if they belong very much in the "here be dragons" territories of the Unix world. Configuring these systems is an exercise in constant frustration and bafflement.

They're such a pain to use that since becoming the sysadmin in charge of our work email servers, I gave up running personal ones as well and just pay FastMail to deal with it for me - ain't nobody got time for that.

I often dream of taking a sabbatical and writing modern, user-friendly SMPT and IMAP[0] servers. If only so I could use them at work on my return and save myself a lot of time and stress.

[0] Possibly even with Exchange ActiveSync support - Microsoft licenses the protocol, but I've no idea what it costs http://www.microsoft.com/en-us/legal/intellectualproperty/IP...

jgj 1 day ago 2 replies      
With every solution that comes along to solve the "host your own email" problem, and every guide that takes you step-by-step, I always find myself just wanting a huge wiki-style site with all the topology of a good, secure email/groupware server explained in plain English rather than a package that purports to do it all for me. Something with breakdowns/discussion about the different options that exist for the different pieces that make up the whole.

It's one thing to easily obtain my own personal mail server, it's another entirely to understand and be able to maintain/improve it.

morsch 1 day ago 4 replies      
Very nice. Comes with Roundcube so you've got a webmail client available.

  - DKIM signing on outgoing messages (opendkim).  - The machine acts as its own DNS server and is automatically configured for SPF and DKIM (nsd).
I remember many people running their own SMTP server used to have massive issues with their outgoing mail being silently or non-silently ignored or sent to the spam folder. Does this take care of this? "Mostly" really isn't good enough.

chrissnell 1 day ago 8 replies      
Be aware: Rackspace (and surely many other cloud server providers) intentionally submit their IP blocks to DNS blacklists to dissuade spammers from using their hosts to send/relay mail. I'm not sure if the other big players do this but it wouldn't surprise me. Same goes for most consumer-class cable modem ISPs.
wtbob 1 day ago 0 replies      
Please, please do not release this sort of thing for Ubuntu; target Debian instead. It's far easier to build Ubuntu support upon a Debian base than vice-versa.
_pius 1 day ago 0 replies      
This project is up for Knight Foundation funding. If you want to see it funded, speak up here: https://www.newschallenge.org/challenge/2014/submissions/mai...

The guy behind it, Josh Tauberer, also wrote GovTrack, which was (and still is) important for anyone who builds things with Federal government data.

peterwaller 1 day ago 2 replies      
It does greylisting by default. Greylisting is awesome at cutting down spam, but we recently noticed that it was preventing a major mail provider from getting through, among others, because it seems that this major provider doesn't use the same IP twice (at least sometimes).

If ignoring email coming from a major provider isn't an option (it isn't.), then what are your options?

mstrem 1 day ago 1 reply      
This is typical, I have just done the whole process myself a few weeks ago from scratch (fresh CentOS install) and now this comes up.

However I do not regret it at all. I had Linux experience and it took me one day and a half work to get it all working very nicely.

I am happy with my config: Postifx, Dovecot, RoundCube, SpamAssassin, ClamAV

Server supports unlimited domains and user accounts - SSL is required for all connections, I only allow IMAP and I have configured it with two valid free StartSSL certificates:

    One under mail.domain.com (for email clients)    One under webmail.domain.com (for the webmail)
And both of course do not show warnings and green padlock is always nice.

The thing that scared me the most was outgoing emails being dropped - however to date I have delivered fine to all main email provider - followed a few simple rules:

    Ensure you have both SPF and TXT correct DNS records    Ensure you have IPv6 configured properly (Google was  rejecting due to this)     Set your reverse DNS    Set your machine hostname etc. in postfix

sz4kerto 1 day ago 2 replies      
A Docker image would be brilliant.
josho 1 day ago 1 reply      
Even better is to host your personal email on a server at your home. SMTP will retry sending mail if your server goes down for a period, so uptime isn't critical.

I've been doing this for several months with no issues, and it's pleasant getting out of google's targeted profiles.

codexon 1 day ago 2 replies      
Please put a strong rate limit on the dns server to prevent it from being used for ddos attacks.

The last thing the internet needs is more clueless users with dns servers.

pjc50 13 hours ago 0 replies      
I used to run my own mail server. I stopped because of two reasons:

1) You have to be your own 24-hour support, or accept that you will lose or bounce mail. You can be stuck with realising that it's failed while you're on holiday.

2) You have to be your own antispam. I've had my own email domain for fifteen years; it's on basically every spam list out there. Gmail is very good at this. At the moment I rely on my hosting provider who filters out most but not all of it.

3) You can have tedious issues delivering outbound mail, even if you're not using SPF.

In my opinion the right level to run email is "small cooperative" (10-100 users), where cooperatives share software, experience and maybe even staff but are administratively and physically separate.

wvh 17 hours ago 0 replies      
Setting up your own mail server is a thorny problem. I've been setting up my (family's) own mail server, and despite having lots of experience, it has taken a month already. Even when encryption, authentication, spam and sieve filtering, IMAP and webmail work, there's still no SMTP backup or alternative server in case you accidentally end up being blacklisted somewhere. I'm not sure investing money and effort is really worth it for just a few people's mailboxes.

The whole process keeps getting more complicated as the internet grows more hostile and end-user requirements increase.

This project sounds interesting and much necessary, but the real problem to me is the economy of scale. If 10 Unix guys sit together and set up 2 servers for 20-30 personal mailboxes, the time and money might be worth it. Setting up all those services, filtering and redundancy by yourself for just yourself and monitoring them continuously is wasteful and painful, even if you like to tinker with Unix systems.

There used to be a few geek-oriented ISPs around that offered SMTP/DNS backup, spam filtering and similar services so you could off-load some effort, but I guess they've fallen prey to low-margin virtual server business.

agentultra 1 day ago 2 replies      
It would be nice if this could be ported to something like Ansible so that we could add more host targets easily (ie: Fedora, CentOS, Arch, etc).

Great job. Mail configuration is pretty hard in the number of steps and amount of configuration that needs to be done to get it right.

illuminated 1 day ago 0 replies      
Although I do run at the moment my own email server with postfix, dovecot and the rest, I'm thinking for some time to replace that with Kolab [0] - a similar package of "everything email hosting related in a box" solution with an extra advantage of supporting active sync which I find very valuable.

[0] http://kolab.org/

xyzzy123 1 day ago 4 replies      
This is cool, but it doesn't actually help you with mass surveillance unless the other side of your conversation is doing that too. What point running your own email server if your friend is on hotmail?

Also, even if you both run your own MTAs STARTTLS does not help much except to reduce the scope of the passive-only surveillance dragnet, because the configuration does not require signed certificates.

Finally, if both parties are technical enough to run their own email servers, um, why not just use GPG?

From a technical point of view, I put this squarely in "fun, but a boondoggle" territory.

Oculus 1 day ago 1 reply      
After toying with the idea for a while, I've settled on using a service like Mailgun or Sendgrid is the best decision when it comes to setting up email. Otherwise, it's just too much work for little in gain (as far as I'm aware). I'm curious to hear what others think.
rdl 1 day ago 0 replies      
Huge advantage to hosting your own mail due to third party doctrine, so this is awesome, even if it is hard. Mail might be the one service I would be most reluctant to outsource.
542458 1 day ago 0 replies      
Oh wow. This sounds awesome! About a year and a half ago I tried to set up my own mail server on a cheap VPS, but could not get it to work for the life of me. It's sort of a stressful thing to set up as well - failure is both high-consequence and invisible, and I'm never quite sure if what I'm doing is secure or correct. Count me as a fan of the idea - I'll try setting this up later!
fredsted 1 day ago 1 reply      
If you need email, but also web/ftp/git/mysql/dns, try Virtualmin - http://www.webmin.com/virtualmin.html - you can easily run this on a $5 digital ocean server.

You basically follow a web installation wizard, create a domain and then you can use Roundcube (included) or any IMAP client. Couldn't be easier.

jamestomasino 1 day ago 0 replies      
Are you serious? I just spent all weekend building myself almost the exact same setup from scratch. It was a royal pain. I wish I'd seen this a week ago. Nice work.
denibertovic 14 hours ago 0 replies      
The part that bothers me is that is's all shell scripts...Why not use a modern provisioning tool now-a-days?

This looks way more interesting to me: https://github.com/al3x/sovereign

coherentpony 1 day ago 1 reply      
Why has nobody just made a Docker image that anyone can download and use for free? Or even just a Dockerfile. That way it's a text file and people can contribute and improve the setup.

Just my two cents.

Edit: Looks like my idea is far from original<https://news.ycombinator.com/item?id=7634677 >

brianshaler 1 day ago 1 reply      
> It is a mail server in a box aimed to be deployed securely into any cloud infrastructure. It provides no user interface to send or check ones mail but implements all of the underlying protocols that other applications (mail clients), such as Google K-9 for mobile devices, Mailpile, and Mozilla Thunderbird, can interoperate with.

The combination of Mail-in-a-box and Mailpile seems pretty exciting.

Since running your own mail server is opening a new vector for attack, I'd be curious how Mail-in-a-box is going to handle security updates.

dale-cooper 16 hours ago 0 replies      
Does anyone have a cheap VPS provider to recommend for this? I usually use digital ocean but from what i hear, most of their ip space is blocked everywhere due to spam issues.
hardwaresofton 1 day ago 0 replies      
After being conquered by the difficulty of sendmail configuration, this is a breath of fresh air.

+1 to what codexon said about the rate limit, but this seems absolutely amazing

GigabyteCoin 1 day ago 0 replies      
Mail server setup is certainly a common problem that needs fixing.

Good luck with your project. I know I will use it.

Torn 18 hours ago 0 replies      
Noone here backed Mailpile on kickstarter then?


nemoniac 1 day ago 0 replies      
File-system encryption with something like encfs would be a great addition.
JimmaDaRustla 1 day ago 1 reply      
I'm going to have to try this out - I tried setting up a mail server once and failed because it was too difficult. Now I'm paying $30/year for service from NameCheap.
_asciiker_ 1 day ago 0 replies      
I for one, am still sticking with qMail, qMail-toaster to be precise. Over the years it is proven to be very reliable even when it takes beatings like no other.
ausjke 1 day ago 0 replies      
what about Citadel, the UI looks stone aged but it works as the in-a-box thing just fine.
snambi 1 day ago 0 replies      
Thanks for doing this. setting up mail is so hard, most people give up.
robomartin 1 day ago 3 replies      
This is neat. I've been running my own email forever and appreciate the difficulty involved.

I do have a question:

Does hosting your own email truly isolate you from government surveillance?

If a million people use this to host their own email on AWS, what's to keep the NSA from ordering Amazon to tap into your data?

You almost have to host it on your own hardware in the garage in order to add a significant layer of isolation. Even with that in place there are ways to access your communications through your ISP. Harder, not impossible.

What's reality?

bananas 1 day ago 0 replies      
Rather interesting. I still like building the whole thing with postfix + dovecot by hand myself. Perhaps I'm wrong in the head.

One thing to watch out for: Yahoo is a complete bastard to deliver to. One day they'll decide to block you (if they don't immediately) and the only way out is to fill in a web form which either allows you 6 months of delivery if you're lucky or blocks you with no hope of resolution for 6 months.

Total assholes they are.

er0k 1 day ago 0 replies      
how does this differ from iRedMail?
miles_matthias 1 day ago 1 reply      
This is nice if your main goal is to take privacy back. For me, Gmail is not only free, but provides great mobile apps and email innovation like filtering, search, and a tabbed inbox.

In short, Gmail provides more value to me than being a simple SMTP server, so I'm willing to pay with my advertising eyes.

My Quest to Build the Ultimate Music Player andrewkelley.me
337 points by AndyKelley  2 days ago   148 comments top 27
GuiA 2 days ago 4 replies      
Congrats! This is fantastic.

If you can write code, I highly recommend taking a stab at writing yourself the tools that you use the most (whether that is a music player, chat client, text editor, etc.).

Sure, it isn't trivial - but modern languages and libraries (I'm a big fan of Python, both for the language and its ecosystem) make it a very reasonable project. You can get an MVP working in a few weeks of work (if you spend 5-10 hours a week on it), and then you can add features and tweak the thing over the months and years as you use it.

And in the end, you get a piece of software that you deeply know, to which you can add any feature you want, that is customized to fit perfectly in your workflow, etc. It's a bit of work, but it's really cool and IMO one of the neatest things you can do for yourself as a programmer. Additionally, if it's something that works well for you, chances are that other people will like it- open sourcing it and getting other people to use it is a high of its own.

I'm working on a few such apps myself (todo list, mail client, and a few others), as console applications using ncurses to make something with a responsive, smart, effective and efficient style of UI that I don't think has been done before (mostly because no one has been trying to innovate in the domain of console applications in the past 20 years- but I think interesting things can be done). When I'm at an interesting point, I'll open source it and write a few posts about it.

I hear the naysayers saying that it's a waste of time, that there are already 8000 different open source mail clients and music players and todo lists apps and that it's better to contribute to old open source projects than create your own, etc... those arguments aren't wrong, but IMO they don't outweigh the pros I outlined above.

This talk by Gary Bernhardt is relevant: https://www.destroyallsoftware.com/talks/a-whole-new-world

ecdavis 2 days ago 3 replies      
One problem that really interests me is the "dynamic playlist." Once your music library becomes sufficiently large and diverse, simply shuffling songs ceases to be an acceptable way to listen to music. You'll randomly switch between vastly different genres, come across tracks that aren't enjoyable outside the context of an album, jump in halfway through some pieces. It's a mess.

I wrote a simple script which uses Last.fm data to generate a "path" through the artists in my music library based on their similarities. It's very far from perfect, but it suffices to build an album playlist which slowly takes me through several genres. Some day I'll improve it to work based on albums rather than artists.

Ideally, I'd like to be able to run queries on my music library and have an interesting playlist returned to me.

splat 2 days ago 10 replies      
This looks really cool! As a classical music fan, the one feature that I've always wanted but have never found is the ability to link several tracks together. Often times classical CDs break up a single piece into multiple tracks, so if you're listening to your library on shuffle, you will often jump into the middle of a piece, which is annoying. It would be so cool if there were a music player where you could link several tracks together as one piece so that shuffle would always start from the beginning and wouldn't shuffle away until the end.
daurnimator 2 days ago 3 replies      
This article rings true with me on so many points.

I spent years searching for, and coding my dream music player/manager. Going through tens of different backends, servers, etc, not limited to: - MediaMonkey: windows only - Amarok: terrible interface, slow and hard to extend - foobar2000: closed source/windows only/columns UI stopped working - MPD: Just not enough, also poor codec support (I use wavpack) - xmms2: was a baby at the time - ExFalso

I started coding my own, dubbed lomp: https://code.google.com/p/lomp/I solved so many interesting issues that seemed to plague other music software: I got client/server working, output redirection, even ended up coding my own library management, then tagging library. Tangentaly, tagging is HARD, no one does it correctly. The best library I found on ANY platform or in ANY language was Mutagen, part of the Quodlibet https://code.google.com/p/quodlibet/ project; but even it got a few things wrong. I eventually tried to split off my efforts as 'lamt' https://github.com/daurnimator/lamt but didn't dedicate enough time.Also worked on a wide range of front ends: console, web, etc.

But as I coded this media player, I could never settle on a decoding or output library; I went through SO many: - controling mplayer/cplay/aplay via a pipe - libvlc - gstreamer - Phonon - libavcodecBut none were enough, or way too buggy...After years of failing, I decided I better just do it myself, so I started again: https://github.com/daurnimator/lomp2/This time using LuaJIT's brand new (at the time) ffi to directly talk to libao (which I found to be the best cross platform audio output solution)

I ran out of time to work on lomp when I was at university, and now I have a job that keeps me busy.I wonder how many of my pain points you guys have solved.....

Feel free to reach out to me if you want to discuss more.

asgard1024 2 days ago 3 replies      
I also had a quest to build the ultimate music player. My motivation was that most music players got complicated to the point I was unable to use them.

My player is 200 lines of Python, utilizing MPD and Qt (for Docker icon), and has about 3 features. It plays all the mp3 in a directory (including subdirs) randomly, and you can "like" or "dislike" song, which modifies the probability of it being played (and these data are remembered in MPD database). Also has "pause" and "next song" buttons (from the tray menu) and that's it, literally.

To each his own, but that's my personal definition of "ultimate".

anigbrowl 2 days ago 2 replies      
The solution is to analyze each song before playing it to figure out how "loud" it sounds to humans. Then the music player adjusts the playback volume of each track to compensate for the perceived loudness. This way, the user does not have to adjust the volume for each track that comes on.

This is just going to perpetuate the arms race, because it's not hard to spoof that sort of thing by monkeying around with crest factors in transient designers, plus people seem to have quite different preferences for compression/limiting. Just tweaking gain and falling back to compression/limiting past a certain threshold is just going to lead to pumping on some program material.

There is a standard for measuring this stuff, and thanks to years of people like me complaining about jumps in volume during commercial breaks on TV and the like, a loudness-measuring standard has been formalized and is being demanded by broadcast regulators (so it will become standard in audio production software over the next year or three). It's here: http://www.itu.int/dms_pubrec/itu-r/rec/bs/R-REC-BS.1770-3-2...

Waves, Dolby, Izotope etc. have all released plugins or free updates for 1770-3 comaptibility so it should become ubiquitous by mid-decade, as will automatic loudness normalization at the mastering stage, which wasn't previously possible in the absence of an industry-standard metric.

Dewie 2 days ago 1 reply      

> Gapless Playback

I find this to be an incredibly annoying feature, when it is the default. For the most part, I like to listen to songs the way they have been recorded, especially if I'm listening to albums. In addition, many of the albums that I've listened to already have somewhat of a gapless playback, in that one song bleeds into or is immediately cut off by next song. With gapless playback in the music player, then the small gap between the songs end up just being like dialing down the volume and then back up again in the span of one fifth of a second, which sounds silly.

Touche 2 days ago 1 reply      
This post makes me feel bad about myself. How many "passion projects" have I started and gave up on the first time something difficult came up? Too many to count.

There are several lessons to be learned from this post. Perseverance. Starting small. Not sacrificing your vision. Willingness to go as low-level as needed. Patience. This is an inspiring post. I think I'm going to dust off one of my old projects now and get back to work.

endgame 2 days ago 0 replies      
Really good article, but if you're going to bundle libraries, PLEASE provide a way to make configuration fail if you can't get to the system copy.

A lot of projects (libgroove included) will try the system copy and then fall back to the bundled copy if the system one wasn't found. That's nice for users (maybe), but it's a pain for packagers. If the packager just happens to have one of the dependencies installed, the package will automagically find it but it will have incorrect deps.

Further reading: https://blog.flameeyes.eu/2009/01/bundling-libraries-for-des...

dsirijus 2 days ago 4 replies      
Interesting quest. But princess is in another castle, in bed with Peter Pawlowski, listening to Zelda soundtrack in foobar2000.
sandGorgon 1 day ago 0 replies      
Quick question - are people listening to a lot of music through their laptops ?

do note I wrote "through" not "on" - which means that you may still have your music on your laptop, but you could be listening through your mobile (streaming through plex, dlna,etc)

I find the audio quality of listening through mobile phones to be far better than my laptop (and I have a latitude - the highest end of its generation). In general the music player is of far better quality as well (Poweramp, etc.).

The only drawback I can think of is battery consumption, which is easily solvable via a USB cable. It also works great because an incoming call will pause the music and resume when done - as opposed to manually pausing and resuming on the laptop.

And if you are on earphones with a mic, then you understand the true meaning of "gapless" - or do you prefer taking off your foam-covered in-ear 'phones every time you get a call ?

mrweasel 1 day ago 0 replies      
It may just be me being old fashion, but I haven't seen or used a good music player since XMMS. Every single new media player seems want to take up a huge amount of screen space or have a ton of useless feature.

XMMS was great, simple and pretty interface, just add the files you want to play and you could queue up tracks (A feature that seem to elude iTunes ).

ammmir 2 days ago 1 reply      
That's funny, seems like a lot of us have built music players because none have seemed adequate :)

I built CloudPlay (http://cloudplay.fm) because I wasn't satisfied with Mac music players and none supported streaming from YouTube or SoundCloud. At the time, I had also been itching to build my first Mac app, so what better opportunity to learn Objective-C/Cocoa and improve my music listening experience?

It turned out to be a longer journey than it should have. I got most of it working in a month or two, but I spent too much time with unnecessary detours like:

- writing a low-level audio streaming framework that I scrapped once I discovered a higher-level API

- building a basic search index and deciding to use LuaJIT (!) to implement it, thereby requiring me to build my own Objective-C/Lua bridge, only to discover that the OS already provided a full-text search framework

Yes, I could've read the documentation more carefully, but it's also easy to get sucked down a rabbit hole building stuff from scratch for the sake of exploration. Sometimes building at a lower level helps you appreciate and understand the higher level and why you shouldn't always reinvent the wheel :)

aaronem 2 days ago 1 reply      
A general observation, which the comments in this thread have brought to the point of perceptibility:

Perhaps only in the field of music management and playback is it considered so reasonable to suggest that an acceptable solution to lousy user interface design is to modify the otherwise well-formed data presented by that interface, rather than just to fix the interface and be done with it.

I'm not sure why this is, and I don't mean by it to denigrate people who develop music player software, but it does seem awfully odd to me by comparison with pretty much any other specialization of software design.

lawn 2 days ago 0 replies      
What a great effort you've done! I'm certainly tempted to try it out on a raspberry. I would appreciate a tutorial article on how to get it running.
baddox 2 days ago 1 reply      
The thing about loudness compensation is that it only further reduces the dynamic range of your music collection (unless you have programmatic control over the analog gain of your amplifier, which you probably don't), so the arguments for it shouldn't really appeal to dynamic range.
eqbridges 1 day ago 0 replies      
Great idea for a project! I too was a big fan of Amarok, and have been disappointed by music players since having used it.

One thing I haven't seen mentioned, which Amarok, excelled at but other players haven't, was dealing with large (>100gb) collections hosted over a network. Hopefully you'll include this in your testing. As well Amarok allowed you to store metadata in arbitrary databases (which QT had support for) hosted on a network, thus allowing for metadata to be shared by computers for a given account. Quite common nowadays is to use SQLite locally; however SQLite does not support working over a network :-/

Anyway, kudos and fare-thee-well!

johnchristopher 2 days ago 0 replies      
> At some point I plan to write a tutorial article detailing exactly how to get this application running on a Raspberry Pi. It's mostly straightforward but there are enough "gotchas" here and there that I think it could be a useful article.

I'd be really interested in reading that.

callesgg 1 day ago 0 replies      
Really really nice work thought the loudness videos was very interesting.

Personally I have moved on to spotify and more or less abandoned my old music collection.

neumann 1 day ago 0 replies      
I will definitely be trying this out. I have been very happy with gmusicbrowser.
Edmond 2 days ago 3 replies      
seems like a lot of work...any reason you didn't just hack on something like rhythmbox? It has an API for interfacing via a browser.

I built a python plugin with a web and android interface a few years back: http://code.google.com/p/rhythmote/

Still serves my needs excellently.

jxn 1 day ago 0 replies      
xmms2 seems like it fits the required bill the best, though the project is pretty stagnant and there's never been a real release. It does seem to get all the big issues right.
kudu 2 days ago 1 reply      
Just wondering, does this modify the actual music files?
FranOntanaya 2 days ago 1 reply      
As simple as Audacious is, I've stuck to it for the LADSPA and Sample Rate conversion filters. I wouldn't take UI improvements over sound itself.
romainvv 1 day ago 1 reply      
I was wondering what is the differences (pro/cons) between DLNA/UPNP protocols and your solution ? With a XBMC server, you can play song over network from any sources thanks to UPNP
thebiglebrewski 2 days ago 0 replies      
Hey way to go Andrew! -Zach
Jupiterlyght 1 day ago 0 replies      
Badass. Nicely done, sir.
TDD is dead. Long live testing. heinemeierhansson.com
300 points by gerjomarty  1 day ago   159 comments top 59
programminggeek 1 day ago 2 replies      
What DHH describes is called the test pyramid (http://martinfowler.com/bliki/TestPyramid.html), which despite the fact that DHH seems to dislike Uncle Bob, it is something Uncle Bob has demonstrated and advocated multiple times in very sensible ways.

The bigger thing DHH doesn't mention or explain is that Basecamp is designed to be intentionally simple. Much of the complexity that you get in client work where you don't control the requirements Basecamp is able to simply avoid by not building.

The idea that if you own your own product and control the requirements that you can have a MUCH cleaner codebase without needing as many tests is 100% true. But, David didn't say that and it's a shame. It's a much more powerful point because there are cases where clean architectures are valuable and the standard Rails MVC pattern isn't enough. At the same time, there are plenty of times where the basics will get you a very long ways. If you control the complexity, simple MVC might be all you ever need.

Everything in software development involves managing requirements and tradeoffs. If you simplify requirements, you reduce complexity. You reduce complexity, you reduce surface area required to test.

It's like weight reduction in cars, you reduce overall weight a few pounds, you can also reduce an extra 5-10 lbs. in required components to support the added weight/complexity.

I just wish that people could discuss these ideas with nuance and empathy towards other project's requirements. Some projects require a lot of tests and have significant inherent complexity, some don't. A one size fits all philosophy might sound appealing, but it doesn't work.

Don't throw the TDD baby out with the bathwater.

twerquie 1 day ago 6 replies      
> Test-first units leads to an overly complex web of intermediary objects and indirection in order to avoid doing anything that's "slow". Like hitting the database. Or file IO. Or going through the browser to test the whole system. It's given birth to some truly horrendous monstrosities of architecture. A dense jungle of service objects, command patterns, and worse.

This is DHH's central argument, he is once again defending his "there are only three places to put code" application design and the monolithic Rails architecture. We see him, time and time again, sniping at people who outgrow those patterns but still want to use Rails. People who do want fast and isolated unit tests, who want encapsulated, reusable service objects and people who are perhaps building something more complicated than a TODO list.

He goes as far as to subtly deprecate unit testing, something which is incredibly vital in a dynamic, loosely typed language such as Ruby, where monkey-patching other's code is more of a rule than an exception. In Ruby, unit tests stand in place of static compiler checks. I haven't heard a strong argument against them nor a replacement for them. The binary notion of "the whole application works" or "the whole application does not work" does nothing to quell the critics who say that Ruby and indeed Rails projects are brittle and difficult to refactor.

I love Rails and think it's a fine product, but I don't understand its leadership strategy, doggedly preserving web application design as it existed in 2004.

> "Rails 5 will be renamed to Basecamp. This will help to end confusion over which types of apps to build using Rails." @markbates

JunkDNA 1 day ago 2 replies      
I've been slowly coming to this realization myself lately, I thought our situation was just outside the mainstream of what most people work on, but maybe not.

Our team builds data-intensive biomedical web applications (open source project for it all here: http://harvest.research.chop.edu). Much of our UI is data-driven, so many of the bugs we encounter are at the intersection of code, config, and unique data circumstances. While a lot of the low-level components can be unit tested, individual apps as a whole need functional testing with real (or real enough) data for us to consider them sufficiently tested. The effort required to mock out things is often higher than just cloning production and running new code on top of existing data. This gets complicated in a hurry when you also have to introduce schema migrations before you can test. It's almost like we need to be doing integration testing, far, far earlier than you would normally.

Furthermore, the reality is that what started out as a Django app now has almost as much client-side JavaScript as it does Python code. This complicates the testing picture further, and I suspect many teams pushing things further in the direction of true web applications are starting to bump into this more and more.

peeters 1 day ago 3 replies      
I used to be dogmatic about TDD. Then I joined a team where management doesn't value unit testing that much, and so I got a lot less religious about it.

What I am missing now isn't the test-first mentality. I honestly don't think there's a quality advantage to writing the tests before the code. And the danger of ardent TDD was always investing a ton of time ironing out a unit to perfection, only to realize you missed the forest for the trees and the unit, while perfect, has no place in the overall solution.

Rather, I miss the side benefits that come with it:

- Automated tests actually get written.

- It improves development cadence when you're writing a chunk of code you don't really want to be writing (by setting mini milestones).

So now I occasionally practice TDD for those reasons.

tragic 1 day ago 4 replies      
I can certainly sympathise with the abstinence-only pride and shame cycle. My projects typically start with a test-first approach, which evaporates when the clock starts ticking.

It seems to me, first of all, that there's a threshold of software complexity, beneath which writing tests is a net loss in time and productivity. If you have (as I often do) a couple of hundred LOC spread across a few files, with one or two models/views, then there is negligible gain to automated testing - by the time you've set up/torn down the test DB, you could have refreshed the page in a browser 5 times and seen all the error messages in there. I accept that this threshold can be hit very rapidly once you get towards a modest website, even; but my day job basically involves writing toy SPAs with a very simple API behind the scenes, built and then left chugging along until they're out of date, so I often sail under it.

A bigger anxiety I have about TDD is that, while there are no end of resources on using tests to drive software design, I haven't come across much about good design of tests (suggestions very much welcome). I rarely have confidence that my tests are any more use than assert_true(true). You test for the constraints you anticipate when you write the tests. I don't trust my code-fu that far, and so my tests inherit their author's impostor syndrome.

mwilliamson 1 day ago 1 reply      
I think a problem is that we tend to overgeneralise our own experience. When we try out ideas, such as TDD, we (hopefully) get a good feel for how they work (or don't work) for us. Reading articles or getting advice might help us to understand and use those ideas better, but the impression is still based on your personal experience. That's fine when you're talking about how you like to work, but I think it comes unstuck when you start trying to apply it to other people. Even if you read other people's perspectives, it's often tempting to consider those that disagree to be idiots (although you might not be so blunt), and those that agree with you to be sensible.

I think it's more productive to try out a technique, try out some variations based on others' advice, and then share the experience: I found this technique useful in these situations, but not in these. Here are some tips that I found effective, and here's what didn't work for me. Then, people can try out techniques for themselves, and learn from your experience.

If we want to generalise what's effective and what's not for software development overall, then I think we need a much rigorous approach then getting a vibe from the community. I've only ever seen a handful of studies that try to be unbiased and somewhat scientific in assessing techniques like TDD.

joshuak 1 day ago 0 replies      
TDD on the unit level does seem to lead to high granularity, and complexity in the system as a whole in favor of simplicity in test construction. However, some of the problems described sound like they are coming from a premature optimization mindset rather than TDD itself.

Once I learned about Cucumber and the idea of stating a requirement/test that you can't even parse yet, much less have a test for, much less have the code for, I started liking the idea of TDD as a wish list pyramid.

This allows you to think in terms of the big picture requirements, and then drill down as required to fulfill those requirements. Because you've spec/documented your design on the way down to the unit tests you can always step up a few levels and reconsider, and rewrite architectural "tests".

For example my first test is "I have a software tool for editing photos". Now I implement this test by checking if there is an executable in a path. Fail. Now I make a hello world exe for that path. Pass. Now I write a new test: "It opens an OpenGL window.", and later "it uses a mvc pattern", "the edits are represented as a scene graph", etc. all the way down to specific logic.

You later realize that a scene graph is not the right way to model your process, so you change that test to a different requirement, the altered requirements now redirect the TDD flow of an entire section of the application instead of just unit by unit.

michaelfeathers 1 day ago 3 replies      
This is a stunning opinion considering the fact that there are many Rails shops that can't turn around a build in less than an hour because you can't test models independently of the database.
pixelmonkey 1 day ago 1 reply      
I generalized DHH's conclusion re: TDD in my blog post, "XDDs: stay healthily skeptical and don't drink the kool aid":


"I list one of my skills as thought-driven development. This is a little tongue-in-cheek; software engineering over the last few years has developed a lot of XDDs, such as test-driven development, behavior-driven development, model-driven development, etc. etc.

Thought-driven development doesnt actually exist, but by it, I simply mean: perhaps we should think about what were doing, rather than reaching for a nearby methodology du jour..."

adrianoconnor 1 day ago 9 replies      
I dislike mocks. I've never seen the point in testing code against an entirely fictional representation of the most complicated and slow part of the system, just because it happens to be more convenient. Of course it's more convenient. The only compelling reason I can see for mocks is when you've got code that hits external live-APIs that don't give you any real option for automated testing (E.G., reading from and posting to the Twitter API).

If an app is worth writing, and worth writing tests for, do it justice and test the whole shooting match. Yeah it's hard, but that just makes it all the more worth doing. Automate your tests so that they cover everything that is important, from DOM elements on a dynamically built webpage to your model (and therefore the data that gets written to your SQL database), but don'tpretend that stubs are substitutes for this. If your model relies on a database, let it rely on the database during the tests too, otherwise what exactly are you testing?

basicallydan 1 day ago 1 reply      
Hear, hear. Dogmatic adherence to any system is dangerous. It goes along with being dogmatic. It's important for developers to read what others have done, see how others have solved problems and stand on the shoulders of giants before thinking for themselves, instead of just blindly accepting "best practice" as the best practice.

What I like to do with TDD is use it whenever it's the quickest way to develop something with a level of confidence that is appropriate to the situation.

If I'm creating an HTTP API and someone else is writing the front-end, I'll create unit tests that spin up my API and make requests to it to ensure I get the correct responses.

If I'm in the middle of a codebase somewhere and there's a function which is only ever hit after a bunch of others things, I'll probably write a few tests for that, too.

Just like religious dogma, we are free to pick-and-choose what we do with TDD, when we feel it's most appropriate. Of course, don't overdo it to the point where the code suffers for it.

chrisdinn 1 day ago 1 reply      
dhh has spent so much of his career actively leading Rails that it's tough to tell the difference between his personal evolution as a developer and general trends in the industry. I don't think he even attempts to make a distinction in this essay.

I worry about a push away from unit tests. I can't imagine having to refactor a large application with only system-level integration tests to work with, especially in a dynamically-typed language like Ruby. I haven't written a Rails app in a long time though, maybe these days it's easier to just start over than to refactor.

But any bad day for dogma is a good day for the rest of us. Write software using whatever methodology works for you and always question the value of so-called "best-practices".

rhizome31 1 day ago 2 replies      
> Over the years, the test-first rhetoric got louder and angrier, though. More mean-spirited.

Where are those mean TDD zealots? Can you point me at blog posts or mailing list messages displaying such behavior? I've never seen it personally. On the other hand, now and again a blog post like this comes up that's full of disdain towards the practice of testing first. I do TDD because it helps me get my work done. I'm happy to help others write tests if they wish, but I'd never look down on another developer because he or she doesn't use this tool. Some people like drawing diagrams, some people like to use an IDE... Do what works for you.

agentultra 1 day ago 0 replies      
The pyramid works rather well in my experience.

I still practice TDD though. When I started working on a binary tree space-partitioning algorithm a while ago for my talk at Pycon 2014 I started just writing code and spent a precious couple of nights banging my head against the wall because it was always off and would come up with intermittent errors. I had figured that I knew the data-structure and algorithm well enough and this is one-off code so who cares? So when I was desperate I had told a couple of good friends about my problem and they reminded me: I hadn't written the tests figuring that I'd save myself the time.

TDD has just been a part of my process for years now that I don't think I can even write good code without it. Even in statically type-checked languages. The practice forces me to specify the contracts and behaviors of each piece of my code before I write a single line to implement it. That loop of test, write, pass/fail offloads a tonne of complexity from my mind. It also helps me to discover where my assumptions were wrong in the design process when I notice some tests require too many mocks/stubs/assumptions about state or are simply brittle. Along with a keeping a rigorous development journal it's one of the most powerful tools in my arsenal.

mwsherman 1 day ago 1 reply      
As rhetorical gambits go, the what other people do is religion is getting pretty old.

Its meant to reflect on the speaker as the voice of reason among the thoughtless. Who wouldnt want to think of themselves that way? Im the smart one who sees through the dogma!

But it doesnt have that effect anymore mostly it makes the speaker look someone who disrespects his readers.

davedx 1 day ago 1 reply      
Perhaps design by contract is the way forwards? Explicit runtime validation of the flow of data through code at each step in the system.

As a frontend developer, I have been moving towards a greater emphasis on functional & integration testing. We're also using scripter here, a test tool that actually compares screen caps with the actual on-screen state of our applications. So a purely visual approach.

There's a wonderful world of testing tools out there. I can imagine it's incredibly daunting to a newcomer trying to decide which to pick up and run with, especially with so many job specs specifically asking for "TDD", and now with DHH saying this.

speleding 1 day ago 1 reply      
I agree with the sentiment but, despite the proviso that we should not go anti-TDD, I still think it's too strongly worded.

If you are rapidly prototyping something then writing tests first is a hinderance. But if you have well defined requirements then writing tests first will save you time.

What's best will differ depending on whether you're designing a web app or building an interface to an SAP system or an external gateway. (My guess is that DHH does very little of the well defined interface building type stuff)

erichmond 1 day ago 1 reply      
I think a big part of the TDD phenomenon happened when the "big name" rails consulting shops insisted on using it.

In consulting, I think this makes all the sense in the world.

a) When you hand off code, you can demonstrably prove what you handed off works.b) You can take the business objectives of whoever you are consulting for and translate those into high level tests, which helps you stay focused.c) You get to charge double what you'd normally have charged the client.

When running a in-house team at a startup none of those bullet points translate, and while TDD does offer other benefits, really at the early stages of the game every line of code you write needs to solve the problem you're trying to validate.

gerjomarty 1 day ago 1 reply      
DHH's keynote from the first day of RailsConf, in which he talks a bit about testing and the general perception of writing software as "science", is online here:

Part 1: http://www.justin.tv/confreaks/b/522089408 starts at 11:00)

Part 2: http://www.justin.tv/confreaks/b/522101045

anonymousdev 1 day ago 1 reply      
All the guys crying about the prevalence of TDD are the ones who are lucky enough to live in a tech hub from a developed country. In my area I'm the only one who knows about TDD/BDD.

You want to know how testing is done here?

- 80% of projects have no testing whatsoever

- 20% are manually tested by students paid with 3$/hour

Unlike others, I would love to be surrounded by "TDD zealots or fanatics".

TimPC 1 day ago 3 replies      
My biggest problem with TDD is that it tends to take people away from whiteboarding and thinking about architecture and into writing everything as if it were a recursive problem -- write test for base case, code base case, write test for next base case, code next base case, write some significant test case, code general case but often this is completely the wrong pattern for solving a problem. This may be an example of doing it wrong, but it seems to be the practice experts promote when using TDD on a problem (it's very common in both blogging and books).

There are great blog posts of this including Dave Thomas getting horrendously bogged down in writing a Sudoku solver in a situation that could be well handled by going to a whiteboard and thinking about the top level behaviours more than the code.

j1z0 1 day ago 0 replies      
Yes let's move towards more coarse grained tests so we can lets the fine grained subtle bugs slip through. You know stuff like heartbleed. Theres a good idea.

To be fair a lot of unit test regimes wouldn't have caught something like heartbleed. Specifically cause it's a security issue and not necessarily a functional issue. But the point is software is damn complex and easy to screw up.

Maybe rather than doing ultimately less test (system instead of unit). We should be slowing down doing even more test at ALL levels (unit, system, GUI, security, performance, whatever) and building something to the best of our abilities. Or does that even matter anymore in the MVP build and sell quick software world?

shime 1 day ago 1 reply      
where is this Rails train going? it used to be cool, but it looks like it's heading towards the chasm now.

posts like this just encourage my opinion about the Merb merge with Rails being a disaster which helped Rails transform from "PHP in Ruby" to something beautiful to work with, while leading to self-destruction of Merb.Rails gained a lot of traction and is now abandoning any good decision Yehuda and other great developers made.

this post simply sums up to: "I don't know how to test-first Rails applications, and I've invented Rails. we're abandoning test-first." admitting you have a problem is a first step in fixing it, but this is not going to fix it in the long run.

raverbashing 1 day ago 1 reply      
While the idea of testing is good, TDD is so full of stupid quirks and BS disguised as "best practices" it's not even funny

These often result in slow (and sometimes useless) tests. If you want to use TDD to have more time at the foosball table, great

Tests that only test one thing? So I have 30% tests/condition check (or less) and the rest as boilerplate?

"and I do not write software test-first"

Me neither. It's idiotic

Also, TDD fanatics have a tendency of building software that has great coverage and thousands of tests, but fail the simplest of smoke tests.

The world has not had TDD for a long time, and software got delivered. (And sometimes much more stable and durable than today's "one update per week" software)

tomeric 1 day ago 0 replies      
I've been feeling this way about testing for a while now and I'm glad that DHH wrote about it so I don't have to feel "wrong" or "embarrassed" by it anymore.

I personally have gone a bit further and only write tests after a successful incarnation of a project (that means customers) that I want to keep developing, or if writing and running the test itself costs me less time then F5'ing a page or mucking around in the rails console.

I have noticed that it's much easier to throw away code that I haven't invested a lot of time in and usually the second time I write it (with tests), I have a much clearer idea of how to implement and test something.

erewh0n 1 day ago 3 replies      
I fully agree that TDD has turned into a cargo cult obsession for many developer shops. The benefits of unit tests are usually for the developer, but in over abundance can lead to inflexibility and debt when your system needs to change.
itsmonktastic 1 day ago 0 replies      
I don't think people have a great consensus on what "TDD" really means, so there's a lot of "Do you do TDD? You should do TDD!", people taking mixed approaches that they sort of make up or copy from a quick blog post, then deciding that TDD sucks or rules.

For example, this article seems to think TDD is mostly about unit tests (and I've definitely seen the same opinion elsewhere). But somewhere else, specifically GOOS[0], the TDD cycle always starts with an end to end test, with an inner unit test/development cycle to get the test passing. I think this is really important, because if you don't have end to end tests, it's a lot harder to refactor your code in significant ways, and can leave you with extra work maintaining all of your unit tests.

Another thing is "fast tests" as resulting in "a dense jungle" of objects. At least in GOOS, the assertion is that a larger network of small objects is better than a smaller network of large objects. I'm not going to argue the benefits of one way or another, but what I mean to point out is that (at least some) people use TDD because they think it will help them write a more maintainable code base, and aren't just writing code to make their tests fast for the sake of fast tests.


mncolinlee 1 day ago 0 replies      
As someone who wrote automated compiler tests many years ago, I believe that the right balance for a developer is to write an example test or two for QA to work from for writing unit tests for her new features.

IMHO, developers should not be in the practice of exhaustive, automated unit testing, but should write sanity checks for continuous integration and after deployment smoke tests to make sure nothing fundamental broke in the build. It's easy to take TDD too far.

kristiandupont 1 day ago 0 replies      
My javascript coding habits and environment are now finally reaching a point where I am consistently writing tests where I find it necessary, and oh boy is it nice! Until now, the simplest refactoring would scare the shit out of me.

Thus, I am now doing more TDD than I did before. I just find that it's much easier to write testable code if you write the test first, and I like the satisfaction of turning a red lamp green. I don't do it all the time, certainly not, but I do it quite a bit with parts where my intuition tells me that I am likely to destroy something in the future. TDD is nowhere near dead to me.

room271 1 day ago 0 replies      
I mostly agree with this post, but I do wonder whether the difficulty of doing unit testing the OP describes is partially related to their use of RoR and the associated (complex) object-oriented design.
Singletoned 1 day ago 1 reply      
I think he's conflating the separate concepts of Test Driven Development and Unit Testing. They can be done independently of each other.

I agree that many other people also conflate them, and are zealots for (or against) them together, but they are still separate concepts.

He does make some good arguments against Unit Testing, but he makes none against TDD.

AYBABTME 1 day ago 0 replies      
"I proclaim that X is Y and as of now, it's a truth that holds itself. We need to correct every broken mind to acknowledge this new self evident truth."

   But first of all take a deep breath. We're herding some sacred    cows to the slaughter right now. That's painful and bloody. TDD   has been so successful that it's interwoven in a lot of    programmer identities. TDD is not just what they do, it's who   they are. We have some serious deprogramming ahead of us as a    community to get out from under that, and it's going to take some    time.
Not a comment on the author, or on the general idea on tests (which I mostly agree with).

typicalbender 1 day ago 0 replies      
> The current fanatical TDD experience leads to a primary focus on the unit tests, because those are the tests capable of driving the code design (the original justification for test-first).

I don't agree with this blanket statement. For web apps at least, doing outside in TDD helps to create a nice ratio of integration tests to unit tests. By writing some high level happy path integration tests to drive functionality and then filling in with smaller functional units and unit tests I think is a better way of going about testing than starting with the units. TDD is a hard thing to get right and unfortunately when it goes wrong it can be very painful.

darrencauthon 1 day ago 0 replies      
This article is hilarious. If you want to see why TDD, unit testing, isolation, etc. are important, a Rails app written the "Rails Way" is the first place you should look.

They all look the same. They start out with great tests, verifying that the simplest CRUD operations are covered. Then as the changes come, the tests fade away. Their big browser-driven tests are so slow, brittle, and difficult, the question of "should we test this?" becomes paramount as they try to convince themselves that their code doesn't need tests. And even the most ardent TDD proponents and green-band wearers are suffocated as they have to admit that, yes, for the business' sake we cannot spend days building a test harness to test if a new field is required.

I hope this article is the myth-buster to the fantasy world that the Rails community takes testing seriously.

JonoW 1 day ago 0 replies      
Whilst I'm generally pro-TDD (and personally haven't seen or experienced any snobbery against folks who are not), I can see how test-first can seem grating to people. However, I would say TDD, a long with a more decoupled architecture, has a primary advantage over system-test only; division of labour. By not relying on databases or web-services to be implemented, we can work more in parallel, as long as the interfaces to these external systems are stable. If you only have system tests, you have to work in sequence.
dev360 1 day ago 0 replies      
Ah! An un-brainwashing from no other than Rails brainwasher in chief!

Rails has always had this fundamentalist/cult/group-think perspective on almost everything. No wonder they go overboard.

tomordonez 1 day ago 0 replies      
Even though I admire DHH's contribution to software he can be very extremist sometimes. Follow him on twitter and you see him taking extremes complaining about every other subject, including a lot of cursing.
kaonashi 1 day ago 1 reply      
I've written software test first, and I've written it cowboy. Writing the tests first leaves me with better architecture and fewer defects.

Maybe you do better with the cowboy hat on, I don't.

sergiotapia 1 day ago 0 replies      
>Test-first units leads to an overly complex web of intermediary objects and indirection in order to avoid doing anything that's "slow". Like hitting the database. Or file IO. Or going through the browser to test the whole system. It's given birth to some truly horrendous monstrosities of architecture.

Oh yes - I agree completely with this.

I'm not sure I agree with testing things with Capybara though. How are you sure your backend controller actions are doing what they're supposed to be doing? Sure your browser might render what you need but what if a model attribute is set to false instead of true? How do you account for that using a frontend test suite?

mannykannot 1 day ago 0 replies      
TDD is but one example of the apparently inevitable fate of good ideas in software development: it becomes the One True Way, universally applicable, and the new litmus test for distinguishing Real Developers from troglodytes. Whenever a developer gets a new tool, she is supposed to throw out the old one (there will never, of course, be more than one in the toolbox at any given time.
sebnukem2 1 day ago 0 replies      
"Test-first fundamentalism is like abstinence-only sex ed: An unrealistic, ineffective morality campaign for self-loathing and shaming."

Amen for a perfect analogy.

goldenkey 1 day ago 2 replies      
This post is amazing. I can't stand the TDD zealots who I've worked with in the past. They act as if they aren't even programmers, they are test-framework gurus first and foremost. Product is #1 in my book. Tests are needed but these guys would cowboy around taking weeks to work on a task because they'd use the excuse 'gotta write tests...' This post is a breath of fresh air.
qwerta 1 day ago 0 replies      
I use TDD extensively and it helps me a lot. It works like version control for progress. It splits problem into small parts which can be solved separately. I can work on very hard problems, without fully understanding them.

But I agree: for simple CRUD web apps TDD is overkill.

pjmlp 1 day ago 0 replies      
Fully agree. I never saw TDD working for GUI code or algorithm design.

Just plain testing input/outputs of functions/methods that can work as independent black boxes without any dependencies to outside systems or closed source binary libraries.

stagas 1 day ago 0 replies      
Off-topic, but I like seeing more and more programming related articles hitting the frontpage lately.
enginerd 1 day ago 0 replies      
I've often found ideals don't quite translate into practical application. Within economics, political theory, etc., I think TDD also deserves a place as a 'wonderful ideal' that fails simply because it does not take into account it's implementing process: human action. Not to mention that the way many programmers learn and code today seems at odds with the structured nature of creating tests.

Maybe there is a better approach to writing maintainable code than TDD? I imagine a world where all code is understandable, readable, and instantly recognizable, but once again we arrive at the fork where the 'ideal world' deviates from the real one in which we all reside. Shame.

beamer99 1 day ago 0 replies      
The efficacy of TDD is dependant on language,tooling and experience. You want to spend most of your time writing the problem, AFTER you have thought about it. Developers complain about TDD when they can't think through their problem clearly and use it as a tool to validate bad thinking. TDD in this situation will naturally feel like running in heavy lead boots, since progress will be slow. Very surprised that the test pyramid is not being discussed as much as it should.
graffic 1 day ago 0 replies      
In a positive way I miss some examples of "hurting my designs" and "what that approach is doing to the integrity of your system design". Why TDD is doing that? Could you show me where do you have problems? That would be a nice piece of feedback to learn.

The post feels like a rant mixed with fallacies and a salt of contempt. I'd expect it from Zed Shaw. I'm sure Zed could do it much better.

TDD is dead and the third word in the post is "fundamentalism". Yes, nobody can say that fundamentalisms in tools are good. Every tool has its use cases. Although it doesn't justify the "TDD is dead" motto. Correct me if I'm wrong but it looks like a "Straw man" fallacy. Half of the post is dedicated to build a straw man of fundamentalism nobody can deny.

The other second half is focused in unit tests. While he talks about "Test-first units", all unit tests (written before or after) have the aforementioned issues. Unless they're not unit . Thus we're introduced to other tests types that are not unit.

@programminggeek in a previous comment talked about this, is the test pyramid (http://martinfowler.com/bliki/TestPyramid.html). In this moment the conversation is outside the TDD scope, but discussing about how good or bad are different kind of tests. Again, nobody can deny the benefits of having different test types and not only unit. IMHO is a another red herring fallacy.

So what did I get from it?

  - Fundamentalisms in tools/paradigms are bad.  - DHH has some problems in his designs he cannot unit test.  - Using only unit tests is bad, you need more high level tests.  - Try capybara.

_pmf_ 1 day ago 1 reply      
The problem is that people think test driven design leads to good design. It does not. It does not even lead to design at all. All it does is create testable code. This code might have good design, or it might not.
jordanmessina 1 day ago 1 reply      
TDD is so prevalent in the Rails community, it will be interesting to see what happens now that their leader has discredited all the benefits of it.
bulte-rs 1 day ago 0 replies      
Finally... acknowledgement from someone famous.

TDD is wonderfull in theory, just no missing edge-case detection; stuff you easily spot when using a "hybrid continuous testing methodology".

I'd say: Code away! Just make sure you have tests for the important stuff when you 'check in' your stuff.

Offtopic: I should become famous/respected in "the community" so I can push this kinda stuff forward faster internally.

Codhisattva 1 day ago 0 replies      
"Blank is dead" is the new "blank is the blank for blank".
tboyd47 1 day ago 0 replies      
If you take this view, what is your approach to testing processes that use external services? External services tend to fail randomly, especially if you are in a corporate setting.

Is some amount of decoupling desirable? Or is it just like databases, file IO, browsers, etc.?

anilmujagic 1 day ago 0 replies      
Finally some common sense. I never liked this TDD madness.
ovechtrick 1 day ago 0 replies      
All guilt I've been feeling about not always writing tests first... Gone! Phew.

I think point of this is... TDD is still good. But it's not ALWAYS good. A great way to frame thoughts, but writing tests last isn't "wrong" either.

vincentwang 1 day ago 0 replies      
Automatic test is good, but I doubt the effects of TDD, at least it does work well for me, maybe good for others
tuke 1 day ago 0 replies      
The response is as religious as the subject; and I don't think the AA allegory is very respectful.
Loque 1 day ago 1 reply      
remon 1 day ago 0 replies      
Them bait titles. Make it stop.
Space Monkey dumps Python for Go spacemonkey.com
298 points by jtolds  2 days ago   203 comments top 30
chimeracoder 2 days ago 6 replies      
This article doesn't address one of the biggest benefits I've noticed in switching from Python to Go.

I've been using Go for almost two years now. Like OP, I am/was primarily a Python developer. Like OP, my first Go project was a time-sensitive rewrite[0] of a project from Python (tornado) to Go.

Even though I was an experienced Python developer, the Go rewrite was marginally (~20%) faster[1]. But the real benefit came from the subsequent development - refactoring, rearchitecting, and maintaining the project on an ongoing basis. Go was designed to make it easy to scale the maintenance[2] of software, and on this one axis, it absolutely blows every other language and environment I've used out of the water.

For a fresh project, I'd say Go is about 10% slower to write than the equivalent Python[3] for the average case. But the time/cost savings are very quick to come thereafter.

[0] I would absolutely not recommend doing time-sensitive rewrites in general, but that decision was a separate matter.

[1] Some of this is due to the nature of rewrites in general, but the fact that it wasn't slower to use a language I'd never used before says something about the language.

[2] Scaling software development as teams grow is very different from scaling software as users grow.

[3] Assuming comparable familiarity with both languages, which is rarely the case, of course

sigil 2 days ago 1 reply      
It sounds like the cost of context switching between these very different workloads (crypto, disk I/O, network I/O, protocol buffer parsing and formatting) could be improved in Twisted.

Any idea where the overhead comes from? Twisted, or the Python interpreter itself? Is this a GIL performance issue? Or perhaps even lower -- something here is really hostile to CPU cache?

I realize this is a matter of taste, but my favorite async framework is still the kernel. Write small programs that do one thing well (and thus have pretty uniform workloads) and then let the kernel balance resource usage.

After continuing to hit walls with the standard Python Protocol Buffer library, we wrote our own that was 5x faster than the barely-documented C++ Python Protocol Buffer compiled module support.

Ugh yeah, the standard Python protobuf library is pure python and horribly slow. And it requires code generation -- in a dynamic language! The C++ one is faster, but also requires code generation and is just nasty to work with.

Not that this matters much to you at this point, but I have a small C/Python protobuf library that's 10x faster than the standard Python protobuf: https://github.com/acg/lwpb

PS. I see you're in SLC area -- me too. We should talk tech shop in person sometime!

sandGorgon 2 days ago 1 reply      
We rewrote Twisted Deferred handling to be 30% faster.We optimized the Twisted Reactor event loop to not only do less constant work, but to prefer incoming I/O.

...We spent long nights poring over profiling readouts and traces, wrote our own monitoring system, and wrote our own benchmarking tools

... We enabled cgroups on our Python process to tightly control memory usage and swap contention without requiring a different Python memory allocator scheme.

This is very interesting for the rest of the Python/Twisted community - now that they are not using this (and so is'nt part of the secret sauce), I wonder if they are willing to push this out as a patch/blog post ?

cgag 2 days ago 2 replies      
I like seeing people embrace static typing, but it makes me sad that it's a language where you can't even write a container (a map/dictionry/linked-list/etc) without giving up type safety.

I recognize that Golang is filling a gap, letting people get static typing without having to learn much new stuff, and there's value in that, but I think Go enthusiasts should read these great posts by Tikhon Jelvis with an open mind:



wting 2 days ago 2 replies      
I think people are rediscovering the benefits of static typing for performance and correctness reasons. The latest generation of statically typed languages[0] all have some level of type inferencing which helps.

If Python is fast enough for you, its a fantastic language. The problem is once performance or codebase demands scale, dynamic typing rears its ugly head and there are no simple solutions. At work we sidestep this issue by writing a plethora of tests, but now dynamic typing productivity gains are offset and we spin up a lot of AWS instances for performance.

[0] Go, Rust, Scala. Haskell and OCaml have had it for a while.

leccine 2 days ago 6 replies      
Well it is kind of obvious that a compiled language is going to be faster than an interpreted one, especially the way how these interpreters work (https://wiki.python.org/moin/GlobalInterpreterLock). You can fool yourself with Twisted (or in Ruby with EventMachine, Goliath etc.) but it gets so just a bit ahead. The surprising fact for me is that Go is not as much faster. I was expecting a bigger gap in the performance between Go and Python. Understanding where your bottlenecks are is crucial and it is not super hard in Go. https://www.datadoghq.com/2014/04/go-performance-tales/ I guess the SpaceMonkey guys might further improve the performance just by doing a thorough analysis on their code.
melling 2 days ago 2 replies      
"So in the bottom of the ninth, we decided to transliterate our 90k lines of Python directly to Go, line by line.

It took us about 4 weeks."

How many people worked on the project? What's the build time on a program of this size?

hyp0 2 days ago 4 replies      
Wouldn't java be the natural rewrite, for performance speed up? Java is betwen Python and C, in terms of ease-of-use and performance. They mention a C rewrite, but not a java one...

I guess the concept here is that Go is between Python and Java: (much of) the ease of use of Python + (much of) the performance of Java. The type system literally straddles the dynamic and static.

[ I also detect an enthusiasm for cool, new tech for its own sake (despite risks and cost, or whether it's actually better or not - hell let's find out!) ]

andybak 2 days ago 5 replies      
I've got a completely data-free feeling that Ruby people hitting performance bottlenecks seem to reach for node whilst Python people have a tendency to look at Go.

Does anyone else think that this rings true? And if so - is it a cultural thing?

jessaustin 2 days ago 1 reply      
After all of this optimization, we got up to 1.2 MB/s.

Ouch. That was a lot of work for 0.2 MB/s. The next 2.8 MB/s was also a lot of work, but it seems conceptually more straightforward.

wisty 2 days ago 1 reply      
That's actually kind of shocking. I thought it would take way more work to port from Python to Go, and a 400% speedup is way less than I'd have expected (though this is string handling, and the Python was already brutally optimised with C modules where it counted).
phaedryx 2 days ago 1 reply      
I'm curious what the memory usage was like before and after.
TD-Linux 2 days ago 0 replies      
I wrote some Python to run on an OpenWRT (MIPS-based, 400MHz) router that interfaced with an Xbee radio and ran a web interface. I quickly discovered that what I expected to be IO-bound was in fact CPU-bound - reformatting the data and all the related text operations were fast enough after optimization, but only by a hair.

Our solution was to switch to a dedicated ARM board (beaglebone) attached to the router. But I'm definitely going to take a look at using a compiled language now, as the codebase is still very small.

dekhn 2 days ago 1 reply      
One thing to mention, since the OP talks about developing for ARM:

I was surprised recently: first that Go itself bundles a cross compiler (you can easily download Go on x86 and compile ARM binaries with it), second that this made developing for Raspberry Pi and similar platforms very productive, and third that many Linux distributions have QEMU and set up binfmt translation so ARM-compiled binaries run on x86 with no extra effort.

impostervt 2 days ago 1 reply      
Is anyone else getting SSL errors on the site?
dalek2point3 2 days ago 2 replies      
Can someone tell me how much control GOOG has over the development of Go? I'm interested, but worry that is this another GOOG "open source" project that they have a huge say in.
dilap 2 days ago 1 reply      
I'm curious as to how they did a line-by-line port of the twisted program -- twisted's async (plus coroutines-light w/ via generators) seems like a significantly different model than goroutines + channels. I wonder if they actually implemented Deferred in Go?
micro_cam 2 days ago 1 reply      
I really hope the go compilers will soon support shared object output so we can write python extensions in go instead of having to fully dump one for the other. I know it was a maybe for go 1.3 but I haven't heard much chatter and fear it will get pushed backed.
flavoie 2 days ago 1 reply      
I'm curious if they tried Cython. I've read that you can achieve up to 35% speedup just by compiling python code, plus you can type pyx file to get near C performance.

I never tried it, this would have been a nice use case.

stuaxo 2 days ago 1 reply      
Did you release your faster version of the Protocol Buffer library ?
azatris 1 day ago 1 reply      
What are the disadvantages of using Go instead of Python?
adem 2 days ago 3 replies      
"So in the bottom of the ninth, we decided to transliterate our 90k lines of Python directly to Go, line by line."

A question here: Is it always a practical approach to transliterate line by line when transitioning to another language or because "Go [is] semantically very similar to Python"?

bsder 2 days ago 0 replies      
Why not just bump your processing power?

No offense, but that was a hideous amount of effort for just 20% in one area. An extra dollar or two spent on a hardware upgrade wins for everything.

jlafon 2 days ago 1 reply      
If you did a line for line transliteration, did you use any of Go's concurrency features such goroutines or channels? I ask because I find that when I translate a program from Python to Go that it's beneficial to structure the program differently so that I can use goroutines.
azth 2 days ago 1 reply      
> provided that your problems are not algorithmic complexity

What does that even mean?

azth 2 days ago 1 reply      
Was the CPU pegged at 100% when using Python then?
aet 2 days ago 1 reply      
Can someone explain why SpaceMonkey is better than Dropbox?
jpatel3 2 days ago 0 replies      
fyi..login link fails on the site.
the_paul 2 days ago 0 replies      
It's a female? How can you tell?
sfk 2 days ago 3 replies      
And the website takes more than 30s to load...
OnePlus One $299 CyanogenMod 'killer' smartphone oneplus.net
291 points by iamben  1 day ago   216 comments top 37
hengheng 1 day ago 10 replies      
As always in hardware, established volume manufacturers are going to have a huge edge on any newcomer. Companies like Samsung and Apple have an astonishing vertical range in their manufacturing process, with their own IP cores / custom processors / custom operating systems / custom antenna design / custom case design. You can't just go out and beat all that at once, and offer the same product but cheaper.

I find the comments who say "omg it's not cheap why should I buy this" a bit condescending. You can't be any cheaper than the big companies, or else you'll have to beat them at what they're good at. If you can, you're an established player, good on you, but you most likely don't belong on HN.

As always in startup terms, you have to find your individual edge. This will always be a small gadget type of thing initially (as with most web startups), hoping to attain more traction down the line, enabling you to extend your product step by step. I really liked the Jolla phone with its I2C interface and the "second half" concept. Sweet stuff. Unique to the market, catering to the small production volumes they would be confronted with, and most importantly attracting just the right crowd of producers. If Seth Godin's Tribe Marketing rings a bell with you, then this is it.

Oneplus One, or Oppo for short, brings none of this to the table. They have a good high-volume manufacturing process, and have been selling single quantities on aliexpress for a long time. They seem good, but they had nothing unique going for them whatsoever. They used to be the archetypal me-too chinese manufacturer that tries to make a difference by striving for spec high scores (more megapixels! yay!), but neccessarily failing to deliver in other regards.

They have been looking for their edge for some time now, first with that rotatable camera gadget instead of a separate front camera, which at least got them some attention. Alas, there was a reason all other products came with two separate cameras, one being distinct usage scenarios for the two cameras and another being the rather complex case design. So at the end of the day, their design was just a stunt to demonstrate their manufacturing capabilities, and also their ability to justify large investments into injection molds. Impressive, but not attractive to me.

So their next attempt is a tacked on piece of open source software. Of course, these two companies are looking for a match here, with cyanogenmod having no clear business process but a distinctive product, and Oppo having everything else. It still feels like a cheap concept, and evidently they are centering their sales pitch around price. This always feels like a warning sign to me, indicative of a low emphasis on R&D. (Especially when compared to Samsung and Apple, who pump out a remarkable lot of innovative stuff even though they are market leaders.)

So, yeah. Personally I'll be using my second-hand Samsung Note 2 for the time being, and as soon as I feel adventurous I'll try out the Jolla. I'll be watching Oppo, but I could be more excited tbh, and I certainly don't buy into their newly-acquired startup flair. Open Source software just doesn't give you street cred like that anymore.

jackgavigan 1 day ago 0 replies      
A startup smartphone manufacturer and a community-developed fork of an open source operating system. Such things legends are made of.
pja 1 day ago 1 reply      
The single thing that really stands out for me in the pricing:

    16G $299    64G $349
$50 for 64G of high quality flash memory at retail price actually sounds reasonable!

bobbles 1 day ago 1 reply      
For everyone thinking "What's the catch?" the catch is, you can't buy it.

They are doing 100x 'invite-only' purchases during April, and I haven't seen anything explaining more availability than that.

mhandley 1 day ago 1 reply      
The OnePlus site seems to be reduced to a crawl. Engadget has a reasonable review here though: http://www.engadget.com/2014/04/23/oneplus-one-launch-ceo-pe...
davexunit 1 day ago 3 replies      
What binary blobs are required for it to operate? I want a phone that doesn't require nonfree firmware in order for the 802.11 wireless chip to operate.
epaladin 1 day ago 2 replies      
Wikipedia says the company was founded just a few months ago, in December. Even with using "commodity" components, I wouldn't have thought that 4-5 months was enough time to go all the way through a design cycle for something like a phone. The founder used to work for Oppo, is Oppo manufacturing these? Edit: according to the Engadget review/article, these are being built by Oppo.
listic 1 day ago 2 replies      
I wish it was available in non-huge form factor, like this one, at most http://www.gsmarena.com/htc_one_mini-5505.php
king_magic 1 day ago 3 replies      
What exactly makes this a killer? I'm having a hard time seeing it. It just looks liked any one of a dozen similar Android phones, with more power/memory/horsepower?

Calling something a killer by itself does not a killer make.

vini 1 day ago 1 reply      
and I wondering why takes an eternity to load this site: http://cl.ly/V9dZ/fail_one.png
kapilkale 1 day ago 2 replies      
In the features section where they compare their camera vs. that of another smartphone, they're doing some shady stuff.

The two pictures are identical! They've photoshopped the original to look shittier, and passed it off as being taken by another smartphone.

link: http://imgur.com/VG8AUg3

zx2c4 1 day ago 3 replies      
Looks great, but when oh when oh when will there be a version with a hardware keyboard? I program on my smart phone. I can do that damn fast with a hardware keyboard. Touchscreen keyboards aren't feasible.
zobzu 20 hours ago 0 replies      
This reminds me of the galaxy s1 and s2. Its pretty damn competitive, and its half the price of the others.

I bought the s2 for 400 on release day and it was awesome enough. Nowadays the s5 is 6-700 on release day.

if they deliver what they show - im probably getting one of these oneplus - not a S5 or even an xperia Z2 - thanks but no thanks.

glaberficken 1 day ago 6 replies      
Am I the only one that cringes each time i see the promise"over a day's worth of battery life."

We used to have 2 weeks of battery life on any normal mobile phone.

null_ptr 1 day ago 4 replies      
> will receive updates for at least 2 years

I had my phone for over 3 years now and aside from some tiny screen scratches everything is great. Why can't any manufacturers really stand behind their products and support them for something like 5 years?

enscr 18 hours ago 0 replies      
Great specs, but I prefer the Moto G model. Other than its camera, everything is superb for a pro-user who doesn't play games. Battery life is great, screen is awesome, 1GB RAM is more than sufficient. Best of all, it's the price that I love.
corin_ 20 hours ago 0 replies      
Seems really odd using "Never Settle" given how much AMD has been pushing that slogan for their GPUs.
SkyMarshal 1 day ago 0 replies      
Very nice, better hardware than Google Nexus 5 [1] at better price, though larger, slightly thicker and heavier.


blueskin_ 1 day ago 3 replies      
No SD card? I'm out.

If they added that, I would get one, the price is amazing - although I'd flash a default CM image over it to get rid of that metro theme they've added.

97s 23 hours ago 0 replies      
What's up with the mailing list. I am very excited about this phone, would like the email updates.
MichaelGG 1 day ago 0 replies      
Why would anyone choose the on-screen keys if you've already sacrificed the space for dedicated keys?
kourt 1 day ago 1 reply      
Can't wait for the QWERTY version :)
zmk_ 1 day ago 1 reply      
Seems to be a good device, but if there is no wireless charging I am out. It is one of those things that once you have you cannot go back. But the price point, the implicit promise of updates forever from CM team, and the fact that Google is moving to closed-source with key apps that used to be OS, does make this a very attractive phone. I hope there will be OnePlus Two.
kreeben 19 hours ago 0 replies      
I have used cm before and would trust them enough to buy a product like this. But the phone is too big though. My 4" moto g is perfect.
venomsnake 1 day ago 1 reply      
Does it have unlocked bootloader and root?
dalek2point3 1 day ago 0 replies      
the video on the homepage is pretty bad. I dont want to look at some guy making sketches of the design, i want to see the phone. Also, isnt software a big sell for this Cynagen? I've never installed the Mod before -- can the video show me how the insides of the phone are supposed to look like? pretty please?
leke 21 hours ago 0 replies      
Are OnePlus offering any guarantee of OS updates with their products?
deweller 1 day ago 1 reply      
Can you recommend a low-cost voice/data carrier in the US for this phone?
DonGateley 20 hours ago 0 replies      
What carriers is it incompatible with?
chiachun 1 day ago 0 replies      
The price is actually higher than some of the cheap smartphones from Asia. What interested me is that CyanogenMod is now an OS of a 'killer' smartphone.
listic 1 day ago 0 replies      
What is the availability of OnePlus One for non-US users?
slowmotiony 1 day ago 1 reply      
I think the website is down. Is it available to buy? Can it be shipped to europe?
NonEUCitizen 1 day ago 3 replies      
Does it have an appstore ?
killerna 1 day ago 0 replies      
arrrrr....I wanna get one, so I just lookup their site, but it says I need to get invitation to buy because their limited stock.http://support.oneplus.net/hc/en-us/articles/201866890-Why-d...
rplnt 1 day ago 0 replies      
Is any tablet that can makes calls a phone? Technically yes I guess, but it's still weird to call it that.
ctdonath 1 day ago 0 replies      
Amusing to view that link right after reading the "Sell me this pen" link http://m.theglobeandmail.com/report-on-business/internationa...

The CyanogenMod page tells me nothing. "Killer phone"? meh. Address my needs; if it's not smaller than an iPhone and can migrate me from that ecosystem, forget it. Otherwise, it's just a list of specs.

kissickas 1 day ago 6 replies      
Forgive me for being slightly snobby (and maybe too tangential), but I always find it completely off-putting when people try to be "hip" and put the $ sign after a number (as in 1$ here; they're also internally inconsistent).

I'd like to hear other people's thoughts on the matter, especially if you think I'm misinterpreting the motivation behind it.


edit: Muphry's Law, and trying hard not to ask why people are downvoting my curiosity (but failing)

Do Men Suck At Friendship? mensjournal.com
290 points by hbe_  1 day ago   255 comments top 53
elohesra 1 day ago 7 replies      
Has anyone actually read the studies linked by the author to back up his drivel? I'll save you some time: the 2007 study isn't valid even by the low levels of scientific burden required for psychological studies (it's entirely based on self-reporting), and the 1982 study support the opposite conclusion to the author's. In fact, the 1982 study [0] finds that men and women simply have different kinds of friendships, where men are likely to only engage in emotional sharing with their closest friends, and women are more likely to engage in emotional sharing with all their friends.

This brings me on to challenging the true point of the article: slating the traditional male gender role. It's no accident that the author turns to the authority of feminists for perspectives on men -- despite that being so laughly outside the remit of feminism -- because the entire point, unstated but present, throughout the article is that women have 'got it right' and men should be more like women. In lieu of any studies which actually support his point (note that only the first two studies in the article actually even discuss his point about male friendships, the rest are an irrelevance), he instead uses anecdote as evidence for a point neither study can support, and then goes on to blame the entire mess on the traditional male gender role. I won't defend the male gender role, because I have no stock in doing so, but I would at least ask that if something's going to be blamed for mens' terrible friendships then we at least provide some proof that men do indeed have terrible friendships.

Lastly, the article, like so many in the media, is yet another argument that encourages you to accept its faulty form by providing you with a false dichotomy: the argument begs the question that either type of friend (the emotional numerous friends of women, or the close few friends of men) is a superior type of friend, links some 'evidence' which doesn't support its point, and then encourages you to ask yourself whether men or women 'have it right' before even bothering to prove if there's anything to actually get right in this situation.

I will say one thing though: if this is the kind of stuff Men's Journal prints, then either its readership is mostly women, or men sure do love self-flagellation.

[0] http://www.peplaulab.ucla.edu/Peplau_Lab/Publications_files/...

seanccox 1 day ago 4 replies      
Quoted text below from this source: http://www.goodreads.com/quotes/300997-ok-now-let-s-have-som...

OK, now lets have some fun. Lets talk about sex. Lets talk about women. Freud said he didnt know what women wanted. I know what women want. They want a whole lot of people to talk to. What do they want to talk about? They want to talk about everything.

What do men want? They want a lot of pals, and they wish people wouldnt get so mad at them.

Why are so many people getting divorced today? Its because most of us dont have extended families anymore. It used to be that when a man and a woman got married, the bride got a lot more people to talk to about everything. The groom got a lot more pals to tell dumb jokes to.

A few Americans, but very few, still have extended families. The Navahos. The Kennedys.

But most of us, if we get married nowadays, are just one more person for the other person. The groom gets one more pal, but its a woman. The woman gets one more person to talk to about everything, but its a man.

When a couple has an argument, they may think its about money or power or sex, or how to raise the kids, or whatever. What theyre really saying to each other, though, without realizing it, is this:

You are not enough people!

Xcelerate 1 day ago 11 replies      
> That's because nearly all research into healthy aging has found that the key to a long, happy life is not diet or exercise but strong social connections that is, friendships. Loneliness accelerates age-related declines in cognition and motor function, while a single good friend has been shown to make as much as a 10-year difference in overall life expectancy.

This makes me sad :( My mother passed away from cancer in 2001 after 16 years of marriage to my father. Their marriage was one of those ideal marriages that most people don't think really exists; they were truly each other's best friend and were incredibly happy together.

Now that my sister is finishing college and I'm in grad school, my dad goes to work for long hours each day and comes home to an empty house. He doesn't socialize much more than going to the coffee shop on weekend mornings.

I don't know what to do about this; I live three hours away and can't visit every weekend, and my sister is getting married soon and moving away as well. He's not opposed to dating, but the last time he dated was nearly a decade ago, and I know he doesn't want to date because of the sheer sadness he still feels from my mother's death. He has mentioned it would be really nice to have a companion though.

I need ideas. Solitude isn't a good way to spend the rest of one's life, and I really want him to be happy. This article has confirmed my fears about loneliness even more, and I want to help him.

bsder 1 day ago 9 replies      
USian viewpoint here.

This article makes me cringe. Is the author gay or a pseudonym for a girl?

The article seems to extol what most would call "girly" friendship--continuous contact, social gossip, etc. Lots of attention to little things.

Most guys I know of tend to equate true friendship along the lines of "will help you bury the body and won't ask questions." Male friendship tends to get tested around helping with big, infrequent things--death of parent/spouse, get somebody to hospital, cover for you when you did something monumentally stupid.

Men tend to forgive the "didn't hang out last week" but won't ever forgive things like "didn't show up for your dad's funeral".

rybosome 1 day ago 1 reply      
This article raises an issue that terrifies me; over-reliance on one's wife for friendship. I love my wife and I do consider her my best friend, which is wonderful...but now that I no longer live in the same city as my closest friends, I don't have any really strong local bonds other than with her. She's planning a trip out of town in a few weeks, and I've already started figuring out what I'll do: maybe go on a bike ride, play some video games, clean our apartment, go see a movie, order takeout, etc. None of those plans involve friends. Probably not a good sign. =/

It's not exactly difficult to make loose friends or fun acquaintances, but maintaining and strengthening those into deep, close friendships feels nearly impossible.

victorhooi 1 day ago 2 replies      
This article really resonates with me.

Many of my male friendships do seem to resonate around convenience (i.e. we help each other) or activities.

If you take that away...I'm unsure what the depth is.

This could just be me though.

I do have friendships with females who are nothing like me, which are more around just...fun/chatting/hanging out.

But either way, friendships do take work/effort - and sometimes you need to push that along a bit, and think gee, I haven't seen "XYZ" in a while, let's organise a catchup.

ryanklee 1 day ago 0 replies      
Yeah, and/or people are totally fucked on average when it comes to sustaining deep, long-lasting relationships. Go figure. That shit is hard. Hard. Like: fulfillment, actualization, self-discipline, happiness, etc., etc.

Do men suck at friendship? Of course. Just like they suck at vying w/ their own mortality. It's hardly a gender thing.

Start with a better narrative and you'll end up with a better answer.

pmorici 1 day ago 0 replies      
I don't think men are bad at friendship I do think it takes more for them to develop the kind of deep friendship between men that the article laments are missing. I have a handful of good friends who mostly live in different cities now but we still keep in touch and make a point to get together whenever we cross paths. These all came out of things like high school cross country or roommates over several years. Point being I think there needs to be a strong shared experience over several years for men to get to that point.

The sorts of things described in the article usually don't run deep enough or last long enough to cultivate a longer lasting friendship.

ashwinaj 1 day ago 2 replies      
Yeah this is clearly a American issue. It's certainly not true in Asian/South Asian countries, sure we lose touch with friends but whenever we meet there is an instant and unmistakable bond.When I moved to the US, I couldn't understand why Americans were so "distant". I don't have the same friendships with them as I do with others. Sad but true.
SoftwareMaven 1 day ago 3 replies      
My formative years were somewhat less than ideal (moving every three months, abusive environment, fat before fat was normal, nerdy, etc). I always blamed not being able to make lasting relationships on that. I've now come to the conclusion that 80% of why I suck at friendship is innate, and 20% is learned.

I've tried hobbies and meetups to no avail; I just wind up sitting in the corner. I think this is where the 20% mentioned hurts. Even if I manage to get out of that corner (a rare event, but it does happen), I don't know how to take a conversation beyond "How's it going?"

Where's the Facebook for actually finding new friends?

mercurialshark 1 day ago 0 replies      
While I agree with most of the author's points, I think it's missing two key aspects. Intellectual curiosity doesn't continue for everyone (I want to scratch my eyes out just watching football and never discussing anything of intrigue) and some guys don't know how to be friends outside of a group.

1. I don't find most my old friends interesting. The guys I have stuff in common with are mostly work connections/guys that understand the plight of the entrepreneur and we don't actually hang out. Activity friends are cool but like most my friends from college, it increasingly feels like a chore.

The few friends that have any depth to them live out of town. That said, in the future we have email and don't have to physically see each other all the time to coddle our friendships.

2. Some dudes just never learned how to have one-on-one friends outside of a group. This is by far the most common problem I see that transcends male friendships. If you befriend someone as an adult that you can regularly carry on a conversation with, without outside help, take note - they may become your new brosive.

roymurdock 1 day ago 0 replies      
"In Steppenwolf's case, the fact is that, like all hybrid creatures, he lived with the feeling of being sometimes a wolf, sometimes a human being. However, as a wolf he was forever conscious of his human side lying in wait, observing, judging and condemning him; just as the wolf did when he was a human being. For example, whenever Harry in his capacity as a human being had some lovely idea, experience some fine and noble sentiment, or did a so-called good deed, the wolf in him would bare its teeth and laugh him utterly to scorn, indicating how ludicrously out of character all this fine play-acting was in a wild animal of the steppes, a wolf who at heart knew perfectly well that his real pleasure lay in stalking alone across the plains, occasionally blood or pursuing a she-wolf. Seen thus from the wolf's point of view, every human action became frighteningly comic and self-conscious, vain and inane. But it was exactly the same when Harry felt and behaved like a wolf, when he showed other people his teeth or became murderously hostile to humankind as a whole, hating all its hypocritical and degenerate manners and customs. For then it was the human side of him that lay in wait, observing the wolf, calling him a brute and a beast, spoiling and souring all the pleasure he was taking in the straightforward life of a healthy untamed wolf...

His position was a lonely one; it was uncanny the way the world left him to his own devices. Other people were longer of concern to him; he wasn't even concerned about himself. The air around him was getting thinner and thinner the more solitary he became, severing all contact with others, and he was slowly suffocating as a result. For the situation now was different. No longer his desire and goal, solitude and independence were a fate he was condemned to. He had made his magic wish and there was no going back on it. However strongly he yearned to re-establish contact with others, however willing he was to hold out his arms to embrace them, it was of no avail: they now left him alone. Yet there was no indication that people hated him or found him repugnant. On the contrary; he had lots of friends. Lots of people liked him. But friendliness and sympathy were the only reactions he ever encountered. People would invite him to their homes, give him presents, write him nice letters, but nobody was able or willing to share his life. He was no breathing the air that the lonely breathe, living in an atmosphere that was still, adrift from the world around him. No amount of yearning or goodwill had any effect on his inability to form relationships."

Steppenwolf - Hermann Hesse

sosuke 1 day ago 2 replies      
I feel this, my chat group I've had with friends from work for the last year just went dead. We bonded strongly at work, in work, and when work didn't connect us we disconnected. This year I made more effort than ever to make friends, but it just hasn't stuck yet. I'm not giving up though.
jzzskijj 1 day ago 1 reply      
I've realized that many men (I know) want to talk about their feelings, frustrations, relationships, insecurities etc., when given a good example and opening up a little at first. I learned to do that a couple of years ago, when I was going through difficult times. Went to meet a friend for a couple of beers, started slowly talking, without whining or complaining, about things that make me insecure and we realized opening up and talking about all kinds of "non-manly" things that made us feel bad. That friend relationship deepened into totally new level and since then I've gone through same thing with many of my real friends.

1) Open up,2) Share,3) Listen,4) Care.

It felt really great to get a SMS a week later saying "how are things and are you feeling better?"

Not saying that I am a perfect friend or Mr. Empathy, but I feel that I am a little bit better person than I used to be.

nailer 1 day ago 1 reply      
I think men's friendships tend to be fewer but deeper. This resonates with a lot of people: http://www.youtube.com/watch?v=3hmlPtRu1SQ
sardonicbryan 1 day ago 1 reply      
As a male with more close female confidants/friends than male, I find it interesting that this article in no way acknowledged the possibility of a platonic male/female friendship.
youRallMad 1 day ago 0 replies      
Do men suck at friendships? the answer is yes but because most of us never try,

Personal Ramble

It all starts when we are children. Look at how young boys and girls play. Boys will do things together, play football, play video games talk about things they do (notice the DO, guys like to DO things). Girls will play games around social events, and developing their social hierarchy. Girls learn from a young age how to operate in social groups. boys do not tend to learn these skills until teenage years, until then they will entertain themselves

To make the point, say 2 boys have an argument, they are more likely to come to blows, fight and then drop the issue, dealing with the issue. Girls on the other hand will use talking/and social to punish those that they are fighting with. Social exclusion is the general form of punishment for girls that do not follow the established social hierarchy of a school system. This is simply to highlight the differences between boys and girls as children (aka less time for social manipulation in to pre-defined roles)

The above i feel is a biological difference in the way that men and women operate even at young ages. This is still in us as adults. (there are a number of studies about this point, boys raised as girls and so on, personally i KNOW that boys and girls are biologically different and in turn you can not just tell someone to be a girl or boy, it is hard coded (trying to highlight that I do not believe that the role of girls and boys are interchangeable as some people imply; I believe trans and other gender identity issues are based on biological triggers))

So moving on, i might be getting to a point

In my part of the world men are taught from a young age to be 'strong', 'leaders', 'money earners', 'head of the family'. Men have been exploited throughout history because of this mentality (think men front line of wars, its the mans role to defend his country and not complain (if you ran you got shot), protect our women, and supply our family with money. We are taught to ignore our emotions and to endure (work 8hrs/5days a week for 60 years). This is 1000s of years old, men are the work horses, well minus the very few at the top who pull the strings and certain people use to proclaim that men rule the world.

I also believe that we put too much focus on SO to 'complete' our lives (an extension of the idea that a man should support a family). So many people have said that their SO is their best friend and i think this is great. However as a 30 year old male I have one group of friends that have all got engaged at the same time, they all getting married within the same few years and they will be having kids at the same time i am sure. My honest option on this is that out of the 5 guys in that group, 4 of them have been pushed in to it by the girls of the group, and the first couple that started it off, well the guy was told he either asked her to marry him or she would ask him that leap year (last year) Basically what happened was one girl wanted to get married and then using that as a president the other girls banded together and got the rest of the guys to ask them.

This might sound like harsh but men need to stop thinking that their lives are about supporting other people, we need to learn that our lives are our own, we are not here to pay bills, support children (if you want to then amazing) but it is not our default roles. Sadly there is such a lack of male roles today that the 9-5 with 2-4 children is now the default. I feel sorry for men, we have been used and abused as wage earners and human targets, we work to support our families all the time self sacrificing our own social well being.

i am 30 and spent the last 9 years working on my friendship (balanced between girls and boys these days) and being close with my family. I was one of the most socially difficult people you will never know when young but thanks to lots of practice i can start a conversion with anyone anywhere. I can go to clubs by myself, dancing as an example or the pictures, it is not an issue. I guess i should put in that I have only had few relationships and i have spent more time living on my own that I ever have in relationships but on the flip side, I have a lot of friends (Sounds bad, but i have always feared some girl loading me up with kids and then me spending the rest of my life slaving to support them while they all resent me for never being at home because i am working). One thing i will say is that single guys do tend to socialize together, a lot of my single male friends are all interlinked, and most of my friends in couples are friends with couples. There is very little over lap between these groups. Single guys have different social requirements to men with SOs, and I guess it is a preference to what social groups you prefer.

So to all of you what is your priority? to become the default wage earner for a family and then complain that you have no friends? or start making your own path in life, focus on your friends rather than chasing the next SO. Find out who you are, and what you like, and you will have no issues making friends.

Be true to yourself, not true to someone else s view of you

I guess a summery is... Men and women socialize differently from a young age, i think its hard coded to a large degree. Men have lost their roles in every day life, and (personally) too many men spend their lives supporting family's because they believe it is what is expected off them. I say it's time for a male revolution, a time when men can band together (pack style) and we can entertain ourself and get out of this rat race that is a life of working to raise a family. There are too many people in the world anyway, do you really want to bring someone in to it? where the hell do you think we will be in 10 years given what has happened over the last 10 years.

It is time for Males to start redefining their roles in the world and this will start with you.

serf 1 day ago 1 reply      
I wrote a big long spiel about the comments in this thread, but i'll summarize to save everyone some time.

The culture-centricity in this thread is kind of sickening, and as hackers I hope that everyone who is reading through it remembers to attempt to take things as a neutral observer and apply scientific methods to your findings; and take anecdotal evidence at it's worth.

LoganCale 1 day ago 0 replies      
I have both male and female friends, but all my closest friends these days are male. This wasn't always the case, though. I used to have a lot more female friends, and I guess now it's shifted the other way. I haven't personally noticed any sort of difference between genders that makes one better suited for friendship over the other...
shittyanalogy 1 day ago 0 replies      
If you have friends that are flaky and won't hang out, fuck 'em and get new friends. Get hobbies and meet people who do the same thing. Learn a language, join a book club, go to code meetups, start your own Code/BBQ/Motorcycle workshop. Be interesting and you will meet interesting people. Be boring and wrapped up in your own life and you will not.

This has nothing to do with men, the article should be titled: "Do boring, flaky people suck at friendship?" Most of the people on this planet are boring, and flaky, and wrapped up in their own lives, and if you don't learn how to cope with that and you don't have one of those miraculous, since high-school, partners in crime, friendships you're not gonna have friends. Have kids instead.

darylteo 1 day ago 0 replies      
I'm 28 now and I already feel like I have no friends left. Yay.
namuol 1 day ago 1 reply      
All my long-term friends are women. The closest are ex-lovers or best-friends lovers/ex-lovers. Most of our banter is about relationships and general angst. Many I only see maybe once or twice a year, but talk regularly online or over the phone.

But even before I had any romantic history, most of my friends were girls.

Nearly all of my male friends have drifted, but I have female friends from highschool that I still talk to pretty regularly.

adamzerner 1 day ago 1 reply      
Some people say we're past the "social fad". I think that we're just at the tip of the iceberg, and this article hints at some of the problems that we could solve.
hosh 1 day ago 0 replies      

To be fair, I have only a small handful of friends who I'd entrust my body and my life to in the worse case, but I've generally made friends wherever I have lived. These friends are ones that isn't quite activity, mentorship, or convenience friends.

Maybe I'm just the outlier.

kitsune_ 1 day ago 0 replies      
In my experience it's the total opposite: I've known most of my friends since kindergarten. We all know each others dreams, hopes and fears and support each other without being judgmental. We share a common set of values. I could vanish without saying a word and they'd welcome me back with open arms 10 years later.
d23 1 day ago 0 replies      
I've certainly found this to be my experience with my friends, who are mostly males, but I've also found it to be that way with females as well. My theory has been that evolutionarily it is advantageous for us to get over loss quickly. If a person in your tribe suddenly disappears from your daily experience, there's really only one explanation -- they aren't coming back. It doesn't do much good to pine over them for your own survival's sake. I'm not saying that it's a good thing -- it actually depresses me quite a bit. Maybe it's different for females though. I'm not sure what to make of it.
jon_black 1 day ago 0 replies      
> That's because nearly all research into healthy aging has found that the key to a long, happy life is not diet or exercise but strong social connections

Epicurus believed that three things were necessary for a happy existence:

1. Friends2. Freedom3. Thought (as in personal reflection on yourself and your life)

I believe that in life there are many doors and therefore many keys. If you find a key and it opens a door, do not assume that all other doors will open for you; likewise, do not assume that what's behind the door you have opened is the answer to life long happiness.

It's quite frustrating that as a species we try to reduce such complex matters into such simple rules.

thewarrior 1 day ago 1 reply      
This doesn't happen in India. This is a purely western phenomenon.
doyoulikeworms 1 day ago 1 reply      
As a 27 year old male, most of my friendships revolve around doing things together. Working, video games, sports, drinking, or eating, mostly.
rpm33 1 day ago 0 replies      
This is definitely an American "culture" issue. Especially in a big city like San Francisco, i've noticed a lot of ephemeral relationships that last around convenience.
theswan 1 day ago 2 replies      
Tangential point - what does the phrase "any dish?" mean?
bluedino 1 day ago 0 replies      
I wasn't sure I was supposed to be expecting more as a guy?

Most of my male-to-male interaction occurs because of shared interest. Usually a 'man activity' such as working on a car, house, or yard, working out, riding motorcycles, that sort of thing.

But there's no talk about feelings or things like that. I could help a buddy cut down a couple trees and nothing of the sort gets discussed. I'll come home and be asked, "So did Mike say how it's going with his new job/girlfriend/whatever?"

I reply, "No. Was I supposed to ask him about that?"

I think the only time there's any real discussion about things of that sort is the other activity I share with other guys: drinking alcohol

pabb 1 day ago 1 reply      
I had an issue with this while finishing up classes at school, although I understand being a college student isn't really the main demographic for this article. I had a group of friends that I met with only through convenience (we were all in the same fraternity, and then I quit).

After some time, one of the guys made a multi-way text/chat group on WhatsApp and it gave us all an opportunity to bullshit amongst each other about whatever we felt like. The best part was that it didn't leave anyone out of the loop, and held us each accountable for responding to attempts to get together. Most of the time the interactions are pretty pointless (cracking jokes at someone, sending links to a funny picture or article, changing the group photo to a hotter girl than the last one someone put up, etc), but it's just a good outlet to stay in sync with one another, even if we don't all have time to hang out. I'd recommend it to anyone who connected with the article.

Ryoku 1 day ago 0 replies      
I find it interesting how focused this article is in the "traditional" male gender role. It doesn't even touch the subject of different friendship types and relations when involving other genders than 'male'.

Without denying that sex has it's toll in the physical (duh) and psychological treats of a person, I do believe that traditional gender roles are the only roles taken into account for this article, making a great deal of assumptions on how males act towards friendship. Does anyone know if there are studies such as the ones mentioned in the article that take into account a less black and white view of gender roles or that digs into other types of friendships?

scythe 1 day ago 1 reply      
I would like to take a moment to remind everyone that this article refers primarily to non-poor white men in the OECD, and that most people are not WEIRD:


In particular attempting to draw conclusions about innate (genetic) behavior from this skewed sample is highly subject to confounding.

gr3yh47 1 day ago 0 replies      
"when we were all so freaked-out about seeming gay that we'd leave an empty seat between us at the movies."

or, you know, because horizontal leg room...

allochthon 1 day ago 0 replies      
How culture-specific is this trend?
wyager 1 day ago 3 replies      
This article implies that living a long life should be the ultimate driving goal behind our actions.

What's wrong with "convenience", "mentor", or "activity" friendships? They sound perfectly logical and reasonable to me. Just because these kind of friendships might not contribute as much to longevity doesn't make them wrong.

stefantalpalaru 1 day ago 0 replies      
Even though we use the same word, friendship in the male culture is a different concept from friendship in the female culture and it is a mistake to judge one with the criteria for the other.
wittgenstein 1 day ago 0 replies      
Some men are genuinely not very interested in forming intimate friendships with other males. This does not mean men "suck" at friendship. It just means they prefer to have intimate relationships with women, not men.
C1D 1 day ago 0 replies      
This seems more like a myth to me. I have friend that I have known since we were toddlers. Even though me and him are in different countries we Skype daily! I will be visiting him in August and he's going to visit me in December.
Aloha 1 day ago 1 reply      
The article is statistically irrelevant - but feels right.

I have many close friends, most of them are worlds away in terms of distance, and I don't hang out with many locals - sometimes I wonder if its Seattle, or something specific to my generation.

leccine 1 day ago 1 reply      
Semi sexist, greatly generalizing title. The sample used for the study covers only fraction of the entire data set so making this conclusion is very bold.
vacri 1 day ago 1 reply      
I don't understand why the author thinks that a good friendship requires collecting some gossip for his wife for each hour or two of contact.
non0nsense 1 day ago 1 reply      
How are we really defining friendship here? I've mostly found in my experiences that females value self-serving relationships that build them up. Meaningless values of 'friendship' where they have no contrast for a real, meaningful relationship. See how sexism swings both ways? Who the heck posts this kind of drivel?
kevrone 1 day ago 0 replies      
Men can be friends with women too. Just sayin'.
known 1 day ago 0 replies      
Google "Men have bigger brains than women, research reveals"
dkarapetyan 1 day ago 0 replies      
I don't buy it. What stresses me out the most are groups of people jabbering about nothing in particular. Give me a hammock and a nice book and I'm good to go. No elevated cortisol and whatnot.
chintan39 1 day ago 0 replies      
Men just talk less.But Men are equally good at friendship.
saraid216 1 day ago 0 replies      
Well, if anything, the article concludes that men suck at gossip. Which is a little disappointing if true. Gossip has its insidious bits, but it was also the best carrier of information before things like internet forums and news aggregators.

There are studies that show things like health and job-finding happen along second-degree links. Friends of friends, that is, or in other words, the gossip space. Things like, "Oh, I hear Joe quit smoking" or "Oh, I hear Sam is looking for a new executive" and so on are gossip. So is "So it turns out Jay is allergic to chocolate", which tells you don't give any chocolate to Jay.

So, Mr. Duane? A suggestion? Tell your wife about how Matt reacted to biking through that one area. Or how goofy he looked when he finished taking apart the wall. Give her a connection to him, even if it's viewed entirely through your perspective. These are touchstones for her to help you maintain your friendship with him, too. Yeah, sure, you want to make sure he's okay with this. Don't gossip behind his back, or reveal things he wants to remain confidential. But she obviously knows what you're doing together; share details.

dang 1 day ago 4 replies      
Can anyone suggest a better title? This one is pretty linkbaity.
vineetdhanawat 1 day ago 2 replies      
Automated tweet for this article has a custom mjm.ag domain instead of bit.ly for first time. Not sure why that happened https://twitter.com/hnycombinator/status/458827145398484992
vishaldpatel 1 day ago 0 replies      
tl;dr; answer: no. No they don't.
Google+ Head Vic Gundotra Leaving Company recode.net
283 points by mikegreenspan  8 hours ago   188 comments top 35
saidajigumi 8 hours ago 12 replies      
> Former CEO Eric Schmidt admitted in an interview at the D conference in 2011 that he missed the boat on the rise of identity on the Internet.

> I clearly knew that I had to do something, and I failed to do it, he said. A CEO should take responsibility. I screwed up.

I think Eric screwed up in a deeper way that this quote admits. Google+ came up at a time of broader dissatisfaction with other social networks, particularly Facebook. From both UI weaknesses and social perception, I initially saw G+ gaining a lot of interest among disparate folks I'd loosely label "influencers". And _all_ of that interest was shot dead due to attempts to own identity by enforcing the use of real names[1].

There are very real reasons why "average" people need alternate identities online. In some cases, it's mandatory professional separation; your work persona shouldn't be conflated with your author persona, shouldn't be conflated with your close-friends persona, etc. Circles were interesting, but solved a different problem.

In this regard, I think Schmidt's big failing was analogous to the fable of the golden goose: he killed any chance Google+ had by trying to seize the golden eggs of online identity. This delayed G+'s adoption enough that Facebook in particular was able to react, improving both its then-primary web UI, make some privacy improvements, and significantly shore up its public perception.[2]

[1] https://en.wikipedia.org/wiki/Nymwars[2] Not counting the rabid social-network and/or Facebook haters, whom cannot be satisfied.

bane 7 hours ago 7 replies      
IMHO Google+'s principle problem is that it's multiple efforts all under the same name umbrella. This is confusing to users and seems to have been confusing to Google.

It's a longer-than-twitter public broadcast messaging system/social network/photo sharing/single sign-on/half a dozen other things.

There's some great ideas in there. Having a subscription style feed of people I want to follow, and their long-form posts (including deep linking) is much more interesting to me that twitter. There's been some absolute gems posted on g+ that simply can't be represented on Twitter. But it falls down because all these important thoughtful posts are buried in my regular social feed.

Everybody seems to like the circles ideas for organizing our connections, that's a great idea I'm surprised still hasn't been really replicated by FB. But then I can't assert different public names/faces to different circles. So my work circle sees me the same way my demoscene friends. But I'd rather use a formal identity for my work friends and a goofy presentation of myself in the demoscene (with an old crazy picture of me from a party). But I really can't. Unifying my identities, along with my logins, wasn't a good idea. And thus I don't really use g+ for social network stuff because neither I nor most of my contacts don't really want to pay the switching cost from FB/linkedin/whatever else. So literally the major initial message for what g+ is when it was launched, I almost entirely don't use or get anything out of. I say this as somebody who really doesn't enjoy FB all that much, but recognize its importance in connecting me to people I know and want to keep in touch with.

and it goes on and on. Lots of good ideas, mucked up by bad execution and a muddled vision that doesn't map well to most people's needs. It seems like the pieces of the product that are the best bits, are the ones that are not as deeply buried into the morass. Hangouts is pretty good for example and usually works like I want it to (I usually only message people). But now I hear voice, which I use all the time, is about to get bungled up with hangouts. I bet I'll hate whatever the integration looks like. There are tons of people I use voice with that I have absolutely no desire to tie up with my google+ identity.

The integration is too tight. Rather than being a bunch of well branded products, all under a unified umbrella, it's like a bunch of products were stuck in a blender, ground up and then half-baked into a some kind of...whatever it is.

I think if you can't point at a product and describe in a brief sentence, it's too big of a concept and that will start infiltrating your development of the product. What is google+?

Why not "google+ personal news" and "google+ social network" and "google+ chat" and whatever else? Each of those is focused and simple and disjoint enough not to cause confusion.

inthewoods 6 hours ago 2 replies      
Vic did a pretty great job getting Google+ in decent shape, but am I the only one that finds the overall strategy among these properties confusing? I know that whenever I talk with a normal, non-tech civilian they are always confused by the service.

They have Youtube (where you can upload videos), Google+ Photos (where you can upload videos and stream as well), Google Drive (where you can also upload pictures and videos in addition to creating standalone Google Docs).

It would seem to make more sense to me that there should be a Drive where I store Photos, Videos and Documents, or there should be standalone Photos/Videos and then a separate service for Documents.

To me, these services should exist separately, but Google+ should bring them all together - meaning I can decide, from my photos/videos/documents what to post to Google+. If I want to post a video to the general public, I should post it to Youtube.

Obviously people may have different use cases (consumer vs. business) - but as someone using Google services as both a consumer and business, I find the tools confusing - and it seems to be even more confusing for my Mom.

blisterpeanuts 6 hours ago 2 replies      
I like G+ for the photo back-up from my Android phone. In fact, that seems to be the killer feature. I wonder what will happen to G+ if Facebook adds a similar feature.

The stream is interesting if you add enough people and organizations, but I find I can go for days or weeks without checking it. I know some people spend all day on G+, but it's unclear to me why.

Between FB, G+, Twitter, LinkedIn, and a host of other comment boards and social network wannabes, it seems to me this market is absolutely flooded, and sooner or later, social network fatigue has got to set in and cause people to seek something that's more nimble.

Maybe there's an opportunity here for some kind of meta-network that ties together several of these sites. I would like that. A single stream, one login, see all your texts, photos, and updates at a glance. Then you can drill deeper into the particular social network if you care to take the time.

e15ctr0n 8 hours ago 3 replies      
The comments on the Secret app[1] speculate that he might be joining Mozilla, Github or the venture capital firm Kleiner Perkins. What if he rejoins Microsoft instead?

[1] https://www.secret.ly/p/wxdnkdhjnsocjxwnizhdpacufc

kkotak 2 hours ago 0 replies      
A couple of months back I gave my feedback to Vic about how G+ is in a limbo zone between Facebook and Twitter, and that the needs of none of the use cases are met on G+. In his sincere attempt in trying to do his share of keeping the conversation vibrant on G+, Vic would (bad call, in my opinion) post pictures of his kids for thousands of his followers to see and comment on. I think this is where the non-clarity of the platform emerges. First of all, why would you post personal pictures of your family for thousands of strangers to see and comment on? And what do you do with the responses you get? Are you going to read/respond to all? What's the point of someone saying 'awww' or asking you a personal question, to which a response is not really warranted - as the askers are complete strangers. A lot of people follow others on G+ to get professional insights (as in this case) and Vic's usage of the platform as an example confuses the value proposition. My 2c.
Tloewald 1 hour ago 0 replies      
Reminds me of the post on "Mac Pravda" after Steve Jobs shitcanned the Newton division. The Google+ version would go something like this:

"Maximum Leader Page declares total victory of Google+. Workers to report to railyard at dawn for reassignment."

niix 6 hours ago 2 replies      
It appears that many employees did not like working with him. This was posted on Secret "One of the worst execs I've ever worked with. Completely skirted the design process and got designers to do one off projects for him that would derail plans for weeks on end and kill team trust". Interesting, since there is much praise from Page.
lewisflude 8 hours ago 3 replies      
Why would someone leave a company immediately if it was under good terms? Or is it just the case that this wasn't public until today?
ThePhysicist 6 hours ago 2 replies      
370 million monthly active users. I wonder how many of those interact with Google+ by mere accident. Personally, the only time I post stuff on G+ is when I'm using another Google service (e.g. Youtube) and they post it to my G+ stream, often without my knowledge or consent.
rjf1990 8 hours ago 2 replies      
I don't understand why people have to try and read so much into someone leaving a company. High-ranking execs and employees change jobs all the time for numerous reasons.
mathattack 5 hours ago 0 replies      
Im also forever in debt to the Google+ team. This is a group of people who built social at Google against the skepticism of so many.

Seems like the skeptics were right, no? And this is coming from a big fan of Google. Great company, but this didn't work out. Interesting that they give Vic credit for Circles. I thought it was someone else's idea, no? Great idea, they just didn't follow up on it.

hawase 8 hours ago 2 replies      
k_kelly 5 hours ago 0 replies      
Google+ has it's users, but to me it always seemed like the ultimate example of building something no one actually wanted.
hartator 4 hours ago 0 replies      
Last week, I've posted this: https://news.ycombinator.com/item?id=7598111

Last week! :D

dredmorbius 29 minutes ago 0 replies      
Eric Schmidt said in a December 30, 2013 Engaget interview "my biggest mistake at Google was not anticipating social".

My response at the time: No, Schmidt, your biggest mistake was failing to realize that vast hoards of highly detailed and categorized personal data are not only an asset, but a tremendous liability.

Or as I put it: "Schmidt: My biggest mistake is still not realizing my biggest mistake"


yuhong 8 hours ago 0 replies      
Personally, I don't think Google+ should be abandoned, but I do wish some of the problems, such as the real name policy, can be fixed.
frade33 4 hours ago 0 replies      
Google+ is to Facebook, what Bing is to Google Search.

It wasn't really going to work, much like the Bing. There were simply too late to the party as were Microsoft or Yahoo to 'modern' search engine.

I only hold Vic responsible for messing too much with the web design of Google+. Jesus, no one changes underwear so often as they would UI.

In the end, the failure of missing the social bandwagon solely relies on Eric. Because Vic was working on the mobile side (I think) when Facebook was kicking in.

igorgue 7 hours ago 6 replies      
Sorry if I'm asking a stupid question, but:

How come all these "internal memos" always leak? Is it fine to share an internal email without getting in trouble at a public company?

mark_l_watson 6 hours ago 1 reply      
I am really curious what he will do next.

I am just a light user of G+, FB and Twitter. That said, I enjoy G+ the most.

guyzero 8 hours ago 0 replies      
He's been there nearly 7 years.
yigitdemirag 8 hours ago 0 replies      
jgalt212 8 hours ago 3 replies      
17 comments (as of this writing), and about 1/3rd are grayed-out due to down votes.

Ergo, there are some pretty strong opinions about Vic.

whoismua 8 hours ago 0 replies      
"This is a group of people who built social at Google against the skepticism of so many.

Well, he does have a sense of humor. They sure built it, I see many obscure names ranking on search engines...only to see an G+ empty page (along with a Youtube one--also empty. Looks like the Android signup process.)

mauricio-OH 8 hours ago 0 replies      
Pushed out for sure
teawithcarl 6 hours ago 1 reply      
Gundotra sucked anyway. So does Google+. That's what happens when you "copy" technology, rather than rethinking/innovating. A new player to the space, and they just "copy" - that sucks. (apologize for my negativity.)

Try Google searching on Vic Gundotra "licking the cookie".

(a metaphor for making a project "his" before others can lay claim.)

"Gundotra, were told, would lick the cookie at Google by putting future products and features into presentations about Google+, long before his teams would be able to get to building them".


DogeDogeDoge 7 hours ago 0 replies      
g+ was garbage from the start and could not compete with facebook. And anyone who used facebook know how trash it is... In terms of UI. But google made it worse experience.

Google will try to recover now :)

akennberg 6 hours ago 1 reply      
Google tried social without a real name policy (aka Buzz) and it didn't work. Google+ has better content.
bkurtz13 8 hours ago 2 replies      
Yes, "he" built Google+ from nothing.
nfoz 8 hours ago 0 replies      
Can he take Google+ with him!?
bookwormAT 8 hours ago 1 reply      
you mean you had hopes that Google would use a unique account for every application again? Or that they use a different commenting solution in every app?

Sorry but that will never happen. If you're lucky they remove the '+' at some point.

leccine 8 hours ago 0 replies      
There plans to rename the service Google- reflecting to the lack of interest of the public using the service even after forcing youtube users to have an account.
gdulli 8 hours ago 0 replies      
I guess there are challenges more interesting than cat pictures to be solved elsewhere.
etfb 2 hours ago 0 replies      
Definition of unintended consequences: I don't instantly recognise the names Eric Schmidt, Larry Page or whoever the other guy is -- I have to look them up, and to be honest I keep mixing up Larry Page and Larry Wall. But I know Vic Gundotra, because he's the wanker who pushed the real names policy and made Google+ the laughing stock among my various communities. "I am a Google employee who likes donuts", indeed!
Click Python library for command-line interfaces pocoo.org
273 points by grn  15 hours ago   95 comments top 27
the_mitsuhiko 13 hours ago 4 replies      
I did not expect this to be on hackernews this early. I want to point out that I have not made a release yet and it's not yet feature complete. Mainly I want to ask for feedback on the general design.
hoodoof 15 hours ago 4 replies      
Gorgeous. This guy has a full time job, a wife, and wrote Flask and Werkzeug, ItsDangerous, Sphinx, Markupsafe, Jinja2 (and Jinja) and that's just some of the well known stuff. Handsome and young too. Bastard. He probably saves the world in a dinner jacket in his spare time.
clarkevans 13 hours ago 1 reply      
It seems to me that there are a few projects similar this. Here is another, https://pypi.python.org/pypi/Cogs/ conceptualized as a "Makefile" replacement).

I'm wondering if there could be a breakout at the next PyCon to see if we could discuss approaches and come up with a unified way to do convert Python libraries into command line scripts?

bru 13 hours ago 2 replies      
>You can get the library directly from PyPI:

>pip install click

Well... no you cannot. See the page: https://pypi.python.org/pypi/click

The package hasn't been uploaded yet. However one can install it straight from the git repo:

> pip install git+ssh://git@github.com:mitsuhiko/click.git

tudborg 14 hours ago 4 replies      
It looks really well done.

I still prefer docopt (https://github.com/docopt/docopt) . It is so much simpler to use.Click seems to be a bit overengineered.

mahmoudimus 5 hours ago 0 replies      
I should write up a comparison between:

- Cement (http://builtoncement.com)

- Cliff (http://cliff.readthedocs.org/en/latest/)

- Plumbum (http://plumbum.readthedocs.org)

- Argh (https://pypi.python.org/pypi/argh/0.24.1)

- Aaargh (https://github.com/wbolster/aaargh)

- Baker (https://pypi.python.org/pypi/Baker/)

So many more to choose from. Now we get to evaluate Click. Seems like the reason Armin wrote Click was to load options dynamically, but that's what Cliff does via stevedore (https://github.com/dreamhost/stevedore).

My favorite feature about Cliff though is: http://cliff.readthedocs.org/en/latest/complete.html which comes out of the box, but then again, there's Argcomplete (https://github.com/kislyuk/argcomplete).

EDIT: Updating from previous posters

- Naked (http://naked-py.com)

- Docopt (http://docopt.org)

- Clint (https://github.com/kennethreitz/clint)

- Argvard (https://github.com/DasIch/argvard)

- Commandr (https://github.com/tellapart/commandr)

- Argtools (https://pypi.python.org/pypi/argtools/0.1.2)

- Plac (https://pypi.python.org/pypi/plac)

peterjs 13 hours ago 2 replies      
On a related note. Which python library would you recommend for text-based interfaces? I have never used ncurses, so I don't know how complex it is. What I would like to achieve is having a user launch my script from the command line, use the text based interface to select a source and destination folder, set a few parameters and show a progress bar.
jobeirne 11 hours ago 0 replies      
This doesn't look much different than argh, which has been around for ages: http://argh.readthedocs.org/en/latest/tutorial.html
xiaq 10 hours ago 1 reply      
A bit off-topic, but I like how pocoo.org uses different fonts for different projects:

Flask: Georgia for text, Garamond for titles

Werkzeug: Lucida Grande for text, Ubuntu for titles

And now click: Ubuntu Mono for text, Open Sans for titles

erlkonig 10 hours ago 1 reply      
Why is it that (nearly) every description I read about some random new Python command wrapper fails to get the "python" and ".py" out of the command examples, even in Linux?

I don't blame this particular offering, since I don't think release was actually planned just yet and any number of other projects have made the same subtle mistake.

Command Name Extensions are Harmful. Don't expose such an implementation detail in every example, lest everyone actually follow them. Use the "#!/usr/bin/env python" or whatever at the top of your scripts. And yes, you can keep the .py if what you have is a library, not just a command (but it's nice to then make a wrapper the doesn't expose the implementation language). And obviously in other OSes where the command extension can be omitted and still work this isn't such a big deal.

But in Unix/Linux, commands should be reimplementable in a different language without making some .(extension) a like, retained to keep from breaking other things that depend on it. Just say no :-)

thu 14 hours ago 3 replies      
The biggest gripe I have with using Python for rich command-line tool is the startup time. One of the first reason I like to write a nice command-line tool when I start a project, say foo, is to be able to do `foo --help` to quickly see and remember what the project can do (I have a very bad memory and doing this makes it possible for me to jump back faster to a project, even well documented. I can forget what I was doing in just a few days and so I add a lot of small commands).

In short running `foo --help` should be instant and if it loads all its modules to list the different sub-commands and their respective description it is really too slow.

A possibility is to cache some information (e.g. generate a text file or a small Python script).

nubela 14 hours ago 1 reply      
Ahh.. I really like pocoo's products. But I've found manage.py (https://github.com/Birdback/manage.py) to be far leaner and simple. What do you guys think?
kylemaxwell 5 hours ago 0 replies      
Trying to figure out how this compares to Naked (http://naked-py.com) in terms of goals.
pandatigox 15 hours ago 2 replies      
Kudos again to the pocoo team for creating such a simple and useful library. It sure beats optparse :)

On a side note, however, does anyone know why the team prefers to wrap functions in decorators? Flask also uses them, but what's the design decision behind them?

lorenzfx 14 hours ago 0 replies      
This looks pretty similar to aargvard [1] (which is, as stated in the README, inspired by flask).

[1] https://github.com/DasIch/argvard

buster 14 hours ago 0 replies      
Looks nice but the example looks almost exactly like https://pypi.python.org/pypi/argtools/0.1.2
gdw2 10 hours ago 0 replies      
Reminds me of Commandr. Both use decorators. https://github.com/tellapart/commandr
sotte 15 hours ago 1 reply      
Does anybody know docopt? I really like it because you simply write the help/usage as text and docopt automatically generates the parser for it.

Take a look at the example in the README: https://github.com/docopt/docopt

frodopwns 3 hours ago 0 replies      
user@uweb1:/$ pip install clickDownloading/unpacking click Could not find any downloads that satisfy the requirement clickNo distributions at all found for click
moondowner 12 hours ago 0 replies      
Little unfortunate naming. Isn't Click a trademark of ASF? http://click.apache.org/
_ZeD_ 13 hours ago 0 replies      
do you know plac[0]?

[0] https://pypi.python.org/pypi/plac

eeadc 14 hours ago 1 reply      
Looks like a nice wrapper around argparse: https://docs.python.org/3/library/argparse.html
waitingkuo 14 hours ago 0 replies      
Time to rewrite some of my dirty command-line programs
pekk 10 hours ago 0 replies      
There are like 20 libraries for this already and this looks very similar to those. But Armin Ronacher, therefore it will be popular
tiziano88 13 hours ago 1 reply      
is there anything like this for Go?
Am I evil, or is killing patents just plain fun? inventropy.us
265 points by beepp  1 day ago   115 comments top 19
dfc 23 hours ago 2 replies      
I do not know what jurisdiction the author is referring to when listing the requirements for a "good patent." But in the US novelty and non-obviousness are just two of the five requirements for a "good patent." The other three are just as important:[1]

  (1) patentable subject matter  (2) utility  (5) enablement
After slogging through the language of a lot of patents you start to wonder how so many of them were deemed to meet the enablement requirement.

[1]: http://www.law.cornell.edu/wex/patent

robotys 23 hours ago 4 replies      
Why on earth i did not have read anywhere about USPTO officials return a letter to this so called patent troll with simple reply: "Explain this pattern in layman language."

USPTO officials should have the power to inquire pattern applicants about their pattern until complete understanding, not to work alone and try to understand it by them self. It is hard to understand something technical, and it is utmost difficult to try understanding technical stuff with only 'lawyer' language as interface.

The fact is, many of this pattern applicant try to hide their 'Obviousness' of their pattern behind lawyered up and jargon filled language that proven to be hard to understand and open to misinterpretation.

scromar 10 hours ago 1 reply      
I posted a similar comment in the author's post, but I figure I'll post it here too in case anyone finds it useful.


I sympathize with the author's belief that many software patents are obvious, but as a practicing patent attorney I just want to point out a couple of things:

1.The patent claim copied in the post is from a published application, not a patent. It is common to file an application with broader claims, and then to narrow those claims during the process of getting the patent. Thus, art that you find based on that claim may not actually disclose or render obvious a claim that eventually issues in a patent. It is important to look at the history of the application to see how the published claim has been amended at this point.

2.Obviousness is judged as of the time of invention or application filing. Because hindsight bias is very difficult to avoid, the patent office relies on actual art that was disclosed before the invention date. The art generally must teach each and every limitation of the claim. I submit that a photo album that groups your photos by the time they were taken would not teach all of the limitations of the claim in the post.

zalzane 23 hours ago 4 replies      
project idea: machine learning program that decrypts legalese to find similar patents

i wonder if uspo would be interested in licensing it if it was effective enough

lyndonh 18 hours ago 5 replies      
The author doesn't understand the patent system.

The government, via the patent office, is selling a monopoly on technology. If someone writes a frivolous application the patent office usually takes the money and grants it.

Does the author think the patent office gives refunds ? There is no incentive for them to stop granting bad patents. While this situation persists, it makes financial sense to apply for a patent if you think you can get it.

It's a self perpetuating cycle; it's easy to get a patent -> many people apply -> there are too many applications to examine thoroughly -> more people apply -> etc.

Killing patents, as the author suggests, is a waste of time. The USPTO is not going to be more rigorous when checking patent applications. The proper solution is to make it very easy to strike down bad patents and stop accepting them in the first place.

vishaldpatel 23 hours ago 3 replies      
Does it cost a large company more to file a shitty patent than it does the community to crush it?
bovermyer 13 hours ago 1 reply      
Could someone explain to me why patents are ever a good thing?

I'm genuinely curious.

gmisra 19 hours ago 1 reply      
Maybe we should consider whether software patents are necessary at all? There are disciplines where the core content is not itself patentable (or "intellectually protectable"), primarily because obviousness is hard to prove. The most accessible examples are food recipes and fashion designs - how do you demonstrate that a specific recipe has never been conceived of in the past? For disciplines that rely on the assembly of existing ideas, this actually seems like the rational thing to do.

Alternatively: can you think of any software patents that make sense to you?

rowyourboat 18 hours ago 1 reply      
"Am I evil, or is killing patents just plain fun?"

Neither. You just like false dichotomies.

Fando 17 hours ago 2 replies      
I like to think about how the world would change if patenting was not generally done. Rather, anyone could copy and implement everyone's ideas. How would this look in the grand scale? I think it's possible to discover a way of coexisting in such a world. Anyways, I agree with the author, patent killing is fun.
wudf 23 hours ago 1 reply      
Can you write off the time spent as a charitable donation?
DonGateley 21 hours ago 1 reply      
Does anyone know when all this started? Who got the first software patent and when?
JOnAgain 9 hours ago 0 replies      
Mis-read title as "patients"
chris_wot 17 hours ago 0 replies      
You are not evil, and killing patents is fun.
krishnasrinivas 21 hours ago 2 replies      
I read "patents" as "parents"
blueskin_ 15 hours ago 0 replies      
By definition, killing patents is good.
austincheney 22 hours ago 3 replies      
I included a full language specification with my patent application. Reading boring specifications can also be a drag, so I even wrote a version that sorts information by color. Its all available on http://mailmarkup.org/

If you are aware of any prior art please do the right thing. I have not been able to find any, but that does not mean it doesn't exist.

esquivalience 15 hours ago 0 replies      
Although the example cited in this article seems pretty obvious on what we have, for all we know (a) it is the very first example of time-sorted photos and (b) there could be further context in the article saying that the analysis is done by reference to specific features, such as assessing movement across a field of view (rather than by reference to a timestamp, which is what seems to be implied).

Who is to say this isn't novel? Seems to me it could be a very helpful technology to sort unsorted old photographs or analyse scraps of cctv footage .

That is just an example, but the major problem is that with AskPatents you will always be looking at these applications in a different context to the context in which they were written. The mere fact that something is being read can tend to make it more obvious, when actually at the time it was dreamt up it could have been quite a leap.

Also, the fact that you are reading the patent some time - up to a year - after the original grant means that it will be read in context of the state of the art today. By the time a patent is published its invention probably in common usage already.

All this tends to bias towards a finding of 'obviousness'. Even finding something close that was previously in use doesn't preclude obviousness - it just means that the inventive step is smaller than otherwise thought. If the reader already has an inherent bias against software patents in principle, this will only compound the problem.

There are several significant legal concepts specifically geared to avoiding that mental bias. They are there for a reason, and could be eroded by poor application. That would have a negative effect for any inventor.

bbarn 21 hours ago 8 replies      
Why is it with patents everything has to be nothing ever, never a good reason? I'm sure my perspective here might get this downvoted to oblivion, but really, think for a second what would happen if tomorrow, no software was patentable? Why would a large company focus any effort on R&D, new idea development, vs investing that money in just ripping off the competition and scaling it better? (not that that ever happens as is..) There are lots of us that make our living designing or developing things that some business or shareholder wants developed simply because they want to be the ones that did it, or did it in a way no one else could steal.

I don't think zero patents for software is a great idea, but I also don't think the lawyerization of patents has helped anyone long term. Perhaps a better approach is to get actual developers and software professionals in patent approval/dispute resolution positions? A parallel to that might be the advent of the Test Engineer or the Dev Ops positions. Test Engineering showed the world the value someone with development skills could have over classic point and try to break testing, just as Dev Ops showed what having some dev chops does for deployment/network infrastructure.

Forensic Ballistics: How Apollo 12 Helped Solve the Skydiver Meteorite Mystery planetary.org
263 points by ColinWright  2 days ago   31 comments top 11
mixmax 2 days ago 1 reply      
Submissions like this is the reason I frequent HN! A thorough well written and well researched article that point by point dissects an interesting event and comes to a surprising conclusion.

If you come across other articles of this calibre please submit them!

tc_ 2 days ago 4 replies      
The article's discussion of golf balls reads completely opposite to standard well-accepted theory. The author writes:

> [The "drag catastrophe"] is when an object is falling so fast that the boundary layer of gas separates off the object and the drag force suddenly drops by a factor of almost 10. The reason why golf balls have dimples is to cause this drag catastrophe to happen at slightly slower speeds, so the ball will travel a lot farther.

This is very confused. Golf balls have dimples to prevent flow separation. The dimples are turbulators meant to induce turbulent flow around the golf ball before the laminar flow would otherwise give way to flow separation. Far from decreasing the drag force, flow separation increases it substantially.

[Also, the term "drag catastrophe" appears to have no relevant hits on Google other than this one article.]

[Edit 1]: The author is well qualified and unlikely to be confused himself; so I don't doubt his conclusion. Reading charitably, turbulent flow might be called a form of separated flow, and this must be what the author means. His coefficient of drag graph supports this interpretation as his "drag catastrophe" would be happening when you would expect a transition flow (from separated laminar to turbulent). Pedagogically he should have more clearly distinguished it from the typical laminar separated flow.

thedrbrian 2 days ago 0 replies      
Sounds a bit like the fighter pilot who shot himself down


mcguire 2 days ago 1 reply      
"It turns out that when the rock size is set to about 3 centimeters in the simulation, it passes the skydiver at 12 seconds. This rock size just happens to have the same terminal velocity as the solution we found by matching the velocity seen in the video."

Hm. Poking around[1], drogue/pilot chutes seem to be around 30 inches or 75 centimeters in diameter. I wonder how you'd get a 3cm piece of "gravel" mixed up in that?

[1] http://www.chutingstar.com/skydive/chernis-collapsible-main-...

darkhorn 2 days ago 1 reply      
markbnj 2 days ago 0 replies      
Is someone going to resolve the golf ball drag debate conclusively?
Gracana 2 days ago 0 replies      
Very interesting but, a little disappointing. Like the author, I was hoping it really was a meteorite.
Osmium 2 days ago 0 replies      
Sad conclusion, but that's what science is all about. Fantastic analysis.
jpswade 2 days ago 4 replies      
tl;dr: Occams Razor demands the simplest explanation and so it probably was a stowaway piece of gravel
dvirsky 2 days ago 0 replies      
Read TFA and find out :
Theodores 2 days ago 1 reply      
It was all going so well...

It cant be anything else. The shape is typical of meteorites a fresh fracture surface on one side, while the other side is rounded, said geologist Hans Amundsen.

Every hoax just needs one credible expert to put their name to it. This story may not have been a deliberate hoax but it ultimately was a hoax. It is good to see something debunked with some good, old-fashioned science!

The Case Against ISP Tolls netflix.com
256 points by acgourley  6 hours ago   161 comments top 16
nostromo 4 hours ago 6 replies      
Netflix and Google and Amazon and Apple should join forces to let Comcast customers know when they're being throttled.

"Your video is buffering because Comcast is slowing your connection down. Click here to contact Comcast customer support. Click here to find Netflix Certified providers in your area."

Netflix and Google and Amazon and Apple all have great brands with high customer satisfaction. They should utilize all those eyeballs to funnel even more hate toward Comcast.

notdonspaulding 5 hours ago 3 replies      
Comcast can do what it does because Democrats portray the company as a problem with capitalism, while Republicans portray it as a problem with regulation.

In truth, it's both. It's a problem where a company has co-opted well-meaning regulation to snuff out competition, which is a thing capitalist companies do. Meanwhile, citizens point the finger at each other instead of removing Comcast's ability to monopolize.

Either the regulations that make competing as an ISP difficult need to be stripped out (my personal favorite), or the last mile needs to be public property. Either way, Comcast getting to be the only one sitting on that last-mile connection is what has given rise to its stranglehold on the internet.

We need to support fixing this on a local/state level. Support smaller ISPs in their attempts to disrupt the incumbents, and support legislation that actually encourages innovation in the marketplace (even if that means striking policies from the law books).

6cxs2hd6 4 hours ago 1 reply      
When you think about it, Comcast NBC Universal is doing the same stuff with Aereo.

Broadcasters get a government monopoly on a finite resource. Broadcasters don't provide a good signal to all customers. Some customers want to use Aereo (that's not the only reason, but a real reason) instead of paying for cable.

But no, the broadcasters want to be paid for not-providing a signal to those customers. Instead of investing to improve their infrastructure, they want to be paid for not improving it. With a straight face.

Of course it's especially ridiculous in the case where it's Comcast NBC, and they are also an ISP. If Aereo wins at SCOTUS, and grows big enough, Comcast NBC can get their pound of flesh as an ISP like they do with Netflix.

It is all well and truly fscked.

fizzbar 4 hours ago 1 reply      
This image http://www.willchatham.com/wp-content/uploads/2014/01/net.pn... has been making the rounds on reddit, surprised it hasn't appeared here yet. This is the most visceral/succinct explanation of the consequences of allowing the ISPs to have a "fast lane"...
dec0dedab0de 4 hours ago 0 replies      
This makes me so mad. I kind of wish all of the Big Internet providers like Level3, and Sprint would team up and block all traffic in and out of Comcast. Maybe redirect all http traffic to a page listing alternative ISPs.
debian3 4 hours ago 2 replies      
You only need two or three major website who blackout their services to the Comcast user and redirect them to a page explaining that situation. Imagine if their subscriber can't access to Google and Facebook, and on that redirection page they target ads for alternative provider in your area. Would be nice to see how long Comcast would take to change their mind.
skkbits 9 minutes ago 0 replies      
Is that "tata" from India ? How do they play role here ?
jebblue 3 hours ago 1 reply      

>> "In this way, Comcast is double dipping by getting both its subscribers and Internet content providers to pay for access to each other."

..and this:

>> "Put simply, there is one and only one way to reach Comcasts subscribers at the last mile: Comcast."

...should be illegal. This really torques me. This smacks of how AT&T acted in the 80's when I was in my 20's and starting out on my own and how Microsoft acted in the 90's before they got busted, which is what lead me to Linux.

andrew93101 2 hours ago 0 replies      
Has there been discussion of passing this fee on to customers who access from Comcast in the form of a surcharge? If Netflix hiked prices for customers who were connecting from Comcast networks, it would encourage news of this business practice to spread.
mikekij 5 hours ago 2 replies      
Reading this actually makes me hope that Facebook gets their wifi-beaming balloons up and running quickly. I'd like to support Comcast as little as humanly possible.
clubhi 1 hour ago 0 replies      
I dropped Netflix about a month ago when I first heard they made this agreement with Comcast. They are part of the problem.
higherpurpose 5 hours ago 3 replies      
This could be the right time for Netflix to move to P2P, so then most of the bandwidth isn't consumed by them, but by their users.


It's going to take a lot to fight the likes of Comcast in this one, which means Netflix will also need support from the community - so Netflix, please stop it with the boneheaded DRM push on the web. Guess what, if you are going to use P2P, you're going to need a plugin or native app anyway. So just stop trying to corrupt W3C already in a pointless move that can't and won't stop piracy anyway (which I'm sure you already know).

phrasz 5 hours ago 1 reply      
They should use classic Cable TV vs. Local Broadcasters tactics:Block all IPs from Comcast and force them to pay access to your content...which happens to be the exact amount they want for the Tolls.

If we consumers have to pay to access to content why shouldn't ISPs?

brianmcdonough 5 hours ago 0 replies      
The problem is sufficiently complex and boring to favor Comcast. What I would like to know is this: It is already a regional monopoly in high speed internet because no on can touch their speeds, why would anyone consider extending their monopoly nation-wide?
pixelcort 4 hours ago 2 replies      
I think the real problem is unlimited internet connections.

If ISP customers paid per-GB and/or per-Mbps, then the ISP shouldn't care if it's Netflix or Hulu or YouTube being consumed.

The issue is that today, it's difficult to get a good feel for how much bandwidth is being used at any given moment. Unlike a water faucet, our devices don't really have a knob we can adjust the speed with.

exelius 5 hours ago 8 replies      
This is a very public battle between two companies about who should shoulder the cost of delivering video to your home.

Comcast's argument is that they have built a network at great expense for carrying content that others make a profit from, and they want to capture at least some of that value.

Netflix's argument is that they have built a CDN to deliver that content to Comcast's doorstep, and that Comcast won't accept it.

In my mind, Netflix charges money for their service and is not entitled to a free ride. The fact remains that running an ISP is not free, and you can't scale out a network faster than the cash flows (of which, yes, profits are a part) allow. But think about this: Netflix has a 36% gross profit margin, and Comcast's cable/Internet business has an 11% gross profit margin. Netflix's cost structure is lower in large part because Comcast does a lot of the expensive work for them (i.e. last-mile network maintenance and distribution.)

Netflix drives significantly increased Internet traffic usage, and Comcast's investors should not have to accept lower profit margins so that Netflix's investors can enjoy larger margins because of investments that Comcast's investors have made.

I would have a lot more sympathy for Netflix if their margins weren't so high. It just comes off as greedy when they have a 36% gross margin.

GitLab Open Source Git Management Software gitlab.com
250 points by hiby007  2 days ago   111 comments top 32
Rygu 2 days ago 7 replies      
We use and love Atlassian Stash (https://www.atlassian.com/software/stash), it's excellent for code reviews. The diff view options and commenting make it easy to create pull requests, get feedback and eventually merge code into the master branch. (Per branch permissions are awesome too.)

Long time ago we also assessed GitLab and found it usable but not quite there yet for production use. Though it looks nicer now.

davedx 2 days ago 2 replies      
We've been using Gitlab side by side with Github for the past few months. In general it's a very nice replacement, but one thing I've been fighting with lately is code review capabilities.

The problem I've been having is when I go to a commit, in Github I'll be able to see what's changed (the diffs), but in Gitlab I often get "diff too big and not shown for perf reasons" or suchlike. This inability to reliably view diffs makes me wonder how we're going to do code review on projects hosted on Gitlab.

Does anyone else have experience with this, or any workarounds?

ridruejo 2 days ago 5 replies      
BitNami (I'm a cofounder) provides free installers, VMs and cloud images for GitLab. You can also spin 1h demos. https://BitNami.com/stack/gitlab
Touche 2 days ago 3 replies      
Ah, finally a proper package! https://www.gitlab.com/downloads/

This will make GitLab an easier choice in the future. If you're looking for a lighter choice Gitbucket is really nice: https://github.com/takezoe/gitbucket

sytse 2 days ago 1 reply      
We just released GitLab 6.8 minutes ago https://www.gitlab.com/2014/04/22/gitlab-6-dot-8-released/ The main new feature of this release is protection against force pushes. Other changes include improvements to mentioning in comments, Merge Request UI improvements and new API features.
lucasnemeth 2 days ago 2 replies      
I am working on a Brazilian public sector project, and since we only use open source alternatives running on our own servers (for security reasons), we chose Gitlab. It works nicely. The earlier versions consumed a lot of memory, but recently that's getting better. Would not recommend a too lightweight server, though.
parfe 2 days ago 3 replies      
For solo work as a dev surrounded by hardware people, I set up GitLab. Installation took a lot of effort and had a surprising number of service dependencies. For a single user it wasn't worth my time to install or maintain. Though, it is a really nice product once running.

I switched to Gitweb and sd (http://syncwith.us/sd/using/). I don't love sd, but the overhead of managing source and tickets for myself makes the combo worth it.

jevinskie 2 days ago 0 replies      
I just got my install of Gitlab working last night. I used the omnibus package (bundles its own nginx, ruby, postgresql, etc). I had to tweak the omnibus settings out of the box because unicorn was timing out on the initial page load.

After I fixed that, I disabled the bundled nginx so I could instead use the system's nginx. I had to modify the chef configuration scripts to change directory permissions so the www-data nginx could read the git-owned socket.

I'm very happy now that I got it working! My only nitpick (aside from some installation frustrations) is that the syntax highlighting for large files can be very slow. Does anyone have any tips for that?

SEJeff 2 days ago 2 replies      
Kind of surprised no one has mentioned gogs, which aims to be an on-premise github, but written in golang with a single binary deployment:


thecodemonkey 2 days ago 1 reply      
We've been using GitLab for our production projects for almost a year now.

The biggest reason for moving from GitHub to GitLab was not having to worry about additional cost for creating new projects (we have hundreds of projects and most of them are rarely accessed long after they were created).

It's also neat that we have the ability to customize GitLab if we wanted to, e.g. in 2012 we ran some experiments to create projects from templates directly in the GitLab interface [1]

And lastly, since we're not in an environment with six-digit numbers of users and constant DDOS attacks - we're able to keep a much better uptime than we had before with GitHub.

[1] http://enga.ge/development/creating-a-sturdy-deployment-work...

M4v3R 2 days ago 1 reply      
We're using GitLab for source code and issue management, as well as for internal documentation, and I must say it's really great piece of software. Plus, it's very actively developed and gets new features/fixes all the time.
schrijver 2 days ago 1 reply      
A nice feature is that it also features a REST API: http://doc.gitlab.com/ce/api/

One thing Im curious about is performance, as with a personal project I found the `grit` git-ruby bindings rather sluggish when loading in multiple repos The new `rugged` bindings are supposed to perform much better and if I understand in time Gitlab will switch to them.

FeloniousHam 2 days ago 1 reply      
My previous experience with Gitlab (and others) led me to Gitblit: http://gitblit.org/

Gitblit is in another universe in terms of ease of installation, upgrade and maintenance, and very close on features. Even with a .deb package for Gitlab, my upgrade experience with previous versions wouldn't make me leave Gitblit. It's just dead simple.

joshfng 2 days ago 0 replies      
If you like GitLab, checkout GitHost (https://githost.io) We provide hosted private GitLab instances. We handle upgrades, security fixes, and backups automatically.
hypr_geek 2 days ago 0 replies      
When we migrated over from CVS to git, we installed an instance of GitLab. It is really awesome, a private GitHub for your needs. The setup was a pain though, even after following the instructions. Nice to know they have a single installable package now at https://www.gitlab.com/downloads/.

We also use Atlassian Stash and JIRA for a client project (the client migrated from CVS to git) and honestly, found it to be quite similar in functionality and not too much better for the extra costs. Mostly, it helps that both (Stash and JIRA) are linked together, but I'm sure that can be done with GitLab and another issue tracking software like Bugzilla.

yukichan 2 days ago 1 reply      
It's cool, and this is a nearly useless comment, but the logo looks to much like an alien out of a Whitley Strieber "non-fiction" story. A little creepy I'm saying. Gitlab needs some branding design love.
jbrooksuk 2 days ago 0 replies      
We use GitLab where I work. I was finally able to set it up a few months ago and we've been using it quite heavily since.

Whilst we like using it, the UI doesn't always feel intuitive and has changed a lot over the last few versions, 6.8.0 feels worse to us mainly due to the weird Merge Request UI changes. https://github.com/gitlabhq/gitlabhq/issues/6842

Still, I personally prefer the look and feel of GitHub. But it's a good free solution and we're really grateful for the work people put into it.

pushedx 2 days ago 0 replies      
An open source alternative for Mercurial and hg repositories is RhodeCode [1]. Source code at [2], this is RhodeCode running their own software. It's a nice solution for those who prefer Hg.

[1] https://rhodecode.com/

[2] https://code.rhodecode.com/rhodecode/files/tip/

mrmondo 2 days ago 0 replies      
We switched from github + Gitolite to gitlab a few months back and we're loving it. We've had no issues with it and it's really been a great move for us.
munimkazia 1 day ago 0 replies      
My organization has been using Gitlab for a while now. We had a few issues earlier with integrating LDAP authentication and sorting out attachments for the wall, but the latest version does seem to fix most issues. I am still not very happy with the wiki though (doesn't support folders, no way to upload images, doesn't look very good)
krob 2 days ago 0 replies      
At my work, we aren't using gitlab, but looked into it for our own hosted git and it's pretty nice, considering you can do properly managed repos. We do currently use phabricator though for source-code review, which is pretty nice. You can also introduce new code into the system through it using their arc tool. I think a mixture between gitlab & phabricator is pretty nice. Using phabricator for new feature buildout & gitlab for bug tracking would be the ultimate setup for me.
marciopl 1 day ago 0 replies      
Our company has been using Gitlab since Dec 2012, we had a small team and small code base back then. While searching for a good inhouse github replacement I found GitLab had what I wanted and was worth the time effort. It has been nice to see the evolution and all the features available now.
exabrial 2 days ago 3 replies      
I'm curious what other cool webapps people use?

I use Gitlab, Graylog, Nexus... anything I'm missing out on?

mekael 2 days ago 0 replies      
At my current job we didn't have any kind of version control for our source,(not even a sharepoint to dump things into).I spent some time trying out a whole bunch of different intalls and finally settled on Gitlab. It's pretty nice and I was able to get it up and running relatively quick once I put it in it's own instance rather than sharing a postgres install with something else.
dakridge 2 days ago 0 replies      
For those that want to view a demo of GitLab: http://demo.gitlab.com/
davidgerard 2 days ago 1 reply      
Grocer's Apostrophe alert! "wiki's"
balls187 2 days ago 0 replies      
I run a local gitlab appliance (provided by Bitnami) in VMWare on my dev box, so I can easily browse various source code I have, using their web gui.

Big fan of it.

exabrial 2 days ago 0 replies      
+1 for gitlab. Heavy use in prod with both business and engineering users!
da4c30ff 1 day ago 0 replies      
I was thinking what GNU could be if they launched GitLab or some alternative to replace the archaic Savannah. It could take the project to a whole new level.
peterwwillis 2 days ago 2 replies      
We have gitlab set up at work for our small team, but we never use it. We just do regular old git operations from the CLI and use e-mail and Bugzilla for issue tracking. I've wondered if maybe there was a feature of Gitlab we're not using that we should, but so far nothing's stuck.
suyash 2 days ago 2 replies      
Can anyone explain why would someone use GitLab vs Enterprise Github?
62646c 2 days ago 0 replies      
Been using GitLab for a while. It's really nice
LibreSSL: FIPS mode is not coming back marc.info
249 points by zdw  1 day ago   90 comments top 18
andrewvc 1 day ago 7 replies      
The OpenBSD people sure are abrasive, but they deserve a ton of praise for taking on a tough task that no one else was willing to do, and for fixing the damn mess.

Between FIPS, the NIST and the OpenSSL foundation it's amazing that crypto even works.

ChuckMcM 1 day ago 1 reply      
Its a reasonable stance, I expect someone will create libfipsssl for the reason that they can charge money for it. For a while at Sun I suggested that we meet the "OSI Network Standards" requirement by just sending a library with stubs that would close out the link, and if they ever got called email us. The humor didn't seem to reasonate with the Federal Systems people :-)
ebiester 1 day ago 1 reply      
For those who don't know what FIPS mode is (like me): https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NS...
sandGorgon 1 day ago 1 reply      
If people really need FIPS mode, somebody will fork again andcreate libfipssl.com and charge a million bucks for it. And then theones who need FIPS mode can pay to get it, but they won't pay us. TheOpenBSD Foundation will gladly take donations to improve libressl, butsome money is just too expensive to accept. Sitting on (or moreaccurately, under) a million dollars in custom contracts creates whatI will charitably call a priority inversion.

Donate here - http://www.openbsdfoundation.org/donations.html

SEJeff 1 day ago 7 replies      
This basically means libressl can not be used by the US Govt or any contractor working with the US Govt, which is a HUGE number of companies. By proxy, it means that libressl will not make its way into Fedora or RHEL, which also limits the adoption of it a fair bit.

Perhaps the solution is to fix FIPS instead of berating the people forced to use it.

metafunctor 1 day ago 0 replies      
Great call.

Having personally been through the toils of FIPS certifying crypto libraries, I smiled and nodded as I read this post.

FIPS is about compliance, not about security. LibreSSL is about security, full stop.

atonse 1 day ago 2 replies      
Just looking at the wholesale cleanup [1] makes me shudder to think about how tough the code was to maintain in the past.

Kudos to the libssl team for injecting some much-needed energy into such a critical library.

If only this were available on GitHub, we could more easily browse the code and learn about patterns and anti-patterns in writing secure code.

[1] http://freshbsd.org/search?project=openbsd&q=file.name:libss...

api 1 day ago 1 reply      
I did some consulting once for a government lab. FIPS is idiotic. It's primarily protectionism for commercial software vendors from OSS competition, and it does not improve security. If anything it hurts-- it mandates closed-source options that cannot easily be audited, and it slows down the upgrade cycle thus preventing bugs that emerge from being quickly patched.
sjs382 5 hours ago 0 replies      
>OpenBSD Foundation will gladly take donations to improve libressl, but some money is just too expensive to accept.


rubyfan 14 hours ago 0 replies      
OpenBSD lives their mantra and are unafraid of what the internet comment boards have to say about it.

They do what they feel is right and believe others are free to benefit from it or go make your own. The world needs more of this not less.

What the world needs less of is people with opinions and inability or unwillingness to take action other than complain about the actions of others.

ballard 1 day ago 0 replies      
This is great news.

FIPS mode is as my grandfather would say: "eyewash." Something that appears to address something by checking boxes on a clipboard audit but doesn't provide anything but security theater.

CopperWing 15 hours ago 0 replies      
OpenSSL package maintainer for SUSE says openSUSE/SLES will stay with OpenSSL (plus handpicked commits from LibreSSL repo), because of missing FIPS and other questionable commits in LibreSSL.


uuid_to_string 21 hours ago 0 replies      
OpenBSD has to be commended for executing on a simple ideathat sadly few developers ever adopt:

You can make software more valuable by taking things out.

ballard 1 day ago 0 replies      
FIPS mode is as my grandfather would say: "eyewash." Something that appears to address something by doesn't. (FIPS mode is a "clipboard audit.")
ausjke 1 day ago 0 replies      
working on a FIPS embedded network product right at the moment, gosh it's a maze to get even started, I'm still going to use the now patched openssl for this, as really, the alternatives are not many, and openssl remains to be the most deployed one in the field.checked NSS but its usage in embedded device is rare, other ssls(ploarssl, matrixssl) may work, but again openssl just wins on the popularity side, in a huge way.
ticktocktick 1 day ago 0 replies      
So it will be consistent with OpenSSH, also a project of OpenBSD devs.
guyinblackshirt 1 day ago 0 replies      
that makes sense. probably FIPS-certified firewall vendors such as sonicwall will be the ones affected by this.
bitwize 1 day ago 0 replies      
Lol, if WorldTechTribune were still around the headlines would write themselves. "Windows contains military-grade encryption certified by the U.S. government. Linux no longer does. Don't be fooled by the communist Al-Qaeda sympathizers in open-SORES development! Windows is more secure!"
How to be a great software developer peternixey.com
241 points by buro9  2 days ago   135 comments top 39
gregd 2 days ago 11 replies      
I for one loathe the term "Rockstar" programmer. For those of us over 40, it connotes someone who is young, with no familial commitments, can work 80+ hours a week, only needs RedBull and Mountain Dew to exist, has no loyalty and will burn out by the time they're 30.

I for one run away from any company looking to hire a "Rockstar" anything. It's overused and abused.

buro9 2 days ago 2 replies      
Two things always stand out to me:

1) Are you thinking before you touch the keyboard?

If you have the mental model right for data structures, patterns, networking, caching, then you'll have fewer bugs. Get the mental model wrong, and one can treat a bug as a code smell, it probably indicates a fire that you've just not noticed yet.

2) As all bugs that have ever gone live have got past testing, Q&A and user acceptance... are you better at reacting to the unexpected (bugs) than the expected (testing)?

Bugs will happen, best to have great processes for when they occur.

I advocate insane measuring and monitoring which means thinking of instrumentation when you author code. This goes back to thinking, as a team and company one can fight the cargo cults with evidence. Monitoring and measuring dramatically reduces the time it takes to react to an incident, and guides which things should be tested in future.

kamaal 2 days ago 0 replies      
On a side note, I asked a fairly successful tech professional->CTO->CEO what it took be a great programmer/engineer. Ironically the answer I got was not even related remotely to software in any way.

The thing he told me was that in all his experience, working with awesome people he found that "working things on paper", gave massive clarity in most projects. Human minds are not great at visualizing large stacks, diagrams and lists. Hence writing down things, simplifies things. In fact when you write things down. Draw that diagram, talk to yourself and refine your ideas on paper in a couple of iterations. You largely solve that problem of reuse, variable naming, problem identification. Agreed that some things demand you play with code a little to proceed further. Yet, planning on paper solves most problems which programmers face today.

Agile fashion unfortunately glorified many bad practices.

The more I pondered over that though the more I realized, how many bad practices came into software development with this quick development-deployment methodology. In the days of the past while you worked out some documentation before you started a project, you often probed, visualized and solved problems on paper. These days a lot of software is developed by the time you realize its actually bad. By then going back is not an option and you have live with it.

sockgrant 2 days ago 1 reply      
A lot of software engineers don't realize that it's not about how much you work, but how strong you work when you work. It's about efficiency, good decisions, and total concentration.

- Turn off e-mail.

- Turn off chat.

- Don't check hacker news. Or any website that is not for your current task.

- Don't let coworkers interrupt you.

- Get noise canceling headphones.

- Have a goal to get through, and apply yourself to it completely.

- Get very good at evaluating 3rd party code, then before you write code, see if there's a library/native code that will do the work for you.

- When you write code, if you _know_ the right way to do something, do it right the first time.

- If you're not _sure_ you know the right way to do something, then just get the code out into the editor. After it's functional, take a look at the code later and decide how it can be refactored. Refactor it immediately.

- Don't write any tough code when you're not at your best mental capacity. When you feel yourself mentally drifting on a hard task, put the code away and go work on easy features. Work on your hardest problems during your best hours.

vinceguidry 1 day ago 0 replies      
Development is a creative act, everybody creates differently. I don't think I'd be any more productive at four hours a day than I am at my current 2 hours. Some days it's closer to 30 minutes. Rare days push 5 hours.

At no time am I ever behind on anything. I often solve problems without touching my laptop, sitting in my boss's office thinking things through.

I talk myself and my boss out of anything that looks like work. (He never gets the hint and insists on working long hours. I'm gonna have to break him of that habit someday.)

Things on my end run smooth because code isn't being committed every day and I verify that it's working before I let it go. I happen to be a team of one, so this is easy.

I've come to the conclusion that focusing on productivity is mostly a sham. Before you do anything, spend half a day thinking about the necessity of doing that thing, what consequences it'll entail, where it fits into your overall plan, what you'll do if your approach is wrong and you have to backtrack, ways to change your approach so it's more flexible, whether you might be trying to solve the wrong problem and the problem you're having is actually social. Nobody spends enough time doing this.

If you have to, use a checklist, and force yourself to do it before touching a text editor. Don't think with a cursor and keyboard, guaranteed you'll find yourself working prematurely. Better to fuck off than do that. I want to run a software business where more time is spent on YouTube watching cat videos or whatever than on writing code. Writing code's not cool, you know what's cool? Erasing code. That's cool.

zwegner 2 days ago 2 replies      
I agree with most of the points of the article (finding a balance for testing, naming, writing readable code, etc.) I'm not a fan of the tone, though. I might consider myself a "rockstar" programmer, if not for the fact that it sounds incredibly douchey. At least I'm closer to that than a "workhorse". And yet I don't think I fall into the negative stereotypes he mentions... I guess that explains my reaction (not to mention the self-quoting of tweets).

My biggest problem with software development as a profession is that people don't think before they do it. I've found that a lot of people just hack away randomly with some code that approximates their idea of how it should work. It usually doesn't work, so they just change things aimlessly until it appears to. I can definitely understand this mentality, I've been there--it happens to me when I'm programming beyond my understanding. But I try very hard to recognize when this happens, and stop to think more. There's very little value in writing code that even the author doesn't understand. Accumulate enough of this code, and you get the typical horribly-designed patchwork mess that nobody can read, debug, or change.

To me, the ability to solve problems that you're not familiar with is paramount in importance for actual software engineering. If you're just building some CRUDdy business app that does nothing remotely complicated, OK. But bubble sorts and link shorteners? Come on, that stuff is simple. Maybe you never need to implement those specific examples, but as a placeholder for general problem-solving skill, it's a low bar.

Perhaps that's why the title refers to "software developer" rather than "software engineer". I don't really know. But I do wish there were more jobs that required real problem solving skills (and don't require a PhD...).

agentultra 2 days ago 5 replies      
I'm rather against the "working horse," methodology to software development. Maybe it's because I'm lazy but I'd rather work with tools and processes that let me achieve more with less effort. The "get it done," attitude is admirable but ultimately, I believe, leads to the very same duplication of effort that the author admonishes.

For example, you're building a web application that has a signup process and the sales team uses an external CRM service to collect sales pipeline information. The programmer who shows up and does their four hours pulls out the usual libraries and writes the code to make it happen. The view fires up a few requests in an asynchronous task that updates some models and everyone is happy. However the sales team decides to change CRM services -- there's a shiny new kid on the block with features that would improve their sales process. The work-horse programmer gets the story and hunkers down. Four hours later there are a new set of tasks, a signup function, and hopefully a few tests.

The missed opportunity is that CRM software isn't terribly interesting and it should matter little when the web application signs up a new user whether you're talking to CRM A or B. I often find little scenarios like this that just add up over time. They're often missed because the focus is on getting something done for the next four hours/for the next sprint planning session/whatever. There's no real planning done beyond the next little bump in the road.

And so our solution is to use the same old tools and practices but simply hire more people to be work-horses.

I'd much rather engineer more robust RPC frameworks that can negotiate the protocols on their own so that a valid business decision to use a competing service doesn't cost me a couple of days of boring, tedious work. I'd rather just change a configuration line or two and sip an americano while reading the latest Vanity Fair in my garden.

So.. while a great article in many respects I would add that in order to become a great developer, in my opinion, you must refine your instincts towards laziness. You must become a connoisseur in methods by which you can avoid doing work. Being busy is not a virtue.

pyrrhotech 1 day ago 2 replies      
1. collect paycheck. 2. save paycheck. 3. devote your time to more meaningful and/or pleasurable pursuits.

Downvote away. Now, I don't dislike programming. As far as jobs go, it's definitely on the better side. But there's a lot of things I'd rather be doing with my time most of the time.

markbnj 2 days ago 3 replies      
I'm in an odd position on this one, because I agree with his list of desirable practices at the end, and disagree emphatically with his idea that writing something, anything, beats thinking about writing something 100% of the time. Much of the "quick" code we write in the real world ends up enshrined the minute it works, and never gets revisited or cleaned up. I once had to deal with a piece of data import code written by a predecessor who had moved on to management. He had a single 500-line try-catch block in which everything happened. When I mentioned that this wasn't the most maintainable or comprehensible approach, he simply replied that "it works." That statement, "it works", is a pretty low bar in software, imo.
chasing 2 days ago 0 replies      
Haven't we already had a great national discussion about the silliness of using "rockstar," "ninja," "guru," etc. when describing someone^? They're so vague...

I'm a rockstar Hacker News commenter ninja guru.

^ [Edit: Except in the case when someone is actually a rockstar, ninja, or guru.]

raju 2 days ago 2 replies      
Great post. If you want a even _further_ expanded version of this I highly recommend "Clean Code"[1] by Robert C. Martin, and I learned a few days ago that there is a follow up book, "The Clean Coder"[2] which I am yet to read

[1] - http://www.amazon.com/Clean-Code-Handbook-Software-Craftsman...

[2] - http://www.amazon.com/Clean-Coder-Conduct-Professional-Progr...

matwood 2 days ago 0 replies      
You should aim for simplicity and over the years I have learned that simplicity is far more easily attained by time spent working and refactoring than hours of pure thought and brilliance.

This is where tests and egoless programming come into play. A lot of people seem to get mad when someone touches their code. It is almost like they think what they wrote is perfect, but the best programmers know that is never true. Great code comes from writing and refactoring code for readability first, and then refactoring for performance only after instrumentation.

hawkharris 2 days ago 1 reply      
I appreciated some of the author's points, but his presentation was egotistical. The pedantically phrased, autobiographical tweets didn't add much to each section. It would have been more humble and interesting to include quotes by other talented programmers.
JustinBrown 4 hours ago 0 replies      
I actually googled "Ronseal Code" thinking it was an established convention for writing code.


Any good links out there for clean code best-practices?

AdrianRossouw 2 days ago 0 replies      
> You should aim for simplicity and over the years I have learned that simplicity is far more easily attained by time spent working and refactoring than hours of pure thought and brilliance.

Yup. It was Rich Hickey's presentation "Simple Made Easy" that finally allowed me to put it into words. I got so frustrated about only having a 1 hour presentation to link people to, that I ended up writing some notes to be able to refer people to.

This is the money shot I think.


This is also really relevant:


bgschiller 2 days ago 3 replies      
This guy keeps quoting his own tweets... from today.http://i.imgur.com/EePKQ.png
Bahamut 2 days ago 0 replies      
I think one of the most important things is to learn for learning's sake - you should want to improve yourself and expose yourself to new things, especially if it makes you uncomfortable. The important thing is to challenge yourself (near) continuously, since specific libraries can come and go, but patterns can last longer.
zimbatm 2 days ago 1 reply      
tldr; things acquired by practice.

I wish we had a better way to measure and train specific parts of our brain. For example how much capacity you have in your short-term memory. How fast your analytical brain can combine things to find the best solution. How long you can stay focused on a single task.

If we where doing some kind of sport, we would use weight lifts to train specific muscles.

yawz 2 days ago 0 replies      
In my opinion "depth vs. breadth" balance is very very tricky to get right. We keep saying that a "fat T" is what we're going after. "Depth" is obvious but "Breath" certainly helps in architecting, in seeing the bigger picture, in being able to think out of a platform/language/framework's patterns.
junto 2 days ago 0 replies      
I'll leave this here from Joshua Bloch:


How To Design A Good API and Why it Matters

AdrianRossouw 2 days ago 0 replies      
I agree with most of his points, and the parts we disagree on are more of a philosophical difference.

I'm more of a sinatra-type than a rails-type, and I don't really trust 'frameworks' that try to do so many things for so many people. I like my dependencies to have a much more clearly defined scope with fewer assumptions made.

I also don't think loc is an indicator of simplicity. Removing duplication as in his example, sure. But it being one line of code versus being 10 lines of code because it relies on a specific set of side effects, that may drift over time... not so much.

read 2 days ago 0 replies      
I wish posts like this reduced their content to more concise descriptions so more people would finish reading them.
dorkitude 2 days ago 0 replies      
This post is great.

Couldn't agree more about the four hours per day piece. The best work I did in my career as a dev was the year I worked 20 hour weeks.

kordless 2 days ago 0 replies      
> Not only is their output erratic but their superiority is aspirational and infectious. Their arrogance bleeds toxically into the rest of the team.

The gift of brilliant insight does not necessarily imply a negative impact elsewhere. I would agree this is probably an occasional side effect of having The Gift, but I think making a blanket blaming statement about these types of individuals is unfounded, and comes across as negative in and of itself.

That said, I think the rest of the post is absolutely bang on and wholeheartedly agree with it.

rch 2 days ago 0 replies      
Why on earth is an article on creating great software, written by a CTO, completely unreadable on a tablet (nexus 7)?

I'm tempted to turn this observation into broader philosophical diatribe, but I'll refrain until I at least read the post somehow.

known 1 day ago 0 replies      
Every programming https://en.m.wikipedia.org/wiki/Language-agnostic coder is a great developer IMO.
bubble_sort 1 day ago 0 replies      
This might be a little bit off-topic, but...

The example of a link shortener algorithm (what algorithm? generating new unique url?) and a bubble sort (is it bubble sort the algorithm? really?) is simply bad.

I would rather say that not the experience with specific problems makes developers good, but rather the ability to tackle and solve new problems. And I would say that a good developer given the task of writing a link shortener should be able not only to do it but also do it right.

I do agree that being a good developer requires striking the right balance between under- and over- -thinking, -complicating, -testing, ... In fewer words: common sense.

But most of all (as also noted in the article) it requires doing things the right way. The author might not believe it but there are tasks which require not only good looking but also performant code. Some of us also actually have to use some algorithms in our work. It all depends on the task.

kenster07 2 days ago 0 replies      
This blog entry is not very generalizable. It implies a certain kind of programming for a certain kind of business.
michaelochurch 2 days ago 1 reply      
I like most of what he has to say, but I have to attack this:

It signals loud and clear that if youre smart enough you choose when you work and what you work on.

What's so wrong with that?

In practice, I would prefer that a company use Github/Valve-style open allocation, and extend that sort of freedom to the whole team. People who can't justify their own salaries in an open-allocation environment (noting that a typical engineer is worth 3-5x under closed allocation and 10-20x in open allocation) are those you shouldn't be hiring anyway.

Often, brilliant, high-variance people are binary (or, at least, sporadic) in output, not because they have an attitude problem, but because they're neurologically built that way. Environments that favor (or, even, demand) reliable mediocrity shut them down and lose the ability to hit the high notes.

The best way to work with such people is to give them an R&D environment where they direct their own work and career. They know what they're doing, and they make more of a profit with the hits than they lose on the misses. But I'm not convinced that anyone who's smart enough to be a decent programmer shouldn't have the same freedom (open allocation).

CaRDiaK 18 hours ago 0 replies      
Should be, "How to be a useful software developer".
ilcosrn 2 days ago 0 replies      
Off-topic, but the each page of the site (not just the one linked to) makes my browser freeze for a couple of seconds and downloads ~3mb of crap. I don't think the ninja rockstar guru programmers are the only ones capable of writing a bubble sort and optimizing a page load.
migidomingo 1 day ago 0 replies      
Definitely going to keep all this in mind as I start my developer career. Thank you for this
piokuc 2 days ago 0 replies      
IMHO a file over 200 lines is OK, as long as the functions in it are less than 50 lines long... That's one thing I cannot stand when reading people's code. Scrolling down to see the end of the function and then up again to see what that function was meant to do... It's a basic thing which all too often people writing coding standards documents or blog posts entitled "how to be a great programmer" forget about...
kenrick95 2 days ago 3 replies      
Am I missing the point or is there really a mistake in this statement: "Remember, there are only two hard problems in computer science: cache invalidation, naming, and off-by-one errors. " ?
igvadaimon 2 days ago 0 replies      
As much as I like this post because of beeing 'working horse' myself, I still believe that 'Rockstars' are very important when some brilliant solution is really needed.
GFK_of_xmaspast 2 days ago 0 replies      
"If theres one thing that software developers care about, its becoming even better software developers."

Observational evidence suggests otherwise.

GarvielLoken 2 days ago 0 replies      
Worse is better.
weishigoname 2 days ago 0 replies      
lucky to know
anonymousdev 2 days ago 1 reply      
Oh, yes, it's great to be a workhorse developer. You don't get any opportunities to use new technologies and improve your skills at work so you have a choice: program at home after work and in weekends or become useless in a few years and get out of the field or move into management if you're lucky.

It's really fun to make the first choice, because you either give up socializing and live a hollow life focused exclusively on programming, or you don't have time for physical exercises, cooking and eating real food(not junk) and other human routines that keep you healthy and you die at 40.

But never worry, because right before you'll leave this world you'll be able to say with immeasurable pride: "I've made someone else rich!".

Don't be stupid and care about interesting work and improving yourselves and especially don't boast about it because you make the workhorses feel bad(and FSM-forbid, even open their eyes). Shut up and keep your heads down because it will all be over soon.

LibreSSL libressl.org
231 points by janvdberg  2 days ago   252 comments top 45
TacticalCoder 2 days ago 4 replies      
I may have a stupid question but...

While I really enjoy Theo's talks and writings, I wonder if the fact that the VCS is CVS ain't a security issue in itself?

It's been really a long time I haven't used CVS but I remember that attempt to introduce backdoors in projects using Git as a (D)VCS have been caught (it was in the Linux kernel I think). IIRC some attempts were caught precisely because it's hard to fake SHA hashes and so people can't really "mess" with the history of a DVCS like Git: too many people noticed a critical file having no business being modified being, well... Modified.

Once again, it was quite a while ago but I'm pretty certain that both the fact that Git was decentralized and that Git was using cryptographically secure hashes was touted as a "Good Thing" [TM] that helped catch the backdooring attempts.

Ain't using CVS potentially an issue here?

abcd_f 2 days ago 6 replies      
> removed MacOS, Netware, OS/2, VMS and Windows build machinery

What are the plans for native Windows support? I don't know what they mean by "The right Portability team in place", but it'd be a joke if the lib would require CygWin or some other external portability scaffolding. And without proper Windows support LibreSSL will simply fragment OpenSSL user base. I guess it's still better than nothing, but it definitely won't be an OpenSSL "replacement."

mehrdada 2 days ago 5 replies      
One annoying thing about OpenSSL is its license. I hope The Better Replacement fixes that as well (especially if its name gets to contain the string "Libre"), and it is not going to happen by forking OpenSSL.
sarahj 2 days ago 6 replies      
I understand the point but this comes across as immature. OpenSSL has provided years of free software, supporting thousands of sites and applications.

Of course it has its problems, and there is nothing wrong with adding more competition in this space.

But what this space needs now, more than ever, is professionalism and pride in craft (by which I mean demonstrable unit test coverage, regression testing, fuzz testing and documentation) not silly music video jabs.

edent 2 days ago 2 replies      
Somewhat ironic that https://www.libressl.org/ doesn't work, no?
claudius 2 days ago 0 replies      
It seems that is is indeed the official site (as linked-to on http://www.openbsdfoundation.org/), just in case there are any doubtsfor no reason whatsoever.
gpcz 2 days ago 4 replies      
I've been thinking recently about Heartbleed, and I was wondering if by writing C code to implement various network and cryptographic protocols, we're acting as human compilers for something that might be better represented in a more abstract format. I know there's some research on this already (the Austin Protocol Compiler), but does anyone here know of any other serious efforts to take the human out of the equation in terms of implementing protocols in C?
binaryapparatus 2 days ago 0 replies      
While most of us just talk, this guys actually did something of great importance. Hell yeah they have all the rights to step on some toes and make fun as they see fit.

I'd always salute doing stuff vs being politically correct.

antocv 2 days ago 2 replies      
"No we dont need help with making web pages"

its just a bunch of html very simple 1990s tags and it still looks and works much better than any html5 css3 bootstrap fanboy page Ive ever seen.


fab13n 2 days ago 3 replies      
With close to years of C under my belt, I believe it's a major error, today, to write a critical cryptographic library in C.

OK, do the codecs in C if it's the only way to meet performance requirements. But the rest must be written in a language that's reasonably analyzable statically, and with adequate abstractions. Seriously, have you looked at the filthy mess of leaky abstractions that OpenSSL's BIO system is? How many bugs could be found and/or planted by a 3-letters agency in that crap? Is there anyone who's comfortable with its #ifdef labyrinths?

Finally, I don't think you can retrofit clarity in OpenSSL any better than you could, say, retrofit virus-resilience in a Microsoft OS that hasn't been originally designed for hostile network environments. I used to believe OpenSSL was made messy in order to sell consulting hours, since Snowden I have a more paranoid hypothesis.

lifthrasiir 2 days ago 1 reply      
It should rename to LibibreSSL instead, so that one can link the library with `-libressl`. Other than that, I appreciate this effort (no pun intended).
deegles 2 days ago 0 replies      
Some of the commit comments are entertaining:"Fix some serious pointer-arithmatic-magic-number-unchecked-return eyebleed that I stumbled into here and got stuck with. If modern society can get past selling daughters for cows, surely we can decide to write modern C code in an "application" that is probably 3 lines of shell/python/cgi away from talking to the internet in a lot of places.. (This file still needs a lot more love though) "oh god yuck" deraadt@ ok tedu@"


Xylakant 2 days ago 0 replies      
I'm curious what they mean by "free", they put it in bold caps. Since it's a fork of OpenSSL that probably implies that the OpenSSL license remains attached to the code at least until all of the relevant code has either been rewritten or removed.
antirez 2 days ago 4 replies      
I imagine supporting non-POSIX operating systems, or not exactly conforming ones, to have its challenges, but is it really hard to make this stuff working in Linux and Open/NET/Free BSD from day one? It seems to me a better approach to start this way, without to mention that the potential developers base you get if you support Linux ASAP can be larger.
rurounijones 2 days ago 2 replies      
Since this is related. I have a question:

How can they know that they have not broken something in their flensing without any automated testing since no tests is one of the big problems with OpenSSL?

thomseddon 2 days ago 1 reply      
Does anyone have a link to repo in which it's being developed?
chris_wot 2 days ago 0 replies      
I refer everyone to this thread - https://plus.google.com/u/0/+jwildeboer/posts/Tuw81zXqtcC

"Suggesting to call the fork LibreSSL or LibreTLS just to offend everyone. trololo"

And it was so.

marlin 2 days ago 3 replies      
OpenBSD folks, what is your obsession with CVS????
EGKW 2 days ago 1 reply      
What's with the link to YouTube under "OpenSSL"? Supposed to be a joke? Or just a hair in the link soup?
euske 2 days ago 0 replies      
This is one of the best things that happened in the open source world recently. I like their attitude towards "web hipsters" too. They're serious folks who shut up and write AND READ codes.

It's funny that they do this "donate to stop blinking" thing again. They have been doing it for OpenSSH since 2000. cf. http://www.openssh.com/

seanieb 2 days ago 1 reply      
Wouldn't the name LibreTLS be more appropriate?
MonsieurHoho 2 days ago 1 reply      
I don't get the point of this fork. Usually when a project is forked, it means that people want to keep the code base but disagree with the way the project is managed.

After heartbleed everybody blamed OpenSSL's bloated code base and it became apparent that many contributions came from volunteers with very few financing.

By forking the project, LibreSSL will keep the problematic code legacy and split the community. Maybe I am missing something, but it looks like opportunism here...

adamtj 2 days ago 1 reply      
I just donated my $100. Have you?
pikimeister 2 days ago 1 reply      
It's indeed a great effort. Lets just hope that it delivers what is promising and doesn't bring other sorts of vulnerabilities due to the new implementation/code.
jbergstroem 2 days ago 0 replies      
Since libressl.org doesn't seem to contain this information, hopefully someone here perhaps knows more about it: Is it possible to donate specifically to subprojects? As a previous donator to the OpenBSD foundation, being able to do so would hopefully aid receivers of those funds not only use time (timing) as one way to measure the potential success of libressl.

Attitude and font choice aside, I can't help somewhat feel that one could explore better ways to funnel interest, commitment and donations to a project such as this; especially since it sparked as a result of heartbleed.

Confusion 2 days ago 3 replies      
Has anyone seen an explanation for why this effort isn't being undertaken together with the OpenSSL team?
petval 2 days ago 1 reply      
I like their tools like pfctl, raidctl. Hopefully they create something like sslctl.
nottrobin 2 days ago 0 replies      
Site straining under the load of HN visitors?
codecondo 2 days ago 0 replies      
I was going to ASK HN, when are we going to see a replacement for OpenSSL; you know, the company that has much more field experience, or even understanding of how SSL operates.

I then thought to myself, that'd be going too far..and nobody is really going to try and make an alternative.

Oh boy..

broodbucket 2 days ago 2 replies      
As someone without the Microsoft fonts using a browser that doesn't support the blink tag, I've totally missed out on the experience :(
vayarajesh 2 days ago 3 replies      
Comic sans?? lol!

This page scientifically designed to annoy web hipsters. Donate now to stop the Comic Sans and Blink Tags

facepalm 2 days ago 1 reply      
I'm assuming it is a parody (because of the font)?

In any case forking OpenSSL seems like a knee jerk reaction?

cridenour 2 days ago 1 reply      
"No we don't want help making web pages, thank you."

Seems silly to turn away help.

chuckreynolds 2 days ago 1 reply      
comic sans? really?
DiabloD3 2 days ago 6 replies      
Comic Sans? Really?

Edit: To those downvoting, yes, I saw the footer. This doesn't excuse their childish behavior. I will not be donating to this project if this is the level of seriousness they have for it.

mykhal 2 days ago 1 reply      
libressl.org is inaccessible via ssl - is it some kind of irony or something?
eyan 2 days ago 0 replies      
oooh. lots of whiners here.
halfdan 2 days ago 0 replies      
Comic Sans, really?
madospace 2 days ago 0 replies      
Dear god.. Y comic sans .. !!!!
bosky101 2 days ago 0 replies      
Ironic, that this website does not use SSL.


lmedinas 2 days ago 0 replies      
A fork is not the solution for world problems period.
mangia 2 days ago 0 replies      
Please use Comic sans font.... Oh wait !
vayarajesh 2 days ago 0 replies      
They should donate to replace comic sans with this much morder version of comic sans http://comicneue.com/
tete 2 days ago 0 replies      
Everyone clicked on OpenSSL yet? ;)
Boycott systemd boycottsystemd.org
230 points by martinp  16 hours ago   215 comments top 42
Spittie 12 hours ago 5 replies      
Okay, I like to think as myself as an open minded individual. I'm not a systemd fanboy either, I just research and use what I believe it's better for myself.There is a reason why I can't consider the anti-systemd guys seriously: It all seems FUD to me. Take for example point 8, "you have to reboot to update systemd. Okay, not really, but the update might go wrong!". Really?

Going point by point:

1. As the site says, systemd is both an init system and a collection of programs that make sense to have in a system.One can already strip most of everything from it (I think only journald is mandatory), and there is usually a stable api between every component, so one can simply replace them.

In fact, I believe that half of the complains about systemd would disappear if it all the tools were developed in a different repository and not under a "systemd umbrella" (Isn't one of the major point pro-BSD the fact that the base system is all developed together?)

2. If you want to use systemd but have plain-text logs, journald can pass everything to syslog and similar daemons.What everyone forget is the bonus that journald provides: no more "cat /var/log/*.log | grep <program> | sort -u" and hope that applications log in the same format, I have everything in a single place and can browse them by unit, by user, by time, by urgency...

3. I can agree with that. But it's not that sysinitv or upstart worked on non-linux systems (without ugly hacks)

4. And? I'm not sure what's the problem here. udev and dbus are mandatory by pretty much anything that's not a .sh script nowadays.

5. Okay, fair point. "It assumes that users and admins are dumb" can you really blame them?

6. Fair point again, systemd is bigger than sysinitv. But that's almost saying that we should all use microhttpd instead of nginx/apache because it's smaller.

Also the simple fact that it's included in RHEL 7 mean that it got audicted by RH, which make me feel safe.

7. That's just FUD. Here's Gnome 3.10 running on OpenBSD: http://undeadly.org/cgi?action=article&sid=20140219085851

Gnome will depend on systemd when under wayland, that's instead a fact. Actually, on logind, which has an api that anyone can reimplemnt (https://blogs.gnome.org/ovitters/2013/09/25/gnome-and-logind...)

8. Not true, again. Right now, on my system:

   pgrep -l systemd      1 systemd      354 systemd-journal      386 systemd-udevd      766 systemd-logind      1190 systemd      1754 systemd
Also, I still fail to see why "it's big, it will fail" is a thing. What matters is code quality, not size.

9. Fair point.

10. This might or not be possible, I don't have much experience in writing unit files so I don't really know the limits.

11. Nobody is forcing anyone to adopt systemd. It's getting adopted because distributions and developers think it's better.

And after months/years of complains about systemd, I still haven't seen anyone trying to produce anything that has the same advantages for sysadmins and programmers.

Really, that's how it feels: "I'm going to complain and complain and complain, but I won't lift a finger to change the course of events".

Can anyone make a point in favor of sysinitv (or against systemd) without bringing in abstract concept as "Unix philosophy" and plain wrong facts?

moreentropy 14 hours ago 9 replies      
I can't access that site because it returns 500 right now, but: Can we please get over it?

Quoting the "Unix philosophy" as the reason to keep things like they were 20 years ago is laughable. I want to get things done, and managing processes using init scripts and daemonization is pain. Edit: I'v read the cached version now, and this assumption turned out wrong. The authors see a need to replace sysvinit.

The amount of bad and inconsistent init scripts, messy PID file handling, makeshift service wrappers, defective daemonization and logging workarounds is so much worse than having one place that will handle those ever repeated tasks.

I love that in recent years Linux (as in distributions) got an attitude and actively push things forward, without losing compatiblity to older software. Apple introduced launchd and nobody complained. We start to rely docker and all sorts of new approaches to manage our services and nobody complains. But init is somehow regarded as the holy cow noone is supposed to touch although everybody agrees it sucks.

Even if it's technically wrong: Unix as a platform is now Linux. Everything else is niche products, and we don't have to use the same init mechanism on Linux/BSD/whatever just because we can.

I have deployed the same software on Debian Linux, RHEL Linux and AIX and basically had to reimplement service management scripts for every platform to have the best possible result. How could this get even worse?

andrelaszlo 15 hours ago 4 replies      
Tom Gundersen discussed the move to systemd on the Arch Linux forums a couple of years ago.



    0) it is hotplug capable    1) we can know the state of the system    2) it is modular    3) it allows dbus/udev to go back to doing the task they are meant to do    4) we can reduce the number of explicit ordering dependencies between daemons    5) we get a lot of security/sandboxing features for free    6) systemd service files can be written and distributed upstream    7) systemd is a cross-distro project    8) logind will finally deliver on what consolekit was supposed to do    9) systemd is fast

wooptoo 14 hours ago 1 reply      
> an abhorrent and violent slap in the face to the Unix philosophy

I'm tired of all this UNIX philosophy crap. I have been using Systemd for more than a year now, on Archlinux, and it has been a delightful experience.

It works out of the box and it gets a lot of things right.Journald is quick & easy to use and a real help in finding problems. No more searching around in log files and grepping.Dependencies between services are handled by the init.Services start with maximum parallelism.Writing .service files is really easy.

It simply has better UX than any other init system, and it's supported by a lot of distros.This means standardization and progress. No more developer time wasted on sysvinit scripts.

The posted link is the same FUD that I have been reading for the last year on various forums. Even if systemd can be a single point of failure, it's still way more stable than anything we have used before.

vidarh 15 hours ago 0 replies      
They'd get much further if they actually came up with a better alternative.

Even if all of there points were objectively true, it doesn't matter when sticking with the old init is so much worse in many ways.

People aren't picking systemd because it's perfect, but because both the mess of init scripts it is replacing, and alternatives like upstart,is seen as worse/too lacking.

EDIT: Btw. this just got me to install systemd on one of our dev/test Debian boxes at work, to start testing it.

SEMW 15 hours ago 2 replies      
"Unix philosophy" seems to be one of those phrases that everyone likes agreeing with because you can use it to either justify or condemn anything you like.

E.g. you could perfectly plausibly make the argument that systemd's return to inetd-style service starting (on-demand and in-parallel through socket activation) is a lot more unix-philosophy-like than the SysVinit way.

ealexhudson 15 hours ago 1 reply      
'systemd flies in the face of the Unix philosophy: "do one thing and do it well," representing a complex collection of dozens of binaries'

So, a collection of lots of single-purpose binaries that work together flies in the face of "do one thing and do it well". I kinda stopped reading at this point, which was sadly quite high up the page.

nemasu 15 hours ago 1 reply      
Okay, well, while I agree with most of the points they make, there just isn't a viable alternative. I maintain noop Linux (nooplinux.org), it started using OpenRC, but when udev was merged into systemd, things got very complicated, eventually the switch was made. Systemd is very fast, the 'init.d' scripts are way better, udev work very well...I don't mind thinking about moving back away from systemd (because I really do have a love-hate relationship with it), but what am I supposed to go back to? OpenRC/SysV-whatever? Heck no. Upstart? Nope. ...is there even an alternative that makes sense? Because moving back to SysV would be a step back.
fidotron 13 hours ago 0 replies      
Lennart is rapidly becoming the new Drepper.

As long as characters like this persist Linux as a direct end user system is going nowhere, and it will remain a lower level component abstracted away by higher level platforms, as in Android or Chrome OS.

mateuszf 15 hours ago 2 replies      
Em .. no, thank you.I think that systemd is a good step in the direction of unifying different distributions. Also, many argument presented on that page have been debunked or are actually good things.
Gonzih 14 hours ago 1 reply      
For me it always feels like people who are bashing on systemd never actually used it. I was very concerned about systemd for long time. And nowadays I use it on all my machines/servers. And it just makes my life so much easier. I'm happy. I like it. I can agree with lot of points on this website. But still systemd makes my happy. So sorry, but no.
blueskin_ 15 hours ago 2 replies      
I'd rather see init's problems fixed (i.e. start services in parallel), but systemd is far better than upstart (edit: got it to load at last, I see it's not by upstart fans, so ignore that last part).

That said, a lot of systemd seems like a really stupid idea to me, e.g. binary logs, the massively increased SPOF size, and the "do everything" mentality. Unfortunately, I don't know of any distros that aren't using it now (edit: I didn't even realise Slackware was still a thing...), and upstart is even more of a joke than systemd.

theanirudh 15 hours ago 2 replies      
The author of systemd, Lennart Poettering busts some systemd myths in his blog post http://0pointer.de/blog/projects/the-biggest-myths.html
_pmf_ 14 hours ago 0 replies      
At https://wiki.gentoo.org/wiki/Talk:Comparison_of_init_systems all of the features that are unique to systemd are immediately something that I'd rather not have integrated.
mrweasel 14 hours ago 0 replies      
We just install daemontools on all of our servers for our own stuff and let the system packages use whatevers the default in the distro, they seem to live happily together.

I suspect that one issue with systemd is that it aims to solve very real problem, but they are problems that not many noticed. Most of the stuff that's highlighted as benefits of systemd are things I never experienced, either I don't thing advanced enough or the issue has already been addressed by the distro.

Most of us are just going have some daemon/process that we want to start at boot and for that purpose systemd is going to look like massive overkill and overly complicated. That might be mostly a documentation issue, systemd could benefit for a "So you want to start at process" guide.

mrmondo 14 hours ago 2 replies      
For Linux to keep evolving, part of evolution is mutation, the strong will flourish while the weak will die.

Regardless of what init system is right or wrong, the beauty of the Linux ecosystem is we can afford for different distributions each to make different decisions.

Systemd seems functionally better than both sysvinit and upstart and it certainly doesn't seem to be the root of all evil like this article makes out.

I don't believe that everyone boycotting systemd over what's currently out there will aid linux in any way.

binaryapparatus 11 hours ago 0 replies      
I see this as related and it is less than a month old:http://www.muktware.com/2014/04/linus-torvalds-happy-systemd...https://plus.google.com/u/0/+TheodoreTso/posts/K7ijdmxJ8PF

I am not much of a systemd fan so I may be biased but it is interesting read anyway.

ef47d35620c1 13 hours ago 1 reply      
I don't know much about systemd, so I can't say either way.

So long as I can still get syslog style plain text logs, then I have no objections. Unix and text log parsing is unparalleled. If simple text log parsing and manipulation is removed (all binary with only xml or json), then I'd be very opposed to systemd.

blueben 13 hours ago 0 replies      
<meta name="author" content="VR and DnE">

Seems the authors forgot to give themselves the credit they deserve.


mordae 14 hours ago 1 reply      
> Contribute to and use distros like Slackware and CRUX that follow traditional Unix paradigms.

Made my day. Emphasis mine.

voidz 8 hours ago 1 reply      
I fell in love with FreeBSD's init style, which is what I switched to when the move Archlinux made broke my systems. Due to virtualisation demands I had to switch back to Linux, and chose Funtoo (a Gentoo fork) with the OpenRC init system.

I've never been happier.

bitwize 9 hours ago 1 reply      
The "debate" about systemd is like the "debate" about global warming: all the people with any knowledge of the issue fall on one side, and the opposition consists largely of the ignorant and butthurt.

Systemd has won by being vastly superior to any alternatives. I suppose it's all right to use something else but the community has embraced systemd as the correct solution, and you lose community support and assume all the risk of breakage if you do not stick with systemd.

foxylad 15 hours ago 0 replies      
Given that both systemd and upstart exist, it would seem that it is time for a next generation init. And given that Ubuntu has now accepted systemd, it has critical mass and should be the new standard.

"Doing one thing and doing it well" is a fine guide for system tools, but does not apply to everything - look at the kernel, or Gnome for instance.

klaasvakie 15 hours ago 1 reply      
Does anyone know if this quote is true?:

"Since systemd is very tightly welded with the Linux kernel API, this also makes different systemd versions incompatible with different kernel versions."

I was pretty meh about the whole systemd thing, but having to change userspace when swopping out kernels is a spectacular disadvantage. Imagine having to downgrade your distro whenever you need to test against older kernels --- madness.

This is especially bad with ARM/embedded stuff where one often runs a modern userspace with an older kernel.

legulere 10 hours ago 0 replies      
They single out Lennart Poettering but don't have the guts to write their own names under their arguments. You can't take this serious.
lvillani 15 hours ago 0 replies      
Cached: http://webcache.googleusercontent.com/search?q=cache:zylqvGo...

(the site is unreachable at the moment).

dschiptsov 11 hours ago 0 replies      
There must be already a name for this particular fallacy, when a bunch of people considered themselves "knowing the [only] right direction" and especially "destroying and discarding everything to build it up from scratch as they know will be the best for all". A-la those uneducated, ignorant, but cook-sure and self-confident lower-class revolutionaries in Russia hundred years ago who were unable to grasp that "evolved [social] system" has some subtle "laws , forces and reasons" behind it and that uncomprehensive, even unreadable philosophy or a naive, oversimplified model [of economics] is much worse than no philosophy or model whatsoever. Self-regulated (and especially evolved) complex systems are "smarter" than any bunch of individuals ,)
nifoc 15 hours ago 0 replies      
> Consider migrating to BSD, Plan 9 or something similar, if things get really out of hand.

I can understand suggesting to migrate to BSD, but Plan 9? Seriously?

And what's the purpose of the "Open Source Tea Party" picture? This surely is not the only picture of Lennart in existence.

midas007 11 hours ago 0 replies      
Until there's a viable alternative, it looks like whining.
oldmantaiter 9 hours ago 0 replies      
Considering the adoption and improvements, I'm on board with the "standardization" of distros with systemd.

Can't stand upstart and it's "Oh you wanted to restart your daemon, but I won't run the pre-start/post-start/post-stop actions you've configured me to", but that's just me.

silon3 12 hours ago 0 replies      
Does the old "good standard will have 2 or more implementations" apply here?
lasermike026 10 hours ago 1 reply      
I hate systemd. I will avoid it when every possible. It is an abomination. I hate upstart even more.
ausjke 12 hours ago 0 replies      
I hate to be personal, the guy leads systemd is indeed a genius, but genius could be more destructive, his way to do things for linux/unix is too intrusive for whatever he has done so far.

it's always good to try a disruptive way on the side before it matures and gets accepted gradually, however with the direct support from Redhat(where he is an employee) this systemd thing carries much more power than a typical open source project, sigh.

I would rather stay with sysvinit instead of something like this.

I think he should be employed at Microsoft to help them revamp their OS or whatever, make it or break it there, but please stay out of OSS.

peterwwillis 12 hours ago 0 replies      
tl;dr systemd crashes systems, is incompatible with other distros and OSes, adds admin difficulty, breaks applications, and introduces security holes


systemd was created in order to improve the speed of booting up your system. I'm serious. It was created because waiting a minute to boot up your machine once was too long.

In order to accomplish those faster boot times, they ripped out the stock init system model, and created a monolithic, non-portable, non-backwards-compatible, kernel-version-specific, Noah's Ark of API calls and custom tools which use binary formats and incompatible IPC methods to start programs that were never designed to run that way. They made obsolete virtually every aspect of the operating system which used to work with existing applications to start and maintain the running of userland programs. For faster boot times.

Of course, most of you don't care because you don't have to maintain your system, as long as it just works. What does this mean for people who do work with the system?

First off, building tools that work with the system are now more complex. It used to be you could use any i/o or ipc method to do anything you wanted. Now you have to look up and call and API call - and if the API call you want isn't in systemd's tool, or it doesn't expose it in a way you can use in your program, tough. Better become a C programmer fast.

Second, better be careful how you update your system. Every version of systemd, and any software it depends on, could crash your entire machine if a bug is introduced. I weep for the poor sysadmins who push out an update to thousands of machines only to find a strange bug which takes them all down, all because systemd decided having an enormous codebase was worth booting 20 seconds faster.

I hope you've got money for a security audit. systemd has had nine security vulnerabilities in the past four years. For comparison, sysvinit has had one CVE - in 1999. I haven't found any CVEs or security bulletins for upstart, which sounds amazing to me.

When it comes time to porting your application to Linux, you don't get to just write it in a way that would normally work on most Unix-like systems (which would, at this point, be virtually every operating system that isn't Windows or Mac OS, and now Linux). Now you have a new porting target specifically just to get your application to run, and then you get to deal with the normal porting issues.

At the end of the day, systemd is a culmination of two ideas, with one result. One idea is that a "superior design" with "advanced features" is the only benchmark in which we should design and run a system. The other idea is that we don't need to keep compatibility with legacy systems or alternative platforms, because fuck users, admins, developers, security analysts, distro maintainers and portability teams, we want faster boot times , damnit. And it's Advanced! The result? A big fucking mess of complexity that breaks everything that came before, introduces security holes, makes it more difficult to modify or maintain your system, and breaks compatibility with other systems (even Linux ones).

But aside from all that, systemd is great.

lmedinas 15 hours ago 1 reply      
Systemd got a huge boost due the involved from Red Hat. But then most of the distros are adopting it, even Debian and Ubuntu. I don't see a reason but still if you want to stay out of systemd better use Gentoo or other "non" major distro.
SnakeDoc 11 hours ago 0 replies      
Just pointing out it's not that difficult to "roll your own" linux distro. It'll take you an afternoon if you haven't done it before... and you can very well choose to keep using sysvinit if you want (my personal distro will use sysvinit probably until the end of the year when I have time to figure out how to integrate systemd).
adimania 14 hours ago 2 replies      
It is Linux. Let systemd live and if you don't like it, switch to upstart. No one is stopping you.
evbogue 12 hours ago 0 replies      
If this person had been running systemd, this website would still be up.
SnakeDoc 11 hours ago 1 reply      
I think the website is missing the legal disclaimer "Paid for by Canonical (because we're bitter)".
SnakeDoc 11 hours ago 2 replies      
The Canonical fanboys are just upset they lost out on their inferior technology and now are trying to do everything possible to stall it. systemd is unquestionably a big step forward, Upstart is only a step to the side. There is a reason the serious linux distros (no, Ubuntu is not serious, it's a toy for newbies to use on their desktop) have all chosen systemd. There is also a reason some of them tried Upstart and decided it was not good.
lucian1900 14 hours ago 0 replies      
This is why we can't have nice things.
Grue3 15 hours ago 0 replies      
I'm getting code 500 error, but I'm guessing a Republican has been discovered to be somehow related to systemd.
What I Wish I Knew When Learning Haskell 2.0 stephendiehl.com
223 points by tenslisi  1 day ago   89 comments top 10
gtani 1 day ago 3 replies      
One thing that helps alot is the various undergrad course syllabuses that have been given with emphasis on type systems and aspects of FP, immutability, segregating and strictly marking side effects etc.



https://www.inf.ed.ac.uk/teaching/courses/inf1/fp/ P Wadler)





also the Apress "Beginning Haskell" looks pretty good, tho the writing isn't perfectly clear. The example topics and sample code look good, and that's what mostly counts.


The books by Hutton and Simon Thompson ("Craft of FP" 3rd ed)are good intros as well. Haskell school of music is really good, but not sure for people who aren't versed in music topics (harmony/theory, composition, MIDI, DSP.



thinkpad20 1 day ago 3 replies      
I think it's kind of amusing that right after sternly warning the reader to avoid monad tutorials, he then proceeds to write a monad tutorial. I guess you just can't resist...
tenslisi 1 day ago 0 replies      
There's also a very detailed tutorial on writing a toy compiler with Haskell and LLVM on this site:


nilkn 1 day ago 0 replies      
On a small monitor (11" MBA), not all the topics in the list are visible and the list does not seem to be scrollable.
leccine 1 day ago 10 replies      
The main force holding me back from learning Haskell is the cryptic syntax. I totally understand that the type system is (supposed to be) superior to other languages but it simply make it really hard to find the time. I am also unsure how useful this language can be in every day use. There are so many great languages out there nowadays, Clojure, Go, Erlang. It is easy to cover the spectrum with these and I don't see where Haskell would be a better fit. maybe somebody could shed some light on the strengths of this ecosystem.
fiatjaf 15 hours ago 1 reply      
Somehow related: For those who (like me) were searching for a long time for a quick and complete Haskell tutorial (but were left with very introductory guides for non-programmers like Learn You a Haskell for the Great Good), look at this tutorial:

https://www.fpcomplete.com/school/to-infinity-and-beyond/pic...Haskell Fast & Hard.

Kiro 19 hours ago 0 replies      
I thought this was supposed to be a list of things to learn _before_ learning Haskell but most of these are things you obviously have no idea what they are if you don't know at least a little Haskell.
kyllo 13 hours ago 0 replies      
This was very timely and interesting to me as I just started learning Haskell. Thanks!
platz 1 day ago 0 replies      
Note that these are intermediate level Haskell topics, as intro describes.
jonnybgood 1 day ago 4 replies      
Haskell's a good language, but I would add to this list the use cases as to where Haskell is the right tool for the job. I think this would help a lot beginners get a better grasp of Haskell.

For example, I wouldn't tell someone to write a web server backend in Haskell if it's going to be in production. Sure, you can do it, but there are more adequate tools for the job. On the other hand, if you were looking to create a DSL or write a parser, Haskell would be great. This is how Galois and Facebook are taking advantage of Haskell.

The Story Of Larry Page's Comeback businessinsider.com
220 points by wozniacki  10 hours ago   83 comments top 21
gilgoomesh 1 hour ago 0 replies      
I realize that it's an aside in the article but I wanted to contradict something:

> Whats less well understood is that Apples board and investors were absolutely right to fire Jobs. Early in his career, he was petulant, mean, and destructive

This idea (Jobs needed to be away from Apple to improve himself) gets mentioned a lot but I think it's nonsense.

First: Jobs was petulant, mean and destructive to people he disagreed with for his whole life. He never dropped this trait. It might have appeared that he mellowed but he really just left an Apple that he no longer controlled and started another company where he had full control (he owned Pixar as well as NeXT but never exerted full control there).

Second: Was Apple really right to fire Jobs? In his first 7 years at Apple, Jobs oversaw (not designed or engineered) the only successful product lines in Apple's first 20 years: the Apple 2, the Mac and the Laserwriter. The latter two happened against the best wishes of the board who only wanted to focus on the Apple 2. In the 12 years after Jobs left, Apple never launched another successful hardware product line, it merely upgrading the existing products (Mac II, PPC Mac or unsuccessful ideas like the Newton). The early 90's at Apple's R&D in particular was completely chaotic and directionless sinking billions into Pink, Taligent, OpenDoc, CHRP and other doomed initiatives.

Jobs didn't need to leave Apple to fix himself. He left Apple because he disagreed with everyone (in hindsight: probably rightfully so) and he couldn't fire them. When he returned, he had the authority to fire everyone he disliked (and he did).

As for the comparison to Larry Page I don't think they were as similar as the article implies. Jobs for better and worse was his own special brand of crazy.

pk2200 7 hours ago 6 replies      
Early Googler here. It's funny how often the story of the mass-firing is misreported. This article gets two basic facts wrong:

1) Larry was targeting engineering management, not project management.

2) Nobody was fired. The engineering managers shifted to pure engineering roles (an easy move, since they all had technical backgrounds).

On many teams, the managers continued managing, but they did it more discreetly, taking care to stay out of Larry's way. A year or so later, after the engineering staff had doubled in size, it became clear hat it wasn't practical for one VP (Wayne Rosing) to have 200 direct reports, and engineering management came back out of the shadows.

pavanky 6 hours ago 0 replies      
Are there any articles about Sergey's role in the company ? There have been a few since Larry took over as CEO, and I feel this article greatly downplays Sergey's role.
cm2012 8 hours ago 2 replies      
That was one of the best articles I've ever read, with regards to new information and excellent story telling.
cliveowen 7 hours ago 4 replies      
"With little emotion, speaking in his usual flat, robotic tone[...]As Page talked, he kept his gaze averted, resisting direct eye contact."

Journalists have a tendency of portraying figures in tech circles as being on the spectrum, while very often that isn't the case.

riggins 7 hours ago 0 replies      
It's pretty cool that someone who cried about Nikola Tesla as a kid is now running one of the world's most valuable companies.
blazespin 42 minutes ago 0 replies      
And this is how a child tries to describe how his parent does his job.
bshimmin 7 hours ago 1 reply      
There are some truly strange and incongruous turns of phrase in this article - "Google's human resources boss, a serious woman with bangs named Stacey Sullivan", "Finally Rosing, a bald man in glasses, began to speak", "Though he was an appealing presence with above-average height and nearly black hair", etc.

It strikes me the author would far rather be writing Mills & Boon novels than articles for Business Insider.

zhemao 4 hours ago 1 reply      
I find it funny that Page complained about Gmail taking 600 milliseconds to load back when it was created. It probably takes longer than that these days unless you have a really fast connection.
Zelphyr 4 hours ago 0 replies      
I feel like there are so many stories of tech leaders being assholes that perhaps maybe its just a way for the author to sex up a story. That's not to suggest Page didn't act like a dick. But given that its a thread in just about every story about tech founders I have to question the severity of many of the reported actions.
mark_l_watson 5 hours ago 0 replies      
+1 a great article

I had the privilege/fun of consulting at Google for four months last year and getting a glimpse inside the company was more than interesting.

I think the filter that projects should offer 10x improvements sets high expectations. If Google is the first to develop a general purpose AI then their valuation will approach infinity.

n72 2 hours ago 1 reply      
"Page once told a room full of Googles first marketing employees that their profession was built on an ability to lie."

Oh come on. As owner of history's largest ad platform and someone who's made ungodly amounts of money from it, this seems like a massively hypocritical and un-self-aware thing to say.

snarfy 4 hours ago 1 reply      
Google was a better company when Eric was at the helm. Now we get G+.
mkattam 5 hours ago 0 replies      
What are some of Sergei's accomplishments contributing to Google in a big way?
627467 2 hours ago 0 replies      
An hagiographic piece posted on the same day that 2 set-back stories are announced (major strategic shift on "social" and no-poaching settlement)...
bsaul 6 hours ago 0 replies      
I'm curious : anyone here remembers google defining its strategy as an "hypercube" ? I'm pretty sure i read about that a looong time ago, but i can't find any article about it now.
yeukhon 46 minutes ago 0 replies      
This is a great biography of Larry Page. Though there are some misreport facts and one-sided opinjon, the article captures my pulse. Only a few lengthy articles could ever retain my full attention till the end.

In particular the whole "Larry as a visionary", "Larry is socially awkward", "Larry is not traditional" makes me feel more welcome in this world. I too am that kind of person (it is up for future to judge whether I am visionary :)). But this is the exact article I need to pursue my dream of making things "happening". If you want to carry out your vision, you need to delegate. You need to set the tone "this is what we do, and we do this this way."

Ideas just happen to come to us every minute but we are too caught up in fighting the current. That's the big Google problem: it is too huge too slow too bureaucratic to get things done, even after Larry is back as CEO. This is why I am more leading toward startup environment (I am about to graduate soon), this is why people leave big corporations. I wasn't appreicating why Google was moving in so many directions. But it is true. I long know Google is outside my tech tweets. Not enough hype for me to notice until special events. Nothing exciting. I hope one day they realize simplicity is the key (please fix your UX). Outside of privacy and security worries, I believe Google does have the collective power and sum to make a life-dependent integrated platform. It is up to Google executives to decide whether they will make such platform as open as possible, as friendly as possible, to both end users, sales and engineers.

I truly envy him being a genius and intelligent at making things. I hope one day I too will be recognized. Enough said, there is always an opportunity for everything. Only I can make that happen.

h1fra 4 hours ago 0 replies      
Very long, surprisingly easy to read.

Great article !

argumentum 5 hours ago 0 replies      
This article kind of oddly goes out of its way to erase Sergey from Google's history (and present and future). It's always seemed to me that they have a very beneficial symbiosis.

The idea of investors bringing in a "professional" CEO has largely died, thankfully. It must have been incredibly frustrating for Sergey/Larry to see a younger Mark Zuckerberg go from strength to strength as Founder/CEO while they had to pretend Schmidt was in charge for "adult supervision".

shreeshga 7 hours ago 0 replies      
very well written.
simplemath 8 hours ago 2 replies      
50, 100 years from now, Larry Page (if he's even dead yet) will be remembered as one of the more impactful people in human history.
CEO complaints : employee not motivated after being fired linkedin.com
215 points by waps  16 hours ago   303 comments top 71
jzwinck 14 hours ago 5 replies      
I just got a voicemail from my boss. Well, soon to be former boss. Not because I couldn't hack it at the job, but the business I was involved with had eroded over the years to the point where there was simply nothing left for me to do. I had finally given up. It wasn't really up to me. I talked with her about it a few times, but she wasn't interested in pursuing the sort of clients I used to work so hard to satisfy. So now my full-time job is finding a new job. I was in an interview when she called. I think this other firm is pretty lame but if I don't find something better soon I'll have to take it, so I'm hustling. Tonight I'm going to polish my CV and email some old contacts. I can call the old boss back tomorrow morning. What is she going to do, fire me again?
jgrahamc 14 hours ago 3 replies      
This is why I stopped writing my fictional start-up CEO Brad Bradstone (http://blog.jgc.org/2013/01/archived-posts-from-double-steal...). There was no need to write parody, when the parodies existed in the real world.
bru 13 hours ago 4 replies      
I cannot access it:

>Sorry, we couldn't find that page. Here are some others for you to explore.

Here's the version from Google cache:http://webcache.googleusercontent.com/search?q=cache%3Awww.l...

watwut 14 hours ago 5 replies      
It seems like someone believed her own bs. Article uses a lot of words to make situation sound as something entirely different then what it was.

"I know I fired this person, but I considered that merely a technical matter. I thought we agreed it was the best option for all involved, allowing him to grow professionally elsewhere."

Agreed as in employee did not put fight when he was informed of the decision? Good for both of them, but it is still firing. Feel good talk about "professional grow elsewhere" is just that. Might be even insulting to employee. Did she really expected the employee to buy it?

"It never crossed my mind that he had been FIRED. We just reached the end of our partnership, for now. Time to move on for both of us."

I mean, yes, they reached end of partnership by firing employee. He was not needed anymore. Nothing wrong with that, companies can not afford to pay people without giving them work. It is still firing.

"I have always valued being open, honest and correct. Even if I wanted to, there's not much you can hide in a small business. So I embrace transparency to the full extent."

No she does not. She tries to put spin around things to paint them rosier then they are. Then she acts all shocked when it turns out that employees are able read through euphemisms.

EDIT: changed he to she since CEO in question is a women.

Robin_Message 14 hours ago 6 replies      
> However, Belgian law makes it very difficult to put such a flexible schedule in a contract.

Oh really? I'm not an expert on Belgian law here, but are they really claiming they offered to pay people extra and/or give time off in lieu for optional overtime, but they didn't agree to it? Or is it just mandatory free overtime that is banned?

Belgian law probably makes it hard to require employees to work more than reasonable hours for no extra reward or choice. Which is a good thing. If you want 24x7 support, you need to pay for 24x7 employees. This person is wishing they had the right to specify in a contract that your working hours are "whenever I call."

Since they don't get that, I'm not surprised they didn't realise firing someone^W^W, sorry, "agree[ing] to terminate your collaboration" might make them stop responding beyond the call of duty.

Also, I was reading something the other day that pointed out that, whilst seeing things in black and white reduces you to only two perspectives (moral and immoral), the attitude that everything is a shade of grey (and the implied attitude that this makes moral comparisons impossible) reduces you to a single perspective (amoral). If you think two perspectives is too few, how is going down to one perspective supposed to help?

Aqueous 14 hours ago 0 replies      
'It never crossed my mind that he had been FIRED.'

Yes, by the end of most modern firings, which are conducted with an astonishing degree of cowardice, the goal is to make the employee somehow leave feeling like they've voluntarily quit. This is how we avoid recognizing the uncomfortable fact that a firing is actually a confrontation, and that it is super uncomfortable. And we don't want to experience that, right?

Apparently the CEO has somehow convinced themselves that firings are mutual and that they aren't super uncomfortable.

Stop couching something in euphemisms and recognize things for what they actually are. If you are letting someone go chances are 1) it's a one-sided decision 2) they won't appreciate it very much. Only in the flavor-less world of detached corporate speak are firings mutual.

bane 11 hours ago 0 replies      
American here, I once left a job (quit) because of deep dissatisfaction with the management's general incompetence and constantly pushing critical maintenance off. I had been telling them for more than a year that there needs to be some changes or something bad was going to happen.

Got a call from them a couple months later, something bad finally happened.

"My consultation rate is <some ridiculously huge number per hour>."


"You obviously want to hire me as an independent contractor to fix the issue I had been telling you about. Fair warning, I'm at another job now, so I'll be doing the work on nights and weekends."

"Your rate is ridiculous. It wasn't going to cost that much for you to fix it when you worked here."

"I warned you about it for a year and you had your chance to fix it back then when it wasn't a crisis. You ignored me and deferred the issue and now it's this is your emergency, not mine anymore. Frankly, I can charge whatever rate I think is appropriate."

To my surprise, they agreed (at a mildly reduced rate), I came back, spent a couple weeks fixing the issue and then we parted ways. They never asked me back again but I got my 1099 from them a while later.

Everybody always says, upon leaving a job, "call me if you need anything" because we all have friends at work we want to see succeed. But sometimes you have to stop volunteering our time (our lives) to cover up other people's failings. I keep hearing about people who leave a job, then come back in on the weekends to "fix a few things" at their old job. Stop doing that. If it's worth money to the company, it's worth some of that money to you.

jrochkind1 13 hours ago 2 replies      
The most important line in this one is:

> I am the boss with all the perks and the quirks.

I think this is yet another example of what another HN commenter recently called "ignoring the considerable power you wield over other people and expecting them to ignore it too."

Guess what, power matters in relationships.

> It wasn't a decision I made overnight. It wasn't even my decision. We talked about it on several occasions.

Is she really saying it wasn't her decision because they talked about it on several occasions, it was somehow a mutual decision? Bullshit.

You don't get to keep all the power, but then expect that in your interactions with people it won't matter, it'll be just like relationships between peers or equals.

sergiotapia 14 hours ago 3 replies      
>However, Belgian law makes it very difficult to put such a flexible schedule in a contract. So your best bet is to hire people who share your passion, willing to 'volunteer' on such occasions.

Threw up in my mouth a little bit. My 'passion' is making money by providing services you need. You pay me, I do sh*t. That simple. Let's not kid ourselves.

I love the mental gymnastics she goes through to paint herself as having done no wrong in her mind.

sgift 14 hours ago 0 replies      
> I can be very flexible and friendly, but I always put the company first and I value the group's wellbeing over an individual employee.

And her employees do the same: They value the wellbeing of what's most important to them over her wellbeing .. what a surprise.

Arkadir 14 hours ago 5 replies      
Most of the reactions both here and on LinkedIn seem to miss a crucial fact: this story happened in Belgium.

In Belgium, employees must be notified in advance before they are let go: you send them a letter stating "your contract will end in 12 weeks", they keep working for you for 12 weeks, and then they leave.

Employees are usually expected to pass on their knowledge to other team members and wrap up their current projects before they leave. And they are getting paid for it.

This is not the story of a CEO who fired out an employee on the spot, then tried to get back in touch later because they found out they still needed him.

This is the story of a CEO who told an employee that they would be let go three months from now, then asked them to help after hours---something that they had done previously---only to find that they were not motivated enough to do it anymore.

And this is what makes the story interesting: it's not a ridiculous caricature that you can point and laugh at ; it has all the real-life ingredients that you can easily find in the average company.

- Employers and employees who assume that "professionalism" means volunteering to work beyond the scope of a work contract.

- Employers who forget that loyalty is an essential factor in the motivation of many employees.

- A CEO who made the tradeoff of not having a dedicated 24/7 support team, and whines when the inevitable outage happens and there is no one to handle it.

I believe the original author herself said it best: "So your best bet is to hire people who share your passion, willing to 'volunteer' on such occasions."

No one is passionate about staying long hours to fix a production server. But they might be passionate about building a product that can make them proud. Their product. And once they feel it's not their product anymore, the passion is gone, and they'll be home by 7pm with their cell phone turned off.

bitL 14 hours ago 0 replies      
LOL What a parody! With this article she effectively destroyed her business... Unbelievable! Nobody with a brain would like to work for her after a simple search for references and her customers must be already scratching their heads if they can trust that a business with her as a head would stay afloat... Unless she is linked to EU funds that can keep her business funded regardless of performance due to political connections, I don't think many people would be willing to bet on her. This is not about making tough calls when they are necessary, it's about exhibiting inability to comprehend basic business and operational issues and inability to at least conceal that fact by issuing meaningless statements.
joeblau 12 hours ago 0 replies      
I was laid off along with 25% of our department back in 2005 and I stopped all work and started looking for a new job as soon as I got the news. I was halfway though a project, but My number one priority was keeping Myself employed. Thankfully the company was sympathetic to our needs, but there were some employees that had worked at the company for 18 years and now needed to find new jobs. I still came into the office for the following three weeks, unlike some of my other colleagues. Ironically, I was trying to get out of that company anyways so for me, the layoff was an amazing opportunity.

One of the saddest scenarios was one of my colleges that had been out of school for merely 8 months. He had a 2 hour commute to work one way: car/bus -> light rail -> Metro -> office. He was chipper and gung ho about coming into work and working on his projects. The day he got laid off (which was about 1 hour before I got my news) he comes in super excited (as always) and runs up to have a meeting with his Project Manager. Then 15 minutes later, I see him leaving with his back pack and I ask where he's going. He looks dead in my eyes eerily and says "You'll find out soon enough." While he was only out of school 8 months, I think he's now realized that companies aren't all way they are cracked up to be, but now he works at Goldman Sachs so who knows.

jstsch 14 hours ago 2 replies      
Not fired in the American sense (you can't let someone go in any short term in most European countries). She let him know that he should look for another job, meanwhile he's still employed but unmotivated.
jeroen 12 hours ago 1 reply      
For me the most important sentences are these:

"I had to let go of an employee"

"we need the assistance of our colleague urgently"

Same guy. So there is a bus-factor of 1 and you fired that person. Since said firing was "a few weeks" ago, all critical stuff should have been out of his hands.

woof 14 hours ago 0 replies      
"It wasn't a decision I made overnight." - "It wasn't even my decision."


"I know I fired this person" - "It never crossed my mind that he had been FIRED"


fuckedcompany.com is dead, linkedin.com lives!

praptak 13 hours ago 0 replies      
Article seems offline now. Google cache: http://webcache.googleusercontent.com/search?q=cache:rLPq67G...

Edit: Summary, by me: a CEO complains that someone who has been fired is not motivated, i.e. does not provide "urgent assistance" outside office hours.

lazyjones 15 hours ago 1 reply      
tl;dr - clueless CEO fires employee because she didn't know his work was still needed (and thought she'd fatten the margins), later finds out and regrets it.

Happens all the time.

fab13n 13 hours ago 1 reply      
Nice and funny example of Poe's law [http://en.wikipedia.org/wiki/Poe's_law]. Failing to realize when you ought to STFU is part of what being a sociopathic boss is about. That her companies seem to revolve around HR and hiring is just the icing on the cake.

But from what I understand, LinkedIn somehow featured this article; I'd love to have them explain why and how they picked it...

kefka 15 hours ago 1 reply      
Sounds like a great case of charging $500/hr, with a 4 hour minimum, of course.

How bad do you need his information?

downandout 13 hours ago 0 replies      
This CEO is actually an even worse person than her post implies. This was just a way of avoiding severance pay. They wanted to squeeze every hour they paid for out of a fired employee.
emhart 13 hours ago 1 reply      
I wish this were extraordinary. President of our company showed up in the hospital room of the Sr. Developer he fired who had terminal cancer in order to ask him for documentation on various projects. Showed up multiple times in fact.

I actually really do wish that maybe this is extraordinary and that next time around I'll wind up under more human leadership.

ceautery 12 hours ago 0 replies      
This reminds me of an encounter with our department's director recently at an "all hands" meeting at my current gig. My company has been under financial pressure for the past few years, and there have been reorgs, layoffs, fewer promotions, and weaker merit raises. To answer complaints about all of this, particularly in the case of those who didn't get promotions they felt they deserved, he said, bluntly:

"You are responsible for your own careers."

To paraphrase Lone Watie from The Outlaw Josey Wales, I thought about his words. "You are responsible." And when I had thought about them enough, I decided to find a new job.

petervandijck 12 hours ago 1 reply      
From another of her posts:

"Dont come into the office one day telling me out of the blue that you havent been happy for a while, found someone else and will leave me as soon as possible. And now that you brought it up, why should I pay your full wage if you are only working at half force since you arent motivated anymore?"


Oh my god.

snarfy 14 hours ago 1 reply      
'I'm just being honest' is not an excuse for being an asshole, yet the vast majority of the time that is exactly what it's about. It's the most popular justification given by sociopaths.
downandout 13 hours ago 0 replies      

"I don't think we'll be able to get a hold of him," says the colleague. Why's that? "Well, he got the sack. He's finding it hard to stay motivated." Right. I didn't see that one coming.......I know I fired this person, but I considered that merely a technical matter."

Comedy ensues.

qwerta 15 hours ago 1 reply      
> We have to keep our tools running 24/7, even if that means working the occasional nights and weekends.

Does this apply to CEO as well? As JWZ wrote nobody of higher management had to sleep under their desks.

noja 14 hours ago 0 replies      
From the way the last paragraph is worded, I would suggest that this lady take some time off. It's all over the place, she has a lot going on in her head. Perhaps she should see someone professionally to talk through things.
jasonwatkinspdx 10 hours ago 0 replies      
The amount of narcissism in this article is revolting. "Oh, silly me, it didn't even occur to me that what's a voluntary decision for me might feel entirely different to the person loosing their source of income. But that's ok, cuz I'm the boss with Quirks and Perks!"
TallGuyShort 12 hours ago 0 replies      
>> I value the group's wellbeing over an individual employee

There's the problem. Yes, you should not value an individual employee over the group's well-being, and yes, if he agreed to work until he found another job he should work until he found the job (although I don't know when he's expected to find that job in any hurry outside of work hours). But it's like she has no idea what that conversation would sound like to an employee. Your CEO brings up the fact that things aren't working out. You hear a prelude to being fired. In some situations, maybe you just agree rather than argue. If you've actually been under the impression you've been working hard, it looks like you can't win and you would be better off else where. Now that's a motivating thought isn't it?

blunte 13 hours ago 1 reply      
This situation is a good reminder that just because people get themselves in leadership positions (and especially when they talk as advisors or authorities on leadership) doesn't mean they're actually any good at it. They may just be good at generating content that (usually) sounds smart.

She's pulled her post, most likely out of shame. But take a look at all the other sage advice that remains!https://www.linkedin.com/today/author/44558

kokey 12 hours ago 0 replies      
Looks like this is not the first time she got noticed through her LinkedIn ramblings, here is something from 2012 http://www.cmswire.com/cms/social-business/earth-to-inge-you...
wil421 13 hours ago 1 reply      
>It never crossed my mind that he had been FIRED.

What would you call terminating someone? You can be fired and still be on good terms and have a healthy relationship but you still let that person go or fired them. Please dont be so naive next time you let someone go. We dont get a job to make friends we do it to make a living.

If my company fired me and gave me x amount of time till I had to leave, I would probably not being going above and beyond any longer. My body may be at work but my mind is focus on the new job or job search.

duiker101 14 hours ago 0 replies      
I really don't see a single reason why he should have answered your call at all without charging you A LOT.
blacktulip 15 hours ago 2 replies      
tl;dr - CEO thinks a previous employee she fired should be standing ready helping her 24/7
mtarnovan 15 hours ago 1 reply      
"It wasn't even my decision" vs "I may be the bitch and the witch, but trust me: people want me to take decisions, even harsh ones."
bprieto 14 hours ago 3 replies      
The post might not be as shocking as it appears. In most of the EU you seldom can fire an employee without weeks of notice. The way she tells the story, it seems as if the employee was told his contract would terminate, but he was still working for the company when he was needed.

Still, I don't find strange that an employee who knows his days at a company are counted is not willing to respond to an after-hours phone call.

pshin45 11 hours ago 0 replies      
Not to nitpick, but doesn't changing the title of the article like this (from "Shades of grey" to "CEO complaints : employee not motivated after being fired") go against the HN Guidelines?

> [...] please use the original title, unless it is misleading or linkbait.[1]

I guess you could make a case that the original title ("Shades of grey") was misleading, but seems to be more a case of the OP disagreeing with the angle/implication of the title, and wanting to change it to something that aligns more with the OP's point of view.

(FWIW I agree that the original "Shades of grey" title is pretty bad in that it's both uninteresting and uninformative, but bad != misleading)

[1] http://ycombinator.com/newsguidelines.html

tech6 14 hours ago 0 replies      
I am a 2 year old.My brain thinks everyone in the world wants what I want.When I grab some other childs toy I dont understand why the child cries instead of being motivated and jumping with joy at having done what I want.

Apparently this startup ceo has not outgrown the terrible twos

ececconi 12 hours ago 0 replies      
Seems like this CEO understands everything but people.
vicbrooker 14 hours ago 1 reply      
tl;dr - don't fire people if you need them
yummyfajitas 14 hours ago 6 replies      
As a consultant rather than an employee, and someone who takes a similar attitude to employment, I totally get where the author is coming from. Employment is a transaction of money for work, not a marriage. I'll get annoyed is my hypothetical wife leaves me when my skills atrophy, but I'm not going to act butthurt just because my employer no longer needs a data scientits.

Additionally, it sounds like the employee was treated well. "eventually we agreed to terminate our collaboration as soon as he would have found a new challenge." Maybe I'm misinterpreting the corporatespeak, but that sounds like a "start looking for something, we'll pay you until you find it." Not a bad deal at all.

And it sounds like the employee was still employed (albeit being paid to look for new work) at the time this occurred.

al2o3cr 12 hours ago 0 replies      
"I can be very flexible and friendly, but I always put the company first and I value the group's wellbeing over an individual employee."

Translation: "Of course I'm not a narcissist - I value the whole group of people that make me money!"

stuaxo 15 hours ago 0 replies      
I love reading articles on linkedin, you couldn't parody them.
danielweber 14 hours ago 0 replies      
The headline and the comments prepped me for a major oblivious idiot-storm when I read the article, but this is about a person at least self-aware enough that they botched something up and were asking for something inappropriate.

Or maybe this is a commentary on social media -- you don't need to write something every day.

seivan 15 hours ago 0 replies      
"So your best bet is to hire people who share your passion, willing to 'volunteer' on such occasions."

Reminds me of Passion Versus Professionalism http://www.gamasutra.com/view/feature/6523/the_designers_not...

The SaaS in question (I think) http://company.cvwarehouse.comDo we know one that's run by technical founders that can compete?

matt__rose 11 hours ago 0 replies      
Wow, between mojombo and his wife, the "Don't fuck up the culture" rant, and this woman, it seems like the world is teeming with clueless CEOs.
ryguytilidie 11 hours ago 0 replies      
The volunteering line really reminds me of the post from the github founder's wife.

In both cases, a founder essentially guilted someone into spending extra, unpaid time working on a "world changing" (read: not at all world changing) new startup idea where they would retain all ownership while the people working for them were expected to "volunteer". How do founders get so sociopathic that they do stuff like this?

niels_olson 11 hours ago 0 replies      
I was at a conference with the graduating class at the Naval Academy in 2004. The Chief of Naval Operations was speaking, and my bosses, the Superintendent and the Commandant were with him on stage. He walked into the crowd and started asking people why they thought sailors got out of the Navy. To a T, every soon-to-be Ensign said it was the money, to murmurs of agreement from the crowd of 1000.

Then he saw me. "Let's ask this Lieutenant, back from the fleet, what he thinks. Tell me, Lieutenant Olson, why are sailors getting out of the Navy?"

"They're unhappy people who haven't achieved their goals."

You could hear a pin drop. He quietly, slowly, walked back to the stage and waited a bit. I thought I might be fired. He started talking about the value "division officer records", which is basically Ensigns keeping track of the progress their sailors are making toward their goals.

tommo123 15 hours ago 0 replies      
Can't wait 'til she discovers the wonders of forced casualisation and then gets super upset when employees choose not to come in for 3 hours at 20-minutes notice. "How dare they treat my business so flippantly?" I wonder.
porker 14 hours ago 1 reply      
> I can be very flexible and friendly, but I always put the company first and I value the group's wellbeing over an individual employee.

While difficult decisions have to be made for a group's wellbeing over an individual's, if you're managing people frequently you need to be perceived to put their wellbeing over the company's. Sure, most of the time your hands are tied (a capitalist company exists to make money) but botht he perception and some action are important.

> I have accepted that, on the short term, it does not necessarily make me nice or likeable. Many would even say on the contrary.

Here's the real cause of problems with the employee. You are a person who values logic and results above people skills. So am I. But - despite not running a company like you - I've learned that others don't, and people skills are infinitely more valuable to have and have to be developed by me, else I fail them.

Inge Geerdens, sort yourself out and then take your employees to task.

mortov 15 hours ago 3 replies      
Sounds like someone really wanted to set up a UK style '0 hours contract' where you get to avoid paying an 'employee' unless you ask them to do something and then only need to pay for the actual time they spend doing it but you have the advantage of stopping them getting another real job since they are already reserved by your 'employment'.

UK companies do it all the time - sounds like this Belgian needs to move to the UK to get the desired outcome of slaves on standby.

bowlofpetunias 14 hours ago 0 replies      
This is just one of the many examples of the utter douchiness of hiring people as employees, but treating them as "fellow entrepreneurs" whenever it suits the employer.

It seems to be a standard pattern in most start-ups, simply not taking the responsibility for being an employer.

What this CEO did isn't just a misunderstanding, it's very, very bad employer-ship, and detrimental to the well being of the employee. Every day that employee is sitting there, being utterly demotivated and wondering what they're going to do next with their career and life that person is edging closer to a burn-out.

Under Dutch law, if that happens, the company is 100% liable and will have to keep paying the employees salary (for up to two years), and get actively involved in the employees recovery.

In this case, it is very black and white: this CEO is an incompetent employer who on top of it has a serious, near sociopathic empathy deficit.

This is not about "leadership style", this is about simple management competence.

bnastic 12 hours ago 0 replies      
Apparently, we're now calling it a "challenge". "Job" was getting a bit stale so we changed it.
colemorrison 10 hours ago 0 replies      
So, just in my opinion and in my experience. The more I work with clientele who are successful, the more I find that....

...the more successful they've been, the more detached from reality they are. Because they've been so successful, who's to argue with their view point in life? They must be right.

Again, just in my opinion and experience.

subpixel 11 hours ago 0 replies      
Since I can't understand it, and it sounds a bit humorous to my ears, I can easily imagine this interview with Ms. Geerdens is a Vooza.com video http://vimeo.com/82075734
mangeletti 13 hours ago 0 replies      
Unbelievable... I can't tell if Inge is trolling the Internet or just her employee, or if she's just a sociopath.
marpalmin 12 hours ago 0 replies      
From her writing I cannot derive if she really agreed with this person to find a new challenge, and this person did find a new challenge, or if she just fired this person and it was not that amicable after all. Is this perhaps of language/culture misunderstanding?
brokentone 13 hours ago 1 reply      
Link is down, mirror anywhere?
claar 13 hours ago 0 replies      
Appears to be removed now.

Mirror: http://pastebin.com/uUGfWnjf

james1071 14 hours ago 0 replies      
You couldn't make this up.
washedup 11 hours ago 0 replies      
It reads as if English may not be her first language which could be causing some confusion.
chalgo 13 hours ago 0 replies      
This sounds more like he was made redundant than fired. If his role at the company is no longer required that is redundancy and there should be a severance package in his favour. Assuming laws are similar to the UK.
dimman 12 hours ago 0 replies      
"I know I fired this person ... It never crossed my mind that he had been FIRED."

I could think of less logical reasons to be surprised.

edgarvm 14 hours ago 0 replies      
>So your best bet is to hire people who share your passion

Seems like the PHB still does not get the idea

GhotiFish 6 hours ago 0 replies      
wow. Read the article. Sounded like this CEO was actually coming to terms with the ramifications of firing someone, rather than acting exasperated that someone acted this way after being fired.

This story is pandering to outrage where there is none to be had.

PhilipA 13 hours ago 0 replies      
Apparently the article backfired and it has been deleted.
idorube 11 hours ago 0 replies      
a quote from this particular CEO's twitter feed sounds appropriate: If I wanted to kill myself, Id climb up your ego and jump down to your IQ level." (@netlash
facepalm 13 hours ago 2 replies      
I have to side with the CEO here. As a freelancer, I wouldn't let my work slide just because my contract is ending. What about acting professionally?

Employed = lazy and feeling entitled? Where do the privileges of employees come from anyway?

raheemm 13 hours ago 1 reply      
Surprised at all the hostility towards the CEO. She did the right thing by giving him notice and paying him to look for another gig.
dkersten 14 hours ago 1 reply      
I agree with what most people here are saying - there is certainly a lot of WTF's in what she wrote that doesn't quite add up.


When someone is leaving a job (ie is working during the notice period and is still being paid), I would still expect that they fully do their job until they've actually left - doesn't matter if they quit or "were let go". Doing otherwise is, IMHO, very unprofessional.

Having said that, in this story, he was expected to work after hours, so he had absolutely no obligation to respond. So, given the circumstances, what I said above doesn't seem to apply in this case, unless it was in his original contract to be on call like this.

Goji: a web microframework for Go goji.io
213 points by zenazn  2 days ago   86 comments top 18
tptacek 2 days ago 5 replies      
This is going to sound a little dismissive, but I don't mean it to be:

I'm not sure I understand the value that these frameworks offer beyond the HTTP server interface Golang supports out of the box, plus a URL router like "pat" (or whatever the cool kids are using now other than "pat").

I see the clean middleware abstraction, but I find the idiomatic closure-based implementation of middleware adds only a couple extra lines of code, and in return I get total flexibility.

What's this doing that I'm not seeing? I'm sure there's something; I'm writing this comment out of ignorance.

kohanz 2 days ago 3 replies      
Perhaps this is not the best place for this question, but as a frequent HN reader, I'm constantly told that Go is great to develop in and very performant. However, it's not clear to me how Go suits a web application with relational data.

From what I've gleaned, an ORM does not make sense in Go, so how would this type of application be approached? Writing a lot of ORM-type boiler-plate? A completely different way? Or is Golang a bad choice for such an application?

aalpbalkan 2 days ago 1 reply      
It is good to have many web microframeworks in a language ecosystem. In Python probably there are a hundred of those. Many of those are not picked up by the community a natural selection. Only really a few of those survived. It all depends on you if you are going to choose Revel, Martini, Goji or whatever you want. Today, thousands of apps run on web.py, yet most of the source code is untouched last 3-5 years (https://github.com/webpy/webpy/tree/master/web) It's impressive it just works!

Personally, I am looking for frameworks that many people rely on, maintained frequently as needed and works just fine. There could be a +-10% difference on QPS those framework URL routers can handle and render a 'hello world' page.

So this is a nice attempt I would say, looks cleaner than Martini, still supports middlewares. On the other hand, Martini has support to serve static files, logging, panic recovery, which are also good and has a bigger fanboy community around it: https://github.com/go-martini/martini

codegangsta 2 days ago 0 replies      
Looks very nice. I do appreciate having more clean, well thought out web frameworks in the Go space. Type switches for your handlers is a good way to approach the net/http compatibility.

There are some people that find that Martini is a bit too magical for them, and that is completely okay. It's great to see another minimal framework that will suit their needs.

nemothekid 2 days ago 1 reply      
I see why some would call Martini "magic" but I'm not entirely sure I prefer having to deal with a giant `map[string]inteface{}`. What you are really doing is moving the "magic" from the framework and onto the developer (I now have to do type checking and casting).

That said I'm a huge fan of Martini and I actually use codegangsta's Inject in my other projects to manage shared state/resources, so I am heavily partial to it.

DennisP 2 days ago 0 replies      
If you think you're ready, it might be fun to submit a techempower benchmark.


leccine 2 days ago 5 replies      
Sorry for my ignorance, how is this different, better than Martini? What is the main goal of creating a new framework (instead of getting the features you are missing implemented in the currently existing ones)?
Matrixik 1 day ago 1 reply      
About this part in README:

> I have very little interest in boosting Goji's router's benchmark scores. There is an obvious solution here--radix trees--and maybe if I get bored I'll implement one for Goji, but I think the API guarantees and conceptual simplicity Goji provides are more important (all routes are attempted, one after another, until a matching route is found). Even if I choose to optimize Goji's router, Goji's routing semantics will not change.

Maybe you can just use HttpRouter without reimplementing it yourself?


> The router is optimized for best performance and a small memory footprint. It scales well even with very long pathes and a large number of routes. A compressing dynamic trie (radix tree) structure is used for efficient matching.

    goji.Get("/hello/:name", hello)    router := httprouter.New()    router.GET("/hello/:name", Hello)

zkirill 2 days ago 0 replies      
Great job! It definitely feels like a microframework compared to others. I'm glad that there are so many starting points for Go web services available now of varying levels complexity. To me this feels like it fills the void between Gorilla and Revel/Martini/Beego. Also, the code is very well documented and easy to follow.
ddoolin 2 days ago 2 replies      
A bit off-topic, but I love the site colors. I'd love that text theme for Atom if it's available?
mcescalante 2 days ago 1 reply      
Every time I see a web framework for Go, I just want to see an example or two of a website developed with it. Does anybody have any solid examples?

Hopefully, like me, some others enjoy exploring existing code as well as reading the examples / docs.

ya3r 1 day ago 1 reply      
Do we yet have the Django for Go? Goji is as said a microframework, what I want is an equivalent of Django.
gkya 1 day ago 0 replies      
Call it nitpicking, but I would rather not export a symbol 'C' from a library I write. Seriously, is 'Context' that hard to type? And the author seems to be far from lazy, the codebase is nicely and extensively commented (it is a nice read indeed). Apart from this issue, the library seems quite nice.
levosmetalo 1 day ago 0 replies      
Just a quick look at the examples, and I can say that it reminds me very much of Clojure Ring. It provides really small and extensible core, and if the community pick it up and start writing useful middlewares, it can become very useful.
tete 2 days ago 0 replies      
How does this compare with Martini?


abbot2 2 days ago 1 reply      
When I read things like "func Get(pattern interface{}, handler interface{})" I start questioning why this whole thing is ever written in Go at all? This kind of ditches half of Go's benefits by moving all type checks to run time.
gfalcao 2 days ago 0 replies      
Were you inspired by this ? http://www.cherrypy.org/The juxtaposition of things and colors and code simplicity looks like so
jodiscr 2 days ago 1 reply      
I ain't switching from Perl 5.8 to golang until a shared hosting provider becomes available.
Debugging Asynchronous JavaScript with Chrome DevTools html5rocks.com
204 points by austengary  2 days ago   48 comments top 13
folz 2 days ago 1 reply      
Comment from Paul Irish, who is marked [dead]:

Protip with this feature: It can resolve where you originally bound your event listeners, regardless of if you used jQuery or whatever. So, either set up a breakpoint or establish an Event Listener Breakpoint[1] and you can walk back to where you registered the handler.

[1]: https://developers.google.com/chrome-developer-tools/docs/ja...

acdanger 2 days ago 2 replies      
This looks great. Debugging simple 'click' events has always been a non-trivial task for me -- doubly so on touch devices where an a 'click' event can have a range of unpredictable side effects.
paulirish 2 days ago 1 reply      
Protip with this feature: It can resolve where you originally bound your event listeners, regardless of if you used jQuery or whatever. So, either set up a breakpoint or establish an Event Listener Breakpoint (http://goo.gl/YYlbDK) and you can walk back to where you registered the handler.

(Yeah, no idea why an editor killed this comment. :/ Thanks folz!)

math0ne 2 days ago 1 reply      
Very nicely produced article, i love the use of animated gifs that is becoming popular for tech demos.
bilalq 2 days ago 0 replies      
This is super cool. With respect to debugging at least, this gives you a similar trace to what you'd get with the Zone.js library[1] it seems. Having this kind of thing baked into the JS engine is great.

[1]: https://github.com/angular/zone.js

EmielMols 2 days ago 1 reply      
It would have been interesting to be able to setup your own stack links (e.g. by collecting Error().stack, and being able to update this at any other point - Error.setStack?). A heap of 3rd party promise/observer/animation/etc libraries could use such a feature to ease debugging. The current implementation does not allow for this [1].

[1] https://code.google.com/p/chromium/issues/detail?id=272416

mrsaint 2 days ago 2 replies      
Wow, this is seriously cool! No doubt it will mean more switching back and for between Firebug and Chrome DevTools. Or am I the last one still using Firebug?
nraynaud 2 days ago 2 replies      
I'd like a real console object in worker (at least a variadic pretty-printing log() function and time()/timeEnd()) and a "break all threads" button too, please. Worker debugging is a pain.
roskilli 2 days ago 2 replies      
Now if only they could make a standalone IDE backed by chrome dev tools! Then I could use it for Node too :D
fusionflo 2 days ago 1 reply      
Would anyone know how to achieve this type of animation on the screenshots? Love it!
jakubmal 2 days ago 0 replies      
How would you tackle named functions in coffeescript?
Achshar 2 days ago 3 replies      
Wasn't this possible already? Put a breakpoint or 'breakpoint;' on the function body's first line and it will pause execution when the function is called synchronously or asynchronously. And browse the call stack on the right column. What's new here? I have been doing this for quite sometime.
jmspring 2 days ago 3 replies      
Willing to take the rep hit...

Is HN really so focused on front end that this particular topic finds itself rapidly at the top of news feed and staying there for an extended amount of time?

Has there been a recent poll about topics active HN viewers deem as important? If it really is this JS heavy, that is intriguing.

The Bubble Question avc.com
200 points by DanielRibeiro  20 hours ago   86 comments top 18
hagbardgroup 11 hours ago 6 replies      
This is the most honest article that I've seen from a mainstream financial figure about why valuations are so high.

ZIRP (zero interest rate policy) means that money is near worthless to financial institutions that can run the carry trade on Treasuries, or other carry trades involving foreign exchange. VCs manage money for those guys, along with pensions and other enormous concentrations of capital.

What you want are equity stakes (control) of productive assets. The cash that you use for that is not that useful except to normal suckers like you and I who need to hand over a bunch of paper tickets every month to the landlord, the grocer, and the government. The guys who issue the tickets are generally above those concerns, but they still need to get a return on their capital.

I would rather own stock than a pile of green tickets. Stock is, again, just another kind of ticket, but they're more expensive tickets that grant you rights to a productive asset. It is a safe bet to dump your green tickets into speculation because, while the speculation may work out, you know for a fact that those tickets are going to depreciate.

You will not see interest rates go up if the Fed can help it, because to do so would provoke an immediate fiscal crisis. Bubbles result from rational allocations of funds based on a certain set of assumptions. It is a good assumption that the US government will not permit rates to rise as long as there is zero public appetite for a major reduction in government spending. Once that reality changes, the structures that rely upon that environmental state will either need to adapt or will fail.

Startup-land is a greenhouse arrangement that thrives so long as the temperature remains high. When the guy who owns the greenhouse cuts the power, most of those plants are gonna die. If you want to be resilient to that risk, you must leave the hothouse. However, the hothouse plants have a lot more access to capital in the near term, so it is rough to compete with them directly. That is the trouble with bubbles: you can't really escape their effects by being 'prudent,' because low interest rates make prudence imprudent.

In order to raise rates, the US would probably have to either confiscate a lot of assets (which would harm its international status as the cleanest dirty shirt), raise taxes, raise retirement ages, implement means testing on medicare + social security, and cut military pensions/VA expenses. There is no real solution that does not involve provoking some sort of major crisis, so it is much easier for everyone to keep the carnival going as long as possible until something snaps internationally. The federal government can't afford even a slight rise in rates without having an immediate cash flow crisis.

tpeng 14 hours ago 3 replies      
I generally agree with fred that monetary policy is driving valuations. However, I think it's not quite as simple as he describes (although he may be intentionally simplifying for his audience).

It's true that financial assets compete with each other for investors. So when the Fed reduces the yield on Treasurys or MBS, the marginal investor will rotate to a riskier asset. This will create a chain reaction that eventually raises equity prices. However, it's not the case that earnings yield (Earnings/price or the inverse of P/E) is going to be equivalent to the interest rate on Treasurys (T-bills). Typically the way that investors think about it is earnings yield = Treasury rate + equity risk premium. So at an equity risk premium of 5%, even a Treasury rate of 0% would result in an earnings yield of 5% or P/E of 20, not infinity. This isn't too far from the market multiple of the S&P 500 right now. (The historical average ERP over the past century has been 4.2%.) So the market multiple implies that the overall market is not in a bubble, but that doesn't eliminate the possibility that some sectors are in a bubble.

The Fed's influence on the market goes beyond their impact on interest rates. One reason for the sharp rise in markets is that investors are fearful of inflation. Although CPI inflation has remained low, investors would rather hold scarce assets such as equities and real estate than a rapidly diminishing percentage of the money supply (i.e., cash) that results from money "printing". While money creation is nothing new, and in a sense, unconventional money creation is not that different than conventional easing, the sheer scale of our current monetary policy is unprecedented. This lack of precedent creates a high degree of uncertainty in the ultimate outcome.

The final reason for the strength of the markets is a widespread belief that the "Fed put" is back. It is almost universally believed that the Fed has taken on a third, unstated mandate of stable and rising equity markets, by easing and talking the market up when it declines. I dont know to what extent this is true, but the mere notion has created a hidden source of instability in the market by giving investors unusual confidence. While there is no reason to believe that markets will crash, it's also not out of the question.

The Fed has announced that it will "taper" QE purchases from $75 billion / month to $55 billion / month. At the current rate of taper, QE purchases could reach zero by the end of the year. One key question for investors is whether this may reverse any of the three dynamics listed above.

netcan 16 hours ago 4 replies      
One interesting thing about the high valuations of tech startups now is where the money is coming from. It's not stock markets.

At or near the bottom (or is it top?) of this "bubble" funnel a lot of high valuation investments from "private" money acquisitions & other supposedly smart money, like the recent AirBnB investment. Were $10bn valuations possible without public markets before recently? Does that make us daffier if this is a bubble? IE, is this proper risk capital that is less fragile and sensitive to death spirals?

Facebook has been aggressively scaling up (in my opinion successfully) their ad business since the IPO. Facebook has/had 2 big make-or-break risks: (1) losing popularity/users (2) failing to turn users/visits into into ad revenue. There was also some risk that in trying to fix #2, #1 would break.

Risk, reward, uncertainty. Nothing unusual here. Risk #1 is constant ambient risk. Risk #2 is/was more of a "what's under that rock" risk. The rock is being turned as we speak and so far the news has been good. FB value has roughly doubled in the last 9 months and IMO, that's the product of "information" about the viability of facebook as an advertising platform.

Here is the subtle point.^ They could have turned that rock just as eerily before IPO. They could have worked on the ad platform sooner or they could have delayed the IPO. I think that move was deliberate. Facebook chose to make that unavoidable, but timeable risky step after the IPO.

As an analogy, imagine a widget company. They get investment design & manufacture a warehouse full of widgets. Then they pause, take some more investment, don't spend it and go public before finding out if their widgets sell.

What role does this pre-IPO money play? FB didn't seem to need it to operate.

^I'm not sure about this. It's a speculation and I don't know or understand enough to be confident at all about it.

rexreed 16 hours ago 0 replies      
While it is certainly true that valuing a business with an ongoing (and somewhat predictable) revenue stream, the typical yield approach is earnings / purchase price, this is not as applicable in situations where there is either no revenue (such as in the case of Oculus Rift) or little predictable revenue (WhatsApp). What exactly is the yield rate on the Oculus Rift acquisition when earnings are near zero?

Much of the acquisition activity that is driving exits, which is in turn driving VC activity (exits motivate investment), is coming from land grabs in expectation of FUTURE potential significant markets. Facebook grabs OR because it believes that the $2B purchase price now will be far outweighed by the potential for VR in the future, same for WhatsApp.

It would be simplistic to say that valuations that drive acquisition activity comes simply from comparing yield levels.

That being said, where does Facebook get the money to make the acquisitions they do? From the public market. The public market is mostly driven not by individual investors, but by major market movers, which are few in number compared to the "retail" investor market, but significant in influence. And Goldman Sachs and the like might be motivated to keep pushing money into Facebook because the alternatives are weak, given the current low yield environment.

If yields improve, then GS and the other market movers might shift from equities to other asset classes (fixed income, equities, maybe even CDOs again), and then as the money stream starts to taper for folks like Facebook, their acquisition activity will slow, and then valuations will start to decrease, and then Venture Capital activities in those sectors will also dampen, because the exits will be seen as less lucrative.

It would seem to me that exit activity drives valuation more so than current yields, but current yields might impact the money flow that drives those acquisitions.

mactitan 17 hours ago 1 reply      
Well, this chart focuses on tech but Robert Schiller also thinks the overall market is bubbly. I'm amazed that interest rates could have been held down so long and this is the real danger: how the heck can they ever normalize? If they do it will wreck havoc so the fed is trapped between the proverbial rock & hard thingy. Lo interest also hurts older people who rely on savings (But theyre not going to be here long anyhow...but Peter Schiff argues savings is the only real form of investment )

Bottom line is interest rates can only be held low because alternatives around the world don't exist. I'm also amazed how alot of people think the fed saved the economy & created more wealth : as Jim Rogers says they only know how to print).

Finally, I think the derivatives were around 600bill upto Lehman downfall. I was astonished to find that they're now a quadrillion! Buffet called derivatives financial weapons of mass destruction. I think this world might experience this interesting concept.


kunle 19 hours ago 2 replies      
This is pretty spot on. We in the SFBA don't think about rates much but in a past life it was all I did. The moment the markets price in a long term expectation of rates rising, a lot of the current behavior we are seeing (eye popping salaries/valuations/home prices/rents) will correct themselves. It won't mean the businesses are bad - just that they're priced less richly. Until then, they are making hay while the sun shines and they're probably wise to do so.
jpmattia 7 hours ago 0 replies      
> It is the combination of these two factors, which are really just one factor (cheap money/low rates), that is the root cause of the valuation environment we are in. And the answer to when/if it will end comes down to when/if the global economy starts growing more rapidly and sucking up the excess liquidity and policy makers start tightening up the easy money regime.

> I have no idea when and if that will happen.

Apparently, neither does anyone else, including the Fed itself who's been predicting a rise since 2010 or so: http://www.zerohedge.com/sites/default/files/images/user5/im...

rguzman 14 hours ago 0 replies      
> Its hard to sustain a bubble for four years.

I don't think so. The housing bubble that popped in 2008 lasted a lot longer than 4 years.

sz4kerto 18 hours ago 4 replies      
The _really_ scary thing is that as rates are moved close to 0, inflation seems to slow down. This is true both in the US (almost 0 rates, low inflation) and in the EU (a bit higher rates, but almost 0 inflation in the last few months). If deflation kicks in, then this flood of free money will evaporate very quickly.
j_baker 8 hours ago 0 replies      
This sounds like a perfectly reasonable take on the situation. As a general rule of thumb, expansionary monetary policies benefit smaller companies. Now that the fed will likely start tapering back some, I think we'll start seeing larger companies (Apple, Google, maybe Facebook) having good years.

There's one thing I can guarantee though: we are almost certainly in some kind of bubble. It may not be a tech bubble, but bubbles are just a fact of economic life.

brc 16 hours ago 1 reply      
>They have flooded the market with cheap money in an attempt to heal the wounds (losses) of the financial crisis and incent business owners to invest and grow their businesses. That has not worked particularly well but it has worked a bit.

I would argue that it hasn't worked at all, given all the bad things that are yet to come from it.

mathattack 12 hours ago 1 reply      
Its been a good time to be in the VC and startup business and I think it will continue to be as long as the global economy is weak and rates are low.

The discounting is what's propping up the market. It's a strange phenomenon in that the market is betting that earnings will hold or grow, but the economy will be weak enough to discount future cashflows at a low rate. This is why signs up recovery that suggest tightening cause the market to tank.

7Figures2Commas 19 hours ago 4 replies      
> Its hard to sustain a bubble for four years.

Says who? As Wilson observes, "Since the financial crisis of 2008, policy makers in the developed world have kept interest rates at or near zero. They have flooded the market with cheap money in an attempt to heal the wounds (losses) of the financial crisis and incent business owners to invest and grow their businesses." It's kind of amazing that he doesn't see how years of unprecedented coordinated central bank action could drive and sustain bubbles.

> Its been a good time to be in the VC and startup business and I think it will continue to be as long as the global economy is weak and rates are low.

As an investor, there is no doubt that DFTF and BTFD has been very profitable, but the implication that a weak global economy and low interest rates is essentially responsible for sustaining the good times should be disturbing to anyone with exposure to the venture capital asset class given what it is supposed to represent.

Incidentally, I think it's somewhat amusing that VCs are asked the "Are we in a bubble question?" in the first place. When you ask market participants who can only play the market in one direction using a single asset class, you tend to get the least insightful answers in my opinion.

mcmullen 17 hours ago 1 reply      
Cheap money (or, low rates with "safe" bond markets) + high growth tech = sky high valuations - got it, Fred.

Just, one more thing... how did he go from the 10% yield ($100M / 10M = 10% yield) to "if interest rates are 5% instead of 10%, then you would pay $200mm for the business ($10mm/$200mm = 5%)." Is he simply interchanging the word "yield" with "interest rates" or actually talking about the central bank?

hoodoof 17 hours ago 0 replies      
Nothing like some well argued logic with supporting numbers and formulas to ease the anxiety. Ahhhhh.
kevin818 19 hours ago 0 replies      
This may sound subjective but at least in my opinion when the rate of IPOs starts to rapidly increase and the companies behind those IPOs don't really seem promising, then you begin to worry about a bubble. Back in the 90s it seemed like if your company wasn't going IPO something was wrong.
nutjob2 18 hours ago 0 replies      
"This is not the bubble you're looking for..."

"Move along..."

The VC can have a strong influence on the weak minded.

rajacombinator 19 hours ago 0 replies      
VCs don't understand markets, and market guys don't understand VC. It's foolish for either to opine in the other's territory.
Hacking Sonos medium.com
199 points by smacktoward  1 day ago   57 comments top 17
jwr 1 day ago 3 replies      
I am so glad this is happening for the hack value itself, but also because a genuinely useful application might result.

I love Sonos, their devices are way ahead of the competition. But their app just plain sucks. What is the most important function of a remote control app? Adjusting volume and yet the useful range for the volume control occupies less than a percent of the entire touchscreen. It is very difficult to adjust the volume. And Sonos gives you no way to set the useful range, so you often end up blasting your ears with monstrously loud music, because you didn't tap the control just right.

This has been reported to Sonos numerous times and yet we still have to suffer with the crippled volume control.

Here is hoping that there will be an alternative.

chrissnell 1 day ago 3 replies      
This is awesome. Submissions like this harken back to the early days of Slashdot and things like the CueCat and Linksys router reverse engineering. I'd love to see more of these hardware+software hacks show up on HN.
klochner 1 day ago 4 replies      
API docs or it didn't happen.

Looks like a cool project, I just find it hard to believe he used wireshark to figure out the API on his own, given that he acknowledges:

    I took a few bits from @n1mda's project: https://github.com/n1mda/sonos-objc
Sorry to be cynical, my BS meter just went through the roof.

pedrocr 1 day ago 0 replies      
I was hoping someone was hacking the sonos itself and replacing the software. The hardware looks awesome but the fact that it can't connect to an existing wireless network and that you can't stream live audio to it makes it very limited. I bought one and ended up returning it when I realized I couldn't use it for something basic as sound for a movie on my laptop.
theswan 1 day ago 3 replies      
Very cool!

I bought a Play:3 a few months back and was also dissatisfied with the given OS X/iOS apps - I'm currently working on enabling AirPlay support for Sonos devices. (http://stephen.github.io/airsonos/)

Would love feedback from any Sonos users!

drewying 1 day ago 0 replies      
Very cool!

I created an app using some of nathanborrors work that let's you browse through all of the Sonos Music services (Like Rdio, Spotify, Pandora, iHearRadio, etc). Setup your account, browse through your collections and play them on your system. I should submit a pull request to see if I can get this integrated into this project!

You can see the project here: https://github.com/drewying/Sonos-Music-Services-Browser

I also have an app on the App Store that turns your Sonos System into a wireless PA system. The current version is a little buggy but an update is coming shortly that makes it much more stable. You can check it out here:


zrgiu_ 1 day ago 0 replies      
Please, please, bundle the Mac OSX volume controls in an app and put it somewhere for download. I'd totally pay for that!https://d262ilb51hltx0.cloudfront.net/max/800/1*AzZdjG36qm90...
Myrmornis 21 hours ago 0 replies      
In case it's useful to anyone, if you want something that costs $25 instead of a few hundred, Airfoil by RogueAmoeba[1] is great. It's just software: you basically need to leave an iOS/Android device next to your amplifier, and you can stream to it from other devices. I use it for music; AFAIK there would be a lag between image and sound for a video source.

[1] https://www.rogueamoeba.com/airfoil/speakers.php

berberous 1 day ago 1 reply      
This is awesome and looks great. Do you plan to release the menubar app soon?
geuis 1 day ago 0 replies      
The author didn't look very hard. Their API is documented (more or less) at http://musicpartners.sonos.com/. It's more descriptive via language than laying out all end points. Registration is required.

After initial UPnP search, you get a URL for a descriptive xml file. Sonos operates over the SOAP protocol.

If you want your client to be notified of changes, you have to subscribe to each event type with a max of 3600 second timeout, then resubscribe. It's not necessary but the system supports unsubscribing too.

One specific thing you have to hack is this. If you want to switch to a different music service, you have to include the user id used to sign into that service (Pandora, Rdio, etc). This data is returned in a base64 encoded, encrypted blob. There's no way to decrypt it unless you can figure out how to crack the key out of the device.

Fortunately you only need the user id. There's another undocumented endpoint that returns some info that includes all the usernames, just no passwords. But it doesn't match the them to their services. You then have to send requests with all combinations of usernames and services and get the responses. Once these are returned, just store the relationships.

I'm writing this from memory, sorry for the specific details. If anyone is interested, contact me through my email in my profile and I'll get the info from some code I wrote recently.

jimmcslim 1 day ago 0 replies      
There are rumours that Sonos are considering opening up their platform to 3rd-party developers. Given they have recently dropped the bridge requirement, and the abundance of AirPlay-compatible speakers (plus WiFi-direct based alternative to Sonos, Panasonic have released one) I think they are perhaps starting to feel the competitive heat. I for one can't wait until Instacast or Downcast can send audio to a Sonos without having to go via an Airport Express as an AirPlay bridge.
japers 1 day ago 0 replies      
Coincidentally, I just released a Sonos CLI NPM package over easter [1] that builds on some work done by others [2]. It is targeted primarily at circumventing the Spotify search functionality in the Sonos app, that more often than not times out and fails to give results. I just started using it at the office for quick playback control, and it takes away a lot of the frustration I have with the app.

[1] https://www.npmjs.org/package/sonos_cli[2] https://www.npmjs.org/package/sonos

patrickk 1 day ago 0 replies      
Amazing. Perhaps combine with Jasper[1] (RPi voice control, like Siri) for even more cool functionality and an extra way of interacting with it.


digitalboss 1 day ago 0 replies      
FYI - Unofficial SoundCloud Sonos application using Heroku app endpointhttp://www.hirahim.com/projects/sonos-soundcloud/

Works great - cool to see the Sonos web interface for the zones.

splitbrain 1 day ago 3 replies      
A bit unrelated, but can anyone enlighten me what he means by "geofence" to detect his phone leaving the apartment?
gadders 1 day ago 3 replies      
I wish someone would hack Sonos to make its network communication more reliable. Every time you turn it off you have to press the two buttons on top to make it find the bridge again. Several times.
elyrly 1 day ago 0 replies      
Creative idea to compile an API literally out of thin air. This might be my future replacement.
       cached 25 April 2014 02:11:01 GMT