RSSAmplifier

Blog

Man of Variable Sorrow

Musings on technology and bluegrass

blorn.comRSS feed ↗14 posts

Latest posts

How a tech company fails: Cover

I ate at a restaurant recently and used the Cover Android app. I actually think the app is pretty decent. However, now it demands I rate the restaurant for some sort of Zagat rating. Killing and restarting the app brings it back to the same rating screen. The app is effectively locked up until I express my opinion. Seriously? Rate it or else? The answer is: Or else. I’m tempted to rate every…

How a tech company fails: Lyft

Sometimes, tech companies fuck up in a way that is just so obvious that it utterly baffles me. As far as I know, I’m a perfectly normal San Francisco resident with a perfectly normal Nexus 5. I’ve had my phone number for 15 years. Yet, after downloading Lyft’s Android app, it tells me that my 1-415-XXX-XXXX phone number is invalid. Every Single Time. Maybe they are rejecting…

Guice and Jersey 2, the easy way

It’s 2015, almost two years since the release of Jersey 2.0, and it still doesn’t play nicely with Guice. The Jersey/Glassfish team decided to write their own dependency injection system from scratch and made a mess of it (“Static globals? Check. Configuration files in META-INF directories? Check. J2EE locked and loaded, SIR!”). There have been a few attempts at Guice…

"TDD is dead", he said

One of the issues that drove me out of Dropwizard was the inability to properly test code. I like deep tests that cut across a wide swath of code, with a minimum of mocking and stubbing. My favorite level to test code is the JAX-RS api itself! Unfortunately, because Dropwizard uses Jersey to implement aspects like transaction management, you can’t just casually fire up a test using an…

GWizard, like Dropwizard but Guicier

If you’ve been using Guice for a while, you probably can’t imagine how you could ever again live without dependency injection. At this point I pretty much “think in DI”. So it was with some trepidation that I started a client project using Dropwizard. Dropwizard is a fantastic idea - make some opinionated decisions (ones which I for the most part agree with) and cut out…

JSOG: Encode complex object graphs in JSON

I keep having this problem over and over. I have a complex, interlinked object graph on my server and I need to transfer a representation to my (usually Javascript) client. This is a long-solved problem in RPC protocols from the 90s, but like the cure for survy , we seem to have forgotten something in progress towards JSON-based protocols. Consider this example graph of people and their secret…

Beware cutesy two-letter TLDs for your domain name

Update: After over 8 hours of downtime, DNS authority is once again delegating properly. No response from support emails. Also: According to one HN commenter, other .st domains were affected. Every .com domain with remote phonetic value is held by a squatter looking for a $1m payout. So, like many other startups, we chose a clever domain for Voost: https://www.voo.st/. It was perfect - short,…

Joy of Python

# first: grep '^......$' /usr/share/dict/words > words f = open('words') lines = f.readlines() lines = [line.strip().lower() for line in lines] letters = 'ecmlobkidepx' def hasall(line): llist = list(letters) for letter in list(line): try: llist.remove(letter) except: return False return True for line in lines: if hasall(line): print(line) Can you guess what game I’m playing?

SSL for your domain on Google App Engine

As Jon and I prepared to launch Voost , we knew we needed an always-on SSL solution. In the age of Firesheep , it is simply no longer reasonable to provide any kind of authenticated service, no matter how trivial, over unencrypted channels. Even though our website hands off authentication (Facebook and BrowserID) and purchasing (WePay) to third parties, there are two good reasons why our online…

The Facebook Platform Is A Trainwreck, Example #871

There are few APIs more painful to work with than the Facebook API. As the author of a couple deeply integrated Facebook applications and an opensource Java integration library , I suffer with it almost every day. The problem is not that the API is buggy and inconsistent. The problem is that Facebook doesn’t care if the API is buggy and inconsistent. I could pick from hundreds of examples…

The Unofficial Google App Engine Price Change FAQ

I don’t work for Google, but I read the mailing lists and pay attention. Also, I show up at places where Google buys beer. Here’s what I’ve learned: What is changing? Google is changing the way it charges for App Engine. Previously, you were charged for three things: Bandwidth in/out Data stored in the datastore “CPU time” of all your programs The new billing model…

New blog

I intend to retroactively import much of my old LiveJournal and Similarity blogs. But that may take a while.

The Oracle Speaks, Part 2

Welcome back to 1992!

The Oracle Speaks

Why is this so funny?