HNHacker News
TopNewBestAskShowJobs

WALoeIII

277 karma · joined September 25, 2008

https://www.andrewloe.com/

[ my public key: https://keybase.io/waloeiii; my proof: https://keybase.io/waloeiii/sigs/YA7PZUiF1uBYwXHp5NaXW6-noq_6l5IGSJxVxnCacqY ]

submissionscomments
WALoeIII··on The new way the feds take over websites
Its a movie site.
WALoeIII··on The new way the feds take over websites
Yeah but they probably don't watch movies.
WALoeIII··on Ask HN: Should I Learn Ruby?
No SciPy is amazing and I wish ruby had something like it. Its also got a lot of C so its pretty fast though you interface with it in Python.

http://www.scipy.org/

WALoeIII··on The New Ruby Ecosystem
Rubinius, MacRuby and JRuby are all 1.8 implementations now with 1.9 still on the roadmap.
WALoeIII··on BigPipe: Pipelining web pages for high performance
Sweet, instapaper'd!
WALoeIII··on BigPipe: Pipelining web pages for high performance
I think you could actually implement this with nginx + <insert evented/actor server (tornado, rainbows, mochiweb, yaws etc.) here> + your application quite easily. Nginx buffers the client's request (you cannot turn this off) before passing it to the backend but you can turn proxy_buffering off which stops nginx from buffering the response to the client. In this middle tier you could instantly send the headers + loading JS and flush the buffer then determine the pagelets to render and either do it in process or further delegate to application servers with HTTP or your own protocol.

This does kind of beg the question, why use nginx at all? It provides you with a lot of protection against malformed requests and general fuckery. If you need it you can push the middle layer back into nginx as a module which would be screaming fast.

This reminds me of Heroku who do something like this with their 'routing mesh.' client -> nginx -> routing mesh (erlang) -> thin (ruby app server). The erlang process knows which ec2 instance has the ruby process to serve the request and initiates and is basically a smart proxy. You could quite easily query 6 backends simultaneously for each pagelet and pipe the JSON out to the client then throw in the footer as well.

I think this deserves some experimentation.

nginx + erlang + rails (serving JSON).

WALoeIII··on BigPipe: Pipelining web pages for high performance
Facebook's approach seems like a really cool way around browser limitations.

ESI is really cool for caching inside your infrastructure, but it doesn't help the client as much because they have to download the entire page again even if only the time changed in the top bar. I've always dreamed of a way of cutting up my HTML page to have different pieces 'cached' by the browser. A logical next step from this style (which helps you load a client with a cold cache) is to have the client cache each of these pagelets. On subsequent requests you could return JS (and actually you could check a cookie and recycle the JS too!) look in the client's HTML5 storage or some other crafty mechanism which will reduce strain on FB's infrastructure and make it faster for the user.

WALoeIII··on Rubinius 1.0 (Fabius) Released
Its a totally different beast, not an apples to apples comparison.

EE is simply a patched MRI, so it will be faster on strings (known issues with rbx), but rbx has generation GC and JIT which can only improve.

Right now in my limited testing the performance is a wash, but if your app is memory hungry the improved GC is worth it alone. If your app is CPU heavy the JIT becomes your friend. The only way to be sure its to test it (how about running your test suite on it?), but I suspect rbx is going to get very fast as soon as a few big players shift on to it and the sweet spots for the tuning knobs are discovered.

WALoeIII··on The reason behind the half-REST design pattern
What kind of configuration do you need to do to 'enable' PUT and DELETE? In my experience with 1.3, 2.0 and 2.2 it was always proxied correctly. I am using primarily nginx these days which also proxies the HTTP method without any special configuration.
WALoeIII··on The reason behind the half-REST design pattern
It fakes the PUT to help out browsers. If you pass in a _method paramater it overrides the actual HTTP verb, but this is actually done in middleware above Rails, the controller sees it as PUT.
WALoeIII··on Mac OS X SSD tweaks
OS X does not support TRIM.

TRIM is only enabled on the G2 Intel SSDs and newer competing models, the original G1 does not have the instruction.

WALoeIII··on Simple Daily Git Workflow at Gameplan (Cheatsheet included)
Use Buildmeister! My co-worker wrote a cool little tool wrapping this common workflow up so you can have single line deploys to staging that merge bug/feature branches.

http://leigh.onehub.com/buildmeister-talk

WALoeIII··on CNN Fails to Stop Fall in Ratings
I wonder how much of these news ratings are a reflection of the changing preferences of their primary audiences. Though I think CNN attempts to be as neutral as possible, I have always considered it a somewhat liberal network. Fox, on the other hand, has always come off as very conservative to me.

As a young (26) libertarian/liberal I don't even own a TV, I get my news from nytimes.com, BBC and NPR driving around and links from my social circles. I think if I had a TV I would watch CNN. My father on the other hand has a TV, and its on Fox.

WALoeIII··on A Warning: Facebook dating apps see massive user drop after FB policy change.
This was particularly annoying as there is a replacement on the horizon, but not yet available. There is theoretically going to be application -> inbox which will be more useful in many cases, but its got this amorphous release date that they won't pin down.
WALoeIII··on Why I’ll never own another server
This is easily done with Elastic Load Balancers, simply proxy to different ports for SSL and instruct your webserver to listen there. The huge upside is you can automate this just as well as any other piece.
WALoeIII··on Why I’ll never own another server
Why would you run memcache outside of your VLAN though, doesn't that obviate most of the point (speed) by adding so much network latency?
WALoeIII··on GwtQuake: Taking the Web to the Next Level (HTML5+WebGL Quake)
What is console command to draw fps in top right? I can only remember 'timerefresh'.
WALoeIII··on "HTML" the Song (by The Hot Toddies)
+1

98102 ftw.

WALoeIII··on EventMachine: scalable non-blocking i/o in ruby
http://github.com/lifo/cramp

It works best in Thin (EventMachine) or Rainbows! (Fibers).

If you are doing I/O you should use NeverBlock (http://www.espace.com.eg/neverblock/) they've even implemented a MySQL driver, the best part is they're 'drop-in' so you don't have to learn a new API, they just hide the async calls from you.

Fibers I think are closer to Erlang style than the event loop, and much more straight forward to program.

WALoeIII··on "LuaJIT's interpreter () beats V8's JIT compiler" - Mike Pall
This is not an apples to apples comparison, the implemented Languages are fundamentally different. I do think this is an inspiring factoid that shows what is possible with a well done JIT.

Go Rubinius!

WALoeIII··on Making Ruby Fast: The Rubinius JIT
404
WALoeIII··on My first simple 97-loc Sinatra/Freebase/Heroku single-serving app
Thanks for showing me to Typhoeus, that's sweet lib!

http://github.com/pauldix/typhoeus/

WALoeIII··on An Engineer's Guide to DNS
Absurdly expensive.
WALoeIII··on Setting up Amazon RDS for Heroku and Rails
Heroku is on EC2, so its just as local/fast as their instances. Cost is probably a wash. What you're gaining is flexibility and control, you're also taking on some responsibility. Heroku -> RDS -> Your own EC2 instance is just a sliding scale trading flexibility for responsibility. I would start on the left and slide to the right as my application needs dictated.
WALoeIII··on Amazon Relational Database Service
5.1 scales better, and I would bet they're looking into XtraDB (if not already using it) which will go even further on multi-core machines.

edit - 5.1 (recent releases) scales better mostly due to InnoDB 1.0.4 which incorporates a number of patches from Google (Mark Callagan), Percona and more.

WALoeIII··on GoogleBot as QA tester
This only ensure the pages don't explode, you still have no idea that you are showing NASCAR stats on your NBA homepage...

Crawl and Fuzz locally:

http://github.com/relevance/tarantula

WALoeIII··on Nginx module to turn it into a long-polling message queuing HTTP push server.
This is fantastic. EZ-Mode push using a very simple to deploy piece of software.
WALoeIII··on High Quality Ruby on Rails Example Applications
I believe simply up voting moves it into your Saved list.

http://news.ycombinator.com/saved?id=WALoeIII - mine http://news.ycombinator.com/saved?id=bhrgunatha - yours

WALoeIII··on JSNES: A Javascript NES emulator
This is so cool. Props.
WALoeIII··on Electric Motorcycle Hits 150 MPH, Breaks Speed Record
GO KARL & DURKEE!
← PreviousPage 4 of 5Next →