Blog

The right tool for the job

Sometimes you need to admit when you were wrong. I thought that using a NoSQL database would be an easier option than a traditional relational database. But as I started developing for it, I ran into a couple blockers. One was the item size limit of Amazon Dynamo. This would have required a redesign to a schema similar to a relational database, and would have reduced the benefit of a NoSQL model. Second was the need for transactional integrity. I needed to make sure that if one user sends a token to another, both sides have the record of the transaction for accounting purposes. There were work-arounds that I could have built for this, but ultimately it was easier to transition back to a transactional database instead. And, really, the model…
Read More

Embrace the Cloud

It's been a little while since I posted, but we're still moving along. One thing I've needed to learn is to let other people do the work. Don't set up a Tomcat VM, use ElasticBeanstalk. Don't set up a Mongo VM, use DynamoDB. Don't require an authentication system, integrate with Wordpress. By working with existing tools, you ensure they are set up right, eliminate the maintenance time, and streamline development and deployment. Recognizing that "You Aren't Gonna Need It" takes some time and research, but ultimately saves development and regression time. So instead of diving into the minutia of Tomcat configuration, CORS, SSL, load balancing, security, etc. etc. etc., I can off-load that effort to pre-configured containers and work with them. Faster, more secure, better scaling. What's not to like?…
Read More

GWT, JSON and REST

This week's post is about integrating JSON with GWT. GWT allows you to create a data object that represents the underlying JSON object. They call this an overlay. Any class that exends JavaScriptObject can be used as an overlay. For example, this snippet of a User object will be used by GWT to handle received JSON data. Notice that the getters and setters are declared as native methods and there are no class variables declared for the setters. That allows the GTW compiler to compile the class into Javascript and access the underlying JSON object. public class UserDO extends JavaScriptObject { protected UserDO() { } public final native int getId() /*-{ return id; }-*/; public final native void setId(int id) /*-{ this.id = id; }-*/; public final native String getHash()…
Read More

It’s a hobby, until it isn’t

So I forgot to write a blog post ahead of time this week. Like John Lennon said "Life is what happens when you're making other plans." As much as I want this to be my full-time job, the fact is it isn't yet. I have one full time job, and a full-time family, so this gets done in whatever time I have left. I'd planned an introduction to GWT and how the compiler handles layout, because it can be difficult to get the layout right. But things happen and I didn't get to it this week. I've got business stuff to work on, and especially focus on getting the demo online and continuing work toward the first release. That's why schedules are written in pencil. At my first professional job…
Read More

K.I.S.S

The Agile Manifesto defines simplicity as the art of maximizing the amount of work not done. There’s two ways to take that. As defining the minimum feature set for the product, and the minimum amount of code required to implement those features. For example, I didn’t sit down, write a CMS, set up a web server and database, just to publish this blog post. I bought a webserver package and installed WordPress. The same principle applies to project development. Do I write a login authentication system, or leverage an existing framework? Do I write a database layer, or use an ORM? And the same principle applies to user interface design. Why make the user click, or otherwise interact with the UI, when the data can be presented to them without…
Read More