HNHacker News
TopNewBestAskShowJobs

TimothyFitz

1,494 karma · joined April 18, 2007

http://TimothyFitz.com

Coined Continuous Deployment. Currently VP of Engineering at Findmine Inc. Podcasting with Progrium at http://SystemsLive.org Previously: Consultant. CTO at canv.as. Technical Lead at IMVU.

Currently in NYC. Previously SF & ATX.

[ my public key: https://keybase.io/timothyfitz; my proof: https://keybase.io/timothyfitz/sigs/2A3Jwyc3fTRKL2Xi-_f0nd-B9Q9jehsmyvy4-iluv6M ]

submissionscomments
TimothyFitz··on Deep Learning Hardware Limbo
Can you help me understand, how can the V100 have 10x the TFLOPs of the P100, but only get a 2.5x speed increase in training a neural net according to nvidia's docs? https://devblogs.nvidia.com/parallelforall/inside-volta/

Do we need significant software changes to take advantage of the new power? Are the TFLOPs somehow not directly comparable?

TimothyFitz··on Goodbye PNaCl, Hello WebAssembly
EOL for Chrome Apps outside of Chrome OS was announced in August 2016 https://blog.chromium.org/2016/08/from-chrome-apps-to-web.ht...
TimothyFitz··on Switching Costs in Software Development
I wish more web services provided opensource versions (Service-as-a-Software). Large orgs would still pay for service contracts even if they self host, and just having the option makes everyone more likely to invest on top of your service.
TimothyFitz··on Logo Pizza: Hot and ready logos for sale
Seems to be correct, went from $120 to $200 by the time I made it to checkout... which I then abandoned, but I was buying it for personal stuff.
TimothyFitz··on League of Legends Chat Service Architecture
Chat at "indie scale" is fairly easy. 10-20k concurrent users fit into one or two machines with off the shelf software (ejabberd) with minimal expertise. 1k-2k concurrent users could easily be done in almost any stack.

If you're doing more than 20k concurrent users, odds are you can afford to hire someone to scale up or build out a team to do it, or find a 3rd party service and pay them to host your chat.

TimothyFitz··on Google fixes nearly decade-old Linux kernel TCP bug
The author works for mozilla, and firefox is a common theme on his blog. I think it's for regular readers of his blog to understand the practical impact (readers he assumes care more than average about firefox).
TimothyFitz··on How a bug in VS2015 exposed my source code on GitHub and cost me $6,500
He didn't post it by mistake. He asked Visual Studio to create a private repo and it created a public one. A bug which he reproduced.
TimothyFitz··on See-Through Solar Is Tomorrow’s Threat to Oil
The sources I could find say 4% is used for plastic and another 4% for the energy to make the plastic. Nowhere near 50%.

http://www.plasticoceans.net/the-facts/energy-consumption/

TimothyFitz··on Notes on Art and Fear
Found this after Joël tweeted the quote "The dilemma every artist confronts, again and again, is when to stick with familair tools and materials, and when to reach out and embrace those that offer new possibilities." So true.

If there's one thing I've learn from reading about Systems Theory / reading Russell Ackoff, it's that every field, every practice, every art is far more similar than they are different.

TimothyFitz··on I hate comments
"This method takes a foo object, applies HTML encoding, and returns an array of the original and the clean code." could be a 3-line unit test that's just as clear to read, but has the side effect of actually being true instead of maybe being true!

I would consider that comment just as bad as the ones in my examples, but maybe not quite as obviously so.

TimothyFitz··on I hate comments
Actually, that's EXACTLY the case I had in mind. Obviously I couldn't put a 50 line function with weird data structures in my blog post, or it would be unreadable. But the point is that comments for that function are bad! They'll rot if you ever change the function or the assumptions at all. Instead, you should break the 50-line function up into smaller functions, and add assertions and test cases for all of those "magic-lik assumptions." Then get in the habit of reading tests first. Now your code-as-comments will never rot.
TimothyFitz··on FreezeGun: easy mocking of Python datetimes
Cool, but unfortunately it breaks if the code your testing does from datetime import datetime :(

https://gist.github.com/4261936

TimothyFitz··on How to safely determine if JavaScript is running in Node.js or the browser
module = NaN will cause your script to be tricked, because NaN !== NaN.

Not sure how to fix it, because isNaN can be overridden.

TimothyFitz··on How we handle deploys and failover without disrupting user experience
Thanks for the clarification. The downsides to that approach are that you need multiple machines, and the duration of your deploys is much longer. Not to mention, you'd have to script a deploy process across multiple machines (which is not easy, in the way that "SIGHUP Gunicorn" is easy).

Personally I've found the "put new instances into a load balancer" method to make more sense for system changes (packages, kernels, OS versions) where deploying the change is inherently slow or expensive, but the method doesn't make sense for code deploys where deploy time is important.

TimothyFitz··on How we handle deploys and failover without disrupting user experience
Your method will stall responses for server shutdown + server startup time, which for Ruby/Python apps is usually measured in tens of seconds, and for other web servers can be much worse. Hot code reloading lets you avoid any downtime at all, and with it usually being built into the framework/language specific server you get the functionality "for free".

Zdd (the project I linked to) is all about spawning a new process in parallel. All the advantages of your approach (switch to an entirely different language? Who cares) but without the stalls.

Zdd also lets you keep the old process alive through the duration of the deploy (and after), and with a little work could let you switch back in the event of a bad deploy without having to start the old version up again.

TimothyFitz··on How we handle deploys and failover without disrupting user experience
By far the easiest way to get similar behavior is to run your Django app via Gunicorn (proxied from Nginx). Gunicorn supports hot code reloading via SIGHUP, and it does so by forking and gracefully killing old processes.

If your requirements don't match gunicorn (not django, not python, etc) then you can use https://github.com/TimothyFitz/zdd a project I wrote to automate rewriting nginx config files to deal with changing proxied portfiles. To integrate any existing server, all you have to do is make it bind to port 0 (let the OS choose a port) and the write a foo.port file that contains the port number (like a pidfile). That's it.

TimothyFitz··on [dead]
One really impressive thing to me about 4chan's infrastructure: All traffic is served via 4 machines. Two webservers, a database and an admin/cron box. 22M uniques on 4 machines is insane. Hopefully Chris will write more about his setup some day. (Note: these boxes were directly serving all traffic up until ~6 months ago when Cloudflare was introduced)
TimothyFitz··on Ask HN: Who Is Hiring? (May 2012)
New York, NY - Software Engineer - Fulltime

Canvas (USV Funded) is looking for engineers #3 and #4 to join a small close team building the rich-media community platform of the future.

The job title says "Software Engineer" but really we're looking for "Software Entrepreneur" or a "Startup Engineer". Yes, your day job will be writing code. But that's the only similarity to a big company software job.

You'll be challenged to take big ideas and turn them into concrete testable hypotheses. Shipping a great feature is important, but positively changing user behavior is the ultimate success criteria. Built-to-spec takes a backseat to moves-the-metrics.

More details and how to apply: http://canv.as/jobs

TimothyFitz··on Your Bash Prompt Needs This
Cool! Do you mind posting your PS1 so other people can try out your config?
TimothyFitz··on Ask HN: Who is Hiring? (April 2012)
New York, NY - Software Engineer - Fulltime

Canvas (USV Funded) is looking for engineers #3 and #4 to join a small close team building the rich-media community platform of the future.

The job title says "Software Engineer" but really we're looking for "Software Entrepreneur" or a "Startup Engineer". Yes, your day job will be writing code. But that's the only similarity to a big company software job.

You'll be challenged to take big ideas and turn them into concrete testable hypotheses. Shipping a great feature is important, but positively changing user behavior is the ultimate success criteria. Built-to-spec takes a backseat to moves-the-metrics.

More details and how to apply: http://canv.as/jobs

TimothyFitz··on Ask HN: Who is Hiring? (March 2012)
New York, NY - Software Engineer - Fulltime

Canvas (USV Funded) is looking for engineers #3 and #4 to join a small close team building the rich-media community platform of the future.

The job title says "Software Engineer" but really we're looking for "Software Entrepreneur" or a "Startup Engineer".

Yes, your day job will be writing code. But that's the only similarity to a big company software job.

You'll be challenged to take big ideas and turn them into concrete testable hypotheses. Shipping a great feature is important, but positively changing user behavior is the ultimate success criteria. Built-to-spec takes a backseat to moves-the-metrics.

More details and how to apply http://canv.as/jobs

TimothyFitz··on Ask HN: Who is Hiring? (February 2012)
New York, NY - Software Engineer - Fulltime

Canvas (USV Funded) is looking for engineers #3 and #4 to join a small close team building the rich-media community platform of the future.

The job title says "Software Engineer" but really we're looking for "Software Entrepreneur" or a "Startup Engineer". Yes, your day job will be writing code. But that's the only similarity to a big company software job.

You'll be challenged to take big ideas and turn them into concrete testable hypotheses. Shipping a great feature is important, but positively changing user behavior is the ultimate success criteria. Built-to-spec takes a backseat to moves-the-metrics.

More details and how to apply http://canv.as/jobs

TimothyFitz··on Ask HN: Who is Hiring? (January 2012)
New York, NY - Software Engineer - Fulltime

Canvas (USV Funded) is looking for engineers #3 and #4 to join a small close team building the rich-media community platform of the future.

The job title says "Software Engineer" but really we're looking for "Software Entrepreneur" or a "Startup Engineer". Yes, your day job will be writing code. But that's the only similarity to a big company software job.

You'll be challenged to take big ideas and turn them into concrete testable hypotheses. Shipping a great feature is important, but positively changing user behavior is the ultimate success criteria. Built-to-spec takes a backseat to moves-the-metrics.

More details and how to apply http://canv.as/jobs

TimothyFitz··on Researchers Uncover 'Massive Security Flaws' In Amazon Cloud
The researchers uncovered an XML Signature Wrapping attack, which requires the attacker has access to the plaintext of a correctly authorized XML request sent to Amazon. Given that every client I know of uses https for EC2 APIS, this isn't what I would call a "Massive Security Flaw".

More details on XML Signature Wrapping here: http://clawslab.nds.rub.de/wiki/index.php/XML_Signature_Wrap...

TimothyFitz··on Moot's Canvas now public.
Yeah, I've been keeping my eye on the javascript GIF scene (there are now decent decompressors and compressors), but all of the existing options are fairly expensive and don't work on older browsers / slower JavaScript engines / slower computers. At the moment swapping static thumbnails with the actual GIFs gets us a lot of benefit with little perf overhead.
TimothyFitz··on Moot's Canvas now public.
This actually should work, but getting drag/drop right on iOS devices is hard. They just don't have the CPU to rerender our sticker dragging fast enough to make it feel like you're dragging a sticker; you tap and drag and it never catches up to render so you never see it work.

We'll optimize the mobile experience and devices will get better, so the HTML version will be good enough at some point. In the meantime we will, at some point, invest in mobile Canvas apps (Android and iOS).

TimothyFitz··on Moot's Canvas now public.
Thanks for the suggestions! The facebook thing is something we've wanted to do (and only recently could, reply links used to be anchor #hashes which means the server can't return different facebook image metadata based on them).

We've talked about facebook based login, and were holding off because we intend to lift the facebook requirement, but there are enough people requesting the feature that we'll probably reconsider.

TimothyFitz··on Moot's Canvas now public.
In fact they do, if you hover the GIF you get a pause button that pauses the GIF (and by that I mean swaps it out for the static thumbnail again; browsers don't give you any real control over GIFs).
TimothyFitz··on Moot's Canvas now public.
As usual, all HN feedback appreciated! -- Team Canvas
TimothyFitz··on [dead]
tl;dr: code to remove everyjs.com' dependencies on jQuery/Sproutcore. 24,624 deletions comes entirely from the removal of jQuery and Sproutcore. The resulting code/html is only mildly smaller.
Page 1 of 6Next →