John DeRegnaucourt

Dayton, OH

I have been developing software since 1980. I started with BASIC on the Radio Shack TRS-80, moved to Z80 assembly, writing commercial games for it. I developed software in Pascal, C, and C++ in college (earned a BS in CS from Wright State University). I've worked with computer graphics (OpenGL) and heavily used the Graphics Gems books.

I started in Java in 1996 as a hobby. In 1999, I switched from the C++ Microsoft world to the Sun (now Oracle) world with Java. I have worked on all tiers of distributed systems, from User interfaces in applets using Swing, and now HTML 5. I am very proficient in CSS, Javascript, and HTML. On the web tier, I typically use Tomcat (version 7). I would rate myself near-expert on tomcat configuration. I've written a Java serializer to serialize Java to / from JSON in support of 'command pattern' (RESTful) web apps. See json-io on Google code.

I also developed JsonCommandServlet (yet to be listed on Google Code or Source Forge, but forth coming). This is a small RESTful servlet akin to Spring MVC (but much easier to use and configure).

I have worked extensively with databases, most proficient with MySQL. I manage a very large MySQL instance for support of a distributed file system backing a cloud storage website. Having the responsibility to support a high throughput website has really honed my coding practices around error handling, logging, (managing signal to noise in log files), as well as sharped my skills in performance tuning (managing HTTP headers, compression, caching, load balancing, build stateless servers, etc.)

I am currently developing NCube, an 'N' dimensional HyperCube. It supports any number of axis, with any number of columns per axis, and cells that can be of any type. Also studying using Node.js to back the visual editor.

Key observations:

  • Always build automated tests for your code. Keep test coverage at 100% method and 90%+ for line coverage.
  • Always keep the web-tier stateless. Makes clustering simple.
  • Stay away from modeling your domain objects in Java objects when your system has a sophisticated domain model. Java classes do not natively support configuration (scoping rules like date effectivity, geographical relevance, business unit, etc.)
  • Embrace 'thick' HTML 5 clients. Use the 'sessionStorage' feature of HTML 5. Layer your HTML 5 client at a minimum of view (HTML) and controller (Javascript) augmented with JQuery. Look at Google's angular for finer grained layering on the UI side.
  • Some freebies I've created: DeepEquals / DeepHashcode and SafeSimpleDateFormat which provides a ThreadSafe DateFormat instance.
  • Having used Spring and Hibernate extensively, I can say that the Spring framekwork is great and Hibernate is not.
Top Questions
No questions with score of 5 or more