HN user

joewalnes

1,235 karma

https://twitter.com/joewalnes https://github.com/joewalnes

Posts34
Comments57
View on HN
sqlite.org 8y ago

Work on SQLite4 has concluded

joewalnes
378pts157
medium.com 10y ago

A Sprinkling of 2016 Tech Predictions

joewalnes
2pts0
www.troyhunt.com 10y ago

The ongoing scourge that is SQL injection and Azure’s new SQL Threat Detection

joewalnes
2pts0
www.shoplocket.com 11y ago

ShopLocket (acquired by PCH) is closing down

joewalnes
3pts0
technet.microsoft.com 11y ago

Vulnerabilities in Microsoft font drivers could allow remote code execution

joewalnes
2pts0
git.kernel.org 11y ago

Linux 4.0

joewalnes
390pts79
medium.com 11y ago

Shell one liner: tail -f to your web-browser

joewalnes
10pts0
www.codehaus.org 11y ago

Codehaus, birthplace of many Java OSS projects coming to an end

joewalnes
10pts3
websocketd.com 11y ago

Show HN: A Unixy approach to WebSockets

joewalnes
421pts140
bbc.com 11y ago

Lost Beagle2 probe found 'intact' on Mars

joewalnes
1pts0
medium.com 11y ago

Some 2015 tech predictions

joewalnes
26pts0
www.cs.cornell.edu 11y ago

Inverse-Foley Animation: Synchronizing rigid-body motions to sound

joewalnes
1pts0
research.microsoft.com 11y ago

Convert 2D camera to 3D depth camera with machine learning [pdf]

joewalnes
2pts1
alexparker.me 11y ago

You know nothing about code

joewalnes
26pts7
github.com 11y ago

Tiniest JavaScript unit testing library

joewalnes
25pts0
www.fastcodesign.com 12y ago

11-Year-Old Makes An Unbreakable, Spill-Proof Cup For Her Ailing Grandfather

joewalnes
7pts0
github.com 12y ago

Filtrex: A simple JavaScript filter expression compiler

joewalnes
64pts6
twitter.com 12y ago

Access an Arduino serial port from a webpage with WebSockets

joewalnes
2pts0
en.wikipedia.org 12y ago

Frane Selak

joewalnes
2pts0
en.wikipedia.org 12y ago

The brown note

joewalnes
2pts1
vimeo.com 12y ago

Assembling TABBY, the open source vehicle, in 42 minutes

joewalnes
1pts0
hotmail.com 12y ago

Hotmail is up. Nobody cares

joewalnes
9pts3
github.com 12y ago

ReconnectingWebSocket

joewalnes
47pts16
developer.mozilla.org 12y ago

CSS Counters

joewalnes
1pts0
en.wikipedia.org 12y ago

Alien hand syndrome

joewalnes
1pts0
en.wikipedia.org 12y ago

Impact of the US government shutdown

joewalnes
2pts1
blog.davidsingleton.org 12y ago

Fitbit for Bonsai trees

joewalnes
1pts1
www.righto.com 12y ago

Simulating a 1974 TI calculator in JavaScript

joewalnes
1pts0
duckduckgo.com 13y ago

Resistor color codes, directly in DuckDuckGo

joewalnes
7pts2
resisto.rs 13y ago

Resisto.rs: No frills resistor color codes

joewalnes
10pts5

Bob was crazy. In the best way.

In the early 2000s, I first encountered Bob through the Java open source community. He had a knack of being able to go deep on a tough problem and emerge with a wonderfully elegant solution. This was a time when software was getting increasingly complex, and so did the knowledge required to understand it, yet Bob consistently bucked the trend and made things seems simple. He would tackle problems that scared others. He was crazy. Crazy Bob.

At one point we had a rivalry working on two open source projects competing to solve the same problem. When we first met face to face, I was nervous there may be confrontation, yet he was friendly, full of energy, and excited that we shared the passion for the same problem. We brainstormed many ideas and both went away feeling great! His crazy energy amplified my own and passion for software.

Shortly after, I joined Google because of Bob. Over the years since, he and I did our best to recruit each other for nearly every company either of us worked at - we just never got the timing right, yet I was always hopeful we'd figure it out eventually.

Even in CxO roles, whenever Bob and I met we'd geek out on all sorts of tech problems, ranging from API design, to embedded C firmware tricks, to financial protocols, to graph network theory, to hardware development. He loved tech, and his eyes lit up whenever we found a shared passion.

Bob was one of those few people who was incredibly smart, could see the problem in different ways, energize everyone around them, and make you want to be a better you.

Crazy Bob. You'll be missed.

This is a slightly modified snippet extracted from something I wrote last year predicting the Google Code shutdown. https://medium.com/@joewalnes/some-2015-tech-predictions-1e7...

------------

It's not about Mercurial vs Git.

When Google Code added Mercurial support, Mercurial and Git were roughly equal in popularity. Git was more functional, but Mercurial was a lot simpler to use. In fact, almost everyone I spoke to at the time preferred Mercurial and honestly I thought it was going to be the winner. Project hosting sites that had typically used centralized source control systems like CVS or SVN scrambled to add Git and Mercurial support (including Google Code).

Then GitHub happened. They realized that the it's not just the source control system that should be decentralized but every aspect of the project. Projects could be forked with a single click, pull requests created and tracked, network graphs explored. It created an organic and discoverable open-source ecosystem, the likes of which we never saw on Google Code, SourceForge, etc. Anyone could explore ideas in existing projects without having to gain committer access. It was magical.

GitHub may have just as easily decided to bet on Mercurial instead. I believe if that would have happened, Mercurial would be the most widely used system today. BitBucket did something similar for Mercurial and did pretty well, but GitHub always had the lead.

It was the project hosting sites that lead the source control systems, not the other way round

So, back to Google Code. It could have been something huge and it could have made Mercurial the winner, but Google Code never grokked the importance of "social coding". Even though the source code was decentralized, the projects themselves were still centralized. Decentralized project concepts such as forking, network graphs, pull requests, etc - this was all from the new world of GitHub.

Over the past two years we've seen Google release new open-source projects on GitHub, then existing projects starting to migrate. Recently, Go started migration too — this is no casual move because it affects the import paths used in a vast amount of user created Go code which will build breakages. Yeah, the writing is on the wall for Google Code.

When SourceForge fell out of favor it was sold. It’s now filled with ads, especially deceiving ones on project downloads page which try to trick users into downloading some malware infested turd burner. In fact, for a while SourceForge were actively modifying genuine project releases to include spyware. Cocks.

Google didn't do a SourceForge. If there's anything we’ve learned from Google over the years is that they’re not afraid of shutting down projects that don’t work out. By the way, I really respect Google for this — killing products takes guts.

Google Code — I salute you. You did well, you made the open source world a better place, and above all you stepped aside when you knew the time was right.

Codehaus was the birthplace of many Java open-source projects last decade.

Enterprise Java was becoming mainstream, but the open-source community saw that it had much more potential than the tools provided by Sun.

Codehaus provides project hosting (source control, issue tracking, websites, continuous builds, downloads, mailing lists, IRC, etc). This was back before GitHub existed and the only other option was SourceForge (which was terrible).

But above all, Codehaus provided community. The developers across projects all hung out together, on mailing lists, IRC and the occasional global meetup. Respect and friendship. It was there that many gripes and problems were discussed and new projects were born.

If you've ever benefitted from Groovy, Jetty, Grails, Gradle, XDoclet, XStream, jMock, EasyMock, QDox, Drools, Esper, Mule, PicoContainer, Jackson, Janino, JBehave, Stomp (and hundreds others), this was thanks to the Codehaus community.

Many of the projects and people have gone on to do great things. Companies have been formed. New communities created. Many projects died, some thrived. Codehaus is no longer the hotness it once was, but it provided the foundation that many of us have benefitted greatly form, and it's no doubt one of the giants that the Java open-source community is standing on the shoulders of.

Codehaus is now shutting down: http://codehaus.org Please join me in raising your glasses to the people and projects. Codehaus, we salute you. So long, and thanks for all the fish.

Yes, I often have 10K plus processes running on a production server. It's caused troubles at time due to misbehaving processes, but mostly it's been ok. Linux is surprisingly good at this (wasn't always the case).

For the times when some of my processes were misbehaving, it was easy to identify which processes were misbehaving with "ps", "top", etc and resolve with "nice", "kill". This killed the bad connections without bringing the rest of the app down. Sysadmins like me.

That indeed was a dilemma. Although it focusses on doing one thing well, there were also a few core things that are useful to support a websocket based app - namely a place to serve the actual web content from (static) and the ability to use websocketd using vanilla http instead of websockets (cgi).

It allows you to write a WebSocket end point, in any programming language, without having to deal with building socket servers, dealing with WebSocket protocol handshake/parsing/formatting/etc, worrying about threading etc. Just write a script that reads and writes to stdin/out.

I've built chatrooms with websocketd. To do this, you a shared pub/sub store. Redis is great, so is Postgres (with its pub/sub add-ons). Storing chat data in a store is more durable than keeping it in memory on a single machine.

CGI fell out of favor for this reason, but WebSockets have a different runtime profile: instead of having to deal with 10K shortlived requests per second, WebSocket endpoints have much fewer but longer lived connections. This is why the CGI model actually works well on WebSockets.

OP here. Something I forgot to mention on the page is how much this simplified life for a server admin. Using "ps" you can see each connection, the memory overhead, CPU usage. It's easy for a sysadmin to kill bad connections without taking down the whole server.

OP here. The overhead is really dependent on your process overhead. I typically use it for Python/Ruby/C apps which are relatively lightweight compared to something JVM based.

The runtime profile of WebSockets tends to be different to typical HTTP requests too. With typical HTTP you're often optimizing for 1000s of short requests per second, whereas with WebSockets the requests are much longer lived.

* Apple open-sources Swift compiler, open-source server-side ecosystem emerges

* Internet Explorer starts using an open-source rendering engine (like WebKit)

* Google Code shuts down

* Apple will NOT open up iPhone 6 NFC APIs

* Google self driving cars start a war in Washington

* Apple Watch gives life to "intimate" social networks

* Uber launches a package courier service

Some of these sound far fetched, but there's a slight method to the madness.

Rationale here: https://medium.com/@joewalnes/some-2015-tech-predictions-1e7...