African Swine Fever Is Spreading and Eliminating It Will Take Decades - <AUTHOR> https://www.bloomberg.com/graphics/2019-eliminating-african-swine-fever/ <comment><USER2> This is pretty horrifying:

 _A United Nations report suggests some food-waste containing pork was dumped from a ship visiting the port of Poti on the Georgian Black Sea and then eaten by one of the local pigs that are allowed to scavenge on garbage. Within weeks, 30,000 pigs had died and 80 percent of Georgia's districts were thought to be infected._

<comment><USER3> I learned recently that pigs are fed all kinds of scraps even pork. Why aren't they vulnerable to diseases similar to mad cow disease?

<comment><USER4> For the same reason BSE is rare, we stop higher risk spinal columns entering the food chain at any point. They are removed and incinerated.

</comment></comment></comment><comment><USER5> Has there been any talk of risk that it can jump species?

<comment><USER6> Meat agriculture at large scale always presents a pandemic risk... zillions of animals crammed next to each other peeing and pooping next to human workers is never A Good Thing™, because it's a worse Petri dish/bioreactor than a college dorm or a hospital. Also, the antibiotics given to meat ag animals also risks human antibiotic resistance if the same one is given to animals. These are the main reasons I don't eat meat. In a sane world without corporate capture, fossil fuel use and meat ag would end immediately. Vegetarianism is necessary but often feels pointless like screaming into a hurricane while waiting for Godot.

</comment></comment><comment><USER3> When I first read about African Swine fever last year it was reported to have a "100%" mortality rate. Its like the swine version of ebola.

<comment><USER7> Ebola doesn't transmit very easily....this does.

<comment><USER8> What do you mean by "easily"? Do you mean it's not airborne?

<comment><USER9> It's not airborne. From the article:

> The germ is hardy, capable of remaining active in water for a month, in meat > and blood at room temperature for several months and for six years in cold, > dark conditions. It's resistant to temperature extremes, and can survive a > day in vinegar-strength acids.

Ebola's only active for several _days_ at room temperature. [https://www.cdc.gov/vhf/ebola/transmission/index.html](https://www.cdc.gov/vhf/ebola/transmission/index.html)

<comment><USER10> That's close to anthrax levels of nasty. Sometimes cattle in California and Nevada come down with anthrax even though the disease hasn't been endemic for 100 years.

</comment></comment></comment></comment></comment><comment><USER11> I don't eat pork (religious reasons) but I'm curious on why this virus is so lethal? Climate change letting African germs survive in North Eurasia? Are there any equivalents for other domesticated animals? Yes, there's Bird Flu which is similar (and worse in that it can jump species to humans), but what about cattle? Sheeps? ... Cats and dogs?

<comment><USER12> From the text:" One of their difficulties is that the large, complex DNA virus that causes African swine fever has some 170 genes and 80 proteins, many of them specialized in evading different aspects of the pig immune system. "

So it is evolution, probably facilitated by certain conditions.

A huge amount of genes is also a weakness and might be targetted with specialized measures (like a proteine/gene-blocker). But the usual tricks wont work as well.

</comment></comment><comment><USER5> This is exactly the kind of virus we need to understand how to build a vaccine. Something like this in humans is scary. Here is to hoping that our understanding of biology is reaching a point where we have more methods of attacking these kind of things.

</comment><comment><USER13> Food animals don't get the option to travel around town at will. There should be no possible way for the disease to spread.

The fact that the disease does spread means that farms are failing to provide biohazard isolation.

We can see a similar problem with chickens. We actually give vaccines to chickens. The vaccines would be pointless if the chickens were properly isolated from contamination. Viruses do not spontaneously form from chickens or from non-living matter.

<comment><USER14> Disease can be spread by more ways than simple food-animal-to-food-animal contact. For example, bovine TB kills cows but doesn't kill badgers, so a badger can spread it between herds. You can't stop that by isolating the cows.

There was a very controversial cull of badgers here in an attempt to stop it but even that didn't work.

Disease management is hard.

<comment><USER13> You stop that by isolating the cows from badgers and any other wildlife. Workers and their clothing and tools get cleaned when entering and leaving the facility.

The only thing hard about disease management is the competitive race to the bottom. Skimping on disease management means you don't have to train the workers, don't have to spend money on bleach, and don't have to repair holes in the walls. Maybe you don't even bother with walls.

<comment><USER14> _You stop that by isolating the cows from badgers and any other wildlife._

Beyond raising cattle in a hermetically-sealed shed that is effectively impossible,and definitely beyond the bounds of any sort of economic reasoning.

</comment></comment></comment></comment><comment><USER15> Considering the similarity in Pigs and Humans shouldnt this be raising all sorts of alarms ?

</comment><comment><USER16> Could this virus help eradicate wild populations of feral hogs?

Protecting the pork industry is all well and good, I love ham as much as anybody else, but sacrificing a few years of pork production seems like it could be a good deal if it means the eradication of environmentally destructive feral hogs.

<comment><USER17> This is how you destroy an ecosystem. Bringing in one organism to fight or replace another without thinking about the full consequences.

<comment><USER18> I mean, foreign feral pigs are a big problem in Oz. They aren't native to the recent ecosystem. But that whole cane toad thing didn't work out so good.

<comment><USER19> Here is the matching Simpsons clip: [https://m.youtube.com/watch?v=mpzj1IvEhTA](https://m.youtube.com/watch?v=mpzj1IvEhTA)</comment></comment></comment></comment>


BitLegal: Russia - <AUTHOR> http://bitlegal.io/nation/RU.php

<comment><USER2> Whether you're pro or against bitcoins, the fact that Russia doesn't like them makes one think that being able to have money that's not controlled by any particular government is too liberal for people.

<comment><AUTHOR> Well China banned them too and then softened their stance after some protest/resistance.

Russia might come around too but given how they seem to be returning to an iron fist, maybe not.</comment></comment>


FlexBox Playground - <AUTHOR> http://the-echoplex.net/flexyboxes/ <comment><USER2> I've built a flexbox cheat sheet [0] because I used to look up some properties quite often.

[0] [https://darekkay.com/dev/flexbox- cheatsheet.html](https://darekkay.com/dev/flexbox-cheatsheet.html)

<comment><AUTHOR> Yeah man, finally a usable Flexbox cheat sheet :D

</comment></comment><comment><USER3> This reminds me of one of my favorite Flexbox tutorials, Flexbox Froggy: [http://flexboxfroggy.com/](http://flexboxfroggy.com/)

<comment><AUTHOR> Yeah, like that game too, but I still find it hard to remember the attribute to effect relation and I think to play around with the attributes the playground is better suited.

<comment><USER4> I've been going through this flexbox zombie game, can't say yet how much it will stick but it seems like a good amount of repetition - [https://geddski.teachable.com/p/flexbox- zombies](https://geddski.teachable.com/p/flexbox-zombies)

</comment></comment></comment><comment><USER5> I really like this, but I wish it wouldn't create a history entry for every single parameter that gets changed. Modifying the URL in place is totally sufficient (and I think it's great that you can link directly to results).

</comment><comment><USER6> I think it's a terrible playground.

Of course I must say I don't wish any disprespect to pete_b. Efforts like these always appreciated, and it does have value, at minimum allowing others to learn and evolve from it.

It could just be so much more intuitive to illuminate the most important flexbox levers and more effective as a productivity tool to quick prototype results for use in other code.

<comment><USER7> IIRC, this has been up for a very long time, and was one of the first real Flexbox demos online. So, its likely been abandoned by the dev (for updating/improvement purposes), and left as-is for posterity.

The first time I played with flexbox, I needed something, anything, to show me how it worked, and this saved me the time of making the same thing by hand. It was a great learning tool.

I found a few of these demo sites for flexbox, and I'd hit them when I was trying to figure out a new property or method. Then after awhile, I didn't need them anymore. So I wouldn't ever expect it to be anything more than a teaching tool, not a dev tool.

</comment></comment><comment><USER8> Toggled display from flex, to inline-flex and back to flex and it displays differently. Don't think its working as expected.

</comment><comment><USER9> I don't understand why is there a need for loading delay when a style property is changed. Applying CSS styles to a html element should take effect almost instantly.

</comment><comment><USER10> Urgh. No statement of problem or solution, requests investment of time, apparently has bugs on safari (stuff appears outside of main box area).

<comment><USER11> That's on safari, not the programmer.</comment></comment>


Biohackers Creating Open Source Insulin to Disrupt Big Pharma - <AUTHOR> https://experiment.com/projects/open-insulin <comment><USER2> This is misleading. The first insulin patent was filed in 1912, and has long since entered the public domain. The drug has been vastly improved over the years, but only the newest version is still patent-protected. The reason why there are no generics in the US seems to be that unlike most drugs, where virtually the entire cost lies in R&D, all the known variants of insulins are very costly to produce. This is what this project aims at, gearing to develop a genetically modified E. coli strain, which would bring down the cost of production to that of citric acid.

<comment><AUTHOR> So, we are doing the research to make a protocol for the production of insulin. While the drug is off patent, it requires scientific research to create a protocol to correctly express, fold and purify a biologic drug like insulin. Just expressing pro-insulin from e-coli is not enough to create a usable drug.

Here is an article explaining the generic market for insulin: [http://www.nejm.org/doi/full/10.1056/NEJMms1411398](http://www.nejm.org/doi/full/10.1056/NEJMms1411398)

And here is an explanation of the difficulties of creating insulin written by our scientific adviser: [http://blog.indysci.org/insulin-is-hard-but-not- impossible/](http://blog.indysci.org/insulin-is-hard-but-not-impossible/)</comment></comment>


Double Pendulum Visualization - <AUTHOR> https://jnafzig.github.io/2018/02/05/double-pendulum.html <comment><USER2> Nice graphics!

In the bottom graph of the time to flip:

The point of the white eruption to the right looks like a fractal. Is it a fractal or it's only an artifact of the simulation? Can you post a zoom of that part? Can you run that part with more precision in the simulator and compare them?

What is the white smooth quarter/parabola at the bottom? Is this the zone where the energy is not enough for a flip? Is there an easy way to calculate/approximate it analytically?

Image version of the questions: [https://imgur.com/a/siyEy](https://imgur.com/a/siyEy)

<comment><USER3> I had the same thoughts.

There definitely is an easy way to calculate a lower bound on the amount of energy required for a flip. It is simply the gravitational energy with the top pendulum on the lowest position and the bottom pendulum upright.

The total energy of an initial condition can be calculated very similarly, because it starts of stationary. For the exact calculations it matters whether the pendula have a point mass at the bottom or matter throughout the stick. This matters a lot more for the actual simulations though, due to moment of inertia.

Let's presume point masses at the pendula, a weight of 1 unit for both and a length of 1 for both. Similarly, we set the gravitational acceleration to 1. We set the energy where both masses are level with the pivot as 0. We call the angle of the top pendulum A and that of the bottom pendulum B. Angles are measured against the horizontal (doesn't match the image but is easier to calculate with)

Then the potential energy of an initial condition is: sin A for the top pendulum and (sin A) + (sin B) for the bottom one leading to 2 sin A + sin B in total. The minimal energy for a flip is -1.

Thus the threshold energy for a flip would be the curve [2 sin A + sin B = -1] wolfram alpha tells us this:

[http://www.wolframalpha.com/input/?i=2+sin+x+%2B+sin+y+%3D+-...](http://www.wolframalpha.com/input/?i=2+sin+x+%2B+sin+y+%3D+-1)

That curve seems to match the image if you take into account the rotated angle (I took angles with the horizontal, the image uses angles with the vertical, with an angle of 0 pointing down).

So I'd guess that indeed when there is enough energy for a flip, it tends to happen. This is kind of expected when you know that chaotic systems are often 'ergodic' (not sure how that works in Hamiltonian systems, i.e. those with a preserved energy). This vaguely means that movement is so erratic as to reach every single point it could. Thus when it can flip, it probably does. The real interesting question is why it doesn't flip in that seemingly fractal part. It would be even more interesting if we could have some formulation of that fractal kind of like the julia or mandelbrot fractal.

<comment><USER4> The fractal part looks to me like it's probably better colored as a very deep green. It likely would flip eventually, but reached a simulation time limit first. There's a few other small areas that are near green streaks that are also colored in white, too.

</comment></comment></comment><comment><USER5> Another visualization, using JS to solve the Langrangian: [https://matthewarcus.github.io/lagrange/](https://matthewarcus.github.io/lagrange/)

</comment><comment><USER6> I really like the animation, but I'm confused by it. I thought that the whole thing with chaotic systems is that extremely slight differences in starting positions lead to very different outcomes. The continuity of the gif is surprising.

<comment><USER7> You'll see the chaotic behavior if you look around the vertical initial state at the top center of the graph. The initial states nearby evolve quite differently than each other.

"Chaotic" describes a system only locally around specific initial states. So a system can be chaotic near one initial state and stable near another.

</comment></comment><comment><USER8> Using automatic differentiation is very cool. Kudos</comment>


Marketing A Physical Product Like A Web App (WhiteyBoard on Wired) - <AUTHOR> http://thehopkinsonreport.com/2010/06/17/episode-109-can-you-market-a-physical-product-like-an-online-product-interview-with-whiteyboard-com/

<comment><USER2> Here's my quick review of the whiteyboard:

After seeing the techcrunch review climb the HN front page a couple months back, I convinced my office to buy two of the 4' x 6' Berthas. I left the actual ordering up to my office manager. Five days after ordering, we still hadn't received our order so we called the folks at whiteyboard who told us that they must have lost our order. So we ordered again, they apologized for the inconvenience, and we were told it would be there within the week. A week passed and still no whiteyboard. We called the whiteyboard guys and they told us, sorry, but your order is stuck in customs. We apologize for the wait, but we'll get your order to you as soon as possible. So about 3 weeks later, our whiteyboards arrived. Drumroll please....

We put up the whiteyboard last week. There's a reason they don't show the Bertha in their demo video. It took 3 of us to put that monster up. After we got all the bubbles out, I wrote on it with the dry erase and tested her out. Writing on a whiteyboard is, as you would expect, exactly the same as writing on a white board. Next, I took the dry erase eraser to erase what I had just written. This works ok, but not as well as a regular white board. The dry erase smudges a lot more on the whiteyboard and you're left with a tint of whatever color you had just written in. A slightly dampened paper towel takes care of this though.

Each day I come in the office, the edges of the whiteyboard are slightly peeled away and there are a few bubbles in the middle of it to iron out so this can get a bit annoying, especially if there is stuff written on it that you don't want to erase.

Aside from the ordering snafu, I would say that the folks at the office seem to think the product is ok. Since I'm the youngest in the office, I have jokingly been dubbed the "whiteyboard guy" so I get a lot of shit for all its little quirks. My fallback retort is that we paid 10% of what a comparably sized white board costs and it still gets the job done. And even though it seems slightly ghetto at times, that's what matters, right?

</comment><comment><USER3> They need to add a 4th product option: _her_ phone number.</comment>


Data geeks: I need data on musical acts. Where to look? - <AUTHOR>

I need data on the thousands of bands and musical acts: City, year formed, number of albums, etc.
I'm looking for the entire data set, not an API like last.fm.
Any suggestions? <comment><USER2> MusicBrainz might be what you're after:

<http://musicbrainz.org/doc/About_MusicBrainz>

<comment><AUTHOR> Thanks! That was just what I needed. I downloaded he data dumps, ran some simple text processing, and now have over 400,000 unique artists to work with.

Cheers!</comment></comment>


Samsung unveils world's first solar-powered phone - <AUTHOR> http://www.business-standard.com/india/news/samsung-unveils-world\s-first-solar-powered-phone/64304/on

<comment><USER2> or you could just get a portable solar charger that works with a multitude of devices like this one for <$20 shipped world-wide: <http://www.dealextreme.com/details.dx/sku.9134></comment>


Jakob Shattering v1.0.1 has been released - <AUTHOR> https://gitlab.unizar.es/699623/distributed-parallel-cracking-paswords <comment><AUTHOR> Additional info: [http://uninfmill.com/jakob_shattering.html](http://uninfmill.com/jakob_shattering.html)</comment>


OpenBSD Desktop in about 30 Minutes - <AUTHOR> Finished install yields OpenBSD 6.0, Lumina DE, Firefox, mplayer
Install base system # https://www.openbsd.org/faq/faq4.html
### As Root
# Increase resource limits vi /etc/login.conf:
:datasize-max=2048M:\
:datasize-cur=2048M:\
# Execute commands as root:
vi /etc/doas.conf:
permit nopass username_created_during_install
# Package mgmt: PKG_PATH and pkg.conf
# Edit .profile to add package path:
export PKG_PATH=http://ftp.OpenBSD.org/pub/OpenBSD/6.0/packages/amd64/
vi /etc/pkg.conf:
installpath = http://ftp.OpenBSD.org/pub/OpenBSD/6.0/packages/amd64/
# Improve disk performance
vi /etc/fstab:
Append "softdep,noatime" to all entries with filesystem type ffs after rw
Ex: .... rw,softdep,noatime 1 1
# Get wireless working w/ or w/o WPA
# Determine wireless interface name (ex. iwn0) with ifconfig:
ifconfig -a
# Establish wireless w/ WPA, substituting own interface name:
ifconfig iwn0 nwid network_id wpakey password
dhclient iwn0
#Establish wireless w/o WPA, ex: guest network
ifconfig iwn0 nwid network_id -wpa
dhclient iwn0
# Make wireless perm:
vi /etc/hostname.iwn0
dhcp nwid network_id -wpa # Without WPA
dhcp nwid network_id wpakey password # With WPA
# Reboot
reboot
### As mortal user
# Install packages:
# Ex: pkg_add -v <package>
# mplayer plays media, esp. YouTube in browser
doas pkg_add -v firefox lumina mplayer # Installs Firefox, Lumina DE, and mplayer
# Start xscreensaver daemon to use Windows-L xlock
# Activate tap-to-click for trackpad (skip if desktop computer)
# Configure Lumina DE to invoke with "startx" under own user
vi .xinitrc in own directory:
synclient TapButton1=1
syndaemon -i 1 -d
xscreensaver -no-splash &
exec Lumina-DE <comment><USER2> I haven't used OpenBSD in a long time, so this is worth a go.

</comment><comment><USER3> Can somebody comment on how good/bad is the driver support in the BSD land? I'm interested specifically in wireless and graphics.

<comment><USER4> I tried using FreeBSD 11 and XFCE as my development platform.

Good: XFCE worked OOB with Intel graphics outputting displayport to a 2560 x 1080 display.

Bad: Video playback in VLC and FireFox was choppy.

Not sure if the AMD FirePro or AMD Quadro have better support than Intel graphics. I ended up switching back to Debian.

</comment></comment><comment><USER5> Any reason why you chose Lumina over many of the other ones? Just curious.

<comment><USER6> Not the author, but from the FAQ[0] it says Lumina was specifically designed for the needs of TrueOS (aka PC-BSD aka desktop FreeBSD), and "works very well for the BSD community at large." It also does not require a lot of the "typical" dependencies found with more Linux-oriented desktop environments (DBUS, policykit, systemd, etc), thus I imagine making it easier to build/install on OpenBSD.

[0] [https://lumina-desktop.org/faq/](https://lumina-desktop.org/faq/)

</comment></comment><comment><USER7> just started playing with OpenBSD. really nice project. Thanks for posting this, interesting to play around with for sure and get oriented a bit in BSD land!

</comment><comment><USER8> All my servers run FreeBSD so why not!

</comment><comment><USER9> Sure, but why?</comment>


BrowserStack Post Mortem (Shell shocked) - <AUTHOR> http://www.browserstack.com/attack-and-downtime-on-9-November

<comment><USER2> I cannot really give a good explanation, but I feel like this isn't the whole story. They make it sound like it isn't a big deal, but in the post detailing the "breach" there was some talk about people stating that they have seen other peoples session in progress. If their story on this page is true that really should have been impossible.

<comment><USER3> Nice reminder to patch _all_ your servers, not just your 'active' ones (can't believe they didn't do that).

This totally misses out on 'motive', that mail was far to cleverly crafted to be just some drive-by hacker that targeted browserstack for the fun of it.

Good they did a write-up though, so points for them. It must be very hard to draw the line on transparency when you write a document like this, I tend to think that it is better to spill all the beans, even the uncomfortable parts but for business reasons they may decide to keep some of the information to themselves.

"Both the passwords mentioned, 'nakula' and 'c0stac0ff33', were indeed in use a couple of years ago during our prototyping phase, and thus were present in the old prototype machine that was hacked. 'nakula' was previously our VNC password, and was hashed. However, unlike the hash used for the user passwords, this hash is much weaker. This was due to a limitation in VNC protocol, and we had overcome this liability by regenerating a new password for every session, and thus 'nakula' has not been in use for years. 'c0stac0ff33' was one of our system user passwords on the prototype machine, before we moved to key-based authentication."

Still points very strongly to a bad leaver. No outsider would have that info, I'd be digging through my older personnel records for suspects at this stage.

Still waiting for that updated postmortem from [http://www.codespaces.com/](http://www.codespaces.com/)

</comment></comment><comment><USER4> > All user passwords are salted, and hashed with the powerful bcrypt > algorithm, which creates an irreversible hash which cannot be cracked

While using bcrypt is great, it is not uncrackable.

It is still vulnerable to brute force attacks. If you have a strong password it wont be cracked, but most people don't

<comment><USER5> Can you explain this in more detail? As a crypto noob I have always used bcrypt to hash the password concatenated with a unique salt for that password and stored the hash in my db. Is this no longer sound advice?

<comment><USER4> No, it's still best practice.

The problem is it's impossible to protect weak passwords, because attackers can just run a password database through your hashing algorithm and see if there are any matches.

i.e. Just because you can't reverse a hash to get the password, doesn't mean you can't hash a bunch of passwords to figure out which leads to which hash

<comment><USER6> Thanks for making that point - that's been going around my head for a few weeks whilst pondering on password encryption. Rainbow table attacks are still more than possible with all of these algorithms when used on their own?

So salts are certainly the way to go, as, although they're "known" (appended to hash, or stored elsewhere in DB), the hash can't be compared to a generic table, it'd need to be a full dictionary table of hashes already encrypted with that salt (which theoretically/hopefully is used only once)?

</comment></comment></comment></comment><comment><USER7> Hmm. Another one for your security audit. I was able to change the registered email address on our account

1) Without re-entering my creds following login 2) With no notification to the old email address that this had been done.

</comment><comment><USER8> One of the most detailed, and candid, post-mortems I've read. Kudos.

<comment><USER9> "All user passwords are salted, and encrypted with the powerful bcrypt algorithm, which creates an irreversible hash which cannot be cracked."

<comment><USER10> I assume you mean to point out that it is disingenous to say that _any_ hashing algorithm "cannot be cracked"?

</comment></comment></comment><comment><USER11> It's good that this was published, some tough lessons in there. It's missing a timeline though, which is important to learn from - when was it realised that user data was accessed, how long did it take to figure out that keys were stolen, exactly when & what actions were taken to protect customer information, etc.

Other interesting details not covered was whether an incident response plan existed or was followed, how many unpatched Internet-facing servers were sitting around and whether any existing security measures did actually work in slowing down the attacker.

</comment><comment><USER12> This is probably(/definitely!) sensitive information, but I'm always interested to know what impact this sort of thing has on a company's customer base. Customers/potential customers being put off by the malicious email/downtime vs. content of post-mortem and how professionally the incident is handled.

Even a negative incident like this has put BrowserStack in the spotlight for a short time ("no such thing as bad publicity" and all that).

</comment><comment><USER7> Another thing to mention here - we've received no direct contact from BS at all following this - if we hadn't been following this on HN (and we were a little naive) we might still not know this email was not genuine. The blog post mortem is great, but I think it's a poor show not to reach out to affected customers directly.

<comment><USER13> I just got an email from them containing the text of this blog post, you'll presumably get one too, it's just that it takes time to email hundreds of thousands of people.

</comment></comment><comment><USER7> Is anyone from BrowserStack monitoring this thread? We received the email so we can assume our account was accessed by the hacker. Passwords crypted and salted (ok - changed) but what about the BrowserStack automate username and token, generated by BS themselves, that we are unable to edit or regen?

<comment><USER14> that is in a different table which was not compromised.

<comment><USER7> OK, I want to make sure though. How can these creds be regenerated? What happens if _we_ had leaked them accidentally, there seems no way to regen them?

<comment><USER7> Thanks (can't reply direct to the reply for some reason)

<comment><USER15> There's some kind of algorithm that prevents two users ping ponging comments too quickly. Not sure exactly how it works, but I've had experienced that before.

</comment></comment></comment></comment></comment><comment><USER16> > All user passwords are salted, and hashed with the powerful bcrypt algorithm

It is so refreshing when you come across a company that takes user password handling seriously.

</comment><comment><USER17> If only everyone who is hacked provided such detail, we might learn something to avoid being the next provider of such detail.

</comment><comment><USER7> Me again.

"he was only able to reach less than 1% (our estimate is 5,000 users)"

So you have 500k registered customers then? Surely not.

<comment><USER18> [http://www.browserstack.com/growth](http://www.browserstack.com/growth)

"475,000 registered developers"

<comment><USER19> The Last-Modified header for the image is from 18 July 2014 so they could certainly have passed 500K over the last few months.</comment></comment></comment>


Microsoft is now worth more than Alphabet - <AUTHOR> https://www.fastcompany.com/40579141/microsoft-is-now-worth-more-than-google <comment><USER2> As a long term investor, I'm worried with Google. All the bills are paid by ad revenue, a single horse. Then there is this bubble of claims that they have the best engineers and work environment yet this has not produced any other business equivalent to the ad business. Then they have a reputation of creating awesome tools that then get killed in years, enterprise customers don't like this unpredictability. Microsoft on the other hand is the master of supporting old platforms, I've seen some really old apps (from the 90s) run on the latest OS's. Enterprise loves this and that is were the money is. The only clear strength I see on Google is that they are masters of advertising and I see how they sell to developers that there way is the way to go. That is a good HR strength since they will always have a pipe of engineers that want to work for them.

<comment><USER3> Ads are Google's business model, but they make their major money from a few different leading products : Search, ad platform(both internal and external), YouTube, Android.

<comment><USER4> Do you have a reference for these claims?

Search and Youtube seem to be ad hosting platforms, and "ad platfom" seems it would be from ads. The Android ad revenue slice seems to be missing from Google.

</comment></comment></comment><comment><USER5> Kind of interesting to see Microsoft & Amazon 'passing by' Google lately, considering how much more earning power they have than either of them.

Even if Amazon didn't spend a dime on R&D the most they could've earned on operating income is ~$26B, if Microsoft zeroed out their R&D they could've had about ~$35B.

Meanwhile, if Google decided to go full-profit last year they would've had on the order of $42B.

<comment><USER6> Clearly some investors don't believe in Google's moonshots.

<comment><USER7> So far have any worked out?

<comment><USER8> Gmail and Android can be considered moonshots, completely separate bets from the cash cow search product. They have both been enormously successful and been the starting point for new revenue lines (the whole GSuite for businesses, the Play Store)

Next moonshot which looks extremely promising is Waymo

</comment></comment></comment></comment><comment><USER9> >Google's demotion is undoubtedly only temporary.

I think so, the revenue trend for Google is too strong. Google passed Msft in revenue in FY2016 I believe.

But the public perception around Google has taken some hits, and Microsoft has reformed its public image.

>Still, this is big news for Microsoft who has shifted focus under the leadership of CEO Satya Nadella

Hope so, I've been bullish on Nadella.

<comment><USER10> The surface line is the first time I looked at a PC and went: "OK, that's a cohesive computing unit". Like, overall I've always been a Windows/Linux/FreeBSD guy, and despite hardware being very power, there's never really been slick, cohesive option excepting the occasional HP Envy, Thinkpad X1 Carbon, Dell XPS 15, etc.

The entire Surface line (hardware wise, RT was a software fluke) has been slick though, IMO.

</comment></comment><comment><USER11> I've really come to admire Satya Nadella as a great CEO.

<comment><USER12> To really get my respect he needs to kill off ads in the Windows start menu and the pervasive Cortana surveillance.

To really, REALLY get my respect: I would like to see Microsoft be a pure, best-practice software company. Do GREAT things independently of Windows. Make native Mac applications that are truly great. Make a better Mac application than Apple can. Make better iOS apps. Be a champion of Linux. and so on. Strive for greatness on every platform, embracing that platform's uniqueness.

<comment><USER10> Haha. Really?

Microsoft actually ports their software to Mac, using native APIs and idiomatic software design, for the platform:

[http://mac.softpedia.com/get/Business/Microsoft- Office-2011....](http://mac.softpedia.com/get/Business/Microsoft- Office-2011.shtml)

Meanwhile, Apple brings the exact same software as is on macOS to Windows, with no thought to integration:

[https://www.windowscentral.com/sites/wpcentral.com/files/sty...](https://www.windowscentral.com/sites/wpcentral.com/files/styles/xlarge/public/field/image/2017/04/itunes- windows-1.jpg?itok=B2tCtn52)

<comment><USER13> I wasn't aware that this was an old school Apple vs Microsoft debate. But alas.

I don't know if you've actually used the latest Office for Mac. It's better than the older versions, but it's still obvious that MS isn't fully proficient in macOS development. For starters, the interface doesn't respect the scaling settings on my 5K iMac. I'd expect that sort of shoddy UI from Steam or something.

The fact that iTunes for Windows is trash doesn't change this fact at all, so I don't knkw what you're getting at.

</comment></comment></comment></comment><comment><USER14> Microsoft is now worth more than Alphabet. Fixed that.

Alphabet includes Google but also all their other companies. I wonder how many of these included companies are not profitable entities at the moment but future investments and dragged Alphabet's value down a bit.

I don't know. I'm just sayin'.

<comment><USER15> Non-profitable companies under the Alphabet umbralla are, as the name suggests, bets. Investors in stock usually take that into account and price in what they think the potential value that they can generate is.

</comment></comment><comment><USER16> I find this inline with my own positive vs negative views of microsoft over time.

I spent a good part of my early career in the 90s building products on windows and both fearing and admiring microsoft - but mostly fearing and hedging my skills on linux.

In the 00's microsoft seemed almost like a non-player and their products mostly legacy.

But since windows 10 and my recent experience building on Azure I've been pleasantly surprised and find my view of them back on the positive side.

I'm particularly impressed with Azure -- a few years ago I wouldn't have thought they could have created a competent alternative to AWS ..and here they are.

</comment><comment><USER17> They are very different companies culturally -- attract different kinds of people. MS is better in business, Google better in tech. In MS you would have to fight for the permission or space to make something better if its already bringing in enterprise money, where 'making better' could mean well known bugs with possibly easy fixes. At Google it used to be ok to make something better to scratch one's itch, or just because it really ought to be better.

</comment><comment><USER18> Good to see someone from Bhilai on HN community?

<comment><USER19> He's not from Bhilai, he IS Bhilai!!! :P

</comment></comment><comment><USER20> I'm puzzled why "Proven"s comment is dead? What they wrote seems accurate. There is no reason why this comment should be downvoted, and certainly no reason why the comment should be dead. This is what they wrote:

          Simply speaking they actually make more products people like to use.

          Google essentially has just one, and it's based on diminishing user privacy to the maximum extent possible.

          MS collects user data but so do Ubuntu and CentOS... not to the extent Google and FB do it.

That is absolutely true. Microsoft has a huge range of products. It produced three of the most profitable products in history:

Microsoft Windows

Microsoft SQL Server

Microsoft Office

For awhile, circa 2005-2015, there was some thought that Microsoft's products were going to be replaced by online equivalents, and was a contributing factor that held down Microsoft's stock at that time. But it is now clear that Microsoft's products are going to survive. Partly, Microsoft has adapted to the online world, and partly, large enterprises are more comfortable with Microsoft's model, rather than Google or Zoho or Wufoo or any other online replacements.

Microsoft Excel remains the default lingua franca of business. Google Docs and Spreadsheets has not replaced Office.

And SQL Server continues to have a huge number of fans, even in a world full of very good open source databases.

<comment><USER21> While I agree with most of your points, this one seems arguable:

> _Microsoft Excel remains the default lingua franca of business. Google Docs > and Spreadsheets has not replaced Office._

Google Docs, Sheets and Slides have taken over the education market from elementary school through college, and for many businesses Google's offerings have become interchangeable with Microsoft's. Outlook and Excel still have a strong hold on larger companies because Google hasn't matched features, but Google Docs are much easier to share and collaborate with coworkers.

<comment><USER22> I agree with your comment but as it stands the business market is MUCH larger than the education market. Most schools don't use either or don't pay much. Schools are seen as essentially a small vertical in the extremely large market. Just think of all the companies who pay for 20,000 microsoft licenses. A lot of the market you describe is free.

<comment><USER23> Just left a place with 17k+ G Suite accounts (K-12). They used free G Suite. Google is ingenious in how they are "certifying" educators on G Suite. The price for the tests are incredibly cheap < $50. They didn't even think of going with Microsoft, even though tiers 1,2 are free with tier 3 being $2 per user? for K-12.

State government is exactly the opposite. While not trivial standing up a shared AD tenet is easy/doable and gives you quick SSO in the cloud for .NET based web apps when everybody (logins) is on the tenet/AD. Quick being the keyword.

</comment></comment></comment></comment><comment><USER24> I just checked the market and as of 2:30 PM EST Google is now worth more than Microsoft.

<comment><USER25> Somebody should write an article about this.

</comment></comment><comment><USER26> They have been trading back and forth for a while.

Why is this suddenly news?

</comment><comment><USER26> > Google's demotion is undoubtedly only temporary

Why?

</comment><comment><USER27> Simply speaking they actually make more products people like to use.

Google essentially has just one, and it's based on diminishing user privacy to the maximum extent possible.

MS collects user data but so do Ubuntu and CentOS... not to the extent Google and FB do it.

<comment><USER28> > MS collects user data but so do Ubuntu and CentOS... not to the extent > Google and FB do it.

They're working on it though.

I just installed Windows 10 for the first time on a brand new computer I bought. I was shocked to discover that I _could not_ make an account on my own personal machine without "logging in" to a Microsoft service either with an existing or new email address. I looked up tutorials to skip that step but they all pointed to a button ("No account" or something like that) that was _not on my screen_ , I swear. No button was provided to skip logging into a Microsoft account. Next, I had to give them my phone number for user verification. Also no way to skip that step. I had to wait for a verification code, which by the way failed, (got the message, they didn't accept the code), tried again, never got the new message.. figured out how to back out of that, then provided a proper email... Once set up, in making extra user accounts on the machine, they now differentiate for some reason between "Family" users and non-"Family" users.

This is on MY PERSONAL COMPUTER. I literally want to just be able to use Microsoft Word on the rare occasion that I am forced to use it, and I found myself having to fork over my phone number and make TWO accounts. (One for ASUS too for some reason.) I found the whole process of setting up Windows shockingly invasive. I even had to explicitly opt out of letting them advertise to me on my own personal computer, and sending my personal info to advertisers. Not on websites. There are ads on like.. the file explorer or something. I mean, what the hell? What is this a shopping mall kiosk? No, it's a laptop I bought and paid for! Why would I want ADS?

I dual-booted Ubuntu on it right away, who wanted nothing but my name and desired username, and provided extremely clear method to opt out of submitting my info to Ubuntu servers, and am happily using that now with no issues.

MS definitely _want_ your personal information, they just aren't as good at getting it as FB. I wouldn't give them a pass on privacy, not with how Windows 10 is now organized.

<comment><USER29> I've installed Windows 10 Pro 1803 on two separate machines in the last month. Both with local accounts.

<comment><USER6> Could this be a Pro vs Home thing?

<comment><USER30> Nope, MS just uses some Dark Pattern (at least on home) to make it seem that way. The link to make a local account is not obvious.

<comment><USER28> > Nope, MS just uses some Dark Pattern (at least on home) to make it seem that > way. The link to make a local account is not obvious.

I don't know how to prove it, maybe i should have taken a photo (but who cares right), but the link was not dark, it was _not there_. I was able to make a local account and switch to it after installation, but I was not able to completely the installation without a Microsoft account.

You don't have to believe me of course, but the screen did not appear exactly the same as in help tutorials I googled.

<comment><USER30> My fiancee just got a new laptop. They went from dark pattern to downright evil, the only option was to disconnect wifi, say you need a new address. Enter bullshit data and afterward it will create a local account for you. Fuck that shit.

</comment></comment></comment></comment></comment></comment></comment><comment><USER31> I dont really understand this. The race for hosting VMs/Containers is a great short term opportunity but there is no long term differentiation to be had. I suspect in 10-20 years Azure wont make much money . Meanwhile Windows and Office are still popular but not as compelling as they used to be. Xbox? I'm not sure why Microsoft is so popular with investors.

<comment><USER32> Computing started with dumb terminals connected to super computers.

Personal computing reversed the trend.

Now the trend is reversing. Computing is increasingly being offloaded to the cloud. Gaming, graphics, it won't matter if an app is ARM or x86, 32bit or 64bit or 128bit, windows, android, linux or IOS if it runs on the cloud, even part of the operating system can be handled off hand-held devices.

The only limit AFAIK is network latency. As network speeds, reliability improves and costs approaches zero, cloud computing would become more valuable.

If battery no longer an issue, cloud computing might wane. Until then, MS is right to bet on cloud.

<comment><USER31> I completely agree there is a big demand and a big market. The issue is whether providing these services is so profitable that MS deserves to be in the top few companies in the US. Is there really enough pricing power in Azure? Windows used to be strategically important. Outsourced hardware isn't.

<comment><USER32> I'm not knowledgeable enough to answer authoritatively.

However, buzzwords drive valuations.

Microsoft has a few buzzwords working for it ATM - blockchain, AI, and Cloud, Intelligent cloud.

</comment></comment></comment></comment><comment><USER22> I think most people really don't understand the wide breadth and the real market of Microsoft as compared to other companies. Just look at these charts of income sources of each company:

[http://ritholtz.com/wp- content/uploads/2017/11/cotd52602.png](http://ritholtz.com/wp- content/uploads/2017/11/cotd52602.png)

Google is literally just Ads whereas Microsoft is very evenly spread. If it lost one area itd be fine in the others.

I think people have an exposure bias where they can only comprehend fo the consumer market. When in reality a lot of the consumer market is free and Microsoft is making a killing selling to businesses.

<comment><USER33> HN in general has an info bubble problem, where it looks to them like Microsoft is dying because trendy Bay Area startups all use Slack and Google Docs. But in the rest of the industry, Microsoft is huge and, if anything, getting stronger over time and not weaker. Microsoft products that HN has never even heard of, like Dynamics and Host Integration Server, still make billions in revenue.

<comment><USER34> Exactly. Honestly I've been telling people for the last year to buy MS stock. They are going for recurring revenue with all their business facing products, and it's working. The business world, outside of SV apparently, runs on MS products.

<comment><USER35> I think the most important thing is that the recurring revenue products actually doesn't suck. I think it's because it's operating in a competitive market, where switching is easier so it has to work well and also integrate well with other software. This is different from just leveraging lock in and just bringing out updates with less tangible benefits to force people to upgrade.

</comment></comment></comment></comment><comment><USER36> I use only one product of Microsoft, Visual studio code But I use many products of Alphabet Inc , Google, (servers) Google docs, (servers) Google drive, (servers) Google keep, (servers) Gmail, (servers) Android, (client) Maps, (servers) YouTube, (servers) Tez, (servers) Play store, (servers) Google translate, (servers), ...

Many people don't realise it because almost all of them are available for free. Google products have very market.

Incase of Google, they have cost of maintenance almost for every product they develop.

But in case of Microsoft, they have less overhead.

Windows (client) Azure (servers) Xbox (client) Visual studio (client) Visual studio code (client) SQL (client) MS Office (client) ...

Microsoft also needs to push updates but, less than that of Google.

YouTube consumes too much of bandwidth, Same is the case with Play Store.</comment>


Ask HN: How to track performance issues with a test suite - <AUTHOR>

I'm building robust, scalable software. Or at least I hope I am.
So I can write tests that demonstrate certain things complete in reasonable amounts of time.
But: (A) If I write lots of these tests, my test suite is quickly going to grow to the point where I don't want to run all the tests on my own machine as I work (B) A test might take 2x as long to run simply because the machine doing the testing is busy doing other things at the same time, rather than due to a performance regression in the code (C) Maybe one day our cloud vendor will decide a 486dx2 is the machine our test server will live on, instead of the recent i7 we're used to. (D) It would be nice to see how our code is improving or getting worse over time, rather than just knowing "pass/fail".
Is there tooling that takes care of some/all of these issues nicely? <comment><USER2> you can use jenkins or some hosted CI to run unit tests. For continuous inspection you can use sonarqube</comment>


Not much of a choice - <AUTHOR> https://contribute.barackobama.com/donation/election-night-with-barack/09/ofa.html?utm_medium=email&utm_source=obama&utm_content=httpsdonatebarackobamacomElectionNight&utm_campaign=em12_20121025_ofa_nd1&source=em12_20121025_ofa_nd1&amounts=5000|5000|5000|5000|5000|5000|5000|5000|5000

<comment><USER2> [https://contribute.barackobama.com/donation/election- night-w...](https://contribute.barackobama.com/donation/election-night-with- barack/09/ofa.html)

The extra information was present in the GET parameters being passed through the URL query string, if you look closely you will see this:

 _& amounts=|5000|5000|5000|5000|5000|5000|5000|5000_

Removing this simply reverts it to it's normal state, however you can set the amount you want, some playing around revealed that it accepts only signed integers between 0 and 5000, anything over reverts to 5000, anything under reverts to 35 and is a string is used it reverts to the normal value.

<comment><AUTHOR> Yup. That's what I was trying to show.

<comment><USER2> Ahhh, then my apologies, I feel my time analysing the URL may have been wasted ^^

</comment></comment></comment><comment><AUTHOR> I just thought it was funny and wanted to share. :)</comment>


Microsoft shows off Avatar Kinect shortly before expected release - <AUTHOR> http://www.zdnet.com/blog/microsoft/microsoft-shows-off-avatar-kinect-shortly-before-expected-release/10085

<comment><USER2> Seeing as Kinect is a camera, what is the benefit of having Avatars for video- chat instead of using the actual video feed?</comment>


Ask HN: How Would You Do Escrow b/t Users in Bootstrap w/o Paypal? - <AUTHOR>

tl;dr: Need to do escrow between users without paypal, what do?
I`m the new CTO, redoing ConnectWithContractors.com(asp.net 2.0 webforms website) in bootstrap and open source technologies to love my life a little more and minimize scaling/hosting/dev costs and maximize utility, sanity, and on-boarding time.  The old app was too poorly implemented to get myself on-boarded without going to great lengths, so I taught the CEO just enough coding to understand the problem and sell him on a fresh start. Check it out: connectwithcontractors.github.com The asp.net app had an unfinished attempt at an escrow implementation via paypal.  I heard paypal intends to fix the issues they have had in the past, but I don't want to use them in our mvp, unless it's the fastest solution to the problem, in which case, so be it.
So what would you do HN? <comment><USER2> Escrow just screams fraud; properly solving that is a billion-dollar business by itself, so I'd strongly urge you not to implement something yourself.

That said, escrow.com and the like exist; I have no experience, but escrow.com seems to accept most every reasonable way of paying for an acceptable fee.

<comment><AUTHOR> I agree that building an escrow service to solve a construction problem doesn't make sense. It`s like your car needing a new engine so you build a jet instead. Anyone want to build an escrow startup with a garunteed customer lined up?

<comment><USER2> What _is_ wrong with escrow.com [1] for what you're doing?

[1] No personal experience. This is not a recommendation. Feel free to substitute one of their competitors, if such exist.

</comment></comment></comment><comment><USER3> Check out balancedpayments.com. I haven't seen anyone else with an escrow and payments solution that is robust (i havent used them, just doing research for my own projects)</comment>


I have some weird virus that redirects Facebook to Myspace - cool-RR http://facebook.com

<comment><AUTHOR> Looks completely fine to me. How about some context?

<comment> cool-RR Seems to be only on my computer. It sends to MySpace. Also, when I follow a link to a profile of a friend of mine in Facebook, it redirects to a profile of some random kid in MySpace.

<comment><AUTHOR> Then perhaps, and maybe this is just a shot in the dark, someone has managed to fiddle around with your host files.</comment></comment></comment>


Ask HN: Self hosted stats? - <AUTHOR> I've been using mint [0] for a decade on almost every web property I own. It's fast, simple, and shows me the core of what I want to know instantly: VISITS, REFERRERS, and PAGES — number of visitors, recent general referrers (and if if one referrer is sending significantly more traffic than others), and highest viewed pages.
It lets you flip between day, week, and month view for each section without page reload. It's so fast. So, lightweight. I still haven't found an equivalent (development has been discontinued on it).
I've tried Matomo and it's just too heavy. Google Analytics feels like using a rocket to light a birthday candle.
Anything obvious I'm missing? Self hosted is preferable but not must have.
[0] https://haveamint.com/ <comment><USER2> Away from sharing all of your data with Google, I'm not sure what's the downside of using Google Analytics. Yes, that might be a rocket, but it's damn easy to use rocket.

</comment><comment><USER3> Ive been using goaccess (in static mode) for a while now. Its simple but i like it.</comment>


I want to be a software developer. Where do I begin? - <AUTHOR>

i would really like to learn how to program and develop production-ready software. i would like to begin with PHP and either concurrently, or subsequently, learn python. how do i begin? the purpose of my learning is firstly to be able to personally work on developing features and apps for my e-commerce site which is based on joomla (it was developed by professional developers).. the second purpose is that i want to be able to apply for software/web developer jobs eventually because i'd like to work in that field.
i don't know if it's relevant but i'm currently using a windows machine, and i've often heard from people that windows is a terrible environment to learn programming and to program in. is it necessary for me to get a mac or linux machine?
and to reiterate: where do i begin to learn how to develop production-ready software, i.e software that is ready to be shipped? i've done codecademy and similar stuff before which seems really simple and easy, but i can't figure out how to translate that "knowledge" from those sites into actually writing something useful and "shippable". <comment><USER2> So I take it you didn't accept the full-time web developer position you were offered 174 days ago?

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

Are you still planning to return to school for a CS degree this January, as you said you planned to?

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

That would be a decent way to pick up programming skills.

<comment><AUTHOR> yes, the full-time web developer position was turned down because i felt inadequate for the job. i only got the offer because i listed myself as "lead developer" for a project on linkedin, when in fact i did very little actual development. it was more of a personal project that i wanted to develop for, but ended up overwhelmed by how much i had to learn before i could actually develop anything useful.

and yes, i do intend to return to school but it would be in fall this year, not january because the school that offered january admission did not make me an offer...

<comment><USER3> Out of curiousity, what makes you think you "only got the job" because of the title on LinkedIn?

Did you consider that the company hiring maybe saw potential in you? Or maybe even existing ability that you don't recognise (our industry is rife with impostor syndrome)?

Perhaps they realised you wouldn't be a lead dev but had you earmarked for a more junior role.

My basic point is: be optimistic and courageous. The worst case scenario is you learn something. If there's one thing I've learnt recently it's that no one will hold anything against you for taking a leap of faith.

<comment><AUTHOR> well, i guess i left out another detail which i didn't think was important since this thread isn't about that. it's a very long story so i'll just mention the important part but it WAS in fact a junior web developer position in NYC, which sounds awesome. problem? i am not a US resident, and failed to obtain a visa to return to the US after i graduated from college. i would have absolutely at least taken an interview if i was legally able to attend it.

</comment></comment></comment></comment><comment><USER3> What have you tried so far? If the answer is "nothing", then you need to start YOURSELF.

Being a "self-starter" is CRUCIAL to becoming a good programmer. You'll only discover your favourite languages/techniques/etc yourself by trying them out. No one is going to lay down the pathway for you (ie. Do X, Y & Z).

Windows is fine for development. I find OS X easier to configure but thats probably because I only switched to Mac after having several years experience.

There's nothing different than "production-ready software" and any regular old software. Production ready suggests that it has been tested - that's about it. Tons (in fact far too much) "production" undergoes no or very little testing so I wouldn't get hung up on labelling.

Make something, anything.

</comment><comment><USER4> I started programming in the old, dark days of pre-internet when the only ways to learn programming for a young lad was to either find a book on the subject (In Iceland the books were pretty rare at the time), find a older more experienced person to teach me or just hack at it myself.

I went with the last option. I spent many hours staring at the DOS based Pascal IDE and in-built help documents. I managed to create a few programs on that which laid the foundation for when I got into C++. After a few years of learning on my own I found that I could not find a job working on code until I got my education which caused me to go get a university education at the age of 26. Now I have a couple of years of development experience both using C++, Python, Javascript and a myriad of other supporting languages.

Today, all you need to do to learn to code is to code. You have the wealth of the internet at your fingertips. Choose a language, find a project and code. Create games if you have no ideas. Clone existing games (Like Tetris, Simcity or somesuch). In this industry the old adage "Mileage matters" applies.

Eventually, before you know it, you will be churning out production ready software.

I know I cant pinpoint the exact method I used to get there. All I can tell is that somewhere along the way, through millions of keypresses in multiple programming languages, I picked up the right habits.

You can do it to :)

Just go build stuff!

(Oh and regarding the operating system question. The OS does not matter at all. You can code in all of them. I started out in windows. Currently using linux for my dev work. Its just a matter of preference)

</comment><comment><USER5> Good luck! Don't rush yourself and consider this a long process (1-2 years) not something you can nail in 6 weeks. In all honesty you might be a long way away from actually pushing code to your existing site, so put that out of your mind for a few months and start simple.

I started with little things like a personal blog, tinkering with features on that, doing some fun and simple project websites, helping do HTML/CSS design stuff for other more complicated sites from friends (where you inevitably bump into backend and frontend code challenges) and then started building my own e-commerce site. Note that whole process was around 2 years. Get stuck into doing ALL of these things yourself (ie. front-end, backend, server setup etc.) because it will eventually help. I learned Python by proxy - starting with Django and then regressing into Python. I'd suggest you do something similar, because pure Python is perhaps too low-level for what you want right now (ie. pushing website code).

And yes, Windows is a bit of a crappy environment to develop in. Lots of great open-source software is written by people developing on Linux/OSX and as a consequence, their code/documentation/communities tend to ignore Windows. You'll make stuff work more quickly, more easily and with more immediate help from the internets if you're using Linux/OSX.

</comment><comment><USER6> I'm going to give different advice.

You should ideally try to get work at a software focussed SME, where you can learn from good developers, and slowly grow into larger and more difficult projects.

There are lots of different small software companies serving different markets. HackerNews and SV seem to be full of consumer targeted ones, because of the potential for rapid growth. But a lot of SMEs do B2B or government work, and you may find that because they are less cool, it is easier to get them to take you on. They are also more likely more focused on making good software and actual money, than building perception of growth to get a good exit for the founders.

At least round where I live, you can find these small companies in office parks and industrial estates. Find one that is doing something you think is cool, and vagually chimes with your portfolio. Then write them, and ask if you can do some kind of a placement with them. Try to talk to the engineering management, as HR just get in the way. Once you are there, and get on with the people, it should be pretty easy to get a junior role out of them at the end. If you are up front that you want this at the start, a lot of them will treat you more seriusly.

Think about what you can offer them - they will have projects, ranging from adding unit tests to writing a better time sheet system, that they would do if they only had time / free resources. Get them to talk about those things, and then sell them that you want to give it a go.

Other commenters - do you have any suggestions for a better way to make the initial contact?

<comment><AUTHOR> to be honest, i actually did think about what you said (before you said it) - i wanted to apply for internships or even full-time jobs at the local office in my country for LinkedIn, and offer to work for them for free in exchange for being able to shadow an experienced developer and learn from him/her. however, i can't imagine being able to offer them anything in return to the point where they would agree to such an offer. all my friends tell me i should be paid for learning, so apply for jobs and learn on the job but again, i don't know how i can market myself to the employer where he/she feels like it's a win-win rather than simply them investing resources into training me and then me leaving after i learn them.

but i will go ahead and contact some of these companies' engineering departments, i think it might be a good idea. do you have any suggestion as to how i should approach them?

<comment><USER6> You mention linkedin. The reason I said SMEs is that things at a small company are less process driven. If you want to intern at linkedin, then you probably have to apply to head office, and probably then intern at head office. But at a small company, if you convince the chief engineer you are in.

I got my start at 14 knocking doors on a local industrial estate. I came across a little company developing java accelerator chips for mobile phones. Later they got bought by arm, and that technology became jazelle, which I guess opened the way for running Android on a little mobile proccessor, but when I was there it was 10 guys in a lab.

The CEO liked my enthusiasm, but I was pretty useless. On my first day, I tripped the power for the building, and on my second I injured myself soldering, and came in crying while they were negotiating with Samsung in the next room. Still got the scars. I hope at least they found me amusing.

The best way to get in somewhere small as an intern would be through your personal network.

Knocking doors is acceptable for children, but I think it would come across as for an adult. If someone you vaguely know asks their boss if you can come intern, they will probably say yes.

I'm assuming, from the rest of this thread, that where you are at is you are in your late teens, and thinking of going to college in 6 months or a year. Being so young is actually a big advantage.

People generally want to help young people. They have an expectation that you won't have much experience, but they will want you to succeed because they would have liked someone to help them when they were young.

If you don't have many software engineers in your network, go to local events, talk to people, and be up front about what you are looking for. If they can't help you, they will direct you to people that can.

Oh, and keep in mind that while at the moment web/apps are the big thing, software and engineering are bigger than that. It might be that in a decade, the big thing will be applying AI to data to help people make decisions. Or you might want to get into computational biology for drug development. Going to school is pretty important for that stuff.

</comment></comment></comment><comment><USER7> If you've done Codecademy, you should understand the basics (what is a variable, what are functions, etc). The next thing to do is pick a project and build it. A good place to start is something like a blog, or calendar, or some other simple application like that. Heck, an HN clone would be a good starting project.

Once you pick a project, just take it one step at a time, asking for help when you get stuck. Don't worry about making it production-ready. It's inevitably going to be full of vulnerabilities and bad coding practices, don't worry about it. There isn't a programmer on Earth who hasn't looked at their own code from 5 years ago and thought, "What on Earth was this guy thinking when he wrote this???" Build a few projects and you will pick stuff up as you go. Once you feel like you really understand what you're doing, then you can focus on making something production-ready. For right now, just get a few things built without worrying about the details.

Read this: [http://prog21.dadgum.com/188.html](http://prog21.dadgum.com/188.html)

When you're starting out, _do that_. Don't worry about full understanding. Get a solution out there, even an imperfect and brute-force one. Obviously, you don't want to stay at that level, but like I said, you're going to hate your code 5 years from now anyway, so don't worry about it too much.

Read this too, the first quote on this page: [http://www.goodreads.com/author/quotes/113989.Ira_Glass](http://www.goodreads.com/author/quotes/113989.Ira_Glass)

<comment><AUTHOR> yes i feel that i do understand the most basic stuff, plus i've taken some programming-ish classes in college as well (such as VBA for Excel and another freshman class which also dabbled a little in basic programming principles). i'm just at a complete loss as to how to go from that basic understanding, to actually being able to write something useful and then subsequently be good enough to be hired as a junior or entry level developer. my ultimate end-goal is to develop software for my own startup because i have many ideas which i have previously tried to hire outside developers to implement, but failed miserably.

i'll read those links right now! thanks!

<comment><USER7> I really think you need to start with a very simple project that you can see through to completion. Writing your own blog or calendar app is pretty simple if you don't try to add any advanced features (like WYSIWYG editing or something like that).

For a blog, just make a new post page where you can type in a new post and then an index page that shows all posts. If that's too simple, make a log-in system and support for multiple authors.

For a calendar, just make it so you can click a day and type in an event which gets stored and shown when you load the page. If that's too simple, do multi- day events and recurring events. Or build a week view and a single day view as well.

This is the kind of project you would build in classes. It's the only way to really learn how everything fits together to make a full web app. Learning on the job is pretty much the only way to really learn software development.

</comment></comment></comment><comment><USER8> One advice from someone who has taught and studied this for over 15 years:

Don't get tangled up on what's hip and cool now, it might be disastrous for someone just starting out. Here on HN especially, we obsess about exotic new languages and frameworks. But they often have very little support for true beginners. Even Rails/Ruby is a pain to setup and understand for a beginner, they make it look so popular and easy, but you'll quickly end up in a huge confused state of things you can probably not relate to each other.

PHP would be my suggestion, play with it for a month and try to get as far as you can, get a grip of how things tie together and such. Then, you can re evaluate what other languages might be interesting or why certain aspects of framework driven movements might make more sense.

Pick the easiest, oldest tool you can find and work your way forward, historically and all will make much more sense.

Disregard your environment that first few weeks, Windows totally works, you don't need a web server, just use something local. Your dev friends will tell you PHP sucks and ruby is the shit, but consider that this does not necessarily translate to "when just starting out".

The hardest part about programming is never the language. It's always the ability to know how to address a given problem, tactics. Later in life, you'll be able to use any language thrown at you, it's the problem approaching that really makes a good programmer. Learn concepts, how a web server really operates, how a browser works, that stuff. All a programmer does is building bridges between existing technologies and people (behavior).

<comment><USER9> Since he wants to start with PHP, I doubt he is going the hip and cool now route.

No offense to PHP, but it really can't be considered hip anymore.

</comment></comment><comment><USER10> It's a little hard to tell from your question where exactly your problem lies. If you've done codeacademy I assume you've already got some coding skills.

You say you don't know how to apply those skills to doing something useful. I would start with an idea for something you want to do. You have an ecommerce site so I'm guessing you have some ideas for improvements you'd like to make to that site. I would start with one of those ideas (hopefully a reasonably simple one at first) then try to figure out how you would code that. Implement your change (in a development/test environment, not on your live site), do some testing and when you're satisfied your code is working push the changes out to your live site.

I'm not exactly sure what your hangup is about "production ready" code. As others have said there's no special magic that separates "production ready" code from any other code other than testing and reviewing your code to make sure you're following security best practices (which should be pretty easy with today's environments, the frameworks typically provide you with simple methods to sanitize inputs and prevent things like SQL injection). If you were building a site from scratch you'd have other things to worry about, like password handling and secure credit card processing but since you already have a site I don't think you'll need to deal with those more sensitive areas at first.

If you'd like to a have a professional spend a few hours reviewing your code before it goes live that's a service I can offer you. My website is in my HN profile and contact info is available there. Feel free to email me if you're interested.

<comment><AUTHOR> yes, i do believe that i'm not an absolute and complete beginner, but if there is a theoretical 100% expert on programming, i'd say i'm maybe a 5% at most. i've taken classes in college related to programming but not ACTUALLY programming (for instance, excel VBA programming, and another freshman programming class which did not actually teach in-depth programming but introduced me to the basic principles) and i've also done codecademy and in fact finished all the php and python classes but i have no idea how to actually translate the stuff i learned into actually writing something useful. for instance, my e-commerce site is based on joomla and i tried to read tutorials on how to develop for joomla and i got absolutely nowhere. i don't know which IDE to use, i want to implement a daily deals feature on my site but i have no idea where to start, etc.

when i say "production ready" code, what i meant was i want to be able to confidently list on my resume that i can write code that can be shipped, and to be able to actually legitimately apply for developer jobs. right now, the best i can do is finish codecademy exercises, which is not good enough.

thank you so much for your offer, and i might just take you up on it! you guys are so generous and nice here, frankly i'm quite touched and inspired to start right now.

<comment><USER10> Ah, it sounds like what's happening is this: joomla is a large piece of complex PHP code and you don't know how to figure out how to integrate the changes you want to make into it. Also there may be a lot of code in the framework that looks strange and you're having trouble figuring out how it works.

I've never worked with joomla myself, but I'll try to give you a few ideas about how I would approach figuring it out if I had no clue and the documentation wasn't helpful.

The steps I would take are:

1) Get a local test instance of your site setup.

2) Figure out how to insert a line of code that generates some sort of output that you can see as soon as it's executed (ie. a "print statement"). Usually this will go to some server log file. There should be something in the docs, hopefully an example, about logging.

3) Make a guess about what code gets executed when a page you're interested in gets rendered. Most likely this will be the php file that you see in that page's URL.

4) Once you've got a first message to print out try to reason through the control flow of the code, adding print statements here and there to test your understanding of what gets executed when.

By following this approach you should start to get a feel for how the joomla code works and eventually you will find out where code for your new feature should go. If you still have trouble figuring that out try to find a similar feature already implemented in joomla or some add-on or extension and see how that was implemented.

If you want a recommendation for an IDE I've found that Eclipse with the PHP plugin works pretty well, but for this process of understanding the joomla code I would just use whatever text editor you're comfortable with, an IDE will probably only get in the way of your investigations at this point.

</comment></comment></comment><comment><USER11> You're on the right track; just jump right in.

I would suggest focusing on one scripting language to start though. Python or PHP would be fine choices. I learned on PHP and still use it. If I was starting now, I probably would have gone with Python, but you're fine either way. Facebook is built on PHP. Google uses Python a fair bit.

There's nothing wrong with learning programming on a Windows machine! People who are avoiding doing real work quibble about these things. Especially for web development, it doesn't matter. (If you want to get into native iOS dev, you should get a mac)

 _Choose a simple project and learn as you go._ Some ideas: a todo app that connects with a database, a journaling app that writes to text files and let's you do simple edits, something else you're interested in.

</comment><comment><USER12> Peter Norvig wrote an essay that you might find useful, "Teach Yourself Programming in Ten Years." [1] Don't be put off by the timespan, apply what you find useful. One tip, clipped from the article, itself clipped from somewhere else:

""the most effective learning requires a well-defined task with an appropriate difficulty level for the particular individual, informative feedback, and opportunities for repetition and corrections of errors."

I've found volunteering a useful way to enter a professional environment where I'm not yet comfortable being paid for my output. Find people doing what you want to do, and offer to help.

[1] [http://norvig.com/21-days.html](http://norvig.com/21-days.html)

</comment><comment><USER13> There are several CS101 type courses available on sites like Coursera, Udacity and EdX. If you already know the basics of programming, you might try an intermediate level one that incorporates a project.

As for production-ready software, I'd start small then add things onto it. For example, if you have a simple Tetris game, try adding music or porting it to Android. Major software projects don't get built overnight and generally involve teams of experienced developers, so that's not something you're going to be able to do immediately.

You might want to look into Agile development methodology. That shows a way to go iteratively from initial idea to something a customer would want to use.

</comment><comment><USER14> I would suggest a "long road" \- forget for a while all this PHP stuff and invest some time "to know any better" and learn some theory to better understand hows and whys that will arise in daily practice.

I suggest to take CS61A by prof. Brian Harvey (it is available on YouTube) and _then_ with understanding of why something is better than other, take a look at Scala and Clojure as appropriate tools to get shit done. PHP is a dead end, and websites could be built with Scala or Clojure too.

I wouldn't recommend Haskell before understanding deeply CS61A and SICP.

HtDP2 and related course on Coursera is another decent start, but the path described above should be taken afterwards.

</comment><comment><USER15> The biggest hurdles I think most people face is maintaining momentum throughout their educational process.

Most people want to start something new and quickly fall back into their old patterns that didn't include this new thing. You have to make time in your life so this becomes a consistent and ever present part of it.

So, my advise to you is to study for some period of time every single day, even if it is a 1/2 hour. Make it a habit.

Start with reading a intro level book and make sure that you get through it. Even when you don't understand what you just read. Just finish the book. Read it every day. Parts of it will be easy to understand and it will start to sink in. Then, do more.

</comment><comment><USER16> Developing production software is a function of how many times the software you write is "evaluated". Where "evaluated" can encompass peer review, customer feedback, formal QA, unit tests. The absolute best way to learn is to teach it. And the best way to do that is peer accountability. Whether through starting your own study group where you meet weekly to discuss/review your joint coding progress or joining a company which has an apprenticeship program as a core value.

Good luck! Fail faster in the hands and care of those who are better than you.

Also see [http://jenniferdewalt.com](http://jenniferdewalt.com)

</comment><comment><USER17> I first learned on Windows - I have subsequently found that it is far better to do development on OS X or Linux & prefer to do so now, but nothing is really preventing you from doing dev on Windows.

My approach to learning was to absorb as much as possible as fast as possible. I spent time trying to learn PHP, Ruby (for usage of Rails), and JavaScript. I did not do anything with NodeJS then, but I did learn how to manipulate JS to accomplish things I wanted to do. I did not know best practices, or was comfortable with OOP.

If you want to learn web development, try building the websites you want. That is probably the best learning experience to start.

</comment><comment><USER18> Regarding production software: I gave a talk to university students on the difference between professional software development and programming for a university course, and wrote about it in "Working as a Software Developer"[1]. I also included ways to cope with the problems of SW development, and how to become a better programmer. Maybe something in there can be useful.

[1]: [http://henrikwarne.com/2012/12/12/working-as-a-software- deve...](http://henrikwarne.com/2012/12/12/working-as-a-software-developer/)

</comment><comment><USER19> Windows is bad for programming only if you're familiar with Unix. A Unix shell can be an extremely powerful tool in the hands of someone who knows how to use it. These are the people who bitch about Windows. OSX and Linux are both unixen, so these are popular with unix afficianados. But if you're not familiar with Unix, Windows is perfectly fine as a programming environment.

And though I miss the unix shell, I'm currently working on Windows myself. I'm not thrilled about it, but it works.

</comment><comment><USER20> Windows is fine for development. Tons of people do it, it's just not hip & trendy on hacker news. Don't waste time on learning a new OS if what you really want to learn is code. Both PHP and Python have first-class support for Windows, and so do most other tools (databases, webservers, etc).

Best way to learn is just by beginning. Set yourself a relatively modest goal. It can be useful even if it's modest. Something you need, maybe for yourself, or for some community you're in.

<comment><USER21> What you say is true, but I think it is worth mentioning that majority of hosting for PHP will be on some kind of linuxy/unixy system so familiarity with that won't hurt.

</comment></comment><comment><USER22> I found someone else here that was also looking for real-world experience. If you need some, contact me.

Our teams are almost at the stage of beginning to write the actual code, if you can catch up on the documentation and have your system ready (a VM with some Ubuntu-based distro and the correct dev tools) you can join us.

Also, you can develop on Windows. It isn't that bad. A lot of companies are looking for .NET devs (which I think only runs on Win) so it is fine to use it.

<comment><AUTHOR> hey can you tell me more about this? i'm definitely interested, but i don't know if i can catch up on time (although i'm willing to put in the effort to try!) to be able to contribute to your project.

<comment><USER22> Have you completed the Ruby/PHP/Python track on codecademy?

You say that you are beginner, which is fine, but you should at least have done 1 of those 3 courses already.

Also, what is your email? You can use boun.cr to not expose your real email address out here.

<comment><AUTHOR> Hi, yes a few months ago i finished all the PHP and Python classes available but I think they have new ones now that I haven't completed (which I intend to).

thanks for the link to boun.cr, it's a pretty cool site! i just used it and my email is firstname.lastname@example.com. please let me know more about your project!

</comment></comment></comment></comment><comment><USER23> If you're worried about using Windows, you'll likely be fine running a Linux VM on your Windows box rather than getting a new box.

</comment><comment><USER24> I can't stress this enough but if you're going to deploy a web application you need to be serious about and learn about web security.

[https://www.owasp.org](https://www.owasp.org) is a good place to start.

Windows is just fine, it's a personal preference. I learned (mostly) on Linux but I use Windows at work, whatever.

</comment><comment><USER25> I'm in the process of throwing together a short and sweet e-book (20 pages) with basic front end concepts explained from a zero background perspective and references to more places you can go to further develop your skills.

It's $10, shoot me an email if you'd be interested in a copy or have any questions!

Good luck on your journey as well!

<comment><USER26> To me, $.50 a page for a list of links to other resources seems like selling shovels to people trying to get in on the coding "goldrush". That said, I'd be into doing a review for my blog if you care to send a copy.

<comment><USER25> It's more than links to other resources. Having transitioned from a marketing/business background to a development career, I recall the areas that gave me the most trouble when I first started and would like to simplify that for others who would like to become more familiar with development.

I'll send over a copy as well, I'd be curious to get your opinion!

</comment></comment></comment><comment><USER27> As I think someone else mentioned, hit up [http://www.codecademy.com/](http://www.codecademy.com/) and you'll be on your way. The only thing standing in your way is distractions, so start consuming your stimulant of choice, go to a quiet room, and get learning.

<comment><USER11> OP said: "i've done codecademy and similar stuff before"

<comment><USER27> Whoops

</comment></comment></comment><comment><USER28> I wrote a blog on this fairly recently, it's helped a few of my friends, so maybe it has some info you could benefit from, too :)

[http://www.ewanvalentine.co.uk/coding-your-own- career/](http://www.ewanvalentine.co.uk/coding-your-own-career/)

</comment><comment><USER29> Right now my current suggestion is read and complete the first two chapters of SICP. The book is free, the software is free, and you will learn an incredible amount for your efforts. After that, you'll have a foundation you can easily build a career on.

</comment><comment><USER30> A few tips that have helped many in the past:

\- Start small

\- Don't worry too much about the language

\- Start with some free sources e.g. KhanAcademy, Udemy, libary books

\- Have a very small project that you can use to learn

\- Carve out some time each day/week to work solely on your pet project

\- Ask questions

\- Find a mentor

\- Don't give up. Everyone starts at the bottom.

<comment><USER31> I think the main thing with this is that is has to be a lifelong activity. It's not something you can do for six weeks and 'achieve', but more, it's a continual learning exercise that never ends.

Start programming, make things, read things. Eventually you will realise that you're pretty good.

Be willing to put in years too.

</comment></comment><comment><USER32> Beware of technologies which are over-complicated to the degree one suspects they are that way largely as a form of developer mindshare lock-in. You can very quickly get discouraged that way.

</comment><comment><USER33> When you encounter something you do not understand do not stop asking questions until you understand it - ever. No matter how small the detail or seemingly embarrassing.

</comment><comment><USER34> Three options in front of you: 1\. Get into a class. 2\. Books. 3\. Online classes / screencasts (the best have you do exercices too.)

</comment><comment><USER35> Learn how to type using proper English syntax first. Once you have basic sentence structure down, you can move on to programming.

<comment><AUTHOR> erm.. what? i'm not sure what you're implying, but English is my first language...

<comment><USER36> If it makes you feel better, I found his comment as strange as [i'm guessing] you found it

<comment><AUTHOR> yes it kinda sounded pretty condescending, i wasn't sure if i misinterpreted what he said or if i sounded like English wasn't my native language.

</comment></comment></comment></comment><comment><USER37> Be curious.</comment>


About to graduate, unsure what to go with my life - <AUTHOR>

I will be graduating with a MSc from a Top 10 University in the Engineering/Technology field in the spring.
I have greatly enjoyed the collegial interactions between students and in some lucky cases, TAs, and the enthusiasm exhibited by everyone involved in learning. However, the level of desperation and depression and daily drag on the research side cemented my decision not to further pursue my career at the university (i.e. a PhD position).
I have been involved in Software Engineering and Computer Graphics topics throughout the last 5 years, but I am definitely not in the top 15% of students who somehow manage to build voxel rendering engines while simultaneously working on their thesis. I'm just a decent student, with decent grades.
Now everyone tells me that I really have the whole gamut of jobs to reach out for with my MSc, but I still feel rather lost due to my past experiences at university. I can follow current research topics, but I definitely don't have the mathematical insight to develop them. I can implement methods in a way which I might even describe as somewhat fun, but I certainly don't thrive on programming like I see others do. Programming is something that has to be done, and I am not the quickest or most efficient programmer.
I have been thinking of either joining the plain Software Engineering sector (at any of the handful of companies willing to employ fresh grads around here), or fighting my way into the video games sector, where I might rekindle my passions, but where employment opportunities are certainly more sparse, and a MSc is already somewhat of an overqualification (compared to 2-3 years industry experience).
I would appreciate the input of any fresh grads around :). <comment><USER2> I've been out for about 5 years. Graduated with my MPhil in Materials Science in 2008 (after having done my undergrad in Electrical and Computer Engineering) and went to work for a few years. I am now back in school getting my MBA.

My advice is this: go and try something with a company that you think does good things for the world and has people you think you can connect with. Spend 2-3 years there, then evaluate how you feel about what you are doing. You are 23 or 24? Look at your first job as an opportunity to learn and a way to meet and work with smart, good people. Be happy in your work and do a good job. Then use that experience as a springboard to something that fits you even better.

For me, I was really happy to be a technical guy. I still am. In fact, I am starting a company that is extremely technical. With that said, I wanted to get my MBA because I wanted to learn how to solve problems on the other side of management. I have had 2 real jobs (not counting internships), and with every change I try to get 50% closer to my ideal. This way, I figure by the time I am 40, I will be somewhere that I am happy for a long time.

Pithy advice: don't stress about finding the perfect job right now. You are supposed to be new at this. Take advantage of that, find a team you like (even if the job is only a so-so fit, the people will make it better), and do some looking inward.</comment>


The Transport Layer Security (TLS) Protocol Version 1.3 - <AUTHOR> https://tools.ietf.org/html/rfc8446 <comment><AUTHOR> Also released today: IANA Registry Updates for TLS and DTLS ([https://tools.ietf.org/html/rfc8447](https://tools.ietf.org/html/rfc8447)) and Record Size Limit Extension for TLS ([https://tools.ietf.org/html/rfc8449](https://tools.ietf.org/html/rfc8449)).</comment>