Java Consultant Martin Rinehart — Proprietor


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é.


Picture of book cover
                Understanding dBASE 5 for Windows

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?

HTML-Powered Writer

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.

Inter-weaving end points of painted border
Not today. Today you communicate in a two-dimensional visual medium. You use text, lists, graphics and color. You don't write about where lines end in a button's border, you show a picture. The one on the left is from the Buttons topic in the left-side navigation bar.

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.

Author of Ten Books on Software and Programming

I'm the author of ten books about software and programming. They are:

Picture of book Java Database Development
Picture of book Java Programming with Visual J++
Picture of book Visual Basic 5 Power OOP
Picture of book Learn C++ Today

Picture of book Understanding dBASE 5 for Windows
Picture of book Learn Visual dBASE Programming
Picture of book Client-Server dBASE Programming

Author of Numerous Articles

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.

Javadoc Author

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.


Picture of book cover Java Database Development

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.


Picture of book cover Visual Basic Power
                Object-Oriented Programming

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.

Color Chooser Designer

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.

Button Designer

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.

Command Bar Designer

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.

Screen shot of command bars showing menu and icon versions

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:

Screen shot of expert command bar showing main menu commands as individual icons, not words

Application Framework Designer

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:

Screen shot of normal application framework, showing main menu at top, icon bar beneath main menu and navigation bar (more icons) on left

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:

Microsoft's Internet Explorer

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.


Picture of book cover
                Learn C++ Today!

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."

The Decaf Architect

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.

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

This book is still in print today, for good reason. Good architecture is the source for good results.

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."

Your Architect

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!


Picture of book cover

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:
  • Infoworld
  • Data-Based Advisor
Books published:
  • An Introduction to Template Programming, Template Garden Press
  • Client-Server dBASE Programming, Addison-Wesley
  • Building dBASE IV 2.0 Applications, Addison-Wesley
  • Learn Visual dBASE Programming, Addison-Wesley
  • Understanding dBASE 5 for Windows, Sybex
  • Learn C++ Today, IDG Books
  • Visual Basic 5 Power OOP, IDG Books
  • Java Programming with Visual J++, M & T Books
  • Java Database Development, Osborne-McGraw Hill
  • Advanced Java Programming, Active Education
Clients include:
  • Capital Reinsurance
  • American Capital Access
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:

  • Board of Directors, Software Publisher's Association
  • Chairman, IEEE language standards committee
  • Vice-chair, Parliamentarian ANSI standards committee
  • Speaker, Comdex and other conferences
1981-1983
FDC Consultants
Principal
Clients included:
  • AMBAC
  • Bear Stearns
  • Blyth Eastman Dillon
  • E. F. Hutton
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)

Avid amateur photographer

Cook (garlic salmon with Thai peanut sauce today)


Java consultant home page icon