HNHacker News
TopNewBestAskShowJobs

JeffJenkins

1,545 karma · joined April 3, 2008

Software Engineer @ Foursquare

None of my comments/submissions should be taken to represent the opinions of my employer.

--

Website: http://www.jeffreyjenkins.ca

--

This is one of my other projects, a python object document mapper for Mongo: http://mongoalchemy.org/

This is my microscope blog: http://stuffmagnified.com/

submissionscomments
JeffJenkins··on Developing Service Oriented Architectures
Yeah, if you can get away with that model things are simpler. The best first step into SOA to take is offloading work that doesn't need a user response to a pool of workers (often by publishing to a message bus, as mentioned elsewhere in the thread). I've implemented systems like that using Rabbit and Redis and it worked fairly well.

However, some kinds of requests are fundamentally about integrating the results of a bunch of different services into a response to send to the user. In that case you somehow need to gather the results of your rpcs/events in one place to integrate them. An example is Google search where the normal results, ads, and various specialized results/knowledge graph data need to be integrated to present to the user.

Another consideration is how much you want to be able to isolate services. If you have a user/auth service as in the article which completely encapsulates the database and other resources needed for data about users then you'll end up with a lot of calls into that service. It's a disadvantage because of all the reasons in my original comment, but it's great from the perspective of being able to isolate failures and build resilient systems

JeffJenkins··on Developing Service Oriented Architectures
If you're considering switching your monolithic application into a SOA you should consider the testing and debugging implications seriously.

If your call graph goes more than one level deep then doing integration/functional testing becomes much more complicated. You have to bring up all of the services downstream in order to test functionality which crosses that boundary. You also have to worry a lot more about different versions of services talking to each other and how to test/manage that. The flip side is that the services will be much smaller, so leaf nodes in the call graph can reach a level of test coverage higher than a monolithic service.

Debugging and performance testing becomes more complicated because when something is wrong you now have to look at multiple services (upstream and downstream) in order to figure out where the cause of some bug or performance issue is. You also run into the versioning issue from above where you have a new class of bug caused by mismatched versions which either have tweaked interfaces or underlying assumptions that have changed in one but not the other (because the other hasn't been deployed and those assumptions are in shared code). The bright side for debugging and performance is that once you know which service is causing the issue it's way easier to find what inside the service is causing the issue. There's a lot less going on, so it's easier to reason about the state of servers.

JeffJenkins··on Python Language Features and Tricks
It's important to remember that OrderedDict keeps insertion order, it isn't an implementation of a sorted dictionary.
JeffJenkins··on An Open Source Gmail Notifier for Mac OS X
I'm using MailTab Pro, which does notifications as well as presenting a mobile web view of the gmail website. I actually end up doing a lot of my email writing and processing directly from the web view because it's so much faster than the full Gmail site.
JeffJenkins··on Airpnp: Like Airbnb, but for toilets
You're better off going to a hotel in terms of cleanliness, and they are located all over midtown. I've never been refused from a hotel when I searched for or asked where the restroom was
JeffJenkins··on An estimate of the real savings for merchants from Bitcoin
Generally multiple currencies aren't accepted and the volatility is much lower. You probably couldn't make a profit on normal consumer goods that have a return policy. For this to work you'd need potentially extreme currency changes over the course of a few weeks.
JeffJenkins··on An estimate of the real savings for merchants from Bitcoin
If merchants were doing sales and returns using Bitcoin it seems like you could make money on the volatility by returning items when the value of Bitcoins went up within the return window. You'd have to be willing to keep items you bought if the value of Bitcoin went down, but if you systematically made all your regular purchases that way you ought to come out ahead. Is this a real risk for merchants, or am I missing something?
JeffJenkins··on Show HN: Workflow for front end developers to create desktop applications
Neat. An Objective C bridge to access OS X's frameworks was specifically what I was thinking of, and it looks like there is one: https://github.com/TooTallNate/NodObjC
JeffJenkins··on Show HN: Workflow for front end developers to create desktop applications
Does this let you do anything on the host OS that you could do with a node.js library?
JeffJenkins··on English Letter Frequency Counts: Mayzner Revisited (2013)
Fun fact: If you're taking one vowel and five consonants the Wheel of Fortune letters RSTLNE—not in that order—are the letters that are most likely to occur
JeffJenkins··on Fabrice Bellard: Portrait of a Super-Productive Programmer (2011)
Impressive. I think these sorts of articles are hard to come by because many (if not most) super productive programmers are doing their work for a company where the outside world won't find out about what they have done. Fabrice is notable because he's got a lot of high profile work.
JeffJenkins··on News is bad for you
Yes. Audio Edition is a word-for-word reading of the print edition. Economist Radio looks like it has the random other audio things they do (there's also a podcast on iTunes with those sorts of things)
JeffJenkins··on News is bad for you
You have to be a subscriber, and then it's available on their website: http://www.economist.com/audio-edition

If you just want to read The World This Week it's available online for free: http://www.economist.com/printedition/

JeffJenkins··on News is bad for you
For anyone who isn't ready to completely turn off the news spigot, consider switching to a weekly (or monthly) source of news.

I get all of my (non-HN) news from The Economist's audio edition. It's released weekly and they have a section right at the start about big things happening in business/politics around the world in the last week. It's no more than a couple minutes to scan, and 10-20 in normal speed audio.

The rest of the articles are at least one step back (since they summarize a week of what's happened). Many others are looking at some larger event or trend, sometimes with a recent event/anecdote as a lead in.

I like the audio edition in particular since I can put it on while I'm doing chores or commuting and I'll pick up bits and pieces even if I'm not fully paying attention. I can also have only the sections I care about included, which lets me skip the ones I really don't care about.

JeffJenkins··on Why Johnny Can’t Write Multithreaded Programs
Is there a list of languages which use separate heaps for each thread? I'm really interested in learning more about that concurrency model, but haven't had much luck compiling a comprehensive list of which languages actually use it
JeffJenkins··on Chronic - Python Instrumentation
This is cool. I implemented an extremely similar system for my last job. The data was dumped into mongo and then we visualized it with stacked bar graphs.

One thing to consider since you're using a count+total model is that the most interesting timings will often be the 90th or 99th percentile, so by calculating averages you might be missing useful information.

I ran into some issues with the implementation after switching to using an async framework since the code was no longer a series of nested function calls. Since the current best practice is coroutines where this will still work I think it's okay, but you should consider how someone using callbacks might time their code. In my case I was in a hurry so I manually called the equivalent of your __enter__ and __exit__, but it was pretty ugly and left a lot of room for bugs.

JeffJenkins··on Introversion is not the opposite of extroversion
Introversion and extroversion are obviously a spectrum. The reason that having that as an axis when discussing personalities rather than two different axes because people do tend to fall somewhere on the spectrum and many of the traits are opposites. Knowing that someone is, say, "a little introverted" is a decent heuristic to use when describing someone's personality.

I wonder of the author has been Myers Briggs stuff where people are often slotted as one or the other (although a good assessment will still show where on each axis someone is)

JeffJenkins··on Why I Turned Down $5 Million in VC Funding
The really short version is that the company sells (probably newly created) shared in exchange for money. The owners of the company are generally not selling their own shares. That would lead to serious complexity.

If you want to know more, read Venture Deals[1]. It's very thorough and well written.

[1] http://www.amazon.com/Venture-Deals-Smarter-Lawyer-Capitalis...

JeffJenkins··on Vegetarian/Vegan food finder for London
For those not familiar, the pudding in the domain name referring to a few kinds of sausage in England/Ireland (e.g. http://en.wikipedia.org/wiki/Black_pudding )
JeffJenkins··on 2500 students signed up for our Online Mapping course in less than a week
I'm going to blog about it soonish. I'll cc you on twitter
JeffJenkins··on Bill Gates: My Plan to Improve Our World, and How You Can Help
Find an organization and reach out on twitter, or via email if they aren't on twitter. You'll probably find they would love the help.
JeffJenkins··on 2500 students signed up for our Online Mapping course in less than a week
I'm signed up for it. I've been toying around with CartoDB for a while and it's totally awesome. I put together a map of truck routes vs bike routes in NYC in about 10 minutes, where my only experience was having only seen a short demo of CartoDB.
JeffJenkins··on Python 2 vs. Python 3: A retrospective
This came up on python-ideas recently, there was a long thread: https://mail.python.org/pipermail/python-ideas/2013-October/...
JeffJenkins··on Marriage Isn’t For You, It's For The Other Person
That's a really misleading way to put the sentiment that you should love your spouse selflessly. And marriage is definitely also about you. If you're in a relationship with someone who isn't reciprocating your selflessness you should probably give it some deep though.
JeffJenkins··on Painless Decorators in Python
It's important when adding a layer of abstraction like this to consider both how much it makes this simpler, but also how much you're going to use it. While it makes some common decorator patterns easier, your code really shouldn't have so many decorators that having to understand this library is made up for in the number of places it simplifies the code.

If I'm writing code and using a lot of different decorators everywhere I take that as a sign that something is probably wrong.

JeffJenkins··on MakeSpace, A Dropbox For Real Life Storage, Launches In NYC, Raised $1.3M
Yeah, it's not the best, but it was good enough for my needs. If I was looking again I'd probably choose your service if you were cost-competitive.

Another place I looked at did storage by the cubic foot, so you'd never see the stuff in storage (and they could presumably save money by packing it better). Seems like that would be a great model for you to use for people who never actually go to their unit.

JeffJenkins··on Why Your Startup Can’t Find Developers
Playing devil's advocate: those people are taking some job. If a Startup A hires an engineer for more money preventing Startup B from hiring them they needs to fill their position and may not be able to find a person.

Of course, one of the signs of a real domestic skills shortage is rapidly increasing salaries as companies fight for too few people, so the fact that that isn't happening means there probably isn't a shortage.

JeffJenkins··on MakeSpace, A Dropbox For Real Life Storage, Launches In NYC, Raised $1.3M
Manhattan Mini Storage does free trips to/from your storage unit, you just have to book in advance and fit into a van. It was awesome when I was using them.
JeffJenkins··on Google security exec: 'Passwords are dead'
This article is about how two-factor authentication is great and should be used everywhere. It is not about passwords going away.
JeffJenkins··on I'm Building a GitHub for Writers
If you're using google docs for your collaboration this sort of commenting is built in. It's a great feature. Almost better than collaborative editing
Page 1 of 9Next →