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