HNHacker News
TopNewBestAskShowJobs

wschroed

78 karma · joined February 8, 2013

I solve problems.
submissionscomments
wschroed··on Ask HN: What are useful OKRs and KPIs for SWEs
Though I posted the study, I do want to see more work in that area to repeat the observed effects or to refine the KPIs. For example, I am personally skeptical of the notion of "number of defects per release" and want to see an exploration of "amount of time spent on defects per release".

Science doesn't tell us anything (that would be authority or religion), and it doesn't prove things. It is a process that can assist us in logically determining what is NOT true about a cause-effect relationship to the point where we can make more accurate and practical predictions about those causes and effects. More experiments refine the current beliefs.

wschroed··on Ask HN: What are useful OKRs and KPIs for SWEs
I prefer studies over anecdotes and found this: https://www.amazon.com/Accelerate-Software-Performing-Techno...

According to this study, you can measure a team's progress and ability with:

* number of production deployments per day (want higher numbers)

* average time to convert a request into a deployed solution (want lower numbers)

* average time to restore broken service (want lower numbers)

* average number of bugfixes per deployment (want lower numbers)

I am curious about other studies in this area and if there is overlapping or conflicting information.

wschroed··on The Equifax Breach Exposes America's Identity Crisis
He is saying they should practice process isolation. Example architecture: https://cr.yp.to/qmail/guarantee.html
wschroed··on Plan Your Commits
Rebase is not destructive. It creates new patches based on the previous. This confusion is caused because a rebased branch tag is given a new home; however, you can always add another branch tag to the original HEAD so you can revisit it easily, and you can always find the original HEAD via the reflog. If the branch is not tagged, the default git policy is about a month before garbage collecting the untagged end.

Pre-push commit history is purely for the developer. A push is a publish, which means you are now presenting work for others to view and understand, code review, maintain, and use to debug. There is no more value to people to see every commit for a typo-fix, rollback, and redirection than there would be if our text files kept a complete and honest history of your every backspace. Nobody else wants to watch the rambling movie. BUT that movie can be important to you for a time, and can remain on your local git repo.

If the commit history is getting long in the tooth, it does help to clean it up fairly often, and I have found that cleanup for long-running branches to be much more valuable to my memory than trying to walk or bisect through every minute of my development process.

A quick note about merges: A merge should have something more interesting than "developer merged branch foo onto master"; a merge introduces something important, and old branch names may not exist in the future at all or on the same commits. If one follows this rule of thumb -- make commit messages useful -- then the fact that you were updating your branch with the latest master becomes unimportant. It is actually noise and confusion for anyone having to dig through commit histories, due to the massive number of forks. In other words, always rebase onto master first before merging.

I look at commit history as a document that I can polish and present to others. I look at my code the same way, trying to make it readable for other humans. This is writing prose. I group like things together. Each commit is a solid microfeature. There are no typo commits.

wschroed··on I Don’t Care How Well You Code, Understand Your Compensation
Hubris: http://www.bloomberg.com/graphics/2015-dangerous-jobs/
wschroed··on Nexus phones now identify suspected spam callers
I wonder if they would agree to say a special word in the message. "Mention 'bananas' when you call."
wschroed··on John Carmack on Inlined Code (2014)
I wonder if we've over-focused on the inlining vs functions-for-modularity thing here. Fundamentally, the primary objective is to express code in a way that is clear to the reader for maintenance. Secondarily, the code must work with the compiler to achieve the desired level of efficiency in speed or resource usage.

I have come to interpret this as: We are language designers. This isn't about functions. This is about building a language for the business case that is comprised of primitive expressions, means of combination, and means of abstraction. If the language is clear to the reader, expressing the problem well, it should be easier to detect problems or extend the existing language and its uses.

We are language designers already: If you build a traditional class with a bunch of methods, that is a language with how to deal with the concept embodied by the class. It must be held to the same standards of any language, DSL, or API design.

I like to remind people that we don't tend to dig into the code behind printf(); we trust what it does. We have years of experience using that primitive. It's a great example of a function that has been through many revisions due to security issues, untrustworthy in its inception. What is key here is trust that a primitive does as advertised so that one does not have to dig into its source code repeatedly. Nested functions are not an issue in the presence of trust.

My "secondarily" clause has a fatal flaw: Many languages are not suited for building languages while simultaneously not trading off speed and resource usage. The ones with pre-runtime macros/templates assist us developers in the building of expressions beyond the limitations of the base language with minimal fuss.

wschroed··on Ask HN: Who is hiring? (July 2016)
The McDonnell Genome Institute at Washington University | St. Louis, MO | Full-time | ONSITE

I am looking for a non-entry level software developer to join my Applications/LIMS team at the McDonnell Genome Institute! We are currently working on projects in the areas of cloud storage, cloud compute, high-speed data transfer, and laboratory automation. If you are interested, please search for job 33387 at https://jobs.wustl.edu/, and apply through the system. They will pass along the information, and I will email you. Naturally, I'll answer questions here, too.

The interview process is the application, a work sample test plus phone interview to cover the test, and a tour of the lab.

wschroed··on What is Symbolic Computation?
Amateur perspective here...

My understanding is that it is the transformation of lists of symbols. This is one step above parsing characters/runes into more meaningful primitive data. Lisp has facilities for manipulating trees of data. The book Land of Lisp makes this distinction clear in an interesting way: they implement a text adventure, and they separate the notion of words or concepts (model) from their final string representation (view). For example, you can express a phrase with something like

  '(you see exits leading (exit east) , (exit west) , and (exit north))
or

  '(you see exits leading (series (exit east) (exit west) (exit north)))
Run this through your parser for that list of lists of symbols, and you may end up with

  You see exits leading [east], [west], and [north].
where east, west, and north are highlighted if expressed on the console or converted into appropriate URLs if expressed in HTML. You can also imagine a potential here for language conversions.

Along similar lines -- with due credit to the PAIP book -- you could separate the notion of some mathematical formula from its inputs. Do manipulations, simplifications, whatever, and THEN provide inputs. This suggests that with symbolic computation and some macros, you can assist the Lisp compiler in coming up with the speediest version of some formula. Or expression. Or template output.

Not sure how to get an exact link to this comment, but look at sklogic's back-and-forth with me here for more uses of this: https://news.ycombinator.com/item?id=11589614

wschroed··on Ask HN: Who is hiring? (June 2016)
The McDonnell Genome Institute at Washington University | St. Louis, MO | Full-time | ONSITE

I am looking for a non-entry level software developer to join my Applications/LIMS team at the McDonnell Genome Institute! We are currently working on projects in the areas of cloud storage, cloud compute, high-speed data transfer, and laboratory automation. If you are interested, please search for job 33387 at https://jobs.wustl.edu/, and apply through the system. They will pass along the information, and I will email you. Naturally, I'll answer questions here, too.

The interview process is the application, a work sample test plus phone interview to cover the test, and a tour of the lab.

wschroed··on The Bank Job – breaking a mobile banking application
I think I'm bikeshedding; the whole "finder's fee" nonsense bugged me. The analogy between lost wallets and servers doesn't actually hold. One can have thieves and indifference in both worlds, but the natures of the exposed items and victims are different. It is more acceptable to people -- though not any more right -- to figure that a faceless multi-million dollar corp can absorb a tiny theft/hit, but it is harder to allow pain to a relatable fellow human being. (...unless, of course, one is affected by bystander effect or pressured by authority)
wschroed··on The Bank Job – breaking a mobile banking application
I'd like to feel like people would be ethically and morally motivated to make efforts to do the right thing rather than expect to be rewarded for doing the right thing. Perhaps it is how I was raised, but it seems weird to me that I would turn in a lost wallet with expectation to get something back out of it. This so-called "custom" is not my custom. It actually seems very childish, where one is still in the phase of learning the importance of taking care of their neighbor.
wschroed··on The Expression Problem and its solutions
I think I am misunderstanding what I am reading; I do not see the Facade pattern addressed in the paper or in the article. My understanding is...

Unlike the Visitor pattern, the Facade pattern does not require any help on the side of the thing being extended -- no interface required. That is the primary contributor to the problems described in the article, right? that someone must explicitly provide a backdoor? And in some cases, multiple things must be modified to support extension due to the nature of the backdoors?

With a Facade, one writes a new, additive layer, sometimes directly mimicking the API they are wrapping. To extend Expr, I make MyExpr, and I call upon Expr within MyExpr. The tradeoff is API repetition/delegation, which can be mitigated with compile-time or run-time code generation, depending on the language.

Generally, this approach is used to coerce external APIs into an API that is more appropriate for the domain. For example, suppose I have a choice of three different XML packages: one package has great features for parsing and validating XML but has no interface for building XML; another lets me build it but not read it; a third provides some obscure namespace feature that I wish the builder had, but it is otherwise the slow performer in the set. I can unify these three packages under one package that delegates to the three appropriately.

I would also use this approach for extending existing functionality. For example, suppose I am depending on some foo(V) in an ML-style language that dispatches on V of type X and Y; usually, adding dispatch for something of type Z would require modifying the original code, right? But I can instead write a my_foo(V) that handles Z and defers all other dispatching to foo(V). I may introduce whatever complexity I need for my specific problem without needing the original source code of the thing I am extending. Acknowledged tradeoff: complex dispatch order may require reinventing the wheel to some extent.

My intuition suggests that this approach works well for most languages without requiring language-enforced extensibility on all the things.

Again, great article! It really does cover a lot of ground and comparisons.

wschroed··on The Expression Problem and its solutions
I've been thinking about this problem lately, and I thought the article gave it a good treatment. However, the problem I saw is that unless someone has already used the right provided language primitives for their data, you suffer the expression problem again anyway.

A pattern that I believe can help solve even this level of expression problem is the facade pattern (https://en.wikipedia.org/wiki/Facade_pattern). In other words, to expand upon what has existed before, one writes a layer on top of the third-party package that belongs to the current project. That layer implements, by default, everything in the external package, and it gives you the ability to extend it as you see fit. In addition, you get all the other benefits of the facade, like being able to swap out, fix, or extend specific implementation details without having to alter many places in code where you relied upon some external package's API decisions directly.

For me, it's still a thought experiment. I do not have a lot of personal experience trying this methodology out in the extreme in production. Has anyone else tried it and can comment?

wschroed··on Ask HN: Who is hiring? (May 2016)
The McDonnell Genome Institute at Washington University | St. Louis, MO | Full-time | ONSITE

I am looking for a non-entry level software developer to join my Applications/LIMS team at the McDonnell Genome Institute! We are currently working on projects in the areas of cloud storage, cloud compute, high-speed data transfer, and laboratory automation. If you are interested, please search for job 33387 at https://jobs.wustl.edu/, and apply through the system. They will pass along the information, and I will email you. Naturally, I'll answer questions here, too.

The interview process is the application, a work sample test plus phone interview to cover the test, and a tour of the lab.

wschroed··on Rebol vs. Lisp Macros
I have only ever heard the opposing argument, but I am interested in understanding to its fullest extent how to implement good DSLs with macros. I understand CL and defmacro; I am just looking for good patterns of use. Can you point me to any resources, documentation, or examples of this?
wschroed··on Resume in C
I highly recommend "21st Century C" (http://shop.oreilly.com/product/0636920025108.do) as a tour of modern C programming, including use of C99 features. It goes over C tooling (profiling, debugging, testing, cross-platform deployment), and explores C99.
wschroed··on Perl Already Won
If you are interested (feel free to ignore if not)... Here are some examples for understanding list context and some of the things it can do for you. One funny way to think about it is that in Perl, you store array, array ref, hash, and hash ref structures, and you do not store lists. Lists are a way to express in code, distinct from the actual storage.

    my $arr1 = [1, (), 2, (3, 4, (5, 6)), 7];   # $arr1 is [1, 2, 3, 4, 5, 6, 7]
    my $arr2 = [1, [], 2, [3, 4, [5, 6]], 7];   # $arr2 is [1, [], 2, [3, 4, [5, 6]], 7]

Perl's fat arrow => is the same thing as a comma, except that the thing on the left of it may be a bare word under "use strict". In other words, it has little special meaning and helps you to construct a list of things.

    my $arr3 = [1 => 2 => 3, 4 => 5];  # $arr3 is [1, 2, 3, 4, 5]

For readability, when we construct hashmaps, we use the fat arrow so that you can more easily distinguish key from value.

    my $hash1 = {x => 1, y => 2};  # $hash1->{x} is 1

But you don't have to use the fat arrow:

    my $hash2 = {'x', 1, 'y', 2};  # same as $hash1

An array used in an expression like this is considered to be in list context:

    my @pairs = ('x', 1, 'y', 2);
    my $hash3 = {@pairs};  # same as hash1

Since we can boil about anything down to expression in list context, we have a lot of concise flexibility on constructing arrays and hashes and a variety of ways to express the same concept. Here is a fun use case: Build a hashmap where the keys are the numbers from 1 to 100, and the values are all the string "foo". Other languages perform an elegant dance with infinite cycles and zippers. In Perl, knowing the list context magic, this is a possible solution that shows that "map" may not return the same number of elements as the input list/array:

    my %answer = map { $_ => "foo" } (1..100);

Let's join together two arrays with the letter 'x' between them:

    my @result = (@array1, 'x', @array2);

Take an array reference, and return a reference to its elements cycled once (this specific problem is awkward in Perl and easier in other languages with nice array operators):

    my $doubled = [@$ref, @$ref];

Construct a hashmap where some of the keys are completely optional. This is also an alternative expression for the "many optional parameters to object creation" problem, which most languages let you resolve by allowing you to instantiate the object with defaults and then alter the defaults with accessors in "if" clauses afterwards. In this example, if $self->y is false, then there will not be a "y" key.

    my %params = (
        x => $self->x,
        $self->y ? (y => $self->y) : (),
        z => $self->z,
    );
    MyClass->new(%params);  # this actually converts the hashmap into list context!

Tip of the iceberg. Note that I am not defending, just demonstrating. I am on the fence on if I prefer the Ruby explicit style over Perl's style. For one, in Ruby, the fat arrow actually means that you are now constructing a hashmap. In Perl, since it is just a comma, I can exploit it to mean new things, depending on my context.

    use Moose;
    has age => (isa => 'Int', required => 1);

    use Test::More;
    subtest 'Math is still valid' => sub {
        is(1, 1 => "1 is still equal to itself");
        is(2, 2 => "2 is still equal to itself");
    };
wschroed··on Perl Already Won
I'll bite... I have been programming in Perl for the bioinformatics community for about seven years.

I understand your code is pseudocode, but I should note that the "." is considered string concatenation in Perl. My very first thought before reading too carefully was that the bug was that someone tried to concatenate strings instead of calling functions. :) But I kept in mind that this was pseudocodish.

Yes, my second thought was, "He says there is a bug here; I wonder if this is one of those cases where the function returns values in list context." For any experienced Perl programmer, this is a thing to be aware of, especially when calling functions in hash maps, not only because it may return multiple values but also because it may return NO values, which would match the "username" key with "password".

We may debate the pros and cons of list context, but it is one of the first features I teach new hires because it can catch people accustomed to other languages by surprise. Perl is not the only language to support this kind of feature; it is present in Ruby with the "splat" operator (*array).

wschroed··on People suck at technical interviews
Is that a problem of not knowing the language or a problem of not having exposure to better patterns [1] that are generally language-agnostic? I get what you mean about the idioms of some language: code is easier to maintain when it looks like what others on the team are accustomed to. But if that's the problem we're trying to solve, isn't that what initial code reviews of new team members can help resolve, among other things? And isn't that a benefit to hiring people who know other languages well? that they bring in new perspectives and ideas, such that the whole team can grow, over time learning and incorporating those new patterns?

Personally, I look for people who can think, who have exposure to a variety of patterns and can synthesize those patterns into their work, making appropriate choices. More power to us if, for our Perl shop, we hire someone with a strong background in modern Fortran because that different perspective is part of what makes the team diverse, creative, and successful.

I don't look for an expert in Perl to be even a senior developer here. It helps, but the primary consideration is their ability to work with abstract information. The language is just one of many tools to express that solution, and the language choice can change over time to suit needs.

[1] Not to be confused with "design patterns". I am using the term more fundamentally.

wschroed··on Introduction to Moose, Perl’s OO system
That's a delegation strategy, which is a very limited form of composition.

A class with a trait/role can be queried for that interface:

  smile() if $my_object->does('SomeTrait');

Methods provided by a trait/role have direct access to $self.

Also, Moose gives you the ability to apply traits to classes that are not predefined with those traits:

  use Moose::Util;
  my $instance = Moose::Util::with_traits('MooseClass', 'MyTrait')->new(%params);

You can parameterize roles (as in, pass parameters that affect what the role provides). If you put some method modifiers into your roles, you can enhance existing functionality; for example, you can add logging, memoization, and persistence, all without the class having those features beforehand.

In other words, roles/traits make your OOP functionality much more composable.

wschroed··on Ask HN: Who is hiring? (August 2014)
St. Louis, MO, United States - Business and Technology Applications Analyst II

I am looking for another software developer for the LIMS group at The Genome Institute, a position where the primary language is Perl. You may contact me directly (my user name at genome.wustl.edu) with your resume and samples of code or hosted repositories; it does not matter to me what languages you choose. Officially, you can apply to this job through https://jobs.wustl.edu (search for job ID 28449). Below is a copy of the official job posting with all the HR legalese. :) This is considered a mid-tier position, between junior and senior experience.

SUMMARY

  - Job Title: Bus & Tech App Analyst II - The Genome Institute - 28449
  - Job ID: 28449
  - Location: Medical School
  - Full/Part Time: Full-Time
  - Regular/Temporary: Regular

JOB TYPE/SCHEDULE

This position is full-time and works approximately 40 hours per week. Position hours are generally M-F 8:30-5.

DEPARTMENT NAME/JOB LOCATION

This position is at the Genome Institute. This position is for the Medical School Campus.

ESSENTIAL FUNCTIONS

The Genome Institute at Washington University has an opening for a talented software engineer in the Bioinformatics group. The position will work with an experienced group of software engineers to develop software supporting the tracking of laboratory data and analysis processes to support large scale genomic research projects. The Genome Institute has been at the forefront of genome research since its inception in 1993 and has been a part of major scientific projects such as the Human Genome, 1000 Genomes and TCGA (The Cancer Genome Atlas) Projects. The Genome Institute is a world-leader in the generation and analysis of genomic sequence data and uses this data to extend biological knowledge of the human genome and provide clinically relevant sequence analysis aimed at understanding human diseases (such as cancer and Alzheimer's disease). In addition, the Institute fosters public understanding of genomic science through various educational and outreach efforts.

REQUIRED QUALIFICATIONS

Certification or degree in computer programming from a technical school or college plus two years of relevant work experience required. Additional relevant programming experience may be substituted on a year-for-year basis for required education

PREFERRED QUALIFICATIONS

The ideal candidate has a talent and love for writing software, is interested in developing that skill, and applying it in a production environment. The candidate will be expected to learn new things on a regular basis, think critically, and collaborate with other developers across groups. The environment is fast-paced and a person who likes to get things done will find a lot of opportunity. Design, testing, debugging, and problem analysis are a regular part of the work. Skills in abstract software design, object-oriented architecture, relational data modeling, and web interface design will be used frequently, which will require thorough knowledge of each concept. The applicant will use these skills to develop software that will: interface with people and/or laboratory equipment, process and analyze large data sets on a compute cluster, and provide intuitive web based interfaces to the specifications of the laboratory managers and technicians. Proficiency in dynamically typed languages (Perl, Ruby, Python, Lisp, etc.) is a plus, but not required. Understanding of relational databases and SQL will be helpful. Experience with web technologies such as HTML, CSS, Javascript and approaches such as REST and AJAX is an asset. Regular work will be done in GNU/Linux and other UNIX-like development environments. Familiarity with open source technologies, version control software such as git, and programming in a network environment are also assets.

SALARY RANGE

The hiring range for this position is commensurate with experience.

DEPARTMENT SUMMARY

One of only three NIH-funded large-scale genome centers in the United States, The Genome Institute at Washington University is a leader in genomics research as it applies to the study of biology, human disease and the field of personalized medicine. Founded in 1993, The Genome Institute focuses on cancer genomics, the genomics of heritable diseases, microbial and pathogen genomics, as well as novel sequencing and evolutionary genomics. Our mission is to help improve the human condition by producing, studying, and interpreting high-quality genome-based data that drives biological discoveries that range from the bench to the hospital bedside. We value the open sharing of information and ideas and encourage collaboration while also engaging the next generation of scientists through educational outreach efforts.

BENEFITS

  - Retirement Savings Plan
  - 22 vacation days
  - 8 Paid Holidays
  - Sick Time
  - Tuition benefits for employee, spouse and dependent children
  - Free Metro Link/ Bus pass
  - Free Life Insurance
  - Health, Dental, Vision
  - Health Savings Accounts (HSA)
  - Long Term Disability Insurance
  - Flex Spending Plan
  - Other Benefits
Med School HR website (http://medschoolhr.wustl.edu)

EOE STATEMENT

All qualified applicants will receive consideration for employment without regard to sex, race, ethnicity, protected veteran, or disability status.

wschroed··on Mojolicious – Perl real-time web framework
No. :( Our users -- lab folks -- are not particularly computer savvy, and everyone benefits from the face time, especially when it comes to translating what they said on a JIRA issue to their actual problem.
wschroed··on Mojolicious – Perl real-time web framework
Yes. And I am looking for Perl programmers right now:

  http://www.reddit.com/r/stljobs/comments/2a9940/seeking_software_developer_for_the_genome/

It gets the job done, is an easy language for people to get into, has enough flexibility to adapt to a huge number of programming patterns, and has a large and active community. We write real applications with it that help scientists find cures for diseases.
wschroed··on Ask HN: Who is hiring? (July 2014)
I was trying to figure out why a job offer was downvoted into the hard-to-read range when I realized... I forgot to add the location! and I can't edit the post! Sorry!

St. Louis, MO, United States

wschroed··on Ask HN: Who is hiring? (July 2014)
I am looking for another software developer for the LIMS group at The Genome Institute, a position where the primary language is Perl. You may contact me directly (my user name at genome.wustl.edu) with your resume and samples of code or hosted repositories; it does not matter to me what languages you choose. Officially, you can apply to this job through https://jobs.wustl.edu (search for job ID 28449). Below is a copy of the official job posting with all the HR legalese. :) This is considered a mid-tier position, between junior and senior experience.

SUMMARY

- Job Title: Bus & Tech App Analyst II - The Genome Institute - 28449

- Job ID: 28449

- Location: Medical School

- Full/Part Time: Full-Time

- Regular/Temporary: Regular

JOB TYPE/SCHEDULE

This position is full-time and works approximately 40 hours per week. Position hours are generally M-F 8:30-5.

DEPARTMENT NAME/JOB LOCATION

This position is at the Genome Institute. This position is for the Medical School Campus.

ESSENTIAL FUNCTIONS

The Genome Institute at Washington University has an opening for a talented software engineer in the Bioinformatics group. The position will work with an experienced group of software engineers to develop software supporting the tracking of laboratory data and analysis processes to support large scale genomic research projects. The Genome Institute has been at the forefront of genome research since its inception in 1993 and has been a part of major scientific projects such as the Human Genome, 1000 Genomes and TCGA (The Cancer Genome Atlas) Projects. The Genome Institute is a world-leader in the generation and analysis of genomic sequence data and uses this data to extend biological knowledge of the human genome and provide clinically relevant sequence analysis aimed at understanding human diseases (such as cancer and Alzheimer's disease). In addition, the Institute fosters public understanding of genomic science through various educational and outreach efforts.

REQUIRED QUALIFICATIONS

Certification or degree in computer programming from a technical school or college plus two years of relevant work experience required. Additional relevant programming experience may be substituted on a year-for-year basis for required education

PREFERRED QUALIFICATIONS

The ideal candidate has a talent and love for writing software, is interested in developing that skill, and applying it in a production environment. The candidate will be expected to learn new things on a regular basis, think critically, and collaborate with other developers across groups. The environment is fast-paced and a person who likes to get things done will find a lot of opportunity. Design, testing, debugging, and problem analysis are a regular part of the work. Skills in abstract software design, object-oriented architecture, relational data modeling, and web interface design will be used frequently, which will require thorough knowledge of each concept. The applicant will use these skills to develop software that will: interface with people and/or laboratory equipment, process and analyze large data sets on a compute cluster, and provide intuitive web based interfaces to the specifications of the laboratory managers and technicians. Proficiency in dynamically typed languages (Perl, Ruby, Python, Lisp, etc.) is a plus, but not required. Understanding of relational databases and SQL will be helpful. Experience with web technologies such as HTML, CSS, Javascript and approaches such as REST and AJAX is an asset. Regular work will be done in GNU/Linux and other UNIX-like development environments. Familiarity with open source technologies, version control software such as git, and programming in a network environment are also assets.

SALARY RANGE

The hiring range for this position is commensurate with experience.

DEPARTMENT SUMMARY

One of only three NIH-funded large-scale genome centers in the United States, The Genome Institute at Washington University is a leader in genomics research as it applies to the study of biology, human disease and the field of personalized medicine. Founded in 1993, The Genome Institute focuses on cancer genomics, the genomics of heritable diseases, microbial and pathogen genomics, as well as novel sequencing and evolutionary genomics.

Our mission is to help improve the human condition by producing, studying, and interpreting high-quality genome-based data that drives biological discoveries that range from the bench to the hospital bedside. We value the open sharing of information and ideas and encourage collaboration while also engaging the next generation of scientists through educational outreach efforts.

BENEFITS

- Retirement Savings Plan

- 22 vacation days

- 8 Paid Holidays

- Sick Time

- Tuition benefits for employee, spouse and dependent children

- Free Metro Link/ Bus pass

- Free Life Insurance

- Health, Dental, Vision

- Health Savings Accounts (HSA)

- Long Term Disability Insurance

- Flex Spending Plan

- Other Benefits

Med School HR website (http://medschoolhr.wustl.edu)

EOE STATEMENT

All qualified applicants will receive consideration for employment without regard to sex, race, ethnicity, protected veteran, or disability status.

wschroed··on Stop commenting your code just to say you did
> Descriptive function names never lie, comments often do.

Description function names lie just as much as comments. For example, I have run into cases in the wild where things like "get_item()" create database entries before returning a value. Yes, side effects are evil, etc etc, but the point is that at some point, somebody maintained the code and did not update every use of get_item() to now be get_and_or_create_items_if_it_is_sunday(). In rare cases, I have seen them at least update the local documentation.

wschroed··on Ask HN: Who is hiring? (March 2014)
St. Louis, MO - Business & Technology Applications Analyst I (entry level position) - The Genome Institute - 26988

The Genome Institute at Washington University has an opening for a talented software engineer in the Bioinformatics group. The position will work with an experi enced group of software engineers to develop software supporting the tracking of laboratory data and analysis processes to support large scale genomic research projects.

The ideal candidate has a talent and love for writing software, is interested in developing that skill, and applying it in a production environment. The candidate will be expected to learn new things on a regular basis, think critically, and collaborate with other developers across groups. The environment is fast-paced and a person who likes to get things done will find a lot of opportunity.

The Genome Institute has been at the forefront of genome research since its inception in 1993 and has been a part of major scientific projects such as the Human Genome, 1000 Genomes and TCGA (The Cancer Genome Atlas) Projects. The Genome Institute is a world-leader in the generation and analysis of genomic sequence data and uses this data to extend biological knowledge of the human genome and provide clinically relevant sequence analysis aimed at understanding human diseases (such as cancer and Alzheimer's disease). In addition, the Institute fosters public understanding of genomic science through various educational and outreach efforts.

Washington University in St. Louis is an equal opportunity, affirmative action employer and encourages applications from women, ethnic minorities, veterans, and individuals with disabilities.

Degree or certification from a technical school or college in computer programming required; experience in computer programming and/or relevant DBA experience may be substituted on a year-for-year basis for required education.

Design, testing, debugging, and problem analysis are a regular part of the work. Skills in abstract software design, object-oriented architecture, relational data modeling, and web interface design will be used frequently, which will require thorough knowledge of each concept. The applicant will use these skills to develop software that will: interface with people and/or laboratory equipment, process and analyze large data sets on a compute cluster, and provide intuitive web based interfaces to the specifications of the laboratory managers and technicians.

Proficiency in dynamically typed languages (Perl, Ruby, Python, Lisp, etc.) is a plus, but not required. Understanding of relational databases and SQL will be helpful. Experience with web technologies such as HTML, CSS, Javascript and approaches such as REST and AJAX is an asset. Regular work will be done in GNU/Linux and other UNIX-like development environments. Familiarity with open source technologies, version control software such as git, and programming in a network environment are also assets.

This position is full-time and works approximately 40 hours per week. The salary will be commensurate with experience.

Benefits:

* Retirement Savings Plan

* 22 vacation days

* 8 Paid Holidays

* Sick Time

* Tuition benefits for employee, spouse and dependent children

* Free Metro Link / Bus pass

* Free Life Insurance

* Health, Dental, Vision

* Health Savings Accounts (HSA)

* Long Term Disability Insurance

* Flex Spending Plan

* Other Benefits - Med School HR website (http://medschoolhr.wustl.edu/)

Please email your resume and a code sample to me, William Schroeder (wschroed), at genome.wustl.edu. You may also apply through the official channel (you can do a basic search for job number 26988): https://jobs.wustl.edu/

wschroed··on Ask HN: Who is hiring? (February 2014)
St. Louis, MO - Business & Technology Applications Analyst I (entry level position) - The Genome Institute - 26988

The Genome Institute at Washington University has an opening for a talented software engineer in the Bioinformatics group. The position will work with an experienced group of software engineers to develop software supporting the tracking of laboratory data and analysis processes to support large scale genomic research projects.

The ideal candidate has a talent and love for writing software, is interested in developing that skill, and applying it in a production environment. The candidate will be expected to learn new things on a regular basis, think critically, and collaborate with other developers across groups. The environment is fast-paced and a person who likes to get things done will find a lot of opportunity.

The Genome Institute has been at the forefront of genome research since its inception in 1993 and has been a part of major scientific projects such as the Human Genome, 1000 Genomes and TCGA (The Cancer Genome Atlas) Projects. The Genome Institute is a world-leader in the generation and analysis of genomic sequence data and uses this data to extend biological knowledge of the human genome and provide clinically relevant sequence analysis aimed at understanding human diseases (such as cancer and Alzheimer's disease). In addition, the Institute fosters public understanding of genomic science through various educational and outreach efforts.

Washington University in St. Louis is an equal opportunity, affirmative action employer and encourages applications from women, ethnic minorities, veterans, and individuals with disabilities.

Degree or certification from a technical school or college in computer programming required; experience in computer programming and/or relevant DBA experience may be substituted on a year-for-year basis for required education.

Design, testing, debugging, and problem analysis are a regular part of the work. Skills in abstract software design, object-oriented architecture, relational data modeling, and web interface design will be used frequently, which will require thorough knowledge of each concept. The applicant will use these skills to develop software that will: interface with people and/or laboratory equipment, process and analyze large data sets on a compute cluster, and provide intuitive web based interfaces to the specifications of the laboratory managers and technicians.

Proficiency in dynamically typed languages (Perl, Ruby, Python, Lisp, etc.) is a plus, but not required. Understanding of relational databases and SQL will be helpful. Experience with web technologies such as HTML, CSS, Javascript and approaches such as REST and AJAX is an asset. Regular work will be done in GNU/Linux and other UNIX-like development environments. Familiarity with open source technologies, version control software such as git, and programming in a network environment are also assets.

This position is full-time and works approximately 40 hours per week. The salary will be commensurate with experience.

Benefits:

* Retirement Savings Plan

* 22 vacation days

* 8 Paid Holidays

* Sick Time

* Tuition benefits for employee, spouse and dependent children

* Free Metro Link / Bus pass

* Free Life Insurance

* Health, Dental, Vision

* Health Savings Accounts (HSA)

* Long Term Disability Insurance

* Flex Spending Plan

* Other Benefits - Med School HR website (http://medschoolhr.wustl.edu/)

Please email your resume and a code sample to me, William Schroeder (wschroed), at genome.wustl.edu. You may also apply through the official channel (you can do a basic search for job number 26988): https://jobs.wustl.edu/

wschroed··on Ask HN: Who is hiring? (May 2013)
The Genome Institute at St. Louis, MO

Title

Business & Technology Applications Analyst II (this is not an entry-level position)

Job Description

The Genome Institute at Washington University has an opening for a talented software engineer in the Bioinformatics group. The position will work with an experienced group of software engineers to develop software supporting the tracking of laboratory data and analysis processes to support large scale genomic research projects.

The Genome Institute has been at the forefront of genome research since its inception in 1993 and has been a part of major scientific projects such as the Human Genome, 1000 Genomes and TCGA (The Cancer Genome Atlas) Projects. The Genome Institute is a world-leader in the generation and analysis of genomic sequence data and uses this data to extend biological knowledge of the human genome and provide clinically relevant sequence analysis aimed at understanding human diseases (such as cancer and Alzheimer's disease). In addition, the Institute fosters public understanding of genomic science through various educational and outreach efforts.

Job Qualifications

The ideal candidate has a talent and love for writing software, is interested in developing that skill, and applying it in a production environment. The candidate will be expected to learn new things on a regular basis, think critically, and collaborate with other developers across groups. The environment is fast-paced and a person who likes to get things done will find a lot of opportunity.

Design, testing, debugging, and problem analysis are a regular part of the work. Skills in abstract software design, object-oriented architecture, relational data modeling, and web interface design will be used frequently, which will require thorough knowledge of each concept. The applicant will use these skills to develop software that will: interface with people and/or laboratory equipment, process and analyze large data sets on a compute cluster, and provide intuitive web based interfaces to the specifications of the laboratory managers and technicians.

Proficiency in dynamically typed languages (Perl, Ruby, Python, Lisp, etc.) is a plus, but not required. Understanding of relational databases and SQL will be helpful. Experience with web technologies such as HTML, CSS, Javascript and approaches such as REST and AJAX is an asset. Regular work will be done in GNU/Linux and other UNIX-like development environments. Familiarity with open source technologies, version control software such as git, and programming in a network environment are also assets.

Certification or degree in computer programming from a technical school or college plus two years of relevant work experience required. Additional relevant programming experience may be substituted on a year-for-year basis for required education.

You can also send questions and resumes directly to me.

Page 1 of 2Next →