I'd love to get feedback on my application. I'm an experienced Java
developer, but new to Ruby and Rails. So while my application works,
I'm sure I'm doing many things the hard way.
BACKGROUND ON THE APPLICATION
The application that I'm working manages data from a Luminex bead
sequencer: http://www.luminexcorp.com/products/luminex_100IS.html
Our scientists are studying the effects of various drugs on the
expression of proteins in various biological samples.
They put samples into wells on plates. They have beadsets which contain
antibodies hybridized to microscopic beads. These bead sets are put
into the wells and the proteins hybridize onto the beads. The Luminex
machine then uses lasers to count the number of each type of beads that
have hybridized to proteins in the samples. The result is a formatted
text file that gives gene expression readings. This file contains
roughly 100 wells times 100 beads times 10 distinct statistics, so
roughly 100,000 data points per plate.
My web application currently allows the users to import the data file
and manage the following entities:
- project
- experiment
- plate
- well
- beadset
- bead
- tag (the antibody probe)
- treatment
In the future, I'll be adding more flexible query and output capabilities.
Compared to some of the presentations at the Boston Ruby Group, this
application is dirt simple, quick-and-dirty, and ugly. There is no
high-speed, low-drag clever coding here. But it may be interesting to
those looking at doing more basic development techniques on a real-life
application.
AREAS OF INTEREST
I'm sure we could spend far more time than we have go over the
application, but here's a few possible topics where I could use feedback:
1) general Ruby/Rails style. I'm still thinking in Java and my code
looks like it.
2) unit testing of active record objects. While I have some testing, it
just isn't done right. I've read a bit about testing active record
objects, but haven't gone down that road yet. It would be great if
someone could show me how to get started in the right way on this.
3) performance improvements. I've done some performance work on the
import of the Luminex data model. This import creates 10,000 rows. My
first cut took 5 minutes to import. I've got it down to 1 minute, but
it would be great if we could speed it up even more. The next
generation Luminex machine uses a 384 well plate and 1000 beads per
plate, so that will have a significantly larger dataset and performance
will be even more important.
4) Incorporate Ajax. Right now the management functions are somewhat
clumsy. For example, the user sees a list of projects in an HTML table.
To add a project, they hit the "New Project" link, which returns a
project form. They enter the name and description, hit save, and get
sent back to the HTML table. It would be nice to instead have the main
page be a spreadsheet-like form, with no need to navigate to the "New
Project" form to add a new project.
Jared
--
Jared Nedzel
Cancer Genomics Informatics
Broad Institute
7 Cambridge Center
Cambridge, MA 02142
Matthew Krom wrote:
> Which leads me to a question--how is your automated test
> suite?
--
I'd be interested in that.
Sean
How much testing is too much?
What testing stategies can end up being quagmires?
Thanks for all the feedback on Tuesday night. I've got a bunch of work
to do and some things to think about.