HNHacker News
TopNewBestAskShowJobs

michaelw

160 karma · joined July 7, 2010

hntrades:d3034b6b6f4dd2a197ad49dd46673e7b4e0a6ead
submissionscomments
michaelw··on Angular.js directives will break on minification unless you do it like this
There's a better way. Anywhere Angular expects a function it will take an array as well. The array can be the usual list of dependencies and a function.

Here's a working version: http://jsbin.com/onevaz/1/

For what it's worth, I agree that the docs need to reflect this.

michaelw··on How to hire a product manager
Ken nails it. The only thing I would add is that I've seen more software failures because of insufficient product management than anything else.

Product management is particularly important in non-software companies where the obvious product isn't software. Your e-commerce website is just as much a product as your hipster glasses. Failure to manage it results in the classic IT dept. dysfunctional relationship where everyone hates IT and IT develops a thick skin and says no a lot.

michaelw··on Stop Writing REST API Clients
Sigh. This is optimizing for the wrong problem.

Stop creating REST APIs that are only level 1 or 2 (see http://martinfowler.com/articles/richardsonMaturityModel.htm... ).

Start writing HATEOS systems where the client is coupled to the semantic rather than the syntax.

Machine parseable interface descriptions might get rid of some boilerplate but it doesn't make for a more robust client-server relationship.

michaelw··on Can I ask for your help with testing some js loop syntax?
I gave this a try and added the functional form (i.e. bigArray.forEach).

I was a little surprised at how much slower this was. I ended up creating another test where every case had a function call overhead. All three functional forms (forEach, map and reduce) were slower than the plain old loop

http://jsperf.com/am-js-loops/7/edit

michaelw··on Haters Gonna HATEOAS
I think it's easy to miss the benefits of HATEOAS. The relative ease with which javascript clients can use so-called level 3 REST to construct resource URLs from IDs is compelling.

We've been using a HATEOAS approach for the interface between our back-end rails app and our front-end javascript rich client.

We've seen significant benefits during development because the hypermedia links allow us to DRY up the coupling between client and server.

The overall result is much less boiler plate duplication and much clearer client code. It's easier to maintain and extend.

We've judiciously identified some exceptions where the client needs to construct URLs explicitly, in our case because the URLs are tied to dates and we think it's silly to have the server construct links for next_day and previous_day let alone an entire calendar view.

michaelw··on The Hotel California of cancellations: Audible tries everything to keep me
The part about not really deleting your account is actually a good thing.

I've bought dozens of audiobooks over the past year or so. Audible is promising that even after I stop "subscribing" that I'll still be able to download and listen to the books I previously bought.

This is as good as it gets with DRM. I freely admit isn't saying much and I do plan to backup my audiobook collection via http://www.opentutorial.com/Convert_audible_aa_files_to_mp3

michaelw··on Never Lose Your Wallet Again
My wallet is too thick already. Another 3.8mm is way too much. That kind of thickness needs to be integrated into the wallet rather than inserted into it.
michaelw··on Stanford’s Self-Driving Car Tears It Up On Racetrack – Tops 120 MPH
I agree that computers will soon (< 3 years) be able to beat most human drivers and as someone else said, getting rid of 70kg of driver is a huge advantage. For closed circuit courses like those used by Formula 1, the teams already have almost perfect topographic maps and models of the circuit, including measurements of the grip characteristics of the surface at various points on the circuit. Formula 1 teams run endless simulations and already know what the best possible lap should be.

But that's just qualifying. Racing is about so much more. Driving software will have to integrate considerably more inputs in order to avoid crashing into other cars. Let's say cars have to share telemetry. Development could probably happen in parallel with other improvements but I'd still stay 3-5 years.

Even if we assume software that can drive in a pack of cars, and algorithms for attacking and defending, there's that drive to win that makes some drivers do things that, if we're honest, aren't fair, safe or even right. The rules are different when nobody's life is at stake.

I would love to see Formula 0. No worries about driver safety. No artificial design limits to reduce cornering speed. In fact, the only design rule I would impose is the maximum height above ground and perhaps something about no laser cannons.

Does anyone remember Rogue and then Rog-O-Matic? It would be fun to create an online competition using an existing racing simulator.

michaelw··on Heroku Labs: dot-profile - set your dyno startup environment
This is a very welcome addition. Currently the env settings are managed through the API and while they do keep it a history it's just not viable to manage config changes.

This will let us manage those settings under source code control.

michaelw··on Bcrypt is Not the Answer
I don't think this is correct. With bcrypt you can adjust the work factor to keep up with the ramifications of Moore's law.

See http://stackoverflow.com/questions/4443476/optimal-bcrypt-wo...

michaelw··on Dear Heroku: Quit blaming all of us when you fail. Do this instead…
Why do you care? Do you think this helps your customer at all?

Perhaps you're worried about your technical reputation. All you're doing is moving the blame to some part of your code to the decision you made to host on Heroku.

Down is down. Unavailable is unavailable. To your customers that's all that matters.

For what it's worth I think hosting on Heroku makes plenty of sense and I'm actually moving my app (Crisply) to Heroku so that my technical team spends less time writing chef scripts, less time managing database clusters and more time adding value. But when Heroku goes down my customers will be just as screwed.

michaelw··on Infinite Copyright Is Killing Culture
Recommended reading on this subject: http://www.spiderrobinson.com/melancholyelephants.html
michaelw··on Vector based UI design tool that generates ObjC
Well.... WMF was a great example of the difference between theory and practice. Not really resolution or even device independent.
michaelw··on Yahoo Crosses The Line
This is already what happens. Changes have reinforced and will further reinforce the status quo and ensure that only the mega corporations will be able to play.
michaelw··on Yahoo Crosses The Line
I'm in the mood to pick nits this morning.

The article links to the description of the patents http://paidcontent.org/article/419-meet-the-10-patents-yahoo... and tries to summarize each one in "plain English."

> Control for enabling a user to preview display of selected > content based on another user’s authorization level (Filed > 2005, Issued 2009) > In plain English: Share an item only with selected friends

This is actually about a preview of what a given user (friend) would see.

The reason software patents suck so hard is because for every 10,000 totally bogus patents there's one that when you read it makes you think, wow, that really is an invention.

michaelw··on Bootstrap's maintainer hates the semicolon
Has anyone on this thread RTFS?

Semicolons are not optional. They are inserted for you as a convenience when the parser can figure out what you meant.

This situation wasn't a big deal in the early days. But the patterns of coding that have emerged to deal with Javascript's scoping problems have brought this from a curiosity to something profoundly crazy.

Using an operator (i.e. !) to fool the parser is hilarious but really not OK.

Writing code is an exercise in communication. You are communicating with other programmers (including your future self) and the parser. The zero semicolon style espoused by @fat is problematic for both other programmers and the parser. Perhaps one day @fat will win and his style of communication will be sufficiently accepted to be valid but this is not that day.

The relevant section of the ECMAScript spec is included for your convenience:

7.9 Automatic Semicolon Insertion Certain ECMAScript statements (empty statement, variable statement, expression statement, do-while statement, continue statement, break statement, return statement, and throw statement) must be terminated with semicolons. Such semicolons may always appear explicitly in the source text. For convenience, however, such semicolons may be omitted from the source text in certain situations. These situations are described by saying that semicolons are automatically inserted into the source code token stream in those situations.

http://www.ecma-international.org/publications/standards/Ecm...

michaelw··on Logging consulting hours - The Good, The Bad, and the Ugly
Everyone hates timesheets and yet every timesheet app seems to be about more ways to manually enter time. We decided to change that.

We've always prided ourselves on better quality timesheets. Some of us would keep a journal during the day, others review emails, commits, tickets at the end. No matter what it sucked and was always a bit like fictional archeology. It sounds right but the bones might have been re-arranged a bit and something is always missing.

Commit logs, or task lists are only a small part of the story. Lots of work gets lost in meetings, emails, phone calls and the like. Real work happens across multiple dimensions (no matter where ya go, there y'are) and it's a pain to go find it at the end of the day (or week). The more clients you have the worse this is.

We built http://www.crisply.com to aggregate everything we do into a journal automatically organized by project. We also roll up time when we can. The results are a more accurate (rather than precise) timesheet with rich supporting evidence. You also get great analytics at the time and activity level. Crisply integrates with almost any system. Mention HN if you signup and I'll make sure you get in.

michaelw··on Show HN: HackPad is the best wiki ever
Just discovered the refactoring feature.

Select some text. Click "Create Pad" and give it a name. The new pad is created with the selected text and the name links to it. This was a little disconcerting at first but it's absolutely the right thing.

I got the @User stuff to work. I think it matches contacts from my google contacts against other users who have signed up for HackPad. That's reasonable.

michaelw··on Show HN: HackPad is the best wiki ever
Got it. Nice.
michaelw··on Show HN: HackPad is the best wiki ever
Came across Dropbox integration but couldn't see it doing anything.
michaelw··on Show HN: HackPad is the best wiki ever
Thank you for making this. I really like it.

A long time ago in a startup far far away a friend and I built something like this. Ours was nowhere near as elegant. We would look for CamelCaseWords to kick off the autocomplete but your use of @ is much better.

Delightful moments: pasting an image url embeds the image. Consider letting me backspace the image to get back to the url.

The multi-user edit seemed very smooth. Better than collabedit to this user.

The task list is nice. I'd love to have a title to the task list and be able to query for and surface all task lists across pages.

Please consider supporting #hashtags if only so you can show a tag cloud. The built-in search is great.

I couldn't figure out how to link to a person.

Finally, for users who login with their own email address, please consider letting them in right away. At most have the confirmation step be something they can complete later. Eliminate friction at every turn.

All in all a really nice product.

michaelw··on 150rpm proton motors in mitochondria
More info here: http://www.k2.phys.waseda.ac.jp/F1movies/F1Prop.htm and here https://plus.google.com/u/0/114601143134471609087/posts/g9pP...
michaelw··on Show HN: Backyard.io - We applied to YC (W12) and need some beta users
Agreed. Why not post invite codes to responders here on HN?
michaelw··on Deck.js: A JavaScript library for building modern HTML presentations.
This isn't the first such library and I doubt it's the last. Until any authoring tool can export to this format these libraries are always going to be curiosities.
michaelw··on Burt Rutan’s Boomerang – Safety Through Asymmetry
I've been a fan of Burt Rutan since the VariEze first appeared on the cover of Popular Science in 1974. Oh how I wanted to build one of those planes. Burt Rutan has made more contributions to aerospace than anyone since Glenn Curtiss.

This wikipedia article is certainly relevant http://en.wikipedia.org/wiki/Critical_engine but I'm still not sure how the Boomerang can be so stable that it requires no rudder input during takeoff.

My guess is that by having one engine further back he creates the equivalent of the dihedral effect. If the plane starts to yaw in one direction. I have nothing but intuition to support this idea :)

I would love to see a detailed explanation of how this plane is so stable.

michaelw··on Google Plus Deleting Accounts En Masse: No Clear Answers
I self-host openvbx which is a pretty nice application running on the twillio.com service.
michaelw··on Another Google "abuse prevention gone wrong" horror story
Nice one! :)

Pastebin or mailinator.com I guess :)

I can see it now, datafrontporch.com, an escrow service for data. Sign up now for protection when, not if, your account is cancelled.

The cost of storing that data for 60 days after the account is terminated would be minor.

michaelw··on Another Google "abuse prevention gone wrong" horror story
This guy has been creating a lot of noise on Google+ in the past day. Although I have no direct information, the early signs are that Google is comfortable about why they terminated his account.

In general I don't care about this guy. More interesting is the issue of "my data" and "your service." I see this as equivalent to a landlord and a tenant (no matter how little rent paid). The landlord can, under certain circumstances, kick the tenant out. The landlord cannot under, any circumstances, hold or destroy the tenant's possessions.

Longer post here https://plus.google.com/115878613002809583306/posts/WsWj4CEh...

michaelw··on Ask HN:The best free web based mockup/wireframe tool?
Wireframe Sketcher has become my favorite tool of late.

Clickable PDFs, simple text markup for control data, story boarding and eclipse integration. No real time collaboration but that hasn't been an issue for me.

The free version nags you a bit but the price was so low I just paid for it.

michaelw··on Tell us your naughty stories
Before dropping out of college 25 years ago I took an ASM programming course. The processor was the PDP 11. The official terminals were dec writers to an emulator but I happened to have access to a PDP 11 unix box.

I cut my teeth doing Z80 ASM hacking on a Timex Sinclair and had no patience for this required class.

I wrote all my assignments in C and dumped the intermediate output. The grader always gave me nice comments like "well structured code."

← PreviousPage 2 of 3Next →