I'm Martin Rinehart, a Java consultant. This page introduces my skills as writer, designer and programmer. If you want to tour this site on your own, to form your own opinion, let me suggest a few interesting places to explore.
Try the articles to see my writing. Compare this years' "Database Design" article to the same material from my earlier books. I'd suggest a look at my ColorChooser to see some design work, the Dawn Painter to see the Color Chooser in action, and then the Application Framework to see a larger piece. Move on to the javadoc and javasrc.
If you're a programmer, compare my Tokenizer (look in the javadoc here for the language package, Tokenizer class) with Sun's StreamTokenizer (see Sun's javadoc for its Java.io package).
Or you could stay here for the whole pitch. Here we'll discuss my ability as:
And we'll have my résumé.
|
Martin Rinehart — Writer |
I wrote Understanding dBASE 5 for Windows with Alan Simpson. (Actually, he wrote his dedication and I wrote the rest.) It was written for people who knew very little about computers but needed to use a powerful database product. It's profusely illustrated. Did you notice that the book cover graphic is also a hyperlink?
It used to be enough to use plain English to explain our often complex topics. You'd use the AP style book (not Chicago) and if you knew the difference between "further" and "farther", the difference between "insure" and "ensure" you could call yourself a writer.
|
And you do lots of things that you know no one will ever notice. The graphic on the left is the left datum in a two-datum table. The second datum is just an em space (in HTML:  ), so this text doesn't bump into the picture.
Use your browser's view/source feature to see how it's done. Don't choose the View menu, source option. That will show you the very dull HTML that sets up the frames. Right-click in this text. Then in Internet Explorer choose "View Source." In Netscape (or Firefox or Mozilla) choose "This Frame" and then "View Frame Source." If you had Opera you could just press Alt+F3.
Did I mention that the HTML author needs to have a nice selection of browsers because there are lots of little incompatibilities?
While I usually use very sophisticated tools (the Eclipse IDE for programming, Design Workshop Pro for 3D modeling) all the HTML on this site is put together with a simple text editor and a good knowledge of HTML tags. I've yet to find an HTML editor that doesn't eventually get in the way of what I want to do.
Now let's talk about books.
I'm the author of ten books about software and programming. They are:
|
|
|
|
|
|
|
Back in the days of the print-based world I wrote articles and columns for publications such as Infoworld and Data-Based Advisor. I still write articles. See the Articles link in the left-side navigation bar if you'd like to peruse a few.
Sun's Graphics2D lets the programmer make nice washes going from one color to another, or from a lighter to a darker shade of one color. Here's how Sun describes it:
The GradientPaint class provides a way to fill a Shape with a linear color gradient pattern. If Point P1 with Color C1 and Point P2 with Color C2 are specified in user space, the Color on the P1, P2 connecting line is proportionally changed from C1 to C2. Any point P not on the extended P1, P2 connecting line has the color of the point P' that is the perpendicular projection of P on the extended P1, P2 connecting line. Points on the extended line outside of the P1, P2 segment can be colored in one of two ways....Those words appear to be English, but what are they saying?
By contrast, take a look at the way I describe it in my article about the DawnPainter example.
I can help clients with their javadoc. The Documentation link on the navigation bar will show you what I've done for my own code.
The Decaf project showcased here is underway, but by no means complete. If you look in the javadoc for the language package you'll see that I've specified a YACC-like capability in an object-oriented fashion. The parser is not complete, but there are a number of ideas already in the javadoc. On the other hand, the Tokenizer is complete in both doc and code. You can compare my Tokenizer directly to Sun's Java.io.StreamTokenizer.
If you think your own shop's documentation might benefit from some professional assistance, email me.
|
Martin Rinehart — Database Designer |
Actually, it would be more accurate to say that I help people design their own databases. My "ORE&D" database design method is easy to teach, devoid of the opaque jargon of normalization and guaranteed to yield fifth-normal form database designs. See Articles, Database Design (5th-Normal — Made Easy).
![]() 1994 |
![]() 1998 |
This design method first appeared in my 1994 book, Client-Server dBASE Programming. I improved on that in 1998 in my book Java Database Development. The links to the left take you to the relevant chapters from those works.
|
Once you read the article, I think you'll be convinced that the traditional approach (ER models, normalization) is far more difficult, especially when you understand that ORE&D is proven to produce a fifth-normal form result.
|
Martin Rinehart — UI Designer |
My book on object-oriented programming in Visual Basic led the reader through the development of a sophisticated time-management system that included innovations that are now standard. For example, there is a calendar that is an input device — you click on a day and that day is entered where you might otherwise enter month, day and year. The cascading billboards I used for projects are still an original, space-economical display of a tree.
The Color Chooser link takes you to my color chooser (and to Sun's, for comparison). It challenges you to find a good color for a pumpkin using my chooser with one little hint: it helps to scroll the green. Go ahead and try it. Right here I'll challenge you to do the same using Sun's HSB tab or Sun's RGB tab.
The Buttons link shows my own idea of a button and Sun's standard Swing button. I'm not sure that my traditional button is better or basically unsophisticated. For most user interface work, I think I'll stay unsophisticated.
The Command Bars link shows my buttons collected on command bars. This integrates the ideas of menu bars and icon bars. This is a sample showing the menu and icon versions of a single command bar.
How long would it take you to go from the menu version to the icon version? You could use the reclaimed space for something like this:
The Application Framework link shows my command bars used as the base for an application. This provides basic capabilities — such as dockable icon bars — that are generally useful in application programs. This is what a sample looks like:
There are two innovations that I want to point out.
First, the main menu is not a special bar; it's a standard command bar. This means that it shows icons and text and the other standard decorations (ellipses for dialog follows, arrow for menu follows). This makes it possible for the expert user to choose a sophisticated icon bar that shows the main menu icons (without the text) along with other icons. That lets you save space by turning the main menu off, without losing the main menu's capabilities. The next image shows a well-known product in which I'd like to turn the main menu into a space-saving icon bar:
Second, the tear-off or dock options in many products are implemented by dragging. If you drag near to a border the menu or icon bar will dock there. This can be endlessly frustrating if the program's algorithms for "near" the border don't match your mental picture. I've replaced the "drag and pray" method with another pop-up menu/icon bar. On the Application Framework page there's an applet that launches a sample application framework. Test the design for yourself.
If you've got a project that needs to be immediately useful to untrained users, I'd love to hear from you.
|
Martin Rinehart — Software Architect |
In Learn C++ Today! I lead the C++ beginner through the creation of a fairly complete text editor. For the Decaf project, I rebuilt that editor in Java. If you look in the package ide.editor you won't find it, however. You'll find the beginning of a brand new editor based on the MVC pattern. (The FRDialog — the find/replace popup — is the one surviving piece.) Once again, Brooks' wonderful essays in The Mythical Man-Month prove that some things never change. He wrote, "Plan to throw one away; you will, anyhow."
Software architecture is an art. Listen to Brooks describe the results of his meeting with the architecture manager and the control program manager. The former has just told Brooks that his ten-man team can deliver the design, but three months behind schedule.
The control program manager had 150 men. He asserted that they could prepare the specifications, with the architecture team coordinating; it would be well-done and practical, and he could do it on schedule. Furthermore, if the architecture team did it, his 150 men would sit twiddling their thumbs for ten months.This book is still in print today, for good reason. Good architecture is the source for good results.To this the architecture manager responded that if I gave the control program team the responsibility, the result would not in fact be on time, but would also be three months late, and of much lower quality. I did, and it was. He was right on both counts.
Frederick P. Brooks, Jr., The Mythical Man-Month, Addison-Wesley, 1975
I invite you to take a hard look at my Decaf project, as one example of my work as an architect. Note how the pieces fit together but don't depend on each other's internal designs. There won't be any thumb twiddling while the design is completed.
Why did I throw out the first editor? The design wasn't going to work smoothly for syntax highlighting and other language-dependent chores, such as in-process compilation. I know that it will only take a couple weeks to replace the month-long, first-time effort. And that those weeks will be repaid many times as the project grows. "Plan to throw one away; you will, anyhow."
Do you have a difficult system? Perhaps one that's already slipping? Or maybe one that's a complete disaster?
Or do you have a critical project that you can't afford to have slip?
Please get in touch!
|
Martin Rinehart — Résumé |
By far my best Java book, Java Database Development (also published in Spanish as Desarrollo de bases de datos en Java) is still full of useful code. It has Java B-trees, persistent heap files and a menu layout manager that I want to add to my command bars, as soon as I get a chance. But that's not the topic, here. Let's get on to résumés.
For those who need a résumé, here is one online and in two download formats. (The content is the same, except that the .HTML has the colors you see here; the word processing versions are black and white.)
| Open (use Save As... for your copy) | |
|
Open Office martin-rinehart.sxw 14.8KB |
Microsoft Office
martin-rinehart.doc 30.0KB |
For those who would rather peruse than download, this is a copy.
| Martin Rinehart | MartinRinehart at gmail dot com |
| 47 Conklin Rd. | |
| Warwick, NY 10990 | mobile (845) 519-7004 |
|
1991-present Author Consultant |
Articles published in:
|
| 1983-1990 Wallsoft Systems Co-founder, CEO |
Wallsoft made tools for programmers using the Clipper, dBASE and FoxPro languages. Grew company from 2 persons to 9; no revenue to over $100,000/month. Sold in 1990.
Industry recognition:
|
| 1981-1983 FDC Consultants Principal |
Clients included:
|
| 1980-1981 Warner Computer Product Marketing Manager |
Took over new group targeting Wall Street clients. Built revenue from $25,000/month to $90,000/month in less than two years. |
| 1975-1979 Blyth Eastman Dillon Manager, Quantitative Analysis Group |
Hired as programmer. Promoted to manager. |
|
Current languages: (see the rest of this website) Java, Perl, HTML/CSS, Python, JavaScript Languages previously: C++, C, PC assembler, dBASE/Clipper, VBA, VB, APL, PL/I, Fortran, Basic Last semester at Strayer University, B.S. Database Technology with minor in International Business; on President's List (GPA: 4.0) Married, two daughters Sports: tennis (USTA 4.0 ranking), cyclist (century), hiker (Catskill 3500), alpine skier (one-day PR: 57,000 vertical feet) Piano player (mostly rock & roll) Cook (garlic salmon with Thai peanut sauce today) |