HNHacker News
TopNewBestAskShowJobs

ismarc

987 karma · joined May 22, 2009

email: ismarc31@gmail.com
submissionscomments
ismarc··on Defaulting to hire on credentials will put you out of business
Things I use that signal the same thing that a college degree (in any subject) does: Military service, long-term contributions to an open source project (even if it's their own and no one uses it), long-term personal projects (such as restoring a car, being in a band, participating in a gaming group) and being employed at a single company for 3+ years. None of these things are easy and rosy the whole time, there's conflict, potential disillusionment, the luster wears off of them and they require real work to accomplish (you can't just kinda half-ass them). For younger developers (sub-25), a college degree (even an associates) of some sort is the most clear on paper before you've had a talk with them. However, you can easily find out if there's anything like that by asking them what they do for fun and leading into things not directly related to their potential position (I typically lead with an example of how I like to work on cars, so I buy a classic car in bad shape and fix it up over 3-4 years, sell it off, then repeat).
ismarc··on Ask HN: Why you do open source?
I was able to learn development thanks to open source and the first full time development job I had was at a company that used an almost all open source stack. Imagine some poor kid wandering into a university library to try and get a library card, being given a computer login and having their entire direction in life changed just because someone was altruistic enough at some point to make their source code available and free to use.
ismarc··on The Apprentice Programmer
I'm of two minds of this. 1) I'm very much NOT anti-college/anti-credentialing. 2) I don't see your average business application software developer having any need for a degree in CS.

I believe the anti-college/anti-credentialing stance is primarily how people are sold on degrees. People are told they will get better jobs and make more money if they get one. However, no one really takes the time to tell them that just getting your degree does not qualify you to immediately go get a job doing exactly what you want. Essentially, people have been oversold on what the degree actually gives them.

My belief is that a vast majority of the technology related jobs are the modern day equivalent of 'blue collar' work, more akin to tradesmen, such as electricians. If you read up the requirements for an electrician in the U.S. (a brief read of http://en.wikipedia.org/wiki/Electrician#United_States is good enough), it follows the same general trend we see with software development experience, even if the lines aren't as clearly drawn.

One caveat, I don't have a degree. I'm pretty close if I were to want to go back and finish it, but I didn't drop out by choice. I'm of the firm belief that it is possible, but significantly more difficult, to gain the same knowledge outside of a college or university, it's just harder to quantify the knowledge you have. I would also suggest everyone go to college and get an undergraduate degree in something that interests them, but focusing on core classes and general requirements, not their particular interest. Universities are great for two things, imparting a general base of knowledge and specialized knowledge. However, undergraduate degrees have shifted to focus on specialized knowledge at the expense of general knowledge.

One last note in my long-winded comment, I really appreciate how you state 'you should go to grad school if you want to get better at CS' rather than the usual defense of schools saying that it's absolutely needed.

ismarc··on How I Fired Myself
All of the failed responses weren't just not admitting failure, but directly blaming others. One example was a team lead in charge of a project where they said the developers missed their deadlines and would "whine" about not having enough details to do their job. Someone who didn't have an example of failing to deliver, but had examples of near misses they were able to save would even be good examples. Playing the blame game, though, just doesn't fit.
ismarc··on How I Fired Myself
Part of our culture/personality/team fit questions is like this. We also have one that's something like "tell me about a time you failed a commitment (deadline, etc) and how you handled it". Numerous people with over a decade claim perfect records, frequently blaming all those around them as having failed. It's been a real easy way to eliminate candidates, particularly because almost every team member we have gave an example that was within like a month of when they interviewed.
ismarc··on How to stop Time Warner Cable sucking at Youtube
I'd like to correct your last paragraph. Most CDNs use anycast to send traffic to the closest POP they have to you. However, most implementations use DNS responses for the front-facing servers. Not many companies outside of CDNs have the need or capital to use anycast for normal web/end-user traffic.

There are several other scenarios where it can be your ISP or can cause significantly different timings between ISPs. A lot of ISPs offer a network internal forward caching system (CDN-like) so your traffic will appear to go directly from your ISP to the CDN. This is typically done with servers inside your ISPs network but with anycast routing so requests to the CDN outside of their network stay within it. I don't know if Google/YouTube does this, but I do know that Netflix does.

Edit: this is independent of the post, which shows nothing but a fundamental misunderstanding of what's actually going on and why. I'd be more interested to see if this was flash or html5 video, whether it was using rtmp(s) for flash or http streaming, what IPs it ended up hitting instead of those two blocks and whether a traceroute for those two blocks went through the same or a different peer from where it finally connected.

ismarc··on CISPA is back
Call your representatives. Seriously, honestly, call them up and explain it to the staffer who answers the phone. Make sure to let them know that you are a voting member of your district and express your opinions politely and confidently. They really do listen to what their constituency has to say, which is a large part of why younger generation's interests are rarely represented. The older generations are actually communicating with their representatives rather than fire-and-forget style of voting. A trip to their office is the most powerful for communicating how you feel, a phone call next, a written letter next and an email is basically a "I don't care much" type message.

While you won't reach your representative directly, the staffers do pass on the feedback to the representative (each office is different, some will read each piece of mail while others only get summaries of what people in general are communicating about).

A representative democracy works only when you actually communicate to your representative what your interests are.

ismarc··on When a No means Yes
We recently have been having to work around an issue that, on top of all the other issues we've had means we're moving away from mongo entirely. The current issue is that a mapreduce on a cluster into a sharded collection will, at some point, start silently not writing 30% of the data into the sharded collection. And from that point onward, roughly the same amount of data is lost any time it goes to that collection. We have to watch for it and create an entirely new sharded collection to mapreduce into, then everything works fine for a while until that one starts not getting some data. When we create a new collection, we just pick a new name, copy all the previous data over, update the MRs to point to that collection and hit go. I would be able to understand data loss caused by certain durability settings from a client, but on mapreduce results?
ismarc··on Draft. Version control for writing
I had looked at it, but none of the writer friends I have had any experience with it. I'll give it a shot now that it has had a recommendation from someone who has actually used it.
ismarc··on Super Bowl to handle 30,000 Wi-Fi users, sniff out “rogue devices”
From past experience, planning for 30,000 simultaneous connections is in the right range. What they don't cover is peak association rate (how many people per second can associate to the APs and have the LWAPS/controllers not fall over. They also don't cover the connection rate (number of devices per second pulling and clicking through the AUP/whatever page). Simultaneous users is actually less of a problem than the rate at which those simultaneous users connect.
ismarc··on Draft. Version control for writing
While this looks kind of interesting, I've seen a large number of things that fall into this vein, and a few concepts seem to be missing (conflict resolution being a big one). Independent of that, though, when I first started working on my book, there were two tools I quickly needed but could not find. The first being a way to save references that linked outside of the document without being part of the document (think fact checking, reference materials, etc.). The second was a way to edit the document(s) and be able to compose sections/components together at a high level. I ended up using muse mode for emacs and fossil as an VCS (the wiki is particularly helpful for collecting resources). What I ended up doing is several files on different topics, then one for each chapter and then one for the book as a whole. Then it's versioned text copy and pasted between files. If anyone has a better system for linking to references and managing the structure of the book, I'd love to hear it.
ismarc··on Aaron Swartz commits suicide
When I was first going through what turned into a very long diagnostic phase for some mental health (let's call them) oddities, every person involved at any stage asked, every time I talked to them, whether I had thought of suicide. At one point, I had been asked about it so much I actually started contemplating if I were to kill myself, how would I do it (mind you, this wasn't wanting to, or even entertaining the notion, but me going "Why not actually think through the reality of it?"). I came to the decision that if I were to ever kill myself, I would stab myself in the heart with a knife. Yes, it would be excruciatingly slow and painful (can't quickly stab yourself and dodge ribs, have to drive the blade extremely deep to get the heart, etc.), but it would serve a singular purpose: to signal that it wasn't a quick decision, to absolve people from feeling like there was something more they could have done and to remove all doubt about how strongly I felt about making the particular decision. When I explained this to the psychiatrist next time I was asked, his response was along the lines of "Do you think someone would be capable of that?" And the only response I had was "If they wanted to end it all that badly, yes".

All this as a long ways to get around to saying: I disagree with anything that may consider suicide appropriate in any situation as one persons personal decision and situation becomes an example or model that someone in a similar situation could look to. But, I also don't think anyone should say a particular person should not have committed suicide. Instead, what should be said is a particular person should not have felt the need to commit suicide.

ismarc··on Games Physics: Basics and Implementation of Predictive Collision Detection
I made a flash game at one point with gravity as the core feature, tuned the acceleration, etc, then added collision detection. The simplest way I found was to give everything a destination x, y first, then collision detection checked current to destination vector and updated destination with the results (drag, bounce, etc.). Destination then became current. The downside was the multi wall reflection caused n + 1 collision checks (n being number of collisions). This wasn't an issue for my game, but one with lots of collisions could have slowed it down.
ismarc··on Our service is down because Msft Azure is down. This is how we chose to react.
When a server gets slow, log in and look at top or vmstat. There's a field called st that stands for steal time. If you're using a micro, you have higher peak CPU available, but lower baseline. We found they were notoriously bad about the average CPU we got and our default is now a small (we also moved to non-ebs backed instances for the primary drive for other reasons, which is unavailable on micros). If your steal time is high, you're over your CPU budget and it's time to look at a bigger instance.
ismarc··on "Office Space" creator Mike Judge shooting new HBO parody of Silicon Valley
I didn't really get much of the humor in King of the Hill until I moved to Texas. It is very much a parody and exaggeration of each particular "stereotypical" Texan you actually run into. Now that I've lived here for a significant amount of time, it is much more humorous.
ismarc··on Auto Insurance Comparison Startup Leaky Launches Nationally, Raises $670K
I rotate through antique/classic cars about every 5 years. I buy one in alright condition, slowly fix it up/restore it on weekends until it's in good enough condition to be a daily driver (normal commute is less than 2 miles), drive it for a while, then sell it and use some of the money to buy the next one. They're really not ready for specialized insurance until the last year or two I own them. That being said...because of the distance I drive, and the fact that it's only used for commuting/events/whatever (no out of town trips, not trips to the store, etc.) I typically have it on the super-cheap "I barely drive it" insurance and the company I'm with now (GEICO) has really good rates for antique/show cars.
ismarc··on IRecognition: I am no longer Apple's Target Market
I use a Macbook Pro for work and while the hardware may be pleasant to look at, it's a pain to use. The keyboard is set entirely too close to the screen, meaning I can't use it comfortably for very long without an external screen and/or keyboard, the nice 90 degree angles along the edges mean that if I can using it I quickly get marks in my wrists from it (and occasionally have hands start to go to sleep, a really bad sign), the touchpad is placed to where it's difficult to keep straight wrists/proper keyboard usage without touching the touchpad. But is sure does look pretty.

I had a Lenovo T60 for quite a while and, while it looked like a cheap piece of plastic, it was wonderfully durable, keyboard was placed in a good spot, the positioning of the buttons/touchpad were all just right. Just because it looks nice does not make something well-designed, and I have yet to use an Apple device that I would consider anywhere close to ergonomic friendly (the iPod nano being the closest as you only really used 2 "buttons" on the circle, pause/play and next).

ismarc··on Auto Insurance Comparison Startup Leaky Launches Nationally, Raises $670K
Registration plate lookup would be a chicken/egg problem here in the States. You need proof of insurance in order to get your registration, so on a vehicle that has no plates, there's no number to give, so wouldn't be able to get insurance. VIN is really the way to handle it, and once you get through the "quote" stage to actually buying it, all the insurance companies can take any VIN (and your info, of course) and spit out how much it actually costs. On a state by state level, I don't imagine it would be difficult to build a system to accurately compare rates. The fact that each state has its own system of minimum requirements, as well as what can be covered, and insurance companies are isolated to a single state (the larger insurance providers are actually corporations with wholly owned subsidiaries in each state) increase this complexity when dealt with on a national level. It's extremely similar to the issues with comparing health insurance plans.
ismarc··on Auto Insurance Comparison Startup Leaky Launches Nationally, Raises $670K
This has the exact same issue that nearly all insurance companies seem to have and is the reason I'm with my current insurance company.

I have a 1978 Datsun/Nissan 280Z. Only one insurance company allowed an online/unattended quote for insuring that age car. Only one other company was able to give a quote after talking with them on the phone, all of the others didn't have the ability to do a quote, even for liability only insurance. I went in person to several places and the result was the same. The company that allowed me to get a quote online now has all my other insurance related business (renters/property/full coverage on my new car/etc.). It just so happens that they've been an amazing company to work with, particularly when we've had car related issues (getting rear-ended while stopped at a stoplight, hitting an animal in the middle of the night when there was no room to swerve/stop and rendering the vehicle undrivable, etc.).

Trying to go through the process to see what things are like, the list of makes of cars is an abomination. It tries to filter based on years the make was available, but isn't inclusive (Nissan starts at ~85, but Datsun doesn't exist for older dates, etc.) and ends up being an incomplete list for a large number of years (I sampled the most recent ~5 years and the oldest ~5 years and several major manufacturers are missing) as well as model of cars being incomplete for at least a few makes from those years as well.

ismarc··on For Zelda-playing daughter, Dad gives Link a sex change
It's hours later and I'm just now responding, so this will likely get lost amongst the other comments, but... I distinctly recall playing The Legend of Zelda and having Link be completely genderless. It even led to a lot of interesting conversations amongst 10 year old kids about why Link and who was Link. Unlike Super Mario Bros., there are no stereotypically male or female aspects of Link. You're not rescuing the princess, you're working for the princess. I have always found the design of the original Zelda game fascinating in that regard, it's designed so that any player can project themselves onto the protagonist without any psychological conflicts...it's as minimal as the protagonist in centipede.
ismarc··on Using Postgres Arrays in Django
I rarely use postgres arrays as an actual storage type, but have used them frequently in results (there are aggregation functions to turn multiple rows into an array). The common use is something like pulling a user's info and roles in a single query with the roles from the many to many relationship aggregated to an array, so the result is one row per user and only requires one trip to the db.. The other common use is similar to above, but for handing off to a stored procedure of some sort. I haven't found a use for it as a stored column type, however.
ismarc··on Imagination buys MIPS for $60M, 498 patents sold to consortium for $350M
That's the entire f-ing point of patents. It's so they AREN'T kept as trade secrets. They are granted a monopoly in exchange for publication of it. It's the same reason the only prior art is something published, not a trade secret no one outside the company could have known about.
ismarc··on Why I Program in Erlang
There is one massive thing that I picked up from using Erlang that you failed to mention and I think should be pointed out. I have applied it in various ways outside of Erlang with a large amount of success (and the habit has caused no end to frustrations when dealing with external libraries, particularly on the JVM). If there is an error of some sort, but it can be recovered from, is a potentially anticipated scenario, etc. and can be handled at the point of occurrence, handle it. If it can't be handled, return a response indicating an error. If it is an exceptional condition, blow up and let the next level higher deal with it if it can, and so on. You can enumerate any number of ways that something can fail, but you will never catch all of them. However, exceptions are not an error communication device, they represent a condition that cannot be handled where they occurred.

It didn't really sink in fully for me until I had to write my first full non-trivial Erlang application from start to finish. However, once it clicked, every piece of code I wrote was significantly more predictable, easy to reason about and had significantly less bugs.

ismarc··on "Ruby developers need to stop using EventMachine. It's the wrong direction."
Yeah we are, as it was the least-convoluted method for handling the multiplexing (but wanting to maintain the same handler for all of them). Burned entirely too much time assuming that documented ways to handle things were actually rock solid, not rarely used. The first bug where 3 connections could deadlock everything was unrelated to threading. It was related to how it created identifiers for each connection and would create identical identifiers for two different connections so it would think there was data pending for a socket, but the data had already been read, so it tried to do a blocking read when there wasn't data to read. I never fully tracked down the second bug, but it was more likely related to using threading.

One thing we did have was a large majority of the connections were coming from the same IP (but different source port) and a peak connection rate of ~200 connections per second per server and would last a few seconds (so at any given moment, roughly 1000 connections being established or with data in flight). I'd be really interested in hearing what your traffic patterns are roughly like (and hand-wavy what you have event machine doing, like proxying requests, building/returning its own responses, etc.) if you're willing to share at all.

ismarc··on "Ruby developers need to stop using EventMachine. It's the wrong direction."
When I saw the title, I thought it was going to be coverage of how under-the-hood EventMachine's model only allows it to scale up to a certain throughput per-process (which is reasonably high for most uses of it) or how there is some fundamental complexity in how it's written that pretty much guarantees there will be livelock conditions (and deadlock conditions). So I share your bewilderment about why they chose the things to highlight that they did.

The lock conditions it has are for particular workloads at particular throughput/utilization, so 99% of the people using it won't hit those conditions initially (and a lot of people aren't writing systems that will ever reach those limits). However, we have a particular service that acts as a TCP multiplexer/router/load balancer to provide high availability for some of our mission critical applications. A little over a year ago, I initially wrote it using EventMachine in a couple of weeks, then spent almost a month trying to find what I thought was a bug in my code where a full deadlock would occur if 3 or more connections were established in a small enough time frame. Turned out to be a bug in EventMachine. After fixing that one, I found another where if 5 or more open connections fired the same event within a small enough time frame, all 5 would hit livelock and given enough connections hitting the condition, the whole process would deadlock. Once I hit the second bug in EventMachine itself directly related to concurrency handling, I switched to Netty and rewrote the whole thing in Scala in about a week and it's been rock solid since.

I've been doing some development on the side in Go because its particular flavor of types and concurrency model is fascinating. It's not that Go is anti-event, it's that it's overwhelmingly stream oriented (not low-level streams, but data streams). Once I finally hit that moment of clarity that goroutines/channels was all about connecting streams of data and not connecting raw streams, they became a much more natural solution. However, don't get me started on the difference between a non-blocking read on a channel and a blocking read on a channel.

ismarc··on Metamarkets Open Sources Druid, A Real-Time Analytics Data Store
For scaling postgres, have a look at PL/Proxy. You can basically partition tables across servers without knowledge of the fact that the other servers are even there. However, it doesn't easily cover you for fault tolerance and recovery.
ismarc··on Things I wish I knew about MongoDB a year ago
In postgres, you can index on a stored procedure, so you can use a simple stored procedure written in JavaScript to look up by key and return values, etc. Example available at http://people.planetpostgresql.org/andrew/index.php?/archive...
ismarc··on Solving the Multicore Dilemma
For a while, I've been pondering how to solve the same problem. I also reached similar conclusions, that parallelism needs to be implicit at the language level. I've even been working on an implementation that will run on the JVM (it's all of a week old for writing code for it, but I've been documenting the how it works for months in my notebooks). The language is based around the idea of stream processing. By using type signatures, function calls can be parallelized based on how the are called.

As an example, given two functions, A(Item) and B(List[Item]), if you call them like:

    B << A << List[Item](x,y,z)
the A should be called once for each item in the list of x,y,z, the results of which are collected into a list and passed to B. If you add in a function C(Item) and call it like:

    B << C << A << List[Item](x,y,z)
then at any given point, A can be processing a list item, C can be processing a list item and the total results of C are being collected. Which leads into, what if it is order dependent?

    B << serial { A << List[Item](x,y,z) }
will guarantee that A is called serially and the order of the List (and results) is preserved.

I really shouldn't advertise the link to the language at all here, considering I have zero documentation and there's almost no comments in the current code, but I'm going to anyways, https://bitbucket.org/ismarc/muster . It currently will parse a single file, generate the AST and generate the symbol table. I'm working on a non-parallel interpreter right now, with the intention of using the interpreter to write the compiler so the language is fully exercised to work out any potential issues with it. And on a final note, I'm targeting the JVM mainly for existing libraries, but I'm open to discussions about it.

ismarc··on Is a resume relevant in the age of online courses and open source projects?
I am actually a fan of well written resumes. The problem is that a resume is not a CV or even a listing of all skills/qualifications of an applicant. A resume should be a highlight reel of the skills/experience/qualifications of the applicant THAT PERTAIN TO THE JOB BEING APPLIED FOR. The cover letter then explains how those skills go together and what the applicant is looking for. Github, open source projects, web sites, examples, etc. are supporting evidence once they've gone from an unqualified lead to a qualified lead. But that's the difference that people seem to forget, a large majority of job positions are filled from unqualified leads and spending 20 minutes per applicant with nothing indicating they even have the minimal skills necessary.
ismarc··on Ask HN: Who Is Hiring? (September 2012)
Invodo, Looking for Senior Software Engineer Austin, TX, remote strongly unlikely (I'm going to copy-paste pieces from the job posting, but if you'd like more information or are just curious about what we're doing, drop me a line at mbrace@invodo.com).

What we do: Invodo helps businesses sell more through the power of video. As a full-service video solution, Invodo creates high-quality video at scale, delivers it through retail-focused technology, and publishes to Facebook, YouTube and retail channel partners to expand the impact. The Invodo video solution increases conversion rates, reduces returns and drives site traffic for clients including Internet 500 retailers and major manufacturers.

Invodo is an early-stage company so as a Senior Software Engineer you will play an incredibly important role in the success of both our clients and Invodo.

Software Engineers are expected to take ownership of substantial software modules, assist with technical product design, and contribute to the software engineering process at Invodo. The development will be concentrated on our core content management system and analytics platform (my.invodo.com). This customer-facing application software is written in Java/GWT using Hibernate and MySQL backend services.

Nearly all of our infrastructure services are written using Scala while the web application is currently written in Groovy (historical artifact at this point). It's hard to cover everything we do technology-wise in a short post, but we have our own player, make heavy use of CDNs for content distribution, our own analytics system and platform as well as an end-to-end workflow management tool used internally and externally for the video production, management and hosting process (the latter is where we're looking to hire).

The entire engineering team is less than 20 people, including operations, professional services and management. There are currently 9 developers (if I'm counting correctly) and all of the work the engineering department does is recognized throughout the company.

Feel free to send your resume/github/project urls to mbrace@invodo.com or ismarc31@gmail.com.

← PreviousPage 2 of 11Next →