Ask HN: Book which comprehensively covers probability theory? - <AUTHOR> My background is in computer science and I'd like to learn how probability theory is applied.
I was reading the GraphSLAM paper to get a sense of the algorithms used for SLAM purposes in robots. While reading it, I realized that I have a tenuous grasp on probability theory, especially on topics like covariance, conditional probability and multivariate distributions (even things like what posterior probability represents).
I'd like to rectify this and gain an intuitive understanding of the subject, since it is commonly used in numerous areas of engineering.
I dislike books that introduce fully formed theorems with no derivation or proof of how they came into existence. Which comprehensive book(s) can I read? <comment><USER2> I recommend "Introduction to Probability" by Joseph K Blitzstein and Jessica Hwang.

This book is tough. Really tough. However, you are really going to do "deliberate practice" while having a go on the assignments.

It bothers me that the author does not provide the answer to most of the questions. This is specially bad in this field of Mathematics (Probability). As an example, in calculus you can always plot the curve, the derivative and see if the result makes sense, in probability theory it is hard to have a simple and safe sanity check.

You can watch all classes from Harvard here for free: [https://www.youtube.com/watch?v=KbB0FjPg0mw&list=PL2SOU6wwxB...](https://www.youtube.com/watch?v=KbB0FjPg0mw&list=PL2SOU6wwxB0uwwH80KTQ6ht66KWxbzTIo)

If you want, there is also a MOOC in EdX with the same material: [https://www.edx.org/course/introduction-to- probability-0](https://www.edx.org/course/introduction-to-probability-0)

Sheldon Ross' book is also a good one. It was mentioned here. I specially like the section on theoritical problems, only with exercises on proofs. Every chapter has one. However, Joe Blitzstein problems are more challenging and will train you more on intuition.

<comment><USER3> I second the recommendation for Blitzstein's book and lectures well as the frustration that more of the questions don't have solutions. I enjoyed reading it much more then Sheldon Ross' book, although both books have good problems.

</comment></comment><comment><USER4> I recommend the probability chapters of 'Information Theory, Inference, and Learning Algorithms' [1]. I think this book is good because it starts off with balls in hats and goes on all the way to a Bayesian simulation of a Neuron and other subjects relevant for machine learning.

It's available for free online, although most people I know end up buying the book[2].

[1] [http://www.inference.org.uk/itila/](http://www.inference.org.uk/itila/)

[2] [http://www.inference.org.uk/itprnn/book.pdf](http://www.inference.org.uk/itprnn/book.pdf)

<comment><USER5> While clicking on the first link, came across this: [http://www.inference.org.uk/itila/Potter.html](http://www.inference.org.uk/itila/Potter.html)

Someone has a great sense of humor :)

</comment></comment><comment><USER6> Ch. 1-5 of Sheldon Ross's "A First Course in Probability" works for this purpose. Consider testing/hardening your knowledge with Mosteller's "Fifty Challenging Problems in Probability".

<comment><AUTHOR> Thanks for this suggestion. It seems relevant. Ordered the book to read.

</comment></comment><comment> 08-15 E.T.Jaynes: "Probability Theory, The Logic Of Science"

<comment><USER7> Warning: Strongly opinionated and unconventional. Also doesn't comprehensively cover the topics you'd find in engineering papers.

Still worth reading, but maybe not a good place to start.

<comment><AUTHOR> Point duly noted. Any suggestions?

</comment></comment></comment><comment><USER8> Feller's two volume classic [1] has plenty of motivation - his exposition of combinatorics at the beginning of the first volume is a great introduction to that subject! However, it wasn't written with algorithms in mind.

Venkatesh's more recent volume [2] is very well motivated and is better suited to modern engineering applications. Both have lots of exercises.

[1] [https://www.amazon.com/Introduction-Probability-Theory- Appli...](https://www.amazon.com/Introduction-Probability-Theory-Applications- Vol/dp/0471257087)

[2] [https://www.amazon.com/Theory-Probability-Explorations- Appli...](https://www.amazon.com/Theory-Probability-Explorations- Applications/dp/1107024471)

</comment><comment><USER9> [https://www.youtube.com/playlist?list=PLm3J0oaFux3aafQm568bl...](https://www.youtube.com/playlist?list=PLm3J0oaFux3aafQm568blS9blxtA_EWQv) Some lectures on basic probability combined with some rigorous notes specific to CS [http://www.cs.cmu.edu/~odonnell/papers/probability-and- compu...](http://www.cs.cmu.edu/~odonnell/papers/probability-and-computing- lecture-notes.pdf)

</comment><comment><USER10> I've been working through "Probability - For the Enthusiastic Beginner" by David Morin. Very affordable for a textbook, clear instructions, solutions to exercises in the book is provided.</comment>


Did Charlie Hebdo Mock the Dead Refugee Boy? - <AUTHOR> http://www.bloombergview.com/articles/2015-09-15/charlie-hebdo-depicts-drowned-syrian-refugee-draws-criticism <comment><USER2> Well you can't expect most people of English heritage to understand the particular of french political correctness.

The gap is just to huge , the irreverence of french satirical newspaper is beyond most of the english word capacity to accept. Do UK/US people do even like really dark humour anyway ?

<comment><USER3> Stereotype much ?

English here. Appreciate dark humour just fine.

Not offended by said cartoons, and perfectly capable of seeing the satire.

Of course, if you judge English people by by the English media, that would be understandable, and if by English 'heritage' you don't actually mean English people, then maybe that's why they're no longer here.

Sure, the English 'ideology' has unfortunately succumbed to far more political correctness over the years, but I'd suggest that most of us can appreciate irreverence far beyond that which may be perceived.

<comment><USER2> I stand corrected. Thanks.

</comment></comment></comment><comment><USER4> I'm all for free speech, however it came off as rather tasteless.</comment>


Ask HN: What are people's main sources of articles these days? - <AUTHOR> I use HN as my primary source of news and articles these days as I'm having difficulty finding alternative sources for tech news, along with meaningful commentary. I find that the variety of article sources on here quite abundant, but aside from finding them on HN, how are people stumbling upon them otherwise? <comment><USER2> When Google News did their redesign, it made the service essentially useless to me. I replaced it by installing Tiny Tiny RSS on my home webserver, which aggregates RSS feeds and makes them available in its own RSS feeds. I read the news using the web interface and (when mobile), using the Android gReader app.

That solution is even better for me than Google News was, and a big part of why is that it dramatically increased discovery of new things. Not only can I easily follow sites I use regularly, including HN, but I've included the feeds of a few aggregators that I appreciate to increase the amount of new stuff I see.

</comment><comment><USER3> lobsters, reddit, Makerbites, Slack channels, etc</comment>


Ask HN: How did you learn coding - <AUTHOR> HN seems to have a pretty interesting community of professionals and self-taught coders, so how did you learn?<p>Suggested topics: - Medium of learning: classroom, textbook, etc.
- Age you started - Whether you taught yourself - What kept you coding <comment><USER4> I learned how to program on a TI-83 graphing calculator. I was bored in class and I made a simple text-based blackjack game.

Later my friends and I would use the link cable to share programs between our calculators, and I would pour over the source code and try to understand everything. There was an ASCII fighting game I loved and I added new moves and characters.

Once I learned how to "view source" a website I started doing that everywhere and figuring out how the Web worked. That, plus a Linux install disk and an old, case-less desktop got me on the road to where I am today (supporting a SaaS company as an Infrastructure Engineer).

<comment><USER5> Same for me, had a TI-85 when I was 13 (which now I wish I hadn't sold, it's a collector's item! Never giving up my 89!) Friend and I wrote a Drug Wars clone and a bunch of math solvers. Then we got into websites in the same way. Also had an old Windows machine, on which I pored through every DOS man page (didn't turn onto *nix till way later).

Took AP CS in high school on a whim just for the credit and haven't looked back since, been at it for 18 years now. Thinking about a sabbatical though as of late.

<comment><AUTHOR> I've heard a lot of people who have gotten interesting in coding through a graphing calculator...but in 2016 doesn't anyone think that they're a bit outdated?

People started writing programs for graphing calculators because the needed these devices for school, so somebody should introduce kids to Raspberry Pis and Python.

It's a shame that in the US there is a lack of proper CS education in most schools. Not only is programming well-paying (most of the time) but it also helps students break down difficult tasks into simpler ones.

</comment></comment></comment><comment><USER6> I started in the late '70s when I built a processor technology sol-20 from tubes of ICs, a circuit board, and parts for a case. The damn thing didn't work when I powered it up. I was crushed. I took it in to the Milwaukee Computer Store and the tech guy (I wish I could remember his name) pointed out that one of the EEPROM pins had bent underneath the chip. He straightened it and boom! I learned to program the Intel 8080 based Sol from the "intel 8080 Microcomputer System's User's Manual", September 1975.

In what must have been an early example of software piracy, I dumped a hex dump of my University's Intel development system's macro assembler and typed it in by hand. I hand edited the code in hex to use the Sol's cassette tape drive instead of the paper tape, Cool stuff: Load assembler from tape, load assembler sourec from tape, rewind, load again for pass two.

UCSD Pascal came out around that time, but it required more than the Sol's available 48K of memory. I disassembled the Sol's monitor and moved it from 0xc000 up to 0xf800 (I think) and, Hey Presto! I had a Pascal development environment. I think I wrote one or two Pascal programs before I met... C.

I first used Small C on the 8080 and then decided I needed a processor with better addressing modes. I switched to the 6809, wrote the Introl-C compiler, and almost lived happily ever after. :-)

</comment><comment><USER7> I am pretty much self taught since the age of 14 (back in the early 80's). Started using BASIC on an old TRS-80 and then a Vic-20 after that before moving to an IBM PC/XT.

I bought a copy of Turbo Pascal when it first came out and that was really my first foray into the world of 'real' programming. I think I made my first $$ from a software sale from a Turbo Pascal simple point of sale system I wrote for a pharmacy.

Since then, I've pretty much taught myself several other languages over the years. I find books and video courses to be of low value (NOTE: To ME, others may find opposite results). Latest work is in Ruby and Javascript etc. using SQL backends.

I've found the best way for me to really get to grips with any language is to start building small 'real world' projects with it and experience all the triumphs and pitfalls along the way.

Having said that, I do struggle with some new concepts these days. NoSQL still baffles me, and I never got the hang of Ruby on Rails (my latest web app is 25,000+ lines of Ruby but in a Sinatra based framework).

So, no formal software development training, but I have the love for creating stuff out of code that keeps me motivated to constantly learn.

</comment><comment><USER8> I spent about five years working as a graphic designer (both parents were designers with home offices that they encouraged me to use as a teenager) before I realized it was a relatively difficult and unappreciated profession considering the average salary. At the time (I was about 24, 2004-ish) I was working closely with a team of java developers and I knew I was capable of doing what they did, so I just eavesdropped on all of their technical conversation and looked up the terms I couldn't understand. I had to do some flash work as part of my job, so I picked up some actionscript, read a bunch of materials on OOP freely available from Sun Microsystems at the time (not very high quality compared to what is available today). I stopped drinking, stopped going out on the town, and started coming home every day after work and reading everything I could find on actionscript and javascript, and building portfolio apps. I kept telling everyone I worked with that I was learning programming and eventually someone referred me to a small design agency that was looking for a junior developer. They ended up growing fairly rapidly with a lot of clients in the Seattle startup community, and that exposed me to the network that I still get my work from today. My first year there was hellish and I often had to sleep under my desk as I tried to keep up with client deadlines while learning on the job, but I eventually gained some proficiency and the rest is history. It has been my life's passion ever since, and I shudder to think how my life would have turned out if I hadn't taken that leap. I hope that I can have children and teach them everything I know about computers some day.

Edit: I probably wouldn't have been exposed to half of the stuff I now know if it weren't for HN, which I consider one of the treasures of the internet.

</comment><comment><USER9> I've tried teaching myself C at age 10-11 in order to do embark on creating a Heroes of Might and Magic clone with Incas, _because_. Never got besides the paper planning. Didn't have a computer yet then, had to time-share on my dad's from his office. Was getting in late to try things.

In high school I was extremely lucky to have an amazing teacher that taught us C++ by throwing away the standard state-provided manual (this was Romania) and using her own methods, problems and curricula.

Next, coding interactive visualisations kept me going (there were cool enough to attract attention of well, umm... girls. I was a teenager, mind you). My high school graduation project was a 3d engine coded up from scratch in actionscript.

I took a break for two years while studying architecture, but then discovered all the amazing things you can do with space, geometry, networks and code. I am still discovering new avenues. I'm am a fully licensed architect (read buildings, not software) yet I now find myself coding all the time.

</comment><comment><USER10> I was 13 when learned HTML by reading source code, playing, and a very good tutorial (no longer around), then CSS. I tried different languages, C++ with Borland compiler, but I could not understand how the basic syntax can be translated into a game - this is what I really wanted to do. I wanted graphics. JavaScript did not make sense at all, I found it too complicated, I did not understand the difference between client and server.

Then I learned PHP to run a website of our school class, I used PHP to automatically generate a gallery of pictures located in a folder. Saved me tens of hours of time.

Then I started playing with Flash and ActionScript and I was shocked to discover that different shapes - triangles, circles and rectangels are objects that share methods (resize, fill colour etc.) and that was the Object Oriented revelation.

Years passed. I got a job in IT where I had to learn the internal scripting language and do a lot of SQL - so I've learned that. The product did not allow you to do certain things and they had to be "hard hacked" in JavaScript, so I had to learn that, and I realised it's no longer difficult. I learned C++ finally when for a short time I enrolled into University (software engineering). Then I got a new job where the product was made in Java and in order to make any extensions they had to be coded in Java, so I learned Java (Head First Java). In the process I realised what are the unit tests and how to first write a test and then your object. Somewhere along the way I learned about Design Patterns, but I cannot say I really can use them effectively. I also learned C.

I no longer work in IT, coding is just a weekend hobby.

Now what I still have to learn is to make bigger things that would make sense for others, both in therms of usability and code readibility (I write heinous- ugly code). I am ignorant of MVC model. I don't know much about linux administration or scalability and functional paradigm. I hate myself for not knowing math beyond highschool level.

Still a long long way to go :)

</comment><comment> d--b Ti calculator age 14. C using the C programming language book. Then caml at school. Lisp, c++, Java at uni. and all that for ending up doing data science in Excel!

</comment><comment><USER11> I made my first attempts at coding at around 13-14, maybe sooner, when trying to change config file of the game clonk planet[0], but quickly gave up on changing anything significant. Didn't really touch another line of code for several years, it wasn't even in my focus, when I began reading XKCD and thought to myself - maybe LISP is for me... At that time I was around 18, and didn't even make the whole tutorial (the one provided by DrRacket) - it did introduce me to some general programming concepts though, which would prove helpful later on. It didn't help that I didn't visit the right school for it - there I learned mostly languages and didn't pay attention in Maths, which proved to be a really stupid move. In the year after my "Matura" exam which is probably the italian high school diploma (I might be mistaken), I frequented a year-long course on web development - in the End we should have been able to call ourselves "Webmasters". There we were taught the very basics of html and css in two weeks and javascript in another two-week block, as well as some tinkering with our own virtual server writing simple bash scripts and generally trying out Debian.

Now I'm in a secure but not very well-paid job as webdeveloper, where I have to code in classic ASP and mostly just do boring-as-hell copy-paste work.

[0][http://www.clonk.de/](http://www.clonk.de/)

</comment><comment><USER12> I think I was about 13 or 14, my dad had been saying to me for a while that I should start learning HTML. He was fascinated at the introduction of Java around that time. So one day he came home and launched a 2 inch thick HTML book at me, thus my introduction to programming. Started off mostly in simple web development, moved on to PHP when I found phpBB and started fixing broken forums (well, mostly ones that I broke haha) and creating mods. I worked for them for a while on their styles and moderation teams.

I spent a year at college learning C++, was supposed to be a 2 year course but they changed the framework and kicked everyone off the last year. Didn't go back to uni until a few years later and studied Web Systems - <USER2> ASP.net, C#, more PHP, working with SQLite, a little bit of Java and Direct X and more general web dev stuff (built a custom PHP framework with a classmate).

Most of the stuff I've done has been self taught - web docs and stack overflow :) Over the past few years I've moved more into PHP again (customising WordPress plugins and themes), tinkering with Ruby a little (building an IRC bot and using it to solve puzzles), working with SharePoint 2013, Workflows and InfoPath forms. Hoping to get back to C# a bit more over the next year.

Like most, this used to be a hobby. Crazy that I've managed to make a career out of it

</comment><comment><USER13> Started screwing around with a limited version of Visual Basic 6 when I was 8 or 9. I had always liked the visual design of computer programs, so the programming was sort of a means to an end to make cool GUIs.

This limited Visual Basic had most of the features of the professional edition, except you couldn't distribute compiled programs (only run them in the editor), and they took out all the help files for some reason. I got pretty used to having to forage on my own to find decent documentation for anything, relying on computer manuals from local libraries and tutorials from random sites to fill in the blanks. I'm not really sure why I had the patience to put up with that, to be honest. I think I just assumed everyone learned programming like that. I pretty much never met another person who knew anything about computer programming face-to-face until I went to college.

When I got tired of not being able to compile anything, I ended up experimenting with Visual Basic.net in a beta of Visual Studio 2005 a relative gave me, had a bad experience with that, and started looking for alternatives. Eventually, I basically settled on Python.

I still think Visual Basic 6 is one of the best programming environments ever made. It started in seconds, the GUI designer just worked, and the autocomplete was perfect. It even opened up with a blank project you could start screwing around with without even saving anything, encouraging a lot of experimentation with the widgets and language. It was QBasic for a different generation. :(

</comment><comment><USER14> The first language I learned was BASIC at the age of 12 (in the 90s). We didn't have a PC at home, so I just learned it by reading a book. That was the main reason my family was convinced to buy a PC after all.

After that, I kept coding because I really liked solving puzzles and building things. To me, libraries and APIs were like pieces of LEGO that you could use to create your own contraption. Probably the most exciting coding moment was when I figured out how to use interrupt 33h to add mouse functionality to my games!

</comment><comment><USER15> I started coding because I like to make useful things. I took vocational electronics in high school, and I REALLY liked digital circuit design, so my teacher recommended I take a programming class. Programming was taught in turbo pascal on machines that had no hard drives, only large floppy disks ('94).

I picked it up very quickly, and made my mom (a teacher herself) a grading program she could use to manage student's grades, wrote a couple of screensavers, all in turbo pascal.

I then delved into C++, and started learning unix, and learned to write system utilities and scripts as well as basic sysadmin stuff.

I took some time off of school to work as a touring musician, but when I went back to college (as a CS major), I needed a job, so I got a job at Glaxo Wellcome because I was a capable sysadmin who could manage the DEC boxes they used for development, and I could also code. I did a bunch of things for them in C, then perl, then finally java after it was out.

I'm coming up on 20 years of working as a professional programmer, and I still love to code as much as I did back in high school. I've had various executive roles over the past 8 years, but I've never moved away from coding. It's one of the great joys of my life.

</comment><comment><USER16> I learned HTML and extremely basic JS in lower school to make basic web pages and kinda-sorta knew how to use browser tools to look into network requests (i.e. cheat on addictinggames type sites) and view page source etc.

I started intentionally learning when I got an office job in college and realized that a lot of the boring stuff I was doing would be trivial to automate. After excel formulae stopped being enough for what I wanted to do I went and learned python. VBA would have been the next logical step but after some investigation I found that was a good way to get shanghaied into terrible work forever.

I learned initially through Udacity's intro to programming Python course (their original search engine one), and then Norvig's follow on course. After that I started getting better at learning from the documentation and looking up the math and data structures I needed.

After I got sick of the office job I was at I did a dev bootcamp to get some kind of credential and to get some webdev experience (all my previous code was data munging, web crawlers, really terrible home grown templating solutions etc).

When all you have is a hammer everything looks like a nail, but code is one hell of a hammer, so I kept coding because there was always more crap I didn't want to do repeatedly.

The thing that struck me though was how no one else in that office (filled with quite intelligent people) seemed to see the opportunity before then. This is one of the reasons I wish everyone at least had exposure to coding. It seems rather unfair that previous experience as an addle-brained 8 year making a Pokemon or snowboarding website should have seeded such a relative advantage.

</comment><comment><USER17> I roughly browsed most of the comments and noticed that most people who taught themselves programming started earlier than their 20s, which, frankly speaking, surprised me a lot.

I started learning programming when I was in college, which wasn't some serious learning but merely required courses of my major. After I got my bachelor in engineering. I continued to study in a research institute and got a master degree in geosciences. Later on, I started to teach English the moment I graduated.

Right in the beginning of this year, I realized that teaching bored me to death. I still wanted to do something technical. So, I began teaching myself coding in Objective-C. Three month later, I became an iOS programmer.

I don't think I am particularly smart or anything. But, when I worked with people who had one or two more years of programming experience than me (I only I had six month or so doing real programming), their code was just fucking too messy: no comments, using pinyin to spell variables, having no idea what MVC is ...

All I thought was guys you should really take this seriously. Or, you'd better consider doing something that's your strong suit.

</comment><comment><USER18> This book[0] enlightened me in a lot of ways. Check out the book review, I would testify that almost of what the reviewers said are true.

By reading this book, I've developed my skills in programming with C/C++, assembly language and also learning computer architecture all at the same time. This book contains lots of low level stuffs like designing a cpu core, translate a C++ program to assembly, write an assembler, and many more. The explanation starts with a very simple concepts like translating y = x + 1; to assembly language equivalent until translating an object oriented code to its equivalent assembly language code. It has been a lot of fun learning the relationship of cpu, operating system and the compiler. The exercises are easy enough and had really sharpen my skills. Although the target machine is theoretical, I was able to switch easily into the real machine.

[0] - [https://www.amazon.com/Assembly-Language-Computer- Architectu...](https://www.amazon.com/Assembly-Language-Computer-Architecture- JavaTM/dp/0534405274)

</comment><comment><USER19> Some self-taught BASIC via computer books and what I believe was an Apple 2 Manual, an intro level C++ class around 12 or so (my "for beginners" C game programming books before then weren't actually for beginners - assumed you knew hexadecimal, grokked pointers, etc.), and then a ton more reading online coupled with forums and IRC channel trolling. Learned a lot through "osmosis" \- just listening and trying to understand people talking about programming subjects I hadn't known about before. If one spends some time in Japan to practice getting really fluent in Japanese, I spent a lot of time in programming circles getting fluent in Programming.

First I was curious as to how computers could possibly work, then I wanted to build things for computers, and then people wanted to pay me to build things for computers. It's worked out pretty well for me so far.

</comment><comment><USER20> Phase 1: HTML and modifying other people's javascripts to add terrible animated cursors etc. to my personal page.

Phase 2: took a class in high school on Visual Basic and learned more on the side so that I could make games with it. Made a couple games with it.

Phase 3: took essentially Java Programming 101 at a local community college concurrently with high school, and started to get serious about making games.

Phase 4: made about 30 projects in Java—just whatever I felt like working on at the time—games, game engines, an emulator, 3D model loading/animating/rendering library, tools for making content for games. Almost none of these were completely finished but I learned a ton with each, and sort of climbed a ladder with it, trying progressively more difficult things all the time. This lasted ~3 years.

Phase 5: got a repetitive strain injury from typing/mousing too much and stopped coding (not completely, but nearly) for several years. Studied mathematics and language more deeply than what school prompted me to previously, somewhat hoping this knowledge would come in handy if I could return to coding some day.

Phase 6: decided to work on a major project that I believed would allow me to efficiently write code with motion sensors (thereby avoiding the injury). This ended up being a pretty deep, difficult project that was actually doing something sort of novel in software for the first time, and I learned tons working on it over the next year and a half, primarily about programming languages and architecture ([http://westoncb.com/projects/tiledtext](http://westoncb.com/projects/tiledtext)).

Phase 7: I've been writing software professionally off and on for a few years now, still occasionally returning to side projects. I still retain an awareness for areas I can improve, but it's more about using than developing skills now. I've returned to html/javascript after all these years. It's interesting.

</comment><comment><USER21> I'm another member of the TI-83 club. Shoutouts to the little L who made it all possible.

Initially I used it in math to avoid having to do the rote computations, but eventually I started building other stuff. I built a simple game that had you navigating an ASCII character to collect the pi while another ASCII character chased you. Frames would advance on input, sort of like a rogue-like.

Eventually I made a text-based RPG combat game, where you would select enemies to battle, and gain XP to increase your stats which would allow you to fight higher level enemies, etc. The final boss's selection code was '666' and he was orders of magnitude more difficult than the next-hardest enemy.

I also had a book about learning to program in C++, it was p bare bones and I didn't learn very much from it.

</comment><comment><USER22> Played with QBasic when I was a kid, took a Java course, hacked on HTML/CSS/jQuery for my radio station and got a job writing code at a web shop after college.

What really got me "over the hump" was deciding one weekend that I needed to focus if I was going to be able to bring my ideas to life (www.sampl.us). I got Javascript, The Good Parts on Amazon and just hammered on the basics of the language over the course of a few weekends. I kept at it over the next few weeks, and I've come back to it in bursts ever since. Never fails to be one of the most rewarding and frustrating parts of my week.

Five years later, I'm still a pretty mediocre programmer. But now when I can have an idea, I get to watch it become real. It's a good feeling :)

</comment><comment><USER23> My dad and I used to build those Radio Shack kits where you could make a simple radio with a breadboard. This was probably when I was 5 or 6?

It was clear that I enjoyed that, and I enjoyed the old DOS games at the time, and my dad had a bit of an IS background at the time, so he encouraged me and together we did some BASIC programming together. I also eventually got one of those Lego Mindstorms kits as one of the other commenters mentioned when they came out, which probably would've been around age 7 or 8.

I just took off by myself after that. Playing around more with basic, eventually learning some basic frontend stuff so I could show off webpages to my friends, and then moving on to some Java after that.

It's been a passion ever since.

</comment><comment><USER24> I started on LOGO and Q-BASIC. (IBM PS/2, baby).

Everything I actually know about coding came about during my undergraduate engineering education, where a minimal amount of Matlab was needed for labs. I got super into it, then I installed linux, then I started writing my problem sets in LaTeX ...

Several years later, my second job made me into an actual developer for scientific computation, and that learning curve consisted of three years of pair-programming with a guy who has 30 years in the game. You learn quickly that way, and I had enough a foundation under me of my own making so that I didn't drown -- but not too much that all my bad habits were too hard to undo.

<comment><USER7> Ahhh... the IBM PS/2 - probably one of my favourite ever computers to use. I had a Model 50 and a model 70 for years.

</comment></comment><comment><USER25> 1996 - age 14. I had just gotten a computer at home I could use. I took computer science class in summer school (extra credit. Summers without school suck). Watcom basic. A year and a half later my professor gave up and gave me the wbasic manual so I could play with non ascii which he did not understand. I was 99% sure I would be working in pure math before then. I always loved solving problems or puzzles. Computers seemed to give me more options. Played with Linux/BeOS/Visual Basic. (And a very little java/Delphi). Got my BsC, now I lead a team of 5+ and work in any language/framework I want.

</comment><comment><USER26> At the age of 12, I learned BASIC on a TRS-80 Color Computer 2, using the books that came with the machine. When I was 16, I ditched GOTO and GOSUB by learning QuickBasic on a PC. QuickBasic was essentially the DOS equivalent of VisualBasic, and compiled to executables. It came with its own IDE. I made a decent amount of money selling a kiosk-style menu system using it. QBasic, which came later, was an interpreted version of QuickBasic, so I never bothered with it. That was 27 years ago.

These days I'm doing Python/Django mostly, but am getting into Elixir/Phoenix. I have yet to take a formal programming course.

</comment><comment><USER27> Making hacks for Jedi Knight.

Really enjoyed it so I started going to summer camps for coding. Then took classes in highschool, and college. But eventually senior year of college as a C.S. major with high marks on projects and tests I realized I had no idea how to code after a failed internship.

Then sorted stackoverflow by votes and read and tried to understand the first 1000 questions.[0] By the end the change in my coding style was like night or day.

0 - This was before stackoverflow decided to cripple it's usefulness by eliminating open ended questions, so you can't repeat this today.

</comment><comment><USER28> I started by borrowing my mom's login for the HP2000 at the local college when I was 9 (that's 1976). Amazingly, the college let me take Fortran and PL/I classes for real. Other than that, was self-taught through high school, then got a CS degree at CMU and paid attention to at least _some_ of the classes.

As for why...what on earth is more fun than coding?!

(edit: I see there's an HP _laptop_ called the HP 2000. I mean _this_ one: [http://www.hpmuseum.net/display_item.php?hw=411](http://www.hpmuseum.net/display_item.php?hw=411))

</comment><comment><USER29> In the early 80s at around 10yrs old I taught myself BASIC from books/manuals on a TRS-80 model III at my fathers office and my own ZX Spectrum at home that I'd saved up for.

Totally failed at teaching myself Z80 machine code on the Spectrum though. Part of that failure was probably something to do with manually assembling the code and POKEing it into memory (ie crap tools).

Did more AmigaBASIC on an Amiga 500 in the late 80s. Totally failed at teaching myself C on the Amiga too (crap tools also played a part here - <USER3> a really buggy C compiler I found on a Fred Fish disk).

</comment><comment><USER30> In many cases. Telling others... yes! I can learn how to do that.

At 17 a friend of mine asked me some help to port an old (and probably still working) COBOL app. Project wasn't really financed and absolutely not intended to be a production ready solution.

At 20 I was still working on that project. At that time in production and at least with the budget for us.

Year after year I can tell that my knowledge was totally community driven. Than.. I understood Unix (yes Microsoft was everything for 10 years). And I definitely understood how to code looking at other's code.

Btw. Thanks everyone for the open source.

</comment><comment><USER31> Self taught. Started programming at the age of 7. It was a programming book designed for kids. It taught BASIC on the Commodore 64. I later went to learn assembly at age 11 because I was interested in video game development and assembly was the only way to get access to additional functionality / performance. Moved on to C and x86 Assembly in my early teenage years (again motivated by making video games). Moved more to general purpose / web technologies once the Internet started becoming more popular. PHP, Java, Rails, Node.

</comment><comment><USER32> My parents bought the family a ZX Spectrum, which came with a BASIC manual and a summary of machine code instructions. I was 12 years old and it was the 1980s and there wasn't anything better to do.

<comment><USER33> whoa i'm also you in this. Angulo spanish Z80 asm book then. Local cs amateur club, "folks do you have the complete rom dissasembly?" (of the spectrum), answer: yeaaahhh... no. More childlier at my granpa's he had that cheesy computing magazine with few lines of basic. I was out of myself. woa, this is like math, but moving. Nobody cared but so what. Maths moved.

</comment></comment><comment><USER34> Back in 7th grade - about 5 years ago - I first found python. I had no idea what programming was, but i saw a game that I wanted to create and it said this is how.

I read the elusive documentation (to a 12 year old me, very elusive) word for word and just went with it.

At the time, I didnt't know what a compiler or an interpreter was so I just wrote it all down on paper and did the calculations/instructions in my head and wrote down the results. (I couldn't tell if I had an error or not)

After about 2-3 weeks, I quit. I couldn't understand anything really. I had no idea what a class was or what a method did. About a year later, I heard of minecraft and started playing that. I heard it was made with java so I went on youtube (which I recently found existed) and watched java game development tutorials.

Needless to say, it was hard and I didn't udnerstand anything. I didn't know java or anything.

After about 2 months or so of frustration, I found the official tutorial on oracle and started learning from that. It was hard and I did not learn anything.

in 9th grade - 3 years ago - I took computer science as a math elective class. I learn java a bit slowly but I understand almost everything due to my past failed attemps giving me _some_ foundation.

During the summer after 9th grade, I started learning python again. I got all the way up to classes and such and stopped because I couldn't understand OOP in python because noone could even begin to teach OOP with python. I felt inadequate so I temporary stopped (quit).

During 10th grade, I started to really learn java. I bought tons of books and used the official tutorial with various other websites, and after all of my hard work. I understand the basics of java.

Skip to now - 12th grade - I'm learning extensive OOP programming concepts with java and learn how to create GUI applications with awt and swing (holding off javafx for now).

I'm mostly self-taught despite going to classes for 2 years of computer science in highschool.

I just really want to say, through all of my 4-5 years of experience on and off of learning programming: If you don't understand something, come back to it later.

<comment><AUTHOR> It's not just you- I've been using Python for fun for 3 years and I still find the docs elusive! :)

</comment></comment><comment><USER35> My brother went to a computer camp and brought back a folder with an introduction to BASIC printed using that purple ink tech they had before photocopiers. (What's that called again?)

We didn't have a computer but I read that and loved it. A friend had an Apple II and I got to try out some of the stuff round at his house. Later on when I was in year 9 (1985) I got my first computer ,an Apple //c and I did more BASIC and some assembler. Then uni in 1989 where we learnt Miranda, Modula-2, etc etc. Made the transition to Java in 1997.

</comment><comment><USER36> Age 16 or so, Boy Scout explorer post at the local bank in 1969. The person teaching us (a programmer at the bank) gave us a brief intro to the RPG (Report Program Generator) language, then said "Now, think of something you'd like the computer to do, and write a program to do it. Here are the manuals, and I'm here to answer any questions you might have." First "real" experience was at Univ. of Illinois, CS 101, with PL/I as the language.

</comment><comment><USER37> In tenth grade in high school Java programming came up in IT class. Unfortunately, our teacher didn't have much of a clue herself... However, programming was something I'd been wanting to learn for a long time, so I downloaded all the example source code from the school system, borrowed a couple of books from our local library and dug in. Using that, I taught myself Java over the next year, then moved on to other languages.

</comment><comment><USER38> I'm a startup CTO with 10+ years of coding experience and I wrote a 7,000 word post on this topic entitled "My Long Journey to Knowing Software Sorta Well".

Still have yet to publish it elsewhere as I had planned to edit it extensively. I welcome feedback on this draft from HN readers, though!

[http://simp.ly/publish/gsqMKl](http://simp.ly/publish/gsqMKl)

</comment><comment><USER39> 5 and 6 years old, my brother and I played Zork on a neighbor's computer. NES, Atari. One day he comes home from the library with a book about BASIC. Not owning a computer, we spent all summer with pen-to-paper writing our own text adventure. Not sure if it would have run or not.

5 or 6 years later we finally get a Packard Bell from Walmart. Discover BBS. Warez a copy of Turbo Pascal 6. Rest is history.

</comment><comment><USER40> First coded on my Dad's Commodore 64 when I was maybe 9-10, and never stopped programming/building software (now 33). I guarantee I was the only one in my school district who received a copy of Visual C++ 4.0 for Christmas the year it came out. Kept at it through middle/high school, then a 4yr BS in CS. 10 years later and it's still my favorite thing to do.

</comment><comment><USER41> Saw that people I was working with were doing cool things in VBA in my early 20s, so I started using the macro recorder and then backing into things from there.

Now I'm okay-ish with c++, python, and a little bit of matlab. I need to do some serious work with learning design patterns and study more algorithms before I'd really consider myself a good programmer.

</comment><comment><USER42> I'm posting because I appear to be in the minority here.

I started at about 34 and I taught myself.

Having an objective kept me coding. I am building something that has a specific business need where I have significant domain experience.

Additionally, I was surprised to find out how much I enjoy programming and learning new languages. That too will keep you going.

</comment><comment><USER43> First was BASIC built into a Soviet ZX Spectrum clone. Then, a bunch of years later, i tried pirated copy of Borland Delphi 4, since it was all mostly drag and drop. Some years after I got free clan page hosting from planetunreal.ru (I was playing a lot of UT at the time), which offered PHP/MySQL combo.

</comment><comment><USER44> QBasic when I was 10 (on my own). Then I did some VB tinkering after that. Java in high school. In university the floodgates opened. C# / Python / C / C++ / JS / HTML & CSS.

It's always been about creating something.

</comment><comment><USER45> Started at 10 on a trash-80 then a pc clone... Like most people at the time, I started with BASIC but quickly switched to Pascal then assembly then C, etc. Never stopped coding since.

</comment><comment><USER46> 1\. Want to create games as a naive kid

2\. Fail horribly, make some crude pong and snake clones

3\. Dabble in Python automating little pain points in my life

That's where I'm at right now.

</comment><comment><USER47> Apple IIc in the mid '80s as a kid then a teenager... DOS, Integer BASIC and Instant Pascal. Never good with Assemblers though.

</comment><comment><USER48> Fortran, early 1970s; dozens of other languages from books until 10y ago, thereafter from web

</comment><comment><USER49> Project euler! What a blast I had solving those problems in middle and high schools and uni.

</comment><comment><USER50> Extending on this... Are universities the best place to get a CS education these days?

<comment><USER51> A CS education maybe, a programming education probably not. A lot of it depends on how self-motivated and auto-didactic you are. I've taught CS at universities and programming as well.

I taught full time at a community college for half a decade in a vocational programming degree. I tried to slip as much useful theory into the courses as I could, but ultimately they were terminal voc-tech degrees like welding and auto mechanic that enabled the graduates to go to work at entry level developers at local employers (primarily state government).

I often wondered "what is it that we do here?" since everything I would teach was available online, and more, and better, and free! But many students just need someone to be there and guide them through things (this is why the online courses our department tried to do were a disaster). For a self motivated independent learner, they would no doubt go crazy in the on-the-rails structured courses.

For computer science, the science part, where you primarily investigate computational-related mathematics, I think a formal education from a university is invaluable. But only a small fraction of software development jobs (if that's what you want to do) need that level of rigor.

</comment></comment><comment><USER52> mIRC Scripting/regex/bots of Dragon Ball Z fight systems at age of 10, then HTML and CSS for a DBZ website.

</comment><comment><USER53> MIT's Scratch in elementary school.

</comment><comment><USER54> Got my start in RPG Maker 2000 :)

</comment><comment><USER55> BASIC and library books. Age 12.

</comment><comment><USER56> Lego Mindstorms at 11 or 12.

</comment><comment><USER57> compute! magazine</comment>


Lembrary: A multiplayer persistent Haskell REPL - <AUTHOR> https://www.lembrary.com/ <comment><AUTHOR> The goal is to make a collaborative dev environment using immutable one-line functions. Define any pure function by building it up incrementally from one- liners, no need for a local environment at all.</comment>


Writing Testable Frontend Javascript Part 1 – Anti-patterns and their fixes - <AUTHOR> https://shanetomlinson.com/2013/testing-javascript-frontend-part-1-anti-patterns-and-fixes/

<comment><USER2> You can write a dummy backend endpoint, it shouldn't take too long in any platform also you can use PhantomJS with CasperJS and/or Selenium to simulate real user interactions which I think can be much more useful than simple unit tests.

Also calling simple practices anti-patterns seems a little over-religious to me, I don't believe in black and white mentality "if you are not doing everything the 'right' way, you are doing it wrong", some stuff are just simple and don't require heavily structured code to make it maintainable, if it grows over time you will have to refactor it anyway. I think you can code much more effectively if you always use the method that is best suited for that particular use case.

If you can make your login form work with 10 lines of jQuery, I say go for it, but if you are developing an advanced CRUD application, you are probably better off with MVC or some other structured paradigm.

</comment><comment><USER3> What's the state of the art JavaScript automated testing stack look like? Does anyone have an awesome example? I'd love to start testing my frontend code with something other than browser refreshes.

<comment><USER4> I'm using grunt.js (0.4) with grunt-contrib-jasmine to test my front end JS on the command line in phantomjs (headless webkit). If you also use grunt- contrib-watch, you can have this happen every time you save your source/specs.

Example: <https://github.com/joshuacc/change-calculator>

</comment></comment><comment><USER5> I've always liked testing ajax requests with sinon [1]. It injects its own version of an XMLHttpRequest object to keep track of all requests, and you can also send specific responses to test success and failure handling.

[1] <http://sinonjs.org/docs/#useFakeXMLHttpRequest></comment>


Ask HN: Audio from Startup School? - <AUTHOR>

Anyone capture the presenters with decent audio? <comment><USER2> _"... Anyone capture the (Startup School?) presenters with decent audio? ..."_

Agreed, because as good as the streaming is, the video streaming is patchy & you can't (that I know of) download it for later listening.</comment>


.NET Core Support in AWS CodeStar and AWS Codebuild - <AUTHOR> https://aws.amazon.com/blogs/aws/launch-net-core-support-in-aws-codestar-and-aws-codebuild/ <comment><USER2> Just going to mention it here since many folks don't seem to know this but we here at Microsoft also have a cloud build (CI/CD), Git source control, Kanban (lots of agile tools), etc and its all free for up-to 5 users.

The build system also geared for "any developer, any platform" with support for Xcode, Android, iOS, Java, .NET, and other types of applications using our Windows or multi-platform agent.

We also do unlimited private repo's for those 5 users which I know is super important to people.

Details on VSTS: [https://www.visualstudio.com/team- services/](https://www.visualstudio.com/team-services/)

<comment><USER3> That UI though ಠ_ಠ

<comment><USER4> Does this use the azure ui? :(

Azure seems like a good platform hindered by its unusual ui.

<comment><USER5> I have always found it to be a fair bit more visually appealing than AWS and more performant than Google Cloud Console. Granted it is on the more bizarre/eccentric side.

</comment></comment></comment></comment><comment><USER6> I tried out CodeStar a month or so ago and it was decidedly not ready for primetime. In particular, I recall it being absurdly difficult to debug/troubleshoot failing builds.

<comment><USER7> Is that just a side effect of .NET Core? In that you need to do your own logging?

</comment></comment><comment><USER8> GCP supports this already: [https://cloud.google.com/dotnet/](https://cloud.google.com/dotnet/)

<comment><USER9> Not the same.</comment></comment>


White House teams up with Google to build Coronavirus screening site - <AUTHOR> https://techcrunch.com/2020/03/13/white-house-teams-up-with-google-to-build-coronavirus-screening-site/ <comment><USER2> What about those of us who do not wish to provide our medical information or PII to Google? Will we be cut off from all federal services?</comment>


Ask HN: Is XBox One slower then XBox 360? - <AUTHOR>

From what I've read in the specs, XBox one is going to have 8-core 1.6Ghz processor while XBox 360 has a 3-core 3.2Ghz processor. Considering Amdahl's law, 10GHz on 3 cores should be much faster than 12ghz on 8 cores.<p>Is there something I'm missing here? Has the gaming industry overcome the hurdles of parallel execution? <comment><USER2> Modern processors are much more complicated than old at-most-single- instruction-per-cycle processors. There are techniques collectively known as _Instruction Level Parallelism_ that enable a processor to execute several instructions in each cycle on each core. That, and a more efficient memory system, that keeps the processors from stalling, waiting for memory, are significant factors in performance.

End of the day, what matters is the number of instructions executed in the unit of time, not the number of clock cycles. Clock frequency is just one factor in processor performance. A more efficient microarchitecture can easily beat a "faster" (clock speed-wise) processor, as it's been the case with Pentium 4's NetBurst vs Core.

</comment><comment><USER3> I don't think you measure system speed by summing up cores clock speed.

Also your question can not be answered anyway because nobody have access to XBOX One systems

<comment><AUTHOR> why not? assuming 100% paralalism, isn't it simply the amount of computations you can do in a certain period of time?

<comment><USER4> Well there are other things to consider like cache size which I'm sure is much larger.

Plus a lot of the load will be put onto the graphics processor.

</comment></comment></comment><comment><USER5> It's worth noting that the Xbox 360 uses a PowerPC architecture while the Xbox One will use a x86 core. That will make just strictly comparing Ghz difficult.

<comment><USER5> And just to expand...

Let's look at the apple transition from powerpc to intel chips. Geekbench has a reasonable number that we can look at to compare against, so let's use that. [http://browser.primatelabs.com/mac- benchmarks](http://browser.primatelabs.com/mac-benchmarks)

We can see that the one of the late 2005 Power Mac G5 had 2 2.3 Ghz cores. This garnered a score of 2088.

About a year later, a mac mini was on the market using an Intel chip. In this case, the Intel Core Duo T2300 which runs at 1.66 Mhz with 2 cores. This received a very similar score of 2128, even though it is running considerably slower.

Later on in the years, I can come up with a Mac Mini (Mid 2011) that has an I5 running at 2.3 Ghz (The same as the original PPC we're comparing to). However, this gets a score of 5818, more than double the original PPC I picked.

\---

My only point here is that it is VERY difficult to use processor speed as a tool to compare processors. It's even difficult to use it to compare a Xeon vs an I5, even though they both use the same architecture and are made by the same company.</comment></comment>


Ask HN: At what point do you hire a UX designer? - <AUTHOR> <comment><AUTHOR> Should UX designers come in as earliest as possible of a project (idea stage)? Or is it preferable they come in after specs and the requirements are set?

<comment><USER2> Their input will be valuable at all the points. Users too, build-measure-learn</comment></comment>


Ask HN: Is there a tech sector that has a lower barrier to entry than software? - <AUTHOR> <comment><USER2> What about Web?</comment>


Ask HN: Torrent client (Mac) recommendations? - <AUTHOR> Preferably open-source. What are my options?<p>Also I remember hearing some uTorrent clients included mal/adware, is that right? <comment><USER2> qBittorrent if you want a drop in replacement for uTorrent, otherwise Transmission is great if you want it running in the background and like having some command line control.

[http://www.qbittorrent.org/download.php](http://www.qbittorrent.org/download.php)

<comment><USER3> Another vote for qBittorrent. I switched to it, after uTorrent started adopting shady practices, such as installing other apps and changing my system settings, without permission.

It [qBittorrent] is ugly as sin and there are also a few hoops to jump through to get rid of OSX's "Allow qBittorrent to accept incoming confections?" alerts. But I've found it rock solid and more reliable than either uTorrent or Transmission

</comment></comment><comment><USER4> Transmission. Hands down best in class.

<comment><USER5> Couldn't agree more! I also use this service and download off it to avoid ISP notices.. [http://put.io/](http://put.io/) also if the torrent is popular enough (downloaded at least once) it will finish it instantly! Which is pretty awesome.

</comment></comment><comment><USER6> I see a lot of recommendations for Transmission and qBittorrent. Having used both of them, I found them both to be great.

My only concern is that the Transmission site was hijacked and the download was replaced with ransomware [1]. For those still using Transmission, what are your thoughts on this?

[1] [https://blog.malwarebytes.com/threat- analysis/2016/09/transm...](https://blog.malwarebytes.com/threat- analysis/2016/09/transmission-hijacked-again-to-spread-malware/)

</comment><comment><USER7> Indeed, uTorrent has been trying to monetise by installing third-party software.

There are several options including Transmission and Deluge-torrent.

</comment><comment><USER8> Miro, an open source media player, comes with a great torrent client built-in: [http://www.getmiro.org/](http://www.getmiro.org/)

</comment><comment><USER9> WebTorrent Desktop: [https://webtorrent.io/desktop/](https://webtorrent.io/desktop/)

</comment><comment><USER10> Transmission ist awesome. qtorrent good too.

</comment><comment><USER11> I set up Deluge web on a server, and I use SFTP to transfer downloaded files to my Mac.</comment>


Faster Networks and Cheaper Messages = Microservices = Functions = Edge - <AUTHOR> http://highscalability.com/blog/2017/3/27/faster-networks-cheaper-messages-microservices-functions-edg.html <comment><USER2> Quite interesting, but the final point - not to worry about lock-in seems a little ridiculous to me. First off, it may hold for a simple product built in 12 hours but I have not yet seen a magic bullet that reduced the complexity of rebuilding software by several orders of magnitude. If you have something that took 2 years to build, it's not probable that cloud functions would reduce the rewrite barrier to anywhere near zero.

Secondly, there aren't that many alternatives - yet. This will probably be remedied.

</comment><comment><USER3> this is good. Worth reading.</comment>


Ask HN: Is A/B Testing your pricing considered unethical? - <AUTHOR> I'm working on a SaaS which allows you to generate configurable pricing pages connected to Stripe.
One of the things I wanted to do was to make it so you could have two pricing pages running so you can monitor how conversion rates change based on price. The problem is that I'm afraid our customers may get in trouble if they were to perform "unethical" tests (selling the same service at different prices to your customers).<p>I'd love to hear your thoughts. <comment><USER2> While this is a common view among engineers, in e.g. retail, you can trivially pay 13 different prices for bitwise identical copies of the same Chinese sock. See also how many different prices you can find for e.g. a Starbucks latte.

If you feel very strongly about this or need to get over internal objections, you can distinguish X for $Y and X' for $Z in some operationally insignificant way which is unlikely to materially impact conversion rates.

</comment><comment><USER3> It does not sound unethical, actually it sounds like normal market dynamics (adjusting your prices over time), and airline companies used to do that all the time and even Amazon experimented it. However if your customers notice the price for a good/service changes without logical explanation, they can resent your company and start complaining (publicly or not) about the unfairness of your prices. You might be interested in listening to an episode of Planet Money named "The Birth And Death Of The Price Tag" ([https://www.npr.org/sections/money/2015/06/17/415287577/epis...](https://www.npr.org/sections/money/2015/06/17/415287577/episode-633-the- birth-and-death-of-the-price-tag)).

</comment><comment><USER4> I'd say you might want to look at it a little differently. Look at it in terms of value, as well. Customers value widget X differently. One may think your widget is too expensive, and they'll go elsewhere and race to the bottom. Another may look at your offering and say OMG-this-is-exactly-what-I-need and _happily_ pay your higher price. You are solving a critical need for them, and they're happy to have you relieve them of the burden.

I think you want to look for the second kind of customer.

</comment><comment><USER5> Online shopping sites do it all the time, which I do find unfair, unethical I'm not sure.

But if we go there, you might as-well ask "is it unethical to run sales and discount promotions?" Users might not be happy to hear they missed out but I'd say no it's not.

</comment><comment><USER6> Are coupons unethical? These are just different coupons...

I tested about a dozen different offers for each b2c role I've had... never once considered the ethics... if a customer complained that their neighbor was getting it cheaper we'd just give them the discount.

</comment><comment><USER7> It's not unethical. People who buyat whatever price are clearly happy to do do so.

</comment><comment><USER8> Selling the same service at different prices to your customers is basically the definition of market segmentation. It's not inherently unethical.</comment>


Yanukovych leaks - <AUTHOR> http://yanukovychleaks.org/ <comment><USER2> One of the participants here.

It's been a crazy few days. We have documents drying in the former president's sauna, prosecutors waiting for each file to be scanned before confiscating it, and an incredible group of journalists working night and day to save as many documents as possible.

A few articles with more background: [http://gijn.org/2014/02/25/yanukovychleaks-org-how- ukraine-j...](http://gijn.org/2014/02/25/yanukovychleaks-org-how-ukraine- journalists-are-making-history/) [http://thelede.blogs.nytimes.com/2014/02/25/ukrainian- journa...](http://thelede.blogs.nytimes.com/2014/02/25/ukrainian-journalists- launch-yanukovychleaks/) [http://gijn.org/2014/02/27/yanukovychleaks-update- the-projec...](http://gijn.org/2014/02/27/yanukovychleaks-update-the-project- is-becoming-bigger/)

<comment><USER3> hey there - i'm a reporter w/ @mashable, wondering if you might be free for to do a quick Q&A? sorry to barge in on the thread but this is super interesting to me personally. - @moneyries / moneyries at gmail.

<comment><USER4> Please let them do their important real work instead of your pseudo-journalism about social media.

<comment><USER5> Holy cow Sprint, that is a really vicious reply, and totally unwarranted.

<comment><USER4> It is harsh but I stand by it. Take a look at mashable.com and maybe you will understand my aggression.

<comment><USER6> Mashable reports a wide variety of stuff these days, like this current top story:

[http://mashable.com/2014/02/27/russia-protect-ukraine- yanuko...](http://mashable.com/2014/02/27/russia-protect-ukraine-yanukovych/)

<comment><USER4> Of course! Anything that brings visitors who you can serve ads to is good content. Re-wording AP releases or stories from news websites does not take much time.

<comment><USER3> It's okay. News websites are easy to knock. Truth is we have spent months following this story and have a reporter on the ground in Kyiv. This is a sampling: [http://mashable.com/category/ukraine- protests/](http://mashable.com/category/ukraine-protests/). More here: [https://www.google.com/search?q=ukraine+site%3Amashable.com&...](https://www.google.com/search?q=ukraine+site%3Amashable.com&oq=ukraine+site%3Amashable.com&aqs=chrome..69i57.2719j0j7&sourceid=chrome&espv=210&es_sm=119&ie=UTF-8).

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> I'm not ignorant of the needs and concerns of self-promotion in order to build a popular campaign...but I hope they have a technical advisor who will, at some point, inform them about the technique of OCR and how a large hashtag- watermark can obstruct such a technique.

Also, minor detail, but the images should also be rotated to their proper orientation. Crowdsourcing data collection has to be as frictionless as possible, and this is an easy fix.

Depending on how many actual documents there are (i.e. how many pages are in those 200 folders), it might be worth it to go the route of ProPublica's "Free the Files" project, in which they built a mini-app that let people voluntarily transcribe the important fields in each document:

[https://www.propublica.org/series/free-the- files](https://www.propublica.org/series/free-the-files)

Their Al Shaw wrote a piece about designing for efficient crowd-sourcing:

[http://www.propublica.org/nerds/item/casino-driven- design](http://www.propublica.org/nerds/item/casino-driven-design)

They even open-sourced the Rails plugin for it:

[http://www.propublica.org/nerds/item/transcribable-free- the-...](http://www.propublica.org/nerds/item/transcribable-free-the-files-to- go)

<comment><USER2> > the images should also be rotated to their proper orientation

there's a rotate button when you click through to the detail page. We're tracking where images get rotated to, and setting the orientation according to that. It's still a bit buggy, but we're getting there

> the technique of OCR and how a large hashtag-watermark can obstruct such a > technique

We're running OCR over non-watermarked versions. We're hoping to have a search function up later today

Thanks for the links -- we'll look at them, and see what we can use

<comment><USER8> > there's a rotate button when you click through to the detail page.

When rotating some of the images (for example Img 999) it seems to cut the edges of the image off and clicking to zoom doesn't help.

</comment></comment></comment><comment><USER9> This is one of those Walls coming down moments for me.

I have banged on about how governments and states are losing their privacy as much as individuals - and whilst this is happening _after_ a political crisis, it is increidble to see a few determined hackers and some simple off the shelf equipment is throwing open the doors to a hidden state. Truly eye-opening, and something we should look for in our nice safe democracies.

PS Plus I know a few Ukrainians and hope that this can get resolved with no further bloodshed.

</comment><comment><USER10> They could crowdsource finding interesting stuff - eg, the Guardian had an app where members of the public were show random expense reports from politicians, and could flag unusual/odd expenses.

<comment><USER2> That's definitely the plan. We've been working flat out on this for the past few days, and the immediate priority is getting the documents preserved. [many of them were waterlogged, and have to be separated and dried in the presidential sauna]

But crowdsourcing is certainly going to happen

<comment><USER11> What if some of the documents contain private information of non-involved individuals? Any steps being taken to protect their details?

<comment><USER2> Good question -- this is definitely an issue we need to wrestle with.

For now, the vast bulk of the documents going up are business papers involving Yanukovich's companies and the management of his estates. I think those are fair game. But we'll get into murkier areas as time goes on.

For now, if you see something that you think shouldn't be public, drop an email to email@example.com and we'll look into it.

<comment><USER12> Isn't that a bit too late at that point in time?

Once something has been on the internet...

</comment></comment></comment></comment></comment><comment><USER13> I think this is awesome, I worry about it triggering a Russian response if there is something in there which ties back to the Putin administration.

What I really like is way in which Ukraine is going about this, unlike the Mideast (Egypt comes to mind), where it seems the only things the people who took over cared about was exacting retribution on the former government, rather than having "Make a stable and just government" as their first priority, and "Investigate and punish any crimes that may have occurred" as their second priority.

<comment><USER14> The first thing this new "government" did before doing anything else was repeal a law that allows regional rights to minority languages (Russian included) and demanded that the International Criminal Court charge the democratically elected Yanukovich with crimes against humanity.

They are only now trying to name an interim government. As far as how stable this government will be that is left to be seen, but if the US was willing to invest some resources in supporting the revolution and several of the candidates being named this week, as the assistant secretary of state Victoria Nuland seems to suggest in this intimate conversation ([http://www.bbc.com/news/world- europe-26079957](http://www.bbc.com/news/world-europe-26079957)), perhaps they'll be willing to bail out Ukraine's economy?

</comment></comment><comment><USER15> This should really be served with https.

<comment><USER16> Why? Any snooper still sees a DNS lookup for this domain followed by a connection to it. This is not such a dynamic site - it's fairly obvious what you will be accessing.

<comment><USER17> A site like this can have interesting corners not easily found. The knowledge that you know about such corners could itself be used against you. That's a good reason to serve it up as https.

<comment><USER16> That's a good point. You've convinced me :)

</comment></comment></comment></comment><comment><USER18> I'll take the images to the priest of the catholic ukranian parish I attend...

</comment><comment><USER19> This is in Russian (or Ukrainian) ... are the HN readers supposed to read fluently Cyrillic ?

<comment><USER15> It is English, as well. Look at the right-hand side of the screen.

<comment><USER20> I'm pretty sure he meant the actual documents and not the header text.

</comment></comment></comment><comment><USER21> This doesn't belong here at Hacker News.

<comment><USER22> Would you like to instead:

      talk about how to pivot yanukovychleaks.org to a billion dollar startup idea.

      Critique their choice of web framework.

      Talk about how to optimize bandwidth usage.

      Critique other design choices, usage/non-usage of CSS

      Discuss SEO strategies?

      Other?

<comment><USER23> I wish there were more JavaScript posts. Did you know you can do functional programming with it?! /s</comment></comment></comment>


Helium is leaking from massive earthquake fault in LA - <AUTHOR> http://www.dailymail.co.uk/sciencetech/article-3143818/Helium-LEAKING-massive-earthquake-fault-LA-raising-fears-big-one-devastating-thought.html

<comment><USER2> Who wants to go hand gliding?</comment>


The Chiral Puzzle of Life - <AUTHOR> https://iopscience.iop.org/article/10.3847/2041-8213/ab8dc6 <comment><USER2> Perhaps there is slightly slightly different ground energy state of the two different chiralities and Nature selected the slightly lower one. I have not seen evidence supporting this hypothesis.

A similar mystery is why DNA chose a base64 nucleic coding system for 21 amino acids and a few punctuations. Some of the codons are redundant and some unused. (There appears to be a fossil base16 coding system inside it.) And synthetic biologists have modified it into a working base216 system with additional nucleic acids and amino acids. Perhaps again there is some ground energy argument as to why this universal 3-billion year old coding system is as complex as it is and no more complex.

<comment><USER3> One hypothesis around the 20 amino acids relates to optimization of a quantum search algorithm [0]. Some recent work has added support to this idea [1].

[0] [https://arxiv.org/abs/quant-ph/0002037](https://arxiv.org/abs/quant- ph/0002037) [1] [https://www.technologyreview.com/2019/09/12/133081/an- import...](https://www.technologyreview.com/2019/09/12/133081/an-important- quantum-algorithm-may-actually-be-a-property-of-nature/)

<comment><USER4> That does not seem a good paper. The only references on biology are quite generic books. Also the stated hypotheses are quite unfounded. As far as I know, there is barely any evidence of biology using quantum phenomena directly, except perhaps regarding photosynthesis and enzymatic activity:

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

</comment></comment></comment><comment><USER5> Back in uni, I found it deeply unsettling to learn that the weak interaction violates parity symmetry. It feels like a glaring aesthetic flaw in an otherwise very elegant physical "design", so to speak.

<comment><USER6> Would you rather live in a perfectly symmetric universe without any matter in it?

<comment><USER7> It's strange that the weak force violates parity symmetry, and it's also strange that charge–parity symmetry, taken together, is much closer to being conserved but is still violated a little bit.

</comment></comment></comment><comment><USER8> Asimov wrote a book on the subject: [https://en.wikipedia.org/wiki/The_Left_Hand_of_the_Electron](https://en.wikipedia.org/wiki/The_Left_Hand_of_the_Electron)

</comment><comment><USER9> The origin of homochiral building blocks (amino acids, sugars) is certainly an old mystery. But it doesn't seem to be a very deep one. By that I mean that there are many physical processes that could have initially led to a small preference. Natural selection then would do the rest.

The deeper mystery is how self-replicating chemical systems ever came about in the first place. There are several fairly steep hurdles to overcome, and so far nobody has put forward a compelling, testable hypothesis leading from the "primordial soup" to anything even distantly resembling the simplest organisms.

<comment><USER10> Is it not pure speculation to assume that the world was present before living beings inhabited it? Who made these observations of a purely physicalist realm that predates beings with awareness? It may be true, but its unconfirmable, so we have to ask questions about what we can confirm. Chirality in the present is confirmable. A world made of physical matter and mind is confirmable. But strong questions about ontological declarations of life from purely physicalist material speculative histories are not only hard to answer, they assume more than they reveal.

      Edit: must have hit a nerve

<comment><USER11> Nobody's making that assumption. It's a hypothesis.

All evidence we have is consistent with a "world being present before living beings inhabited it".

Therefore the hypothesis is not disproved, which is all science ultimately says about facts.

<comment><USER10> Chirality is either an underlying property of biological life, or an epigenetic (so-to-speak) result from having a Spinning Something and then throwing Life into it. Reality itself could have a spin or orientation and therefore Biological Life would be subservient to such. In my opinion long- term adaptations have about as much pertinence to chirality as it does to magnetism. Either it turns or it doesn't, it doesn't slowly decide to over millions of years.

</comment></comment></comment></comment><comment><USER12> >a small, but persistent, chiral bias

>If this mechanism dominates, then the handedness of living systems should be universal.

No matter how large the bias (unless it's "astronomically" close to 1), there will be, by the law of large numbers, some world populated by life of the opposite chirality to the favoured one, due to it arriving first there, given the size of the universe.

<comment><USER13> Yup I don't think the author meant that all life in the entire universe must be the same chirality, just that the bias would be widespread across the universe

</comment></comment><comment><USER14> That's a really interesting idea that cosmic rays caused the chiral asymmetry. Any biologists want to chime in on how this fits in with other ideas on the problem?

<comment><USER15> That's honestly more a question for physicists and chemists. Biologists in my experience take a lot for granted because they don't really understand the fundamentals on small scales.

</comment></comment><comment><USER16> The story of Thalidomide and its effects on birth defects is a good story about the chirality of molecules and their significance. The same molecule on 2d paper suddenly becomes a teratogen when the racemic mixture is given (50/50 mix of the "right hand" and "left hand" versions.) When a simple molecule like this drug with only a single chiral center at the base of so many issues, imagine a protein with hundreds or thousands of chital centers and the potential effects (or lack of effect at all) with simple changes.

<comment><USER17> Your point on complexity is well taken.

I'd just like to recommend against using thalidomide as an example of chiral effects. Rather unusually, thalidomide has a nitrogen atom as its chiral center. As such, it rapidly racemizes (interconverts) at physiological pH. This makes the claim of stereospecific teratogenicity a bit puzzling as it shouldn't be possible to resolve by administering enantiopure thalidomide.

The mechanistic story of thalidomide is a bit complicated. Ultimately the mouse and rat models used couldn't possibly predict teratogencitiy as these models have an amino acid mutation (valine -> isoleucine) that prevents binding of thalidomide to Cereblon, the protein that mediates thalidomide's teratogencitiy [0]. Amazingly, although this story is oft-repeated, its origins are unclear. This is likely the origin of the myth [1], but knowing what we know now these results should be impossible.

[0] [https://elifesciences.org/articles/38430](https://elifesciences.org/articles/38430) [1] [https://pubmed.ncbi.nlm.nih.gov/583234/](https://pubmed.ncbi.nlm.nih.gov/583234/)

</comment></comment><comment><USER18> There's a bit of a callout to the handed chirality of life on Earth in Daniel Suarez' "Change Agent" [https://www.amazon.com/Change-Agent-Daniel- Suarez/dp/1101984...](https://www.amazon.com/Change-Agent-Daniel- Suarez/dp/110198466X)

Like all of his books, it's a quick read that feels a bit like a movie screenplay. Fast and fun, each book of his has a well-enough-developed hook, but overall I liked Daemon and Freedom best.

</comment><comment><USER19> Non-chiral protein life (as we know it) simply cannot exist, as enzymes rely on precise molecular shaping to implement the catalytic pathways for chemical reactions essential to life. Without chiral selection, it would be impossible to build these precisely folded polypeptides with well-defined functional groups.

So, for me, there is no question of "why chirality" — the entire chemical architecture of life depends on it. The question is, perhaps, "are there other options possible?"

</comment><comment><USER20> Actually only 19 of the 20 standard amino acids are chiral. Glycine is achiral.

</comment><comment><USER6> Is anyone working on building a mirror-image version of life in a lab? I want to know what anti-chiral chicken tastes like.</comment>


Ask HN: Public map database for travel restrictions? - <AUTHOR> Several cities, states, regions and countries have tied travel restrictions (e.g. quarantine) to live health metrics.  With those metrics changing daily, travel restrictions can change daily.  Is there a public dataset or database which can provide a list of restrictions which apply to people considering travel between location A and location B? If not, what are good sources of US & global travel restriction data to populate an open database?
CNN: https://www.cnn.com/travel/article/us-state-travel-restrictions-covid-19/index.html
Delta Airlines: https://www.delta.com/us/en/travel-update-center/flying-what-you-need-to-know/coronavirus-regional-restrictions
IATA: https://www.iatatravelcentre.com/world.php <comment><USER2> [https://www.kayak.com/travel-restrictions](https://www.kayak.com/travel- restrictions)

</comment><comment><USER3> There's also this from the CDC [https://www.cdc.gov/coronavirus/2019-ncov/travelers/map- and-...](https://www.cdc.gov/coronavirus/2019-ncov/travelers/map-and-travel- notices.html)</comment>


GitHub plans to replace racially insensitive terms like 'master' and 'whitelist' - <AUTHOR> https://thenextweb.com/dd/2020/06/15/github-plans-to-replace-racially-insensitive-terms-like-master-and-whitelist/ <comment><USER2> This strikes me as a bit silly, because "master"/"slave" are simply words that describe a relationship. One that unfortunately still exists in many parts of the world. We're certainly not going to stop using them to describe the original thing. These aren't derogatory terms, they're just terms. Terms that describe bad things, but terms. Surely people can see the difference between this and something like the "Washington Redskins" name, which is (arguably, but imo) an actual derogatory term.

I don't really have any concerns about whitelist/blacklist (I'm aware of the history) because alternatives are more explicit. Allowlist/Denylist seem strange to hear at first, but they're intuitive, so I'm fine with it.

With master/slave, in Djangos case[0], they replaced it with "leader" and "follower", which obviously have different meanings. Master and slave have a very explicit connotation, which is that one _controls_ the other, and the other _has_ to do everything the other says. Leader/follower does not fit the bill to describe that relationship. We're explicitly and objectively losing precision because we've decided that non-derogatory non-outdated accurate terms in the English language make some people uncomfortable.

And again, to really drive this point home, these are _just words_. They are _not_ derogatory terms. They're used in accordance with their dictionary definition. This is like saying we should stop using "kill" to describe the termination of a program because people have been killed and that makes some people sad when they think about it.

[0][https://github.com/django/django/pull/2692](https://github.com/django/django/pull/2692)

<comment><USER3> I always learned that in language context matters. In the current context master has nothing to do with slavery. Perhaps once when bitkeeper had master/slave you could see it different.

Apparently these people focus only on the word without any consideration.

That said, I do understand it in the master/slave context.

<comment><USER4> Do you also understand it in the owner/slave context? Want to get rid of 'owner'? What other words are you willing do expunge? Will you be able to say anything at the end?

</comment></comment></comment><comment><USER5> This movement is so stupid. It's like the novlang in 1984. Master meaning is very large:

[https://www.merriam-webster.com/dictionary/master](https://www.merriam- webster.com/dictionary/master)

Yes, some times it was used in the master/salve context but it is far from its most common meanings. It's not even its meaning in the case of a git branch.

With all of that, I think that the world is on the straight line of the future described in the Idiocracy movie!

</comment><comment><USER6> CS is filled with such terms like zombies, orphans, reaping dead children, etc but nobody finds them offensive as we know it has nothing to do with their literal meaning.

<comment><USER7> Seems easy enough to imagine who would be offended by the use of terms "orphans" and "dead children," and why they would prefer not to bring it up constantly.

<comment><USER8> The issue is that you can have that with nearly every term that has some meaning. Leader/follower? But I've once met a terrible Leader and they had many followers that made my life hell.

If the argument is "but that's only true for very few people": what percentage of the population (or the subset of the population that is programming) does need to be affected before it needs to be changed? Orphans aren't that common either, neither is losing a child.

</comment></comment></comment><comment><USER9> This appears to be a deliberate distraction from Nat Friedman's decision to continue the contract with ICE.

[https://www.theverge.com/2019/10/9/20906213/github-ice- micro...](https://www.theverge.com/2019/10/9/20906213/github-ice-microsoft- software-email-contract-immigration-nonprofit-donation)

Unlike that, this change doesn't cost anything.

</comment><comment><USER10> Git does not have the "slave" term, only "master" term. But the "master" term is being removed because it is derived from master-slave connotation from Bitkeeper allegedly.

[https://discourse.gnome.org/t/renaming-master-branch-to- main...](https://discourse.gnome.org/t/renaming-master-branch-to- mainline/841/15)

Master-slaves have been replaced in many projects, such as Drupal (primary/replicas), Django (leader/followers), OpenSSH (parent/children).

I wonder what would happen to robot term? Robot comes from Czech language, which is robota. It means forced labour.

[https://wordhistories.net/2017/06/14/origin-of- slave/](https://wordhistories.net/2017/06/14/origin-of-slave/)

<comment><USER11> This is the one I don't understand.

Changing blacklist/whitelist is fine, we can make this better.

Changing master in instances where no pairing exists with the word slave doesn't make any sense to me.

<comment><USER12> The word doesn't make any sense in the context of something that is constantly changing. And Gitnis graph based and the is no real concept of a trunk, like in SVN. So we start calling the dog a dog, instead of a rock.

</comment></comment></comment><comment><USER13> Discussed many times in the past week:

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

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

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

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

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

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

</comment><comment><USER14> I like how @antirez put a case against such renames in writing [http://antirez.com/news/122](http://antirez.com/news/122)

OTOH, what i am worried about is a change for the sake of the change. It gives opportunities to dishonest people with hidden agendas.

</comment><comment><USER15> It allows developers working for multi national corporations who exploit people around the globe to feel better and safer and purify their workplace of certain negative things, toxic people and retrograde attitudes. If it means that a developer has to change their language to something better to be able to continue to extract wealth from the poor, so be it.

These kind of actions in a non profit or activist space would go unnoticed

Don't let perfect be the enemy of good.

</comment><comment><USER16> Mass hysteria - everyone needs to take a 7 day holiday from the news media and the internet.

</comment><comment><USER17> master->slave can be replaced with: employer->employee... omg what have I done with my life (O_o)

</comment><comment><USER18> "If I don't see it it doesn't exist"

</comment><comment><USER19> I can understand removing master/slave, but by the logic of blacklist/whitelist, the color names "black" and "white" should also be removed.

</comment><comment><USER20> The dictionary says that a definition of master when used as an adjective is "main; principal." 'the apartment's master bathroom has a free-standing oval bathtub'"

This has nothing to do with slavery.

<comment><USER21> A dictionary first and foremost tells you the use/meaning today. You need to look into the etymology to understand if it has something to do with slavery.

<comment><USER22> What's the point, though? I doubt you have a deep knowledge of the etymology of every single word you use, even for the ones you use all the time. I bet you would feel forced to use a very different and extremely narrow set of words if you did. You might even have chosen another username if you were "sensitive" to how "saber" alludes to an instrument of historical oppression and suffering.

And yet not many people do or seem to care. Why? You might say it's because our culture is still not enlightened, but it really is just because it doesn't matter what the usage used to be as long as it's used with a different, more- or-less harmless meaning today. Not only that, but what about words that have had countless interpretations since forever (black/white)? Why pick the one that happens to be racist?

And I may be making a wild conjecture here, but it's not like talking about a "master branch" will make you more likely to become pro-slavery. I mean, what would "master branch" even mean out of the context of version control?

Words are just labels to meaning. It makes no sense to care about the label. People have declared love with N-words and advocated for genocide with flowery language. Banishing words is a prime example of bikeshedding.

<comment><USER23> > I mean, what would "master branch" even mean out of the context of version > control?

stop being mean. you shouldn't impose your control. whip me for telling you not to. and scold them for whipping me. decentralize the git commit hierarchy! no order!</comment></comment></comment></comment>


Recruiting Engineers: Getting intro emails right. - <AUTHOR> http://alexeymk.com/recruiting-penn-engineers-intro-emails-that-d/

<comment><USER2> Even if the person sending the email gets it right and jumps through all the hoops, the chances are still very slim that they will find an engineer. The whole exercise is pointless, there are better ways than spamming someone's inbox about a job opportunity.

</comment><comment><USER3> "Seriously, if you can't spel or have trouble with ALL CAPS, please ask a friend to proofread your email. Complete, grammatically correct sentences are a minimum requirement."</comment>


Brother got deported illegally - <AUTHOR> I realize he had a lot of felonies and got in trouble a lot but they sent him back to a violent country where he can die Somalia the worst part . He is married here and has 2 children he lived here for 20 years what can we do to bring him back to his kids or just get him out of that horrible country <comment><USER2> What part of his deportation was illegal? That would give you a starting point.</comment>