HN user

goodwink

519 karma

polyglot developer, entrepreneur

Posts55
Comments69
View on HN
arstechnica.com 2y ago

Deepfake scammer walks off with $25M in first-of-its-kind AI heist

goodwink
3pts1
arstechnica.com 3y ago

New BIOS updates attempt to keep Ryzen 7000X3D processors from frying themselves

goodwink
14pts0
arstechnica.com 3y ago

Election conspiracist Mike Lindell must pay $5M to expert who proved him wrong

goodwink
26pts14
astralcodexten.substack.com 4y ago

Whither Tartaria?

goodwink
4pts0
arstechnica.com 6y ago

Parenting in a pandemic: Chaos, control, and an Animal Crossing meltdown

goodwink
3pts0
www.patrickrivera.co 6y ago

Why Startups Value Potential over Experience

goodwink
2pts0
arstechnica.com 10y ago

Smartphone-based system does job of pancreas, treats type 1 diabetes

goodwink
1pts0
www.bbc.com 10y ago

How algorithms run Amazon’s warehouses

goodwink
3pts0
www.groovehq.com 11y ago

How I’ve Become a Better Founder by Practicing Patience

goodwink
4pts0
justin.tv 11y ago

Goodbye from Justin.tv – Justin.tv Shuts Down

goodwink
3pts0
www.groovehq.com 12y ago

Use This Email Script to Follow Up on Customer Support Interactions

goodwink
1pts0
www.groovehq.com 12y ago

The ROI of a Handwritten Note

goodwink
1pts1
www.youtube.com 13y ago

Activision R&D Real-time Character Demo: Exiting the uncanny valley? [video]

goodwink
3pts0
www.popehat.com 13y ago

CNMCC shuts down college paper over birth control and sex article

goodwink
1pts0
blog.haikudeck.com 13y ago

Build Better Presentation Decks with Emotional Triggers

goodwink
2pts0
goci.me 13y ago

GoCI - Open Source Continuous Integration for Go

goodwink
3pts0
groups.google.com 13y ago

Can meaningful values be returned from a defer'd function? (Go)

goodwink
1pts0
github.com 13y ago

GitHub client (API v3) for Go

goodwink
1pts0
channel9.msdn.com 13y ago

Rich Hickey and Brian Beckman - Inside Clojure (2009) [video]

goodwink
22pts0
bitbucket.org 13y ago

DrClojure: Newbie friendly Clojure IDE written in Clojure

goodwink
1pts0
arstechnica.com 13y ago

First targeted attack to use Android malware discovered

goodwink
2pts0
www.flyingmachinestudios.com 13y ago

How Clojure Babies are Made: Leiningen's Trampoline

goodwink
1pts0
github.com 13y ago

Jon: Simple JSON Get/Set from Terminal

goodwink
1pts0
globocom.github.com 13y ago

Tsuru - open source platform as a service (written in Go)

goodwink
185pts57
badassrockstartech.com 13y ago

DigitalOcean Root Vulnerability in the Wild

goodwink
38pts55
badassrockstartech.com 13y ago

Experience Versus Enthusiasm in Hiring

goodwink
1pts0
badassrockstartech.com 13y ago

ES6 Might Be the Reason Not to Use CoffeeScript

goodwink
5pts0
status.heroku.com 13y ago

Heroku is Experiencing a Routing-related Outage

goodwink
1pts0
badassrockstartech.com 13y ago

Forget to Run Your Migrations?

goodwink
1pts0
news.ycombinator.com 13y ago

Ask HN: Really good CRM for B2B startup?

goodwink
1pts0

I'd like to see that used on a plane in economy. Given that I travel a lot and don't always end up in business/first, this is one of the first questions I ask myself when considering any new laptop.

Oh, the whole page is a flash video and I have no idea what this might be or why it would be worth my time to allow flash block to play it?

...Back

That's a very good point; I hadn't thought of it that way. Maybe this is some small part of why we seem to keep flocking to the new kids on the block.

There are performance numbers for a framework (Cake PHP, for example) and for the raw primitives of the platform it runs on (PHP, in that case). By finding the ratio between the two one can arrive at the performance loss attributable primarily to the framework you've chosen.

See my "framework optimization index" in comments below for a rundown on all these ratios which I was able to back out from this set of benchmarks.

Could you point me at an example of an idiomatic, non-trivial Go REST/JSON API server? I've been trying for a while to find something to read to get a better handle on good patterns and idiomatic Go, but I haven't really come up with anything. I've found some very good examples of much lower-level type stuff, but I think I have a decent handle on that type of Go already. What I really would like is a good example of how people are using the higher level parts of the standard library, particularly net/http etc.

If you have developers who for one reason or another prefer a given platform, then the most important performance comparisons are about how close various frameworks on that platform get to the performance of the platform itself.

Knowing how much I'm giving up in performance in order to get the features a given framework gives me is an important consideration. Also understanding when it's worthwhile to work outside the framework on the bare platform given the speedup I'll get versus the cost I'll incur by doing so is a very important optimization decision-making tool.

I believe they're encouraging pull requests to fix that sort of thing. It will be interesting to see if it helps to that degree; I hope so!

Passenger wouldn't be my choice personally, but I don't think there's anything non "idiomatic" about it. Engine Yard, Cloud 66, etc. use passenger in their PaaS configs, it's been very popular (on the wane now, but still), etc. It seems fair enough and the differences aren't going to be the sort of order of magnitude change which would really matter on this sort of thing regardless.

Thanks, this comment really helped me in my evaluation of Go today. I had been playing around with 1.0.3 for a couple days, but tip is definitely where it's at.

Could you elaborate? Their website seems to indicate that they are a very polyglot shop, not someone pushing a JVM agenda:

"On the back-end, we use Java, Ruby, Python, .NET, PHP and others based on what makes sense balancing server performance, scalability, hosting costs, development efficiency, and your internal development team's capabilities."

These could probably be further broken down into micro-frameworks (like Express, Sinatra, Vert.x etc.) and large MVC frameworks (like Play and Rails).

Gemini is sort of an outlier that doesn't really fit either category well, but the micro-frameworks have a fairly consistently higher framework optimization index than the large MVC frameworks which is as expected.

Express and Sinatra really stand out as widely-used, very high percentage of platform performance retained frameworks here. I've never used Vert.x, but I will certainly look into it after seeing this. I'm very impressed that Express is so high on this list when it is relatively young compared to some of the others and the Node platform is also relatively young.

Play seems particularly disappointing here since it seems any good performance there is almost entirely attributable to the fast JVM it's running on. Compojure is also a bit disappointing here (I use it quite a bit).

Here's a quick version of the framework optimization index. Higher is better (ratio of framework performance to raw platform performance, multiplied by 100 for scale):

Framework Framework Index

Gemini 87.88

Vert.x 76.29

Express 68.85

Sinatra-Ruby 67.88

WebGo 51.08

Compojure 45.69

Rails-Ruby 31.75

Wicket 29.33

Rails-Jruby 20.09

Play 18.02

Sinatra-Jruby 15.96

Tapestry 13.57

Spring 13.48

Grails 7.11

Cake 1.17

I think Go is almost the ideal example here, you're right. Go provides a pretty rich "standard library" for writing web serving stuff so it's a good place where you could really imagine writing your performance critical stuff just on the base platform even if you use something like Webgo for the rest of your app.

Some of the other platforms are much less amenable to that since the standard primitives the platform exposes are very primitive indeed (servlets api, rack api, etc.). Perhaps there's some value in looking at how your favorite framework stacks up against its raw platform and trying to contribute some optimizations to close the gap a bit.

One of the most interesting things this comparison brings out to me is not so much the differences between the various frameworks (although the differences between options on the same platform is definitely very useful information), but also the issue that few of us seem to think about these days: the cost of any of the frameworks above the bare standard library of the platform its hosted on.

Theres a consistant, considerable gap between their "raw" benchmarks (things like netty, node, plain php, etc.) and frameworks hosted on those same platforms. I think this is something we should keep in mind when we're tuning performance-sensitive portions of APIs and the like. We may actually need to revisit our framework choice and implement selected portions outside of it (just like ruby developers sometimes write performance-critical pieces of gems in C etc.) or optimize the framework further.

I'd like to crunch these numbers further to get a "framework optimization index" which would be the percentage slowdown or ratio of performance between the host platform and the performance of the framework on top of it. I might do this later if I get a chance.

After having a look at the code on github it looks like they did set up multi processes/threads to really test the scalability on these platforms. That's really impressive, way beyond the single thread experiment I would have anticipated something like this doing! Wow!

What was the parallelization like across these tests? Were they all running single thread/process mode or did you try to take advantage of threading/multiple-processes/etc. to optimize a production-like performance across all the different frameworks? If the latter, that's a really impressive amount of work!