HN user

JeffJenkins

1,545 karma

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/

Posts27
Comments256
View on HN
hn-books.com 12y ago

HN Books

JeffJenkins
2pts0
www.nytimes.com 12y ago

Obama Will Seek Broad Expansion of Overtime Pay

JeffJenkins
2pts0
news.ycombinator.com 12y ago

Ask HN: What happens to older developers?

JeffJenkins
554pts358
www.aaronsw.com 12y ago

Rewriting Reddit (2005)

JeffJenkins
1pts0
news.ycombinator.com 13y ago

Ask HN: Is there interest in a commercial recurrence rule server?

JeffJenkins
2pts0
news.ycombinator.com 14y ago

Ask HN: Resources for Adding Game-Like Elements

JeffJenkins
1pts2
qcircles.net 14y ago

The Powerful Hidden Product Search in ShopWiki

JeffJenkins
1pts0
www.theatlanticcities.com 14y ago

An R&D Lab for Transit Tech Tools

JeffJenkins
1pts0
demo.flowfs.com 14y ago

Show HN: FlowFS, a Feed Reader to Keep Your Inbox Clean

JeffJenkins
19pts12
msdn.microsoft.com 15y ago

CSS Compatibility and Internet Explorer

JeffJenkins
3pts0
blogmaverick.com 15y ago

How Google TV Could Hand Netflix the entire streaming universe

JeffJenkins
4pts0
jupiterit.com 15y ago

A crash course in how DOM events work

JeffJenkins
126pts5
itunes.apple.com 15y ago

Air Display

JeffJenkins
1pts0
voices.washingtonpost.com 16y ago

Do the news media spend too much time on news?

JeffJenkins
1pts0
www.theamericanscholar.org 16y ago

Life and Work

JeffJenkins
5pts0
www.nytimes.com 16y ago

Legacy for One Billionaire: Death, but No Taxes

JeffJenkins
6pts0
www.randomhouse.com 16y ago

Random House's 100 Best Nonfiction Books: A Lesson on Internet Polls

JeffJenkins
9pts9
www.wired.com 16y ago

PowerPoint is Evil

JeffJenkins
1pts0
www.adobe.com 16y ago

Adobe CS5 is Out, Trials Available

JeffJenkins
1pts0
www.slate.com 16y ago

Success of a Marriage in 15 Minutes?

JeffJenkins
79pts35
www.famfamfam.com 16y ago

Silk Icons: A Comprehensive Open Source Icon Set

JeffJenkins
81pts18
www.debugtheweb.com 16y ago

CSS Visited Page Sniffer

JeffJenkins
1pts0
www.avc.com 16y ago

Why You Should Start A Company In NYC

JeffJenkins
2pts0
www.rollingstone.com 16y ago

The Girl Who Conned The Ivy League

JeffJenkins
15pts2
maxvoltar.com 16y ago

Dreaming of an Apple Tablet

JeffJenkins
16pts12
www.cnn.com 16y ago

Senate approves health care reform bill

JeffJenkins
5pts1
www.artima.com 17y ago

Self in the Argument List: Redundant is not Explicit

JeffJenkins
3pts0

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

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.

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.

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

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.

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?

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.

News is bad for you 13 years ago

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)

News is bad for you 13 years ago

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.

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

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.

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)

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.

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.

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.

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.