HNHacker News
TopNewBestAskShowJobs

JangoSteve

3,398 karma · joined September 25, 2009

CTO and cofounder of Genomenon (genome interpretation software for diagnosing, treating, and researching cancer and other inheritable diseases).

Former CTO and cofounder of CarcodeSMS (text messaging platform for car dealerships), which was acquired by Edmunds.com in 2014.

Managing Director of Alfa Jango (www.alfajango.com) where we act as CTO and development team for early stage startups, founded RateMyStudentRental.com (on- and off-campus student housing), and created LeadNuke.com (B2B sales lead generation by monitoring online conversations) and JSPkg (front-end JavaScript library host).

I'm on Twitter: @jangosteve (https://twitter.com/jangosteve), and Github: JangoSteve (https://github.com/JangoSteve)

I write of life, philosophy, and the pursuit of success (both its achievement and meaning) on my personal blog: http://jangosteve.com

Popular posts include:

No One Knows What the F#*% They're Doing - http://jangosteve.com/post/380926251/no-one-knows-what-theyre-doing

The Science Behind "Having a Bad Day" - http://lifehacker.com/5595104/the-science-behind-having-a-bad-day-and-how-to-solve-it

I also write on more tangible subjects like programming (mostly Ruby and JavaScript), engineering, and entrepreneurship: http://www.alfajango.com/blog

Popular posts include:

The Difference Between jQuery’s .bind(), .live(), and .delegate() - http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/

Rails 3 Remote Links & Forms: A Definitive Guide - http://www.alfajango.com/blog/rails-3-remote-links-and-forms/

method_missing: A Rubyist's Beautiful Mistress - http://www.alfajango.com/blog/method_missing-a-rubyists-beautiful-mistress/

If You're Nervous About Quitting Your Job, You're Sane - http://www.alfajango.com/blog/if-youre-nervous-about-quitting-your-boring-job-youre-sane/

If you'd like, you may contact me at schwartz dot steve on gmail.

Top color: #77b45f (to match Alfa Jango's colors, which were chosen from the Green Lantern's palette).

submissionscomments
JangoSteve··on Delphi buys self-driving car startup Nutonomy for $400M
Yeah, but when you sell them to the public, you can't stop people from driving into other states or areas where conditions are less favorable; which I think is relevant and applicable to their original argument that actually having self-driving cars out in the market is further out than what the industry is saying.

But yeah, in relation to the Early Rider program, that's probably one of the reasons you must apply. They were asked what they thought of the program, and my interpretation of their response (not putting words in their mouth, but as I understood it) would be along the lines of, "Must be a controlled trial, since their technology is likely far from being able to handle anything outside of favorable environments."

JangoSteve··on Dear Silicon Valley: America’s fallen out of love with you
Ha, that's one of the reasons that my answer is always the same whenever someone asks what I think of their idea: "Whatever I think of the merits of your idea are almost completely irrelevant. I've seen horrible ideas succeed, and I've seen great ideas fail for irrelevant reasons. What I can offer, however, is a list of challenges I think you'll have."
JangoSteve··on New Relic experiencing major system outage
Wondering if their back-end logging is down as well in a way that isn't recoverable (i.e. when they come back up, there will be a hole in all of the graphs).

EDIT: Nope, it's back up, and there are no graph holes.

JangoSteve··on I Fell Victim to a $1,500 Used Camera Lens Scam on Amazon
That's actually not 1.5, that's 1 that you just described. There is no option 1 that isn't co-mingled with inventory of unknown authenticity that (unless it happens to be an item that's never had inventory sent in by a 3rd party, but you have no way of knowing that).
JangoSteve··on I Fell Victim to a $1,500 Used Camera Lens Scam on Amazon
They could stop selling fakes. Or at least stop co-mingling their own inventory with unverified inventory sent to them by 3rd parties, so that it's even logistically possible for them to know what they are selling.
JangoSteve··on Is Arduino no longer open-source?
> As embedded developers attempting to teach others, they're not enamored of Arduino's burgeoning, and dominant, market of "people who want to do embedded development but not learn anything about embedded development" sucking up all the oxygen.

I don't think oxygen is the finite resource your colleagues think it is in this metaphor. Why in the world would they not want something that lowers the barrier to getting more people involved with things like embedded development? Some of those people may even go on to start learning more about embedded development. It's so much better than keeping the barrier to entry high, thus discouraging people to get into it and learning more about how the world around them works. Would we rather people continue to have no context about what we do and treating electronics like a black box?

And who cares if they don't actually want to learn more than they need to about embedded development? Just as your colleagues spent their lives becoming experts and doing embedded development for a living (I'm presuming), others chose rather to spend their careers elsewhere. Everyone has different priorities and tradeoffs to consider vying for their time. Any time we can allow people to accomplish more with less, possibilities open up with the time we do have.

JangoSteve··on Speeding Up Rendering Rails Pages with render_async
Yup, I guess I should clarify. This solves half the problem without a gem, which may or may not be good enough depending on one's situation.
JangoSteve··on Speeding Up Rendering Rails Pages with render_async
For their example, you could also just do the database lookups asynchronously in the controller, which is good performance practice for queries that don't absolutely need each other. For example, similarly to their example, let's say you start with something like movies, which each have many movie ratings, and your controller looks like this:

    @movie = Movie.find(params[:id])
    @ratings = @movie.movie_ratings # or equivalently, @ratings = MovieRating.where(movie_id: @movie.id)
    render
The second line above needs to do the movie lookup, in order to get its ratings; and the second line basically constructs a SQL query that looks up records from the movie_ratings table using the movie_id foreign key that joins them. However, you already have the movie_id before you look up the movie, because it's in params[:id]. So, you could instead do something like this:

    @movie = Movie.find(params[:id])
    @ratings = MovieRating.where(movie_id: params[:id[)
    render
However, Ruby being synchronous by default, the above will still do the same thing and take the same amount of time, since line 2 will synchronously wait for line 1 to finish. But now that you've disentangled the query for line 2 with the results from line 1, you can now explicitly do them asynchronously:

    [].tap do |threads|
      threads << Thread.new do
        @movie = Movie.find(params[:id])
      end
      threads << Thread.new do
        @ratings = MovieRating.where(movie_id: params[:id])
      end
    end.each(&:join)
    render
I've had projects where I abstracted the above logic to reusable methods like:

    def asynchronously(&block)
      @async_actions ||= []
      @async_actions << Thread.new do
        block.call
      end
    end

    def synchronize
      @async_actions.each(&:join)
    end
And then in my controller actions, the previous code becomes:

    asynchronously do
      @movie = Movie.find(params[:id])
    end
    asynchronously do
      @ratings = MovieRating.where(movie_id: params[:id])
    end
    
    synchronize
    render
Or if that still seems verbose, since each block above is a simple one-liner, you could use alternate syntax like:

    asynchronously { @movie = Movie.find(params[:id]) }
    asynchronously { @ratings = MovieRating.where(movie_id: params[:id]) }
    synchronize
    render
The thing you have to be careful about when doing direct queries, like above where both queries directly use params[:id], is when you have a situation where authorization to access the data plays a role. For example, if you replace movie with user, and ratings with purchases, now you can't just blindly look up purchases by the user id the untrusted request passed in. You'd want to first validate that the params[:id] being passed is valid for the current user sending the request.

You also want to make sure you understand thread safety and the fact that @movie and @ratings above are not contained to their threads (which we're actually using to our advantage here). But in the above example, you replacing a single thread where everything sees everything anyway, with multiple threads where everything still sees everything, so you're not really changing that aspect in the example above anyway.

JangoSteve··on Uber faces criminal probe over software used to evade authorities
Because a radar detector doesn't send out a signal to the officer's radar fooling giving it a false speed.

That essentially is what their software did. It didn't just alert the driver that the person requesting a ride may be law enforcement, it seems it actually showed the officer incorrect data to mislead them about the vehicles' whereabouts.

And for the record, radar detectors actually are illegal in many states.

JangoSteve··on Show HN: Commento: Lightweight, open source, tracking-free alternative to Disqus
This looks really nice and clean.

I'd been using Juvia a lot over the year's, built by the people at Phusion. It's worked really well, but seems to be unmaintained now.

The killer feature needed in any project like this is spam filtering, which Juvia accomplished by just integrating with Akismet, which works mostly, but not completely.

JangoSteve··on CodeStar – Quickly Develop, Build, and Deploy Applications on AWS
They should also try to make sure all of their descriptions are actually correct. They describe SNS as "AWS Messenger" and say to "Use this to Send mobile notifications, emails and/or SMS messages". That's only one specific use-case though. Really it should be called "AWS Callbacks", and you can use it to create callbacks from other services and webhooks which can trigger notifications to mobile devices, emails, SMS, or other AWS services.
JangoSteve··on How Big Data Can Help Fight Cancer
This is currently done; it's part of the filtering and annotation process that happens at the tale end of the secondary analysis. Everything I'm talking about comes after that. This is part of why the human interpretation part takes hours to a day, instead of a day to several days.

However, it's far from perfect and can always be improved. That's one of the things we're trying to help with, is to do further pre-processing on the knowledge-base of all genomic information contained in all published literature, to try to drive the current hours-to-a-day timeframe down to minutes-to-an-hour, or just minutes.

One issue though, is that it's a constant tug-of-war optimizing between false-positives (giving you too many variants to manually review) and false-negatives (removing variants due to some data threshold which may have been clinically significant).

JangoSteve··on How Big Data Can Help Fight Cancer
Yes, it depends on the size of the sequencing panel that was done (i.e. a targeted panel for a specific gene or set of genes versus whole exome versus whole genome). But even for whole exome, you're talking a few hours or faster depending on hardware.

In addition to our company, Genomenon (which seeks to speed up the interpretation time required to analyze the data _after_ it's been computationally aligned and annotated), I'm also friends with another startup down the street, called Parabricks, which seeks to speed up this alignment process (aka secondary analysis) even further.

JangoSteve··on How Big Data Can Help Fight Cancer
It's mostly not about computational power. The stitching together that jfarlow mentions is part of the "secondary" analysis where the raw genome data must be put together, but that's mostly a solved problem, as there are plenty of gold-standard open-source libraries that employ statistically complex calculations to align raw data to the current version of the human reference genome. That's part of what takes less than a day along with the primary sequencing. It's constantly being improved, but most labs would not consider this an issue that keeps them up at night, as what we currently have works reasonably well.

The part that takes a long time (i.e. the "bioinformatics bottleneck" I referred to), is that once the sequencing data is stitched together, you end up with a ton of variants, and you don't know which (if any) are clinically significant.

Imagine that each nucleotide in your genome is a marble, and that the entirety of your sequenced genome is a 1-story building filled with marbles (that's how many nucleotides are in your genome), and that each one is supposed to be a specific color out of 4 possible colors. Now imagine that 10,000 (or more) of those marbles are the wrong color.

Primary analysis (putting your sample into a machine and essentially getting back a list of what color all your marbles are), as well as secondary analysis (i.e. the process of sorting your marbles into the correct order so that you can actually tell _which_ marbles specifically are the wrong color) together are what cost less than $1000 and take less than a day.

The real problem is that you may find that 10,000 (or more) of your marbles are the "wrong" color, but 9,900 of them make absolutely no difference in a clinical sense. To be clear, a marble that's the wrong color is a "mutation", or "variant". Maybe this mutation makes my eyes slightly bluer, or my finger nails a little harder.

In other words, the part that takes a long time is actually going through each mutation and figuring out which one (out of the 10,000 variants) is clinically significant or relevant to the disease/symptoms you seem to have, and then figuring out if there's a known treatment for that particular root cause. Currently, this is done by employing MD PhDs to look through each patient's sequenced data, and then cross-referencing that with the millions of published studies to see what has ever been seen before, or is known to be associated with some disease.

And it can take a human hours to a day to do this per patient. So, the number of patients times the amount of time it takes per patient, divided by the number of MD PhDs a lab can hire to do this, is what leads to the backlog.

So, actually yes, it is computational power... but it's human computational power.

JangoSteve··on How Big Data Can Help Fight Cancer
> 1) Exome sequencing is below $1000, but analyzing that data adds a non-negligible cost.

That is by and large the most significant factor that we've seen which slows adoption of more widespread whole-exome or whole-genome sequencing. It takes less than a day and costs less than $1000 to sequence your exome (and even your whole genome), but the backlog for analysis of the sequencing results in labs can be 9 months or more.

There are patients that could be treated from the analysis of their genome that aren't even considered if their prognosis is shorter than the amount of time it will take to get clinically actionable results from the lab, which is the really sad part. This problem is actually what led us to create our company, Genomenon, to help make the analysis much faster and alleviate the bioinformatics bottleneck at the sequencing labs.

JangoSteve··on Amazon's Tepid Response to Counterfeiters Frustrates Sellers
> I don't even buy from any third party sellers, including fulfilled by Amazon, for this reason.

Except, according from the information in the article, this doesn't matter:

> Shipped and sold by Amazon.com means that the product is shipped and sold by Amazon Retail (via Vendor Central or Vendor Express) directly. Basically, the manufacturer sends product to Amazon.com at a set price through a traditional PO process. This inventory is commingled with all other FBA inventory.

Even if you buy only items that are shipped and sold by Amazon, if those items are also _available_ from other retailers on Amazon via FBA, then the product you get as the consumer, could have come from one of those retailers, because they're all mixed together at the Amazon warehouse. In other words, you could still be getting counterfeit items when you purchase products that are shipped and sold by Amazon.

This is the same reason that, as far as I can tell, with their current logistics, tying reviews to merchant wouldn't work. They'd actually have to keep each merchant's products separate in the warehouse and _they'd_ have to know which merchant's product they sent you (which they don't currently unless the merchant opts out of commingled inventory, which costs the merchant extra).

This is all assuming I'm interpreting the info in the article correctly. One thing I don't understand is why Amazon would not keep all of their own "shipped and sold by Amazon" inventory from the manufacturers separate from ones that come from 3rd-party merchants. I.e. why wouldn't Amazon opt all of their own direct-from-manufacturer inventory out of commingling? That's the part I'm wondering if I'm understanding incorrectly.

EDIT: To further clarify my last question, it seems unwise to willingly mix products sent to you by a 3rd-party in with your own trusted inventory, such that you don't know what's trusted and what isn't. This seems analogous to allowing a SQL injection or XHR attack by not sanitizing user data on input, and then displaying it in the site, trusted as your own content without any sort of escaping.

JangoSteve··on GitHub lets staff own IP developed for personal projects using company resources
I don't think there's a problem calling an inspector directly. But an inspector typically doesn't go out and find you houses to look at based on your preferences. They also don't typically negotiate with the sellers on your behalf and help you figure out an offering price based on comparisons. And they don't negotiate the contingencies in the purchasing contract.

And no, an inspector's fees aren't over $30k (of course I imagine this varies by state, but where I'm at, if your buying agent's fees were over $30k, that would mean the house you bought was over $1mil, since their fee is half of 6% of the selling price of the house, i.e. 3%). The inspectors we talked to were between $500 and $2,000 per inspection, depending on the level of inspection you wanted, if I'm remembering correctly.

And we looked at around 35 houses (which apparently is on the high side by about 10x based on discussions with our friends who have bought houses). So for us, if we called an inspector every time (assuming we could find an inspector whose schedule matched the appointment availability every time), it would have been around $17,500 on the low end to do that for every house, which is more than the buying agent's percentage.

Of course, we could just hire an inspector on the ones we liked, and it'd be much cheaper, but that means we'd have to look at it, then call an inspector and schedule a visit, which would add an additional several-day-waiting step to the process, which could lead to us missing out on the house, since it's not uncommon to lose a house to someone else getting an offer accepted first (that happened to us for two out of four houses we liked).

So, nothing wrong with calling an inspector directly, it's just a different job than what the realtor does.

JangoSteve··on GitHub lets staff own IP developed for personal projects using company resources
I don't understand the question. Are you asking, how much of of the advice did I do further research for and make sure she was giving good advice? All of it.
JangoSteve··on GitHub lets staff own IP developed for personal projects using company resources
I think this is spot-on.
JangoSteve··on GitHub lets staff own IP developed for personal projects using company resources
Where I'm at it's 6% of the selling price, but either way, I guess my answer would be, absolutely it was worth it.

Even if you disagree (and the answer would be different for everyone I imagine), it still doesn't indicate that the realtor brought _no_ value to the table, which was the statement I was responding to.

EDIT: Also, I should clarify, where I'm at it's 6% _total_, split 3% each between the buying and selling agent. So, on the other hand, was it worth it to the sellers to pay 3% to their selling agent, who screwed up pretty much every part of the process and didn't seem to do much from what we saw? Probably not.

EDIT 2: I'd probably realistically downgrade my "absolutely it was worth it" answer to, "eh, it was definitely worth something". If I had to put a value on what they brought to the table, it'd be hard to say, but maybe they were overpaid by ~30-50%. Again though, saying they didn't add _any_ value certainly wasn't the case for us.

JangoSteve··on Show HN: Chrome extension for less confusing Digital Ocean menus
Exactly. That's why I'd do it in the extension.
JangoSteve··on GitHub lets staff own IP developed for personal projects using company resources
> I've been trying for a long time to alter the common perception that Realtors add value; they don't.

I've heard this before, but when we bought a house, our realtor added a ton of value.

She went out and found houses that we wouldn't have found; sure, most of them came from MLS, but there were a few she found just by driving by or by asking fellow agents. She even triaged a couple for us (by going to look at them without us once she had gotten a sense for what our common feedback patterns were, and only making us come along when she thought it was worthwhile).

She pointed out things we would have never noticed, like windows that had condensation around the edges, which indicated the seals were bad and that when the seals on one window were going out, it was likely they were all on their way out. She'd point out cracks that we didn't notice or water stains (acknowledging she's not an inspector, but it certainly gave us things to ask the inspector about). She noticed when parts of the yard looked worrisome in how it was eroded or angled toward the house. And she could usually estimate for us off the top of her head what things would cost to fix, replace, remodel, or update (or she had someone she could call to ask for an estimate if she didn't know).

EDIT: She also put pressure on the lender when they were delaying the mortgage approval, did all the negotiation on our part with the selling agent, followed up with the sellers to make sure they did all the fixes our inspector found and were put into our contingencies. She also figured out what to do when she reviewed the contractor receipts and found out they had lied about fixing one of the things in the contingencies on the morning of the closing to make sure the deal didn't fall through, as well as how to resolve the issue that the sellers had left a giant moving pod blocking the driveway/garage and went on vacation the day we took possession of the house.

I suppose I could imagine buying a house without her if you had the experience, but there's no way we even came close to matching her years of experience.

Of course, most of the people I talk to have said their experience was nothing like ours. But it makes me think that the problem isn't that realtors bring no value to the table, but rather that maybe there just aren't very many good realtors.

JangoSteve··on Show HN: Chrome extension for less confusing Digital Ocean menus
I'd also rename Droplets => Servers or Instances, and add a link for actual Notifications.
JangoSteve··on Ask HN: Is S3 down?
I was thinking they should host the little green check mark icons on s3.
JangoSteve··on Why I Don’t Talk to Google Recruiters
Isn't that exactly the point roguecoder made?

> I have had catastrophic failures caused by premature optimization, because locking a tool into a fancy algorithm before you know where the actual bottleneck is is a recipe for disaster.

EDIT: Or, are you saying that it was from the decisions made before Google acquired Android?

JangoSteve··on Show HN: WebSocket-first development
It can. I have a demo deployed on Heroku for this app (https://github.com/JangoSteve/websockets-demo), and I've seen it handle maybe about 40 or 50 clients at a time on a single dyno before (and each client streaming a bunch of events), even though it's intentionally implemented in the simplest (i.e. inefficient) fashion possible. The request overhead for normal HTTP request/response goes away, since you only need the request headers and handshakes once at the beginning for a persistent connection.
JangoSteve··on Show HN: WebSocket-first development
Cool demo! I like that you can see all the events in real-time. I built a similar demo (https://os.alfajango.com/websockets-demo/ and https://github.com/JangoSteve/websockets-demo) a while ago to showcase using websockets with a node app for a presentation I was giving at a JavaScript user group (https://os.alfajango.com/websockets-slides/).

The presentation goes through a bit of the history and lead-up to websockets for context.

One of my favorite things about the demo for the presentation was that everyone in the room (probably about 50 people) was able to connect to the live demo in real-time and some people started finding XSS vulnerabilities in it right away, and using the app to send emojis and pictures to others in the room in real-time (all harmless stuff). It was crazy though how many events you could see streaming through the app just running from my laptop with so many people connected and interacting at once (including x,y coordinates for mouse movements a few times per second per user as well).

The presentation goes through alternatives as well, including long-polling, short-polling, and server-side events (the slides are laid out in two dimensions, so pay attention to when you can hit the "down" arrow instead of the "right" arrow for more slides). It also delves a bit into the actual websocket spec. It was a while ago though, so it doesn't go into anything HTTP2-related.

JangoSteve··on The web sucks if you have a slow connection
Isn't a Giffen good then just something where one infers quality from price? I've seen that happen many times with my own eyes, so hard to believe they've never been identified. It's possible to price something so cheap, people assume there's a catch.
JangoSteve··on Ask HN: Who is hiring? (February 2017)
Genomenon | Senior Software Developer | Ann Arbor, MI | On-site

We're building a database of genomic information that helps with data curation and genome interpretation for diagnosis and treatment, as well as research.

Ideally, someone with full-stack experience would provide the most flexibility in terms of responsibility, as we're an early-stage (funded) startup. We've built the first version of the product and have customers, but we have lofty ambitions and a large vision for what we can become.

Experience with Python and/or Ruby, Bash, and JavaScript (front-end, along with frameworks like Angular and React) are mostly what we need now.

https://www.genomenon.com

Reach out to me at schwartz@genomenon.com.

JangoSteve··on Calling Yourself ‘Humbled’ Doesn’t Sound as Humble as It Used To
I had this exact thought once getting an award. I actually opened my acceptance speech with, "This is when I'm supposed to get up here and tell you how humbled I am by this award. But that's the exact opposite of how I feel. According to you, I'm awesome! In fact, I should probably apologize now to my co-workers for how much more difficult I'm going to be to work with after tonight."

EDIT: messed up some grammar... this mistake has humbled me.

← PreviousPage 6 of 30Next →