mchadwick
Vistar Media is company building some neat stuff in the "Digital Out Of Home" space. Right now, it's just us three founders -- two of which are coming from Invite Media, which was acquired by Google in 2010.
We're looking to make our first few engineering hires. Specifically, someone relatively experienced to work on our backend bidding and reporting infrastructure, and someone to focus on the webapp which customers interface with.
We have a recuriterbox page at http://vistarmedia.recuriterbox.com, but feel free to contact me directly if you have questions, or would just like to know more.
1) Read the first couple chapters of Introduction to Algorithms (Cormen et. all) enough times to know it cold. Something in there will come up. 2) Dedicate a day or so to browsing pertinent Wikipedia articles. Simply read as much as you can.
The former gives you some depth. The latter, breadth. Outside of off-the-wall Wikipedia articles, you should not be discovering anything radically new. If all goes to plan, you should be able to answer the bulk of the straight engineering questions. If you're lucky, one of them will click with a Wikipedia article you've just read. See: Fragmentation, Skip Lists, Virtual Functions, whatever. Read lots. Even if emulated, breadth counts.
If you get lost on step 1, this isn't the job for you (right now).
Good luck!
The important take away: Don't use spot instances unless you are 100% okay with the idea that your machines will disappear without warning at some point. Let that sink in.
Can you use this as a VPS replacement? Probably. My guess is that your uptime will be no worse than some VPS provider. However, if you're storing information on the ephemeral storage, the onus is on you to get it to the new instance. I imagine that isn't generally the case on a VPS.
You may be able to mitigate this by using EBS (required in the case of these micro instances), but I've only used EBS a handful of times, and am no expert on the subject. If I understand their layout for these micro instances, it would simply be a matter of spinning up a new instance and spinning down the degraded node.
Learn the exact copy on write semantics of forking (What happens to file handles? Threads? How does the OS know a paged needs to be copied?), copy two file descriptors with splice, put something in shared memory, move messages over an IPC queue.
Above is an overview of how the Scala compiler attacks this exact problem. Long story short: It is able to grok just enough Java to build a basic AST and resolve circular dependencies the same way it handles one in pure Scala.
The article also hints that Groovy has similar capabilities.
A self-contained issue tracker. I switched from hand-hacked TODO lists to Ditz a few weeks ago, and haven't looked back. I'm able to organize my tasks as I would a codebase (components, releases, comments, et cetera). I saw an immediate and sustained increase in my productivity.
Its tight integration with git is a huge plus.
That doesn't even get in to verifying results from an untrusted client.
Here's my half-implemented proof of concept from a while back that runs on AppEngine: http://github.com/markchadwick/emarer/tree/master
Slightly different implementation, but the same idea (which I think is a very cool idea!).
Ask HN: When do I impose caps?
I've been working on an application where each user on the system would, of course, incur some processing and some storage cost on my end. I would like, at some point, to have different levels (read: prices) of accounts based on usage. The majority of accounts would fall into the free category, while the larger ones would help pay to keep the system running.Ideally, I'd like come out of the...