Show HN: Interactive Chord Diagrams in One Line of Python - <AUTHOR> https://shahinrostami.com/posts/statistics/data-is-beautiful/chord-diagrams/ <comment><AUTHOR> I've made this available on GitHub [https://github.com/shahinrostami/chord](https://github.com/shahinrostami/chord)

Video of it in action + examples [https://www.youtube.com/watch?v=AJ2RnU-0KwQ](https://www.youtube.com/watch?v=AJ2RnU-0KwQ)</comment>


How to get latest stable version of Nginx on Ubuntu - <AUTHOR> http://clayrichardson.me/2012/01/19/how-to-get-latest-stable-version-of-nginx-on-ubuntu/ Hey guys, long time reader, first time submission. Feedback is appreciated! <comment><AUTHOR> Long time reader, first time submission. Feedback is appreciated!</comment>


Ask HN: How to get a job/an internship in programming with EE background - <AUTHOR>

Hi,
I'm currently doing a combined BSEE/MSEE with a strong focus on software (mostly MATLAB, C and Python) and I was wondering how to get a job/entry position in programming. In school, we do a lot of coding with multimedia (think audio, video compression, wavelets) and telecommunications (i.e. LTE, 802.11, SIP, RTP). I'm having a hard time finding openings for these skills. I'd like to start doing some work on the side and gain experience while I'm completing my degree and writing my thesis, but most companies only accept candidates who already graduated. Does it makes sense to apply to positions whose requirements I don't fully fulfill and see if I can wager an internship from that? OR maybe complete my degree and hope that they don't want any work experience? I'd be grateful for any ideas/pointers!
Thanks! <comment><USER2> I got my degree in EE and applied for software jobs and got one. I worked on side programming projects and taught myself basic programming (C++ at the time). When I interviewed I was able to 1) show that I understood concepts like polymorphism and object-oriented development, and 2) cared enough to work on software projects in my own time.

I did get burned on a few interviews where I _claimed_ to know C and then they asked some difficult pointer questions that were out of my depth. Truth was I had done C++ and a little bit of C in one class but not much. So you need to be able to pass a verbal interview and a coding interview.

If I were you I would also suggest not trying to get a job in one of those sub-fields right away, but instead look for any decent software job, get some experience, then look to move into a niche area.

<comment><AUTHOR> Yeah that's a good approach, thanks for the reply!</comment></comment>


Open sourcing a realtime mahjong - <AUTHOR> http://pau.calepin.co/open-sourcing-a-realtime-mahjong.html

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


Let's end Imposter Syndrome - <AUTHOR> http://max.woolf.io/lets-end-the-myth-of-imposter-syndrome/

<comment><USER2> You misunderstand what Imposter Syndrome is. Please research the subject better and revise your post.

<comment><USER3> What would you call what woolf is describing? I'm curious because the ideas expressed in his post are how I feel everyday.

<comment><USER4> I'd say that the post very accurately describes the problem of self-esteem based on comparisons with others and/or current trends. Which is a big problem indeed.

However it's a problem only partially connected to Impostor Syndrome, which is defined as an inability to attribute own success to own competences. People suffering from IS attribute their success to luck or "faking".

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

<comment><USER3> Thank you! This makes sense.

</comment></comment></comment></comment><comment><USER5> Imposter Syndrome affects all type of careers and activities not just software development.

<comment><AUTHOR> You're right. At no point did I make that assertion, however. The blog's posts are entirely about software development so the post was aimed at the audience of the blog.</comment></comment>


Show HN: 9GAG client app for Windows 8 - <AUTHOR> http://apps.microsoft.com/windows/en-gb/app/9gag-why-so-serious/00daa32d-2c38-4d5e-9494-191b17f69628

<comment><AUTHOR> Hi, It's my hobby project, created in free time using angular and win.js. Feedback is welcome :)</comment>


Genql – Type safe GraphQL query builder - <AUTHOR> https://github.com/remorses/genql <comment><AUTHOR> Genql generates a typed graphql client for your graphql api to use in browser or node.

The benefit of writing graphql queries in code is that you can easily keep in sync queries and schema: as soon as your queries are not valid typescript will give you an error at compilation time.

There is also the benefit of auto completion, this way you can easily write queries discovering the fields as you write them.

Genql basically gives you a personal prisma client that you can use with any graphql API.</comment>


Ride in your privately-owned rail car to see North America - <AUTHOR> http://www.amtrak.com/privately-owned-rail-cars <comment><USER2> TLDR, Amtrak will add your train car to a normally scheduled passenger train for $2.80 per mile, plus fees. Lots of fees.

<comment><USER3> Total bucket list item.</comment></comment>


What Do the Different Snapchat Icons Mean? - <AUTHOR> https://support.snapchat.com/en-US/a/icon-index <comment><AUTHOR> Snapchat is SO CONFUSING -- this is how I know I'm super old.</comment>


Canal Defence Light - <AUTHOR> https://en.wikipedia.org/wiki/Canal_Defence_Light <comment><USER2> The UK was very fond of making specialised of tanks in WW2 - notably "Hobart's Funnies":

[https://en.wikipedia.org/wiki/Hobart's_Funnies](https://en.wikipedia.org/wiki/Hobart's_Funnies)

The Soviets also used searchlights to dazzle enemies during attacks - particularly that attack on Seelow Heights:

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

</comment><comment><USER3> "The idea is credited to a _Greek citizen_ , Marcel Mitzakis, who devised the system for the de Thoren Syndicate in the 1930s; they were advised by J F C Fuller."

[https://en.wikipedia.org/wiki/Archimedes#Heat_ray](https://en.wikipedia.org/wiki/Archimedes#Heat_ray)

Putting his heritage to good use it seems :)

</comment><comment><USER4> I remember seeing one of these at the Tank Museum in Dorset, UK. If you're in the area, it's worth a visit. The weird contraptions mounted on some WW2 tanks must be seen to be believed.

<comment><USER5> According to Wikipedia, you saw the only one in existence with its original tank model/structure.

</comment></comment><comment><USER6> Can't imagine driving one of these into battle. Seems like it'd be a giant "shoot me first!" announcement.

<comment><USER7> I thought that too but, if it's too bright to look at, you can't hit it. Or maybe you have retreat beyond your weapons effective range just so you aim at it.

Though I'm sure the enemy would have eventually found some welding glass or even oil-smeared glass

<comment><USER8> > Though I'm sure the enemy would have eventually found some welding glass or > even oil-smeared glass

You don't exactly carry either for an amphibious assault. And once beaten back, there likely wouldn't be a second attempt.

</comment></comment></comment><comment><USER9> "Curiously, the actual use of the system resembled its name, which was intended to be spurious."

Names are important.

</comment><comment><USER10> So why is it no longer in use? Seems to me that emitting an extremely bright flashing light is a great way to disorientate enemy infantry in close quarter combat scenarios.

<comment> Tuna-Fish Blinding flashes of light are widely used by infantry forces of several states, including the US, in the form of flashbangs[1]. They are much smaller and cheaper than a searchlight system mounted on a tank, and being deployed as a hand grenade allows their use indoors.

[1] [https://en.wikipedia.org/wiki/Stun_grenade](https://en.wikipedia.org/wiki/Stun_grenade)

<comment><USER10> I'm aware. I was specifically talking about vehicles, but I see that I didn't include that information in my previous post. I think with present day technology the lights could be a lot smaller than searchlights no?

<comment><USER11> I think now the preference is to use night vision, IR sensors or the like and remain as concealed as possible.</comment></comment></comment></comment>


Thank, Tell & Gift HN: From Lone Nut to Launch, the Story of TripLingo - <AUTHOR>

THANK
In early 2010 I was living in Vietnam and was struck by what I thought was a brilliant idea. Based on expat dinners I hosted where the rule was to only speak Vietnamese, I realized how everyone was different, in both personality and intent (to learn a language). Everyone should have a unique set of phrases to learn! In addition, I realized the power of talking like the locals actually spoke, rather than in formal "Mr. Rogers"—y ways. And thus, the idea for TripLingo was born.
I quit my job, packed my stuff, and moved to India. I'd always wanted to go there, it was easy to get to, and I knew it'd be cheap to live. Spending ~10 days in each city and accompanied with a USB internet stick, for the next 6 months I moved around and fleshed out the plan for TripLingo, including a prototype built in Excel. (Alas, I'm not a real hacker.)
I wouldn't say I was exactly lonely, but in many ways I was alone. In every place that I was (except Bangalore, Hyderabad, and Bombay), I didn't really have anyone to bounce ideas off of, or people that could help me think through some of the more technical/marketing aspects of what I wanted to do.
Thus, my sincere thanks to HN. During that time, I was practically addicted to HN, and the daily (or hourly) doses of insights/thoughts/stories kept me motivated, confident (usually), and happy. More importantly, it was like I'd stuck my mouth around a firehose of ideas that were being shoved down my throat. My poor body couldn't properly digest all of them, but over time I learned a ton (and continue to do so).
TELL
When I returned home in time for Christmas, I was a lowly business dude with a business plan. When I started to reach out to potential investors, a funny thing happened: they told me I needed a team first. But I needed money to hire a team! Wrong.
After getting told to my face that I needed a team plenty of times, I finally started to believe it. Long story short- through sheer obnoxiousness I was able to get the last spot at Startup Weekend in Atlanta with just 45 minutes to spare. My intent was just to meet potential co-founders, but instead TripLingo was one of the top 10 ideas, and all of a sudden 12 people were building it with me over a weekend! We ended up winning the event, and by the end of that week, I was able to raise $30K and had a "weapons-grade" team of 7. Two weeks later we were voted the winner out of 50 startups at Startup Riot, and two months later is today.
Now, after 3 months of toil and fun and setbacks, we're launching our first 3 products: Spanish for Mexico, German & French. (TripLingo is a personalized phrase book that teaches you how to talk like the locals, including formal, casual, slang, and crazy versions of each phrase.)
Its hard to describe the feeling of seeing a dream become reality, but it's a mixture of relief, happiness, anxiety, and an overwhelming sense that its just the beginning. But it's a good feeling.
GIVE
As a small token of my thanks for HN (and our team's- we're all regulars), wanted to offer 20 promo codes to HN'ers to get the app for free if you've got an iPhone. Otherwise its $4.99 for Spanish (for Cinco de Mayo and our launch!) and $9.99 for the rest. Here's the address to get them, clickables below!
http://www.triplingo.com/promos/blog?name=HackerNews
Cheers and gracias, Jesse <comment><AUTHOR> Clickables:

Promo codes: <http://www.triplingo.com/promos/blog?name=HackerNews>

Our Website: <http://www.triplingo.com>

</comment><comment><USER2> Thank you for sharing your story. I love the product (and love the website too, by the way. Beautiful design, I think.)

If a Russian version of TripLingo is release, I suppose I'll be picking that one up as well.

Tschüss

</comment><comment><USER3> Love to @TripLingo!</comment>


How to handle career demotion as 40-year old Software Engineer? - <AUTHOR> The recent post on Google's "Director of Engineering" Hiring Test (https://news.ycombinator.com/item?id=12701272) provoked me to write this here.
I am ~40 year-old Software architect and tech lead who is working for a big old tech company (think Intel or Cisco). My division is not doing great. And it will be shut down soon. Everyone knows that and is preparing for the same. I decided to venture out and interview at some bigger companies (think Google and Facebook) and some smaller ones (think Uber and Pinterest). I received offers from most of them, except I would be going in as primarily, a Staff engineer or similar. I am really not excited about taking such a career demotion. Just to be clear, money is not a concern for me. I can take an early retirement but I don't want to. I can sit at home and work on open source projects but I want to work on real business problems. I considered the path of becoming a consultant or starting a consultancy firm but it feels like a demotion as well.
Did I miss something which I should be looking for? Both Cisco and Intel are going through huge restructuring, what do 40-50 year old laid off engineers at these companies do? <comment><USER2> It's pretty rare for anyone to be hired into a Google/Facebook at Staff Engineer or above. (Indeed, while I was at Google they stopped hiring anyone in for Senior+, after a number of problems with "downslotting" where they promised roles to people who didn't perform in those roles.) The idea is that there is so much proprietary technology in any big company, and so much tacit cultural/relationship knowledge, that success at any of the higher levels is far from assured. Instead they were hiring in at SWE3 but with financial compensation competitive with your previous position, with the expectation that if you're good you'll rapidly get promoted to the appropriate level, and if you're not you'll leave.

Staff engineer is also a pretty high-up level. Not sure exactly what your responsibilities were at Intel/Cisco, but at Google Senior Engineers regularly take tech lead & architectural roles. Staff engineers do this + first-level management responsibilities, while Principal was roughly equivalent to what a Director would be. I'd heard (from a coworker who was the youngest person to make Director at Oracle) that Director at Oracle is roughly equivalent to Senior SWE at Google, thanks to title inflation.

Hell, I left Google for what's either "CEO" or "unemployed bum", depending on how you look at it. IMHO the idea that you could have a monotonically- increasing career path died in the 1980s; everyone I know in upper management took several steps backwards to get there, usually joining or founding a startup as an individual contributor, spending time as a consultant or EIR, switching industries, or going unemployed until someone in their network tapped them for a new role.

<comment><USER3> Anecdotally, my personal network and I have found the reluctance to direct hire into senior dev jobs the same across the country in RTP, NC. I'm not sure it is really related to proprietary tech here, but rather reflects uneasiness in hiring orgs to trust their hiring process to actually identify senior- level/capable devs.

Hiring groups are just much happier to hire at lower levels and promote up to retain better devs.

</comment></comment><comment><USER4> You are asking HN ... as a community we are pretty biased toward start-ups. In many ways you seem ideally set up for technical leadership in a start-up.

[1] You have led teams creating key portions of really successful tech.

[2] Money is not a concern for you. This means that you have "infinite runway" to initially explore ideas as long as it is software oriented. This also means that you have the luxury of delaying or being picky about taking on investors.

[3] Real business problems - you get to choose

[4] Risk, reward - although you are unlikely to succeed, you might be one of those who succeeds, either in building a nice sustainable business worth a few million or maybe even create a high growth "unicorn." In any case you will almost certainly stretch yourself in many different ways.

</comment><comment><USER5> I spent some time working at a bank during my early career. There is a saying about banks "they have more VP's than coffee pots".

What I learned from this experience is that title is meaningless.

As a fellow 40 year old programer my advice to you is as follows. Ignore that title, take what you think will be interesting and be a leader from your level. Make your self a promise that no matter what your going to stick it out for 2 years, and if in month 18-20 your unhappy start looking.

You may learn that your happy writing code and not dealing with people. You might get the battlefield promotion back to where you were. You might find that the young engineers hang on your every word and come to you for advice and you can give it freely as your a leader, a mentor and NOT a boss.

Lastly, if you go in as an engineer and not a manager, your going to find yourself with a bit more free time (and a lot less bullshit) -- There is freedom in that, and frankly you can make use of that time to scratch other professional itches or find a new hobby!

</comment><comment><USER6> Often when people talk about demotion, they implicitly mean a drop in salary.

Since you specifically say that you are not concerned about the money aspect. Your post sounds like you have an attachment to whatever title you currently have.

If you are truly interested in working on "real business problems" \- then as a consultant, with a bit of networking, you will find plenty of them. Wouldn't that satisfy you? I seriously doubt that partners at consulting firms think of themselves as having been demoted. To the contrary, most are pretty pleased with themselves.

I suspect that you have grown fond of your impressive title at a recognisable big company. You are worried about what people will think of you if you have a less impressive (in your opinion) title at a less well known company. Dare I ask whether there is any social pressure from friends and family?

<comment><AUTHOR> > I suspect that you have grown fond of your impressive title at a > recognisable big company. You are worried about what people will think of > you if you have a less impressive (in your opinion) title at a less well > known company. Dare I ask whether there is any social pressure from friends > and family?

OK. I admit that's one part of it.

Without going into details. I have lead teams which have owned some really big pieces of very successful tech products. And I am proud of that. I am unable to find something equivalent for my next role.

<comment><USER7> If you think of your time on those projects, did your employer hire in a more seasoned IC to lead you or was it more likely that your manager asked what you needed to be successful and hired in the best / most senior IC's to help you achieve your goals?

Because assuming allocation is done at hiring that is probably where your job title is coming from.

It could make more sense to goto a startup where you get the problems (Probably not the scale) and autonomy / opportunity to own and build out a particular piece of the puzzle

</comment></comment></comment><comment><USER8> Starting your own consulting gig could be a good start. You'd be shocked how bad some of the consulting companies are, a good architect could clean up.

<comment><AUTHOR> It does not feel that exciting. I don't primarily, work for money anymore. I have owned components of big tech products throughout my career, consulting sounds like surrogacy at this point.

</comment></comment><comment><USER9> _Did I miss something which I should be looking for?_

Maybe, maybe not. While working at this large corporation did you develop work patterns and skills that are currently favored? (Agile being the code word most use) Are you conversant in the aspects of the stack that your employers are looking for?

So here is the thing, if you haven't, then you're coming in as basically a much more junior person than you might think. You are going to have to learn the new stack or the new skills, and as with any hire, there wouldn't be an existing track record to show how well you might do at it.

Here is the second thing, you're self labeling as a software architect / tech lead. One of the things that I have seen is that the idea of architect and tech lead varies quite a bit from company to company. If you're characterization of what your role is, is one that doesn't exist in the company where you are interviewing, then you're being slotted into the "we have to retrain this guy for one of our roles."

And the final thing, if your title is affecting your perception of your contribution, especially at a smaller company, then you've got to work through that. The only use for titles in a company of fewer 50 people is so that customers and partners can get a sense of your decision level. For you personally, your role has to come from inside yourself. If that is the kind of person you are, then you will be that kind of person in your new job and people will know you for it. What they call you in the offer letter is often irrelevant. In the Bay Area at least that is typically code for a salary range.

Don't get hung up on the title. Talk to the hiring manager about the kinds of things you would expect to be doing at the company and the ways you would expect to contribute. They will pick a title that reflects that.

<comment><AUTHOR> > if your title is affecting your perception of your contribution, especially > at a smaller company, then you've got to work through that.

It affects my perception of self-worth and self-confidence.

</comment></comment><comment><USER10> Do you think the newer companies may have a negative preconception as it relates to older big tech companies? Or that companies like Google and Facebook might operate their engineer hiring in a pipeline fashion, with adjustments only being made when a position involves big hires from similar companies? Lastly, perhaps they're bias and think that more tenured engineers like yourself possess what they might identify as bad habits that they would have to break?

I'm not agreeing with or accusing you of any of these things, I'm simply spitballing here.

Good luck.

<comment><AUTHOR> Those who felt that I might have bad habits would have rejected me and that's fine. My problem is that even those who offered me a position are offering a demotion in my career.

<comment><USER11> I've a few friends move down to the said big co.s .. Just the talent of the folks in those big cos is alone worth it to take a risk; if you end up working in a good group; it will be very intellectually satisfying; loss of social status is something you'll need to bite.. but its a good risk to take in my opinion.

</comment></comment></comment><comment><USER12> you'll have to find a lower status company than your previous to up-rank. I.e stop looking at the class A and look to class B where'll you'll find many wiling to give you salary and label.

If it's "want my cake and eat it too" scenario, then I think it'll ultimately come down to dice. You're leaving with your skills but without the years of trust you've built up. You've fundamentally less to barter with on the outside than in.

</comment><comment><USER13> > I received offers from most of them

Congratulations, not an easy task. The hiring practices of these companies are brutal (specially for senior engineers).

If I had your skills and experience I would start a startup offering help to 30+ engineers who are currently looking for a new role and need help passing these brutal and soul crushing interviews and sometimes need help even landing an interview in the first place.

<comment><USER11> Well congrats to you.. I'm one such Tech Lead at one of those two co.s and pretty much in the same boat.. but making into th e big 4 at any level is pretty hard...

</comment></comment><comment><USER14> It is very unlikely that you will find a title better than what you have. Legacy companies have these handcuffs that works for a while - but when you have to leave, you almost won't find a matching title (Very rare IMO). You should leave a contact info, if you want anyone to reach out to you personally.</comment>


Ask HN: What are your top shortcuts using the iOS "Shortcuts" app? - <AUTHOR> <comment><USER2> Some apps don't allow saving or copying images, I have shortcuts for those tasks.

</comment><comment><USER3> I use a couple. One for sending my home ETA in the evening. Another for extracting URLs out of plain text. I made this mainly for visiting links in people's HN profiles.</comment>


PHP static code analysis vs. ~1000 top WP plugins = 103 vulnerable plugins found - <AUTHOR> http://blog.cinu.pl/2015/11/php-static-code-analysis-vs-top-1000-wordpress-plugins.html <comment><USER2> I don't believe 90% of the top 1000 WP plugins _don 't_ have vulnerabilities, so this doesn't feel like a great result for static analysis.</comment>


Ask HN: What framework to learn? Unusual situation - <AUTHOR>

I am a student in New York. My (well off) uncle has offered me $10,000 USD to build a fully functional web application for an idea of his, with a deadline in mid-January. He is doing this as an incentive for me to learn how to program - I have experience with Wordpress and the like, but nothing substantial.
I have spent the last few days heavily researching which framework is suitable for this project, and now I find myself in choice limbo. It seems that whichever framework I choose to learn from scratch can do everything I need, once I invest enough time in it - so now it is a question of which is the easiest to pick up and implement. I am aware that this question has been beaten into the ground innumerable times, however, the urgency of this project and my current lack of knowledge is holding me back from making a decision based on what I've read online.  I appreciate any input on your experience with beginner programmers.
The web application is a CRUD app that requires subdomains separate from each other, each with several hundred authenticated users (that either register or are imported), frequent batch/individual editing of a table of those users with some specific functions, and a decent amount of email sending.
It seems like this could be easily accomplished with Rails, Django, Symfony, or CakePHP. Which of these (or other) frameworks and respective languages offer the best environment for someone to learn from scratch? What books or online resources would you suggest?
I am only allowed to ask for advice, unfortunately I cannot pay for assistance with this project. <comment><USER2> If you haven't done anything with web before (I mean, no working sites developed and running), this deadline seems unrealistic and you should start negotiating to extend it considerably.

All your mentioned choices are good, it depends which language you'd like to associate yourself in the future more often than not.

If it was my first project, I'd start from scratch though, learning framework and it's conventions without this experience might lead to sloppy code as you haven't been exposed to the bottom layer of technologies you're working with yet. This is not the same as saying "learn asm before you go up", web ain't that difficult to understand, you'd be much more well rounded developer by learning the bottom layer first.

Also, for me, learning a framework properly takes a long time reading the docs, mailing lists, forums, it might not be a good move to learn framework under a deadline.

If you do decide to build a mini-framework and code library for this yourself, I'd recommend looking through Kohana [1] PHP framework. Very readable and clean code, not over engineered to the point where it's impossible to understand it for a junior developer.

For python, try web.py.

[1] <http://kohanaframework.org/>

<comment><USER3> Folks are recommending Flask these days, because IIUC web.py has stopped. I only had good experiences with Flask, and you're productive in a couple hours.

<comment><USER2> Thanks, I'll be sure to check Flask out

</comment></comment></comment><comment><USER4> Thought process:

Rails or Django will stand you in good stead for future projects and 'hire- ability' versus any PHP framework.

Rails has easy hosting with Heroku.

Django has a (slightly) less welcoming/active community than Rails. [1]

A: Rails.

[1 [http://www.embracingchaos.com/2010/05/choosing-a-web- framewo...](http://www.embracingchaos.com/2010/05/choosing-a-web-framework- python-django-vs-ruby-on-rails.html)]

Edit: +1 for the comment regarding timescales - you will likely need a substantial extension.

<comment><USER5> While I don't really do any of these, I would second this recommendation, Rails and Django are growing where PHP has kind of peaked.

For me personally I don't use any of them anymore, I write web apps with JavaScript/CSS/HTML and I write back end services with Java or Node. Once mastered it is simpler than the server side frameworks, but it require understanding of the core technologies, it may be a little daunting for a beginner to start writing apps this way, because no one has packaged it up into a platform like ROR. You have to go out and assemble the pieces because they have not been assembled for you.

<comment><USER3> What are your experiences with this style of writing web apps and SEO?

<comment><USER5> Most web apps that I create don't have SEO concerns, the sites that market them have SEO concerns. Lets delineate them as web sites and web apps for the sake of this conversation.

A web app for me, replaces a desktop app, and does not need to be index-able by the search engines. There are exceptions like social type web apps, but for the most part it is not a concern in the apps I build. If I do have SEO concerns for a web app, I use Googles #! fragments, so that Google can parse the web app, in which case I just put a headless web browser on a server and serve the Google crawler through that headless browser. Now that Google can index sites that use JavaScript it is even less of a concern.

Now for web sites that are used to market the application, I use Wordpress, Drupal, Alfresco, or some other content management system. I try to stick to pure web technologies like HTML and CSS and push them out to a standard web server, I am not a big fan of having a CMS that dynamically serves content, sometimes there is no other choice but I try to minimize it.

Delineating web apps from web sites and using the appropriate technologies for each, usually keeps the two very clean, if I cannot delineate the two and I have heavy app requirements I will mix the two but I have only had to do that with one app I ever built and that was before the #! pattern was available.

</comment></comment></comment></comment><comment><USER6> It seems that since you worked with Wordpress, it will be easier for you to do just plain PHP or CakePHP, I will suggest you try plain PHP, try to be as stateless as you can and it later will scale easier.

</comment><comment> saiko-chriskun sorry but that deadline is not happening :P. as for your question, though, out of the frameworks listed I'd go with Rails, personally, although that's just, well, me. It's not like the others are less 'powerful', so you'll really have to try them yourself and see what your individual style is.

In regards to Ruby, as well, I might even suggest going with a smaller framework like Padrino or Sinatra to start off with. See [http://www.horsesaysinternet.com/code/rails-is-not-for- begin...](http://www.horsesaysinternet.com/code/rails-is-not-for-beginners/).

</comment><comment><USER3> Do you SQL?</comment>


Optimizing Linux for Slow Computers - <AUTHOR> http://www.akitaonrails.com/2017/01/17/optimizing-linux-for-slow-computers <comment><USER2> Good guide, but the fact that such a guide is needed is a sad reminder that 2018 isn't the year of the Linux Desktop...</comment>


Wikipedia Growth Animation - <AUTHOR> http://stats.wikimedia.org/wikimedia/animations/growth/AnimationProjectsGrowthWp.html

<comment><USER2> Really puts things in perspective once you switch to linear from log view (Top left corner).

</comment><comment><USER3> Wikipedia chart of the "unsustainable" decline in administrator participation:

[http://strategy.wikimedia.org/wiki/Story_of_Wikimedia_Editor...](http://strategy.wikimedia.org/wiki/Story_of_Wikimedia_Editors#Chapter_Three:_The_future_.282007-present.29)

This relates to how much editorial attention each article can get as the number of articles grows. This has implications for Wikipedia's goal

[http://strategy.wikimedia.org/wiki/Strategic_Plan/Movement_P...](http://strategy.wikimedia.org/wiki/Strategic_Plan/Movement_Priorities#Improve_Content_Quality)

of improving content quality.

<comment><USER4> That's such a deceiving graph. It started off at 910, then went up to 1010 and then down to 850. It's not that big of a big deal. That graph makes it look like it's the equivalent of the Great Depression.

There's rarely any reason to mark your y-axis from an arbitrary starting point, unless your purpose is to manipulate people (wikipedia admins missing on wikipedia?).

<comment><USER5> I generally agree, but this instance is an example of the one situation in which it is reasonable, namely, trends. There really should be a zoomed-out view as well for people who aren't familiar with past developments, but it's okay to put the main focus on the small detail.

</comment></comment></comment><comment><USER6> Anybody recognize that the number of articles stopped increasing after a couple of years?

As of today it is virtually impossible for a new wikipedia author to add a new article to the german Wikipedia. It will be deleted within a blink.

But hey, if this means that the world knowledge is asymptotically converging to a maximum, there is hope that we'll someday know it all, after all.

-jsl

<comment><USER7> Confusingly, by default, the graph is on a logarithmic scale. You can change it to a linear one, try it and see; it looks like its growth is constant.

Although I too would like to think we are converging towards having cataloged all knowledge, if Wikipedia's growth _is_ slowing down, I'd bet it's because of all of its bureaucracy.

</comment></comment><comment><USER8> These charts just don't feel right without Hans Rosling jumping up and down in front of them like a little kid.

For the baffled: <http://www.youtube.com/watch?v=RUwS1uAdUcI>

</comment><comment><USER9> It's interesting to see that en.wp was the only project that experienced quadratic growth in the number of articles. en.wp and de.wp were pretty close in size until the start of 2006, when en.wp took off and de.wp continued with more or less linear growth.

I'm aware that the english speaking world is larger than the german speaking one, and that a feedback effect exists in large networks with little downtime (ie, no time of the day where contribution dies off, due to the geographical dispersion of english-speaking countries), but I'm still surprised that en.wp was the _only_ project to experience quadratic growth.

<comment><USER10> A significant portion of articles on any wikipedia are about cities, towns, local governments, local businesses, minor celebrities, landmarks, &c. For major locations like New York or Berlin, there will of course be articles in many languages, but other things that are insignificant outside their locality are likely to only have an article in their native language. Take for example the Catalan wikipedia, which contains a large number of stubs with basic info on locations in rural Catalonia. [1] The English-speaking world is vastly larger in land area and population than the German-speaking world, so I speculate that the difference in size is due to the number of location- relevant articles.

[1] [http://www.kmjn.org/notes/geographically_dense_wikipedia.htm...](http://www.kmjn.org/notes/geographically_dense_wikipedia.html)

</comment></comment><comment><USER11> Thoughts on whether the plateaus are because of completeness or limited by the number of editors able to handle the number of articles?

<comment><USER12> I think because the default setting is a log scale. If you change it to linear, it doesn't plateau but growth does slow.

</comment></comment><comment><USER13> Take it out of log view. It seems like languages quickly get to about 100,000 articles in a very short (relatively time span). I wonder if that's because there are a few hundred thousand universal articles and which they are.

</comment><comment><AUTHOR> I'm pretty surprised by a number of things here. First and foremost, how popular Polish and Catalan are. Secondly, I thought that there would be vastly more English articles than any other language, and this isn't the case.

<comment><USER14> Also esperanto being fourth in total number of articles for a while. Interseting and well executed, thanks for the link.

<comment><USER9> Unfortunately, on some of the smaller wikipedias (by users), automatic article creation through algorithmic translation of en.wp is fairly common. The result is a large volume of poor quality articles. Esperanto was one of the wikis that fell victim to this at first.

</comment></comment></comment><comment> guard-of-terra For some reason the animation is extremelly slow and laggy on my netbook.

</comment><comment><USER15> Today I learned about the existence of the Bavarian language.

<comment><USER15> <http://bar.wikipedia.org/wiki/Bayern></comment></comment>


Iran Escalates Campaign Against Online Expression - <AUTHOR> https://www.eff.org/deeplinks/2012/01/iran-escalates-campaign-against-online-expression <comment><USER2> > Vahid Asghari, a 24-year-old student in India, was arrested on May 11, 2008 > at Tehran Airport and accused of hosting websites with "pornographic" > content critical of the government.

Wait, what? That's gotta be a new genre.

Or, the Iranian government decided that "critical of the government" didn't sound bad enough, and prepended "porn" to shore up the charges.</comment>


Why You Shouldn't Comment (or Document) Code - <AUTHOR> http://visualstudiomagazine.com/articles/2013/06/01/roc-rocks.aspx

<comment><USER2> It may be the case that you're writing code that must, for one reason or another, interact with a bunch of other poorly-written code that itself has unclear gotchas, nasty edge cases, or hidden side effects. It may not be possible to improve that code - maybe it's a third-party library, or maybe it's very entrenched and fixing it would cost too much time or money.

In that case, I feel like it's extremely important to comment what your code is doing, as well as why it is doing it.</comment>


Yanis Varoufakis resigns despite referendum no vote - <AUTHOR> http://www.theguardian.com/world/2015/jul/06/greek-finance-minister-yanis-varoufakis-resigns-despite-referendum-no-vote <comment><USER2> It's sad that certain creditors didn't want to negotiate with Yanis anymore. To me, it seems he's a true hero of his nation, putting the needs of his people before the needs of the creditors. I wish politicians in my country (The Netherlands) would be more like him. Our politicians on the other hand seem to do anything the EU tells them, possibly in hope for a cozy, well-payed EU job in the future.

Yanis will wear the creditors' loathing with pride: [http://yanisvaroufakis.eu/2015/07/06/minister-no- more/](http://yanisvaroufakis.eu/2015/07/06/minister-no-more/)

<comment> bbv-if Indeed, a true hero who wrecked his country and resigned.

<comment><USER3> You can see it like that.

You can also see it like this: he gave voice to the people, and accepted to step aside when pressured by the powers-that-be, instead of stubbornly clinching to his post.

He is no politician. We need more of those.

<comment><USER4> And you can't win elections by promising not to pay back your debts and accuse everyone else of trying to destroy the democracy. New government does not mean you can erase your debt. And the fact that you won the elections by telling fairytales does not mean that someone else will pay for the fairytale. That is borderline insanity. Democracy is responsibility of the successive government for the deeds of the previous one. May that be debt or a warcrime.

<comment><USER5> Sovereign debt absolutely can be defaulted on, just like any other kind of debt. The risk of default is priced into it.

Greece is in a situation where there is no possible way that it can ever pay back its debts. _Saying that_ does not make you "borderline insane". Quite the opposite.

<comment><USER6> > Greece is in a situation where there is no possible way that it can ever pay > back its debts.

Other countries have managed to claw themselves out of bigger holes than this. It _does_ take a much more hardline stance with respect to payment of taxes and reduction of the size of the state apparatus, what Greece has done is in many ways a simple strategy of postponement of action until the consequences were extremely bad for all of Greece, in particular the weaker parties.

I don't blame the Greeks for their 'no' vote, but it would have been a lot better if they had had their 'French revolution' a decade earlier. Right now there is no good or easy way out of the mess any more and the Greek economy is about to collapse.

This is not a situation where there are winners, only losers and the biggest losers are the people partying in the Greek squares today. It will take a while before that reality sets in though.

<comment><USER7> > Other countries have managed to claw themselves out of bigger holes than > this.

Do you have examples of _any_ that have done so without extensive debt relief? I can't think of any.

IMF's most optimistic numbers (which rests on wildly unrealistic assumptions) indicates it would take decades, and they've made it very clear that the debt isn't sustainable at all. When their past attempts at forecasting the Greek situation has consistently understated the problems, that ought to be pretty sobering.

> Right now there is no good or easy way out of the mess any more

Maybe not "good or easy", but substantially less damaging than what's been put on the table: Drastic debt cuts coupled with short term financing, coupled with reforms that _aren 't_ tied at reducing Greek government spending, or at least replaces any spending cuts with investment elsewhere (as the spending cuts have been a driver for the drastic contraction of GDP).

<comment><USER6> This is all true _now_ , but it wasn't when this whole circus started.

As for the present my personal preference would be to simply forgive _all_ debt and to ask Greece (politely) to exit the Euro and not to apply for re- admission until they have the house in order.

That's not going to be a very popular option but it would give the Greeks a fighting chance to solve this the Greek way.

Already a large chunk of the debt was written off (in 2012) so there is some precedent for that but back then the motivation was a different one (to keep Greece in the Euro at all costs and to offload the private sector problems onto the public one).

<comment><USER8> If you are willing to forgive all the debt there probably isn't much reason to kick them out of the Euro. I'm not watching the situation all that carefully, but I expect that kicking them out would further damage their economy, whereas if you don't kick them out, individual actors can just note that lending money to Greece isn't a good idea (so it shouldn't be the case that they are able to quickly build up a new untenable debt).

<comment><USER6> It would give the power to self-determine these issues back to the Greeks, and it would forestall any re-run.

<comment><USER8> I don't think it is clear that an exit would forestall a re-run any better than their already ruined credibility .

(another way to look at it: the interesting question on the table is how much of their existing debt the Greeks are going to repay, future debts aren't going to be a serious problem in the short term regardless of what happens)

I also (while not thinking my opinion is worth much) think that the economic damage from an exit would likely not be worth the ability to self determine further ruinous fiscal policies.

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

</comment><comment><USER10> This is the same Yanis Varoufakis that left Valve Software so he could take on this role. Hopefully, gaben will allow him to return so he can work on something meaningful again.

</comment><comment><USER11> I must go now...my planet needs me...

</comment><comment><USER12> I have a bit of a science fiction scenario. Bear with me for a little bit. Let's suppose for a bit this approximate series of events was the actual goal of Mr. Varoufakis and company.

Why would they want this and who would want to risk the fate of an entire country and their own reputation on a "gamble"?

Because they started the negotiation game with a huge disadvantage and there was no way that they could bring something new to the table. So Tsipras and Varoufakis chose to "play the dumb communist" scenario that everyone was painting, stretch the canvas a bit and get new offers on the table and start with a different negotiating position.

This hypothesis, which I will check the following days, proposes that the Tsipras government and Varoufakis knew and understood very well the nature of the political and economical forces that pushed on them from outside of Greece. Knowing those forces and playing on the predictions laid out by the other side (Germany was already unhappy after Syriza won, expecting to have a difficult time negotiating with them) they followed to the line the "predicted" course. Difficult negotiations, huge differences in views, big political declarations and discourse, etc. The goal in the end was simple enough: get a cleaner slate.

Both the turbulent negotiations, with Varoufakis playing the evil marxist scapegoat, and the referendum, after a week of bank closures, were used as a ruse to lead the European leaders through to a "clean slate" phase. It was a very risky move, but I believe that the various contradictory signals that Tsipras sent just before the referendum confirm that it was a game. Like poker player that accidentally reveals his weakness just before he pulls a full house. The resignation of Varoufakis today is the next piece in their scenario: just take out the nasty opinionated communist and all the european parties will clearly feel more relaxed. I believe that this move was planned from the beginning and Varoufakis was used to "stir up" the pot a bit, while apparently being discarded as "peace offering" after a while.

So what was gained by this daring gamble? First of all, the markets were calmed. The negotiations were so desperate from the start, given the position of the two parties that everybody was sure of the Greek default. Now, with the financial markets accepting the default event in itself, any new deals on the table will have to take this fact into consideration. It's not "looming" anymore, it is here and it is indisputable. Second, the situation now allows for a much needed debt haircut. Refinancing is all fine and dandy, but everybody agreed that the debt could not be sustainably repaid. So now everybody is suddenly ok with the debt reducing. Third, the Tsipras government kept its word with its electors. They "fought" valiantly for the good of the people. Actually with the cards they got dealt by the previous government, they played quite a good game until now. And their general appeal has definitely risen from 36.3% (plus affiliated parties) to a 61% (as shown by the referendum). Fourth, the european hard-liners were blind-sided and the rules for the negotiation were changed. The deal before this referendum was "behave or we will strangle you". Now, it's quite a useless threat given the actual default. So Tsipras most certainly will be able to have better terms.

Sorry for the long post, had a bit of thoughts to get out. :D

<comment><USER13> They haven't been "playing the dumb communist" they've been smeared with it by their own media, by strategic "leaks" from EuroGroup meetings by "analysts" in International Finance and by the International Media which largely swallowed the smears time after time.

Not that they don't make mistakes. The problem is that they are not held to the same standards as members of the EuroGroup and Parliament. It ought to be fine for Varoufakis to talk about issuing IOUs, for the same reason that it is fine for the head of the European Parliament to say that Greece should be expelled from the Euro if it voted no.

There is an asymmetry of power. The EU holds the purse strings and so Greece cannot complain, whatever they do. Greece needs a bailout and so any mistake that its leaders make will be used as a bargaining chip against them. You see the same relationship in negotiations between Iran and the P5+1, between Hamas and the Quartet and between every black man on the street in America and any policeman that they meet.

</comment></comment><comment><USER14> Well, he already did his job. Greece is rolling down the slope...

<comment><USER15> Greece has been rolling down the slope for the past 5 years. Hating on a man for years of a country's peril does not offer constructive criticism.

Maybe you should know the data before you blame a man. How about some charts and numbers from December 2014: [http://www.telegraph.co.uk/finance/economics/11283931/Nine-c...](http://www.telegraph.co.uk/finance/economics/11283931/Nine- charts-showing-why-Greece-has-to-leave-the-euro.html)</comment></comment>


Is it ever right to try to create a superior human being? - <AUTHOR> http://www.bbc.com/news/magazine-34151049 <comment><USER2> An interesting question (which I would have phrased differently) but very weirdly written, going off into tangents about golems and the like.

Is it ever not right to try and make human beings better? And aren't we already doing it -- eg by aborting Down's Syndrome babies!

<comment><USER3> Agreed it is an interesting question. For example everyone wants there kids to do well in school to get a good job and be a success, but does that mean they are willing to give their children a brain implant that lets them access the web without a smartphone? How about genetherapy that boosts the level of dopamine in their system?

At some point we'll be able to do those things, and someone who has had those procedures might be at a competitive advantage over someone who hasn't. Do we democratize access or is it constrained only to the wealthy, who then insure their progreny will capture even more of the future wealth generated.

The line of questioning leads to what will be some very critical questions over the next 20 to 30 years.

<comment><USER2> And another issue: if we squeamishly restrict these things how will we compete against societies that don't?

</comment></comment></comment><comment><USER4> Yes.</comment>


Google pays $11M to settle 227 age discrimination claims - <AUTHOR> https://arstechnica.com/tech-policy/2019/07/google-pays-11-million-to-settle-227-age-discrimination-claims/ <comment><AUTHOR> I know this has already been posted but didn't notice the following in the others:

"During one interview process, Fillekes says, a recruiter requested that she submit an updated résumé that showed her graduation dates for college and graduate degrees. When Fillekes asked why this was required, she says the recruiter responded that it was "so the interviewers can see how old you are.""

</comment><comment><USER2> That averages $48,458.15 per claim. If you can hire 2 new college grads for less than or equal to the cost of an older employee + $50k this looks like a justifiable win from business point of view. You get 2x the amount of working hours per week.

</comment><comment><USER3> Very interesting, the comment about the 8-bit byte! As a commenter on Ars says, there were 36-bit systems that could work with a word as four 9-bit bytes released as recently as 2011 (the 36-bit Dorado 800 series apparently.)</comment>


Ask HN: Sorry, your account is too new to submit this site - <AUTHOR> When will this go away? <comment><USER2> Try writing to the mods: email@example.com

(Just for curiosity, which site?)</comment>


What does a startup COO actually do? - <AUTHOR> https://medium.com/@johnjkramer/what-does-a-startup-coo-actually-do-b3180a8d4af4 <comment><USER2> I find it interesting that in their group of Chief Operations Officers, only 79% of them actually manage operations.</comment>


Would You Opt for Immortality? - <AUTHOR> http://quillette.com/2018/03/02/would-you-opt-for-immortality/ <comment><USER2> An immortal existence among a cohort readily choosing immortality reminds me _L'enfer, c'est les autres_.

</comment><comment><USER3> I would like to think that I wouldn't but probably I am of less stern moral fiber than I like to imagine.</comment>


New paper explains why the Universe ended up with three dimensions - <AUTHOR> http://www.sciencealert.com/new-paper-explains-why-the-universe-is-in-three-dimensions? <comment><USER2> I would have been interested to learn the reason, but here is a case where an article really tells no more than its headline: there exists this paper, see, that explains why the universe has three dimensions.

It's a shame, because as I was reading the article, I was impressed by how well it was putting technical matters into plain English. It's just that I was also anticipating getting to the juicy details, which it never did. Oh, okay, I thought, I guess I'll go try to read the scientific paper itself.

When I clicked to the paper, though, all I got was an abstract, even shorter than the article that I came from. To read the full article, I must subscribe to the journal. I have nothing against that --- unless the research was publicly funded.

Anyway, I just thought it was funny that the article was nothing but an exquisitely written segue, with no real content beyond its headline. On the other hand, had I got to the real content, I likely would not have understood it, because the reason that the universe is three dimensions is probably: math.

<comment><USER3> Unfortunate. Suggestions for "easy" reading of the like for this subject matter? Meaning, the "technical matters into plain english" outside of the actual Journal article?

<comment><USER2> Another summary gave a little more: [http://phys.org/news/2016-05-space-three- dimensional.html](http://phys.org/news/2016-05-space-three-dimensional.html)

If you're interested in physics in general, there's nothing finer than the Feynman Lectures: [http://www.feynmanlectures.caltech.edu/](http://www.feynmanlectures.caltech.edu/)

</comment></comment></comment><comment><USER4> The whole thing reminds me of Shakespeare's King Lear...

Fool: The reason there are only seven planets is a pretty reason.

Lear: Because there are not eight.

Fool: Indeed, sire, thou would'st make a good Fool.

</comment><comment><USER5> > Any number of dimensions could have worked equally well at this point; there > wasn't really any way to tell the difference between a universe with one > dimension and a universe with seven.

What is that supposed to mean? Presumably you could still, if you were a being able to withstand the crazy physical conditions in the early universe, tell whether the universe had three or more or less dimensions? What's hindering such experiments in the early universe?

<comment><USER6> > What is that supposed to mean?

God took a big huff of DMT out of the celestial crack pipe?</comment></comment>


Deep learning applications in drug discovery and protein structure analysis - <AUTHOR> https://msapaydin.wordpress.com/2019/02/16/on-protein-representations-for-drug-discovery-with-deep-learning-applications/ <comment><USER2> Re grid representation - The convolution operator is translation equivariant. (waving hands, it means that the translation operated on the Input Signal is still detectable in the output features set)

However, it was shown many times that coupling the convolution operator with a pooling layer achieves translation invariance by means of dimensionality reduction.

Moreover, rotational equivariance (and subsequently invariance) is an active area of research. There's an interesting talk ([https://www.youtube.com/watch?v=-UKL3kOlOds&list=PLlMMtlgw6q...](https://www.youtube.com/watch?v=-UKL3kOlOds&list=PLlMMtlgw6qNjROoMNTBQjAcdx53kV50cS&index=18)) by Boomsma/Frellsen about the use of spherical convolutions in deep learning applications of molecular structures.

</comment><comment><USER3> I wish there was more information in this article. This subject is super interesting to me but I do not know where to start on the non deep learning aspect. Does anyone have any pointers?

<comment><USER4> I'd suggest starting with the references cited in the article and reading the references cited in those articles, as relevant.

<comment><USER5> I really liked these, but they're particular to my interests: [http://www.brianneltner.com/machine- learning](http://www.brianneltner.com/machine-learning)

<comment><USER3> Your post is super interesting! Thank you for sharing!</comment></comment></comment></comment>


I Was Wrong About Elizabeth Warren - <AUTHOR> https://www.nytimes.com/2019/06/26/opinion/elizabeth-warren.html <comment><USER2> Please don't post garden-variety politics to HN. Some political overlap is ok on intellectually interesting stories, but the political horse-race and daily- grind genres are off topic here.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)</comment>


Ask HN: Tips to become a great programmer - <AUTHOR> Hello HN,<p>I'm coming up on my sophomore year in college as a cs major. I feel as though I understand a good bit more than majority of other people in my classes but I still feel as if I'm only an "okay"  programmer. I understand it takes writing a lot of code to get better but other than that are there any tips you might be willing to share to help me on my journey to becoming a great developer? <comment><USER2> I have three basic tips:

1) Find problems first, then solve them. It sounds obvious, but so many programmers find solutions and then go look for a problem. That's backwards. Problems, then solutions.

2) Test your solutions as much as you can. Does it actually solve the problem? Is it too slow? Is it confusing or cumbersome? Nine times out of ten, it's better to take an extra hour to test something than to rush it through. There are very, very, very few instances in which you legitimately do not have time to test. For all practical purposes, you ALWAYS have time -- you just aren't making it a priority if you don't test. Make it one. It's far more important to deliver solid code that works than it is to be the first one to submit your code.

3) Don't reinvent the wheel. Stand upon the shoulders of giants. Use what others have done and get ahead. There are two major exceptions to this tip, imo: 1) if you're reinventing it as a learning exercise, or b) you are absolutely, positively, 100% convinced you can bring something new to the table.

Also, just for kicks: tabs, not spaces. _runs away_

</comment><comment><USER3> A few tips every developer should learn.

1) Solve the problem before you write the code.

2) Figure out what data structures to use and the code will follow.

3) Debugging is your fault, you screwed up. The language or the compiler didn't (true 99.999% of the time).

4) The difference between genius and insanity is if the algorithm runs faster.

The biggest general tip is learn data structures. They are the fundamentals, you will always use them, get used to them.

<comment><USER4> _" 1\. Solve the problem before you write the code."_

Sometimes the problem is difficult or huge (or both) and you don't know how to solve it. By starting to write some exploratory code, like a solution to a small part of the problem that you do understand, you can frequently get ideas about how to solve the bigger problem. Even if you end up ultimately throwing this code away, it could still be a useful learning experience and help you make progress toward understanding the real solution.

<comment><USER5> "Write it; throw it away; rewrite it." Not always the best solution, but a good voice to have in the mix.

</comment></comment></comment><comment><USER6> _Code Complete: A Practical Handbook for Software Construction_ is considered one of the language agnostic classics on computer programming. It focuses on higher level concepts as they relate to the process and sequence of writing code. It covers just enough architecture and design to provide context and allow one to think intelligently about it.

[affiliate link] [http://www.amazon.com/gp/product/0735619670/ref=as_li_tl?ie=...](http://www.amazon.com/gp/product/0735619670/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0735619670&linkCode=as2&tag=kludgecodecom-20&linkId=UYVSHTCXUEVRWTOZ)

[non-affiliate link] [http://www.amazon.com/Code-Complete-Practical-Handbook- Const...](http://www.amazon.com/Code-Complete-Practical-Handbook- Construction/dp/0735619670/ref=sr_1_1?ie=UTF8&qid=1408544744&sr=8-1&keywords=code+complete)

<comment><USER7> I would highly recommend this as well. BUT - don't try to dive too much deeper into code patterns. The last decade has a massive spike in patterns and I can remember a lot of meetings wasted debating patterns.

</comment></comment><comment><USER8> There's an 80s book with fantastic interviews of programmers before they became business leaders, check out the reviews:

[http://www.amazon.com/Programmers-Work-Interviews- Computer-I...](http://www.amazon.com/Programmers-Work-Interviews-Computer- Industry/dp/1556152116/) & [http://www.amazon.com/Programmers-at-Work-Susan- Lammers/dp/0...](http://www.amazon.com/Programmers-at-Work-Susan- Lammers/dp/0914845713)

Some (all?) interviews free here: [http://programmersatwork.wordpress.com/](http://programmersatwork.wordpress.com/)

<comment><USER4> There's also a more recent book of interviews with well-known programmers called _Coders at Work_ :

[http://codersatwork.com](http://codersatwork.com)

<comment><USER9> +1 a very good book.

</comment></comment></comment><comment><USER10> Writing too much code can make you a worse programmer.

The real way to get better is to pick an area of study and research the shit out of it, even non-technical aspects if applicable. Go back as far as you can and read every canonical book you can find on the subject. Even if it's outdated information, it will help you see how we arrived where we are now (as long as it's not a purely technical reference).

Read those things until you feel some things click in your head. Then go back and try to write some code.

This might be difficult to do while in school though. I'm sure you're doing a lot of reading already.

<comment><USER11> I disagree with this. I read every software engineering book I could get my hands on when I was in school - GoF, Refactoring, SICP, Pragmatic Programmer, XP Explained, Implementation of Functional Programming Languages, TAPL, Basic Category Theory, On Lisp, Art of the Metaobject Protocol, numerous textbooks I wasn't assigned. As a result, my code ended up overcomplicated, with a bunch of cool algorithms, a lot of OO design, a nice smattering of patterns...but relatively few useful solutions for people. It was only when I was like "Alright, I've already read every book anyone I've met has ever mentioned...I need to push through and actually finish a project now" that my skills started shooting up.

Write code first. Write code until your programs collapse under their own weight. _Then_ go out and read what the masters have written. You'll understand it much better when you have personally faced the problems that they were facing.

<comment><USER12> I was having a similar discussion with a friend of mine.

When I was a teenager, I wrote small C projects, then I discovered the world of OS development and set myself to write a minimal operating system from scratch. It was an amazing experience, with a lot of head-scratching, hours spent debugging weird hardware issues, reading other people's code and just churning out badly engineered (but working) code.

Now, 10 years after, after playing with Haskell, OCaml, Scheme, learning about best practices, variants, typeclasses, static vs dynamic typing and data structures, every time I set myself to write something more than 100 lines I just get stuck: which language is best for the job? How should I refactor this to be more clear and concise?

My programming life definitely got worse (as a C/Python programmer) after I discovered variants and the Option/Either monads.

As I said to him, ignorance is bliss.

<comment><USER11> It does get better - write a lot of code with the new language features and you'll get a sense when they're not useful, or how you can apply them to more mundane languages. You can define a decorator in Python to do Maybe monads, for example:

      def maybe(decorated):
        def worker(*args):
          if any(arg is None for arg in args):
            return None
          return decorated(*args)
        # Standard decorator machinery
        return worker

(This doesn't mean you _should_ ; this usage is pretty non-idiomatic and will do strange things in edge-cases. That's my point though...the only way to figure out when it's worth it is to try it out in a few situations and determine when it makes the code simpler.)

</comment></comment></comment></comment><comment><USER13> Don't give up learning.

Learn from your mistakes and failures.

Don't be afraid to make a mistake or fail.

Fixing your mistakes and failures is called debugging, learn how to debug.

Communication is 80% of the job, develop your social and people skills to avoid acting like a jerk, treat others with empathy and compassion.

Learn to work with others on a team, don't be a Lone Ranger, sometimes you get stuck and need another pair of eyes to look things over.

Learn how to manage stress better so you can get a good night's sleep. If you cannot get 8 hours of sleep at night, consider seeking help for that. If your stress levels make it so you cannot even get sleep, something is wrong.

</comment><comment><USER14> I would recommend writing apps as much as you can from "scratch" (do use standard libraries for your language, but shy away from big libraries or platforms that aren't a core part of the language). I think this helps ensure you're not just wiring things together but are truly creating something out of thin air and thinking algorithmically. That experience will serve you well when one day you're confident in piecing together ready-made libraries, platforms, and your own code to create your projects.

</comment><comment><USER15> From my experience there are a few things that I try to keep in mind while working.

1) Keep your code as simple as possible. In the real world if you can call your code complex or clever it is probably bad.

2) When presented with a problem don't immediately reach for the keyboard. Take some time to make sure you understand the actual problem that you are solving.

3) Good enough and working beats perfect and not working. Perfectionists make horrible co-workers and usually end up with horrible code.

<comment><USER16> _In the real world if you can call your code complex or clever it is probably bad._

This principle is often called "kill your darlings".

[http://c2.com/cgi/wiki?KillYourDarlings](http://c2.com/cgi/wiki?KillYourDarlings)

</comment></comment><comment><USER17> There's a great presentation on the topic by Angelina Fabbro www.youtube.com/watch?v=v0TFmdO4ZP0 with matching slides [http://afabbro.github.io/jsconf2013](http://afabbro.github.io/jsconf2013) . The title says javascript, but it's really a platform agnostic guide that sketches out what mastery looks like and lays out actionable steps to get there.

Seriously, listen to the talk and/or check out the slides.

But 90% won't, so here's her actionable steps:

      1. Ask why obsessively
      2. Teach and/or speak at an event
      3. Work through a suggested curriculum*
      4. Experiment recklessly (the code doesn't care)
      5. Have opinions
      6. Seek mentorship
      7. Program a lot
      8. Stop fucking programming sometimes.
      9. Write Javascript* a lot
      10. Write in another language for a while
      11. Think like a programmer when afk
      12. Know what feedback is good feedback and reject everything else.
      13. Break free of imposter syndrome

* These are the two points you'll need to adapt to your choice of language

<comment><USER18> 13 is easier said than done. Maybe this is just me trying to rationalize, but it feels like if you don't have some level of impostor syndrome, it's almost hubris.

<comment><USER19> I think the trick is to shed your imposter syndrome, but remain humble. You can be confident and humble at the same time. It can come with accurate self- assesment. Keeping your weakness in mind helps a lot.

</comment></comment></comment><comment><USER7> You've taken the most IMPORTANT step already - You care about programming. Keep this up. Join forums, read books on programming, follow programming blogs.

Next, do not fixate on languages and frameworks. Aspire to make this irrelevant to you. Great developers often can work with multiple languages and frameworks.

Be prepared and excited to learn every single day of your life as a programmer. The best programmers I know are always learning. This is an investment you will need to make regardless of work pressures and schedules. I've seen far too many developers have their skills atrophy because they've not invested in improving.

Use the Rubber Duck debugging model - [http://en.wikipedia.org/wiki/Rubber_duck_debugging](http://en.wikipedia.org/wiki/Rubber_duck_debugging).

One simple way to do this is that whenever you get stuck, go to stackoverflow and start explaining the problem.

I have found my solution innumerable number of times by forcing myself to explain it to someone else with no context. It makes you confront your assumptions and understanding.

<comment><USER20> +1 Rubber Duck

</comment></comment><comment><USER21> You need someone more experienced than you who can read your code (and look at your architecture). They will say things you don't want to hear. Listen anyway, and try to pick up where they're coming from.

Programming well requires judgment and taste. It takes years to develop these well (at least, it did for me), but it helps to have people who have more than you explain why they wouldn't have made the same choices you did.

(Note well: Not everyone with more experience than you has better judgment. You need someone with good coding judgment, not just someone older.)

</comment><comment><USER22> The books that I think are must-read are "The Pragmatic Programmer" and "Apprenticeship Patterns". I learned a lot from them.

I'm aware you expect some quick tips from HN though. Have a look at my old blog posts that summarize these books. While 3 years old and written in Polish, Google translated it very well. Direct links to the translations: [https://bit.ly/1oZiidn](https://bit.ly/1oZiidn) and [https://bit.ly/1w8ELhY](https://bit.ly/1w8ELhY).

</comment><comment><USER23> Honestly, the best thing you can do is make friends with people who have already graduated college.

Not even software engineers necessarily. And I don't mean acquaintances. I mean friends. They can give you real perspective - no piece of generic advice I can give you will come even close to the advice of someone who both knows you well and has been in your shoes. Having perspective is better than any specific programming skill you could ever learn.

</comment><comment><USER24> Don't obsess with premature optimisation. Get your code working then start profiling if you think it should run faster/use less memory when under load.

</comment><comment><USER25> "Thankfully, perseverance is a great substitute for talent."

― Steve Martin

</comment><comment><USER26> 1\. It's ok to feel you're a bit more good that other people but never let yourself feel you know better than everyone. 2\. Respect your teammates and always be open to learn from them 3\. Programming is not typing or coding. It's about coming up with solutions. So, before you start typing code use your brain. 4\. Don't run after a hype. Think before you use any tool or technique. 5\. Enjoy !!

</comment><comment><USER27> Think about the problem and solution before you think about code. Don't just start writting code, Write the algos/steps, dataflow.

</comment><comment><USER28> Experience.

A lot of being a good programmer doesn't have to do with technical skills.

Take a compilers course. This was required at my school and I figured it would be boring (I mostly likely the theory classes). I was wrong! Writing a compiler really made me understand what they do. I had seen a lot of people who were trying to appease the compiler. Instead, the compiler is now my slave.

</comment><comment><USER29> Go here: [http://c2.com/cgi/wiki](http://c2.com/cgi/wiki) and read everything.

</comment><comment><USER30> \- always try to solve nasty problems (e.g. [https://www.hackerrank.com/](https://www.hackerrank.com/))

\- read this: [http://www.paulgraham.com/gba.html](http://www.paulgraham.com/gba.html)

</comment><comment><USER31> Good hints : [http://programmer.97things.oreilly.com/wiki/index.php/Contri...](http://programmer.97things.oreilly.com/wiki/index.php/Contributions_Appearing_in_the_Book)

</comment><comment><USER32> I would say purposeful learning. That is, exploring avenues of programming where you know your skills would be stretched, become better to the point that you are able to either:

(a) produce and deliver something usable.

or

(b) make things better

</comment><comment><USER33> Use source control. Even for 1 person throw away projects.

</comment><comment><USER34> As much as we've emphasized that hours of practice are necessary for success, you need to have balance, meaning a life outside of the game. Many pro players started as teens, but now have grown up and have families of their own. Friendships and family are vastly important for your mental well-being, so don't shut people out in favor of holing yourself up to play at all hours.

</comment><comment><USER35> try [http://www.cs.bell-labs.com/cm/cs/pearls/](http://www.cs.bell- labs.com/cm/cs/pearls/) (Programming pearls)

Also if you are into Java/C++, Effective Java/C++ are def worth reading.</comment>


How to make input validation in Express.js app simple and clean - <AUTHOR> https://101node.io/blog/how-to-validate-inputs-in-express-js-app/ <comment><USER2> I'm not a fan of the package used here, the syntax of chaining functions to validate a single input within your routing file, something that should likely be fairly static.

At my old company, we used `whitelister`. We created it in-house then open sourced it [1]. There is JSON schema, and we could have moved on to that, but it was too much for what we needed.

1\. [https://spireteam.github.io/whitelister/](https://spireteam.github.io/whitelister/)

<comment><AUTHOR> Nice man, Quite handy, Thanks for sharing,

But What about custom validations if I want to do async validation your package allows that?

or If I want to validate an array of items or array of object properties?</comment></comment>


Ask HN: Who has summer internships? - <AUTHOR>

The summer is coming up quickly so this is a good chance for students to find something cool to do. Anyone who has internships or any other summer-only job opening should post.<p>When posting, please make sure to mention your location, skill you're looking for, and whether there is a chance of remoting. Also, when posting locations, please use the full name of your city, no just "NYC" or "SF". <comment><USER2> Thermopylae Sciences and Technologies is looking for summer interns and full hires. We're a DC-area company working with Google Earth to create a platform for developing geospatial apps that take customers pre-existing data storage and make it relevant to them and their users. We recently hit 100 employees, but it still feels like working at a startup (for better or for worse).

One of our main projects is a data fusion project for the Haiti disaster: <http://www.3dudop.org/haiti>. It allows users to upload all of their relief data in one place, and it has the most heavily used relief data repository for relief efforts since 7 days after the earthquake.

We use PostGreSQL, PHP, and Javascript for our web portals, and we have Android and iPhone apps as well. We're looking for anybody with interest -- we can teach you the programming languages.

If you're interested, send me an email at firstname.lastname@example.com.

</comment><comment><USER3> Fedora does!

<https://fedoraproject.org/wiki/Summer_Coding_2010>

Remoting is mandatory. The payment rate is fixed at $5000 (or $2500 for half- projects). You decide when you work, who you work with, how much you work, what you work on, what tools you'll be using etc. You decide everything!

I can help with more info if you ask.

</comment><comment><USER4> Someone put together a Google Docs spreadsheet for this:

[http://docs.google.com/Doc?docid=0ASrV38bNy1TlZHhqNjlmel8xMj...](http://docs.google.com/Doc?docid=0ASrV38bNy1TlZHhqNjlmel8xMjdmN2Q4em5jZw&hl=en)</comment>


I'm Dropping Diaspora, This Site Is Now Closed - <AUTHOR> http://www.diaspora-news.net/2010/11/29/im-dropping-diaspora-this-site-is-now-closed/

<comment><USER2> For reference, this is at least the third time this has been submitted, and each time it's been flagged dead.

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

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

</comment><comment><USER3> _But don't destroy the usability of basic fields that are necessary for talking about the user_

Allowing more flexibility in the "gender" field is destroying usability? I'd say it's improving usability.

<comment><USER4> allowing people to type in 'gerbil' is not usability</comment></comment>


Show HN: Calculate how much time you're wasting in meetings - <AUTHOR> https://meetingcalculator.com/ <comment><USER2> Awesome tool - I surprisingly spent 248 hours in meetings over the past year. Now it's time to work on cutting that back and only taking meetings when there absolutely necessary.

</comment><comment><USER3> I never thought about this until I tried the tool. Really interesting results and definitely makes me rethink how I use my time. Thanks for the helpful tool!</comment>


Visualizing Donald Trump's network - <AUTHOR> https://cambridge-intelligence.com/untangling-hairball-visualizing-donald-trumps-network/ <comment><USER2> I find this completely unreadable - here is a screenshot:

[http://www.solipsys.co.uk/images/UnreadableLightGrey.png](http://www.solipsys.co.uk/images/UnreadableLightGrey.png)

Seriously - why do people do this?

<comment><USER3> Hi, Christian here from Cambridge Intelligence - I penned this blogpost. Not sure why the site looks like that in your browser, we don't see any issues our end. Are there any warnings in your console? Thanks!

<comment><USER2> No errors, default settings, latest Firefox 52.0 (64-bit) on Ubuntu 14.04.5 LTS.

Here's another screen shot, with magnification 300% so you can see the details of the font:

[http://www.solipsys.co.uk/images/UnreadableLightGrey2.png](http://www.solipsys.co.uk/images/UnreadableLightGrey2.png)

It's the weight of the font that's the problem.

I'd love to know what you're doing that causes this - in part it's problems like this that lead me not to use any significant styling at all on my site.

You have no contact details in your profile, otherwise I'd've emailed you.</comment></comment></comment>


Your iPhone Was Built By 13 Year-Olds Working 16 Hours A Day - <AUTHOR> http://www.businessinsider.com/apple-child-labor-2012-1?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+typepad%2Falleyinsider%2Fsilicon_alley_insider+%28Silicon+Alley+Insider%29

<comment> Tim-Boss Old news... foxcon's sketchy practices has been widely reported on in the media, yet I believe people are willfully blind to "remote" concerns/issues when someone hands them a new 'shiny' (ipod/ipad/whatever) for a few hundred dollars!</comment>