Skip to main content


Showing posts from April, 2013

Opinions I wish I had heard before my first child was born

It's April 30th 2013 and so it's car buying season. But here is the advice I wish someone had given me. buy the car do not leasebuy the car with the most accessories but not all the accessoriesget the car with the DVD entertainment system from the factoryGet the van like an Odyssey and skit the SUVHere's why: we are way over out 15K miles our yearthere is an ROI value that is calculated based on accessories. Too many accessories and the formular degrades.The after-market DVD entertainment system is crap, not integrated into the car properly, uses RF instead of AUX, no zone control, a different warranty altogether and needs to be in working order to satisfy the lease.The van is just so much easier. It becomes a real people mover. The car seat in the SUV turns your 8 passenger Volvo into a 3 seater. Car seats are wider than you think.*sigh* anyone else with a bright idea?

My Next Framework

I have been reading everything there is to read on the different architectures for building scalable web applications. The challenges are numerous. For example; the benefits of client-side one-page application is offset by the fact that they lowest entry point smart phone and similar appliances are not as performant as they once were. But then millions of uniques a day might have a similar effect on the server-side of the architecture.
So what to do?
(a) by building a proper idempotent stateless REST layer that can either be exposed via an API layer or buried inside your domain would seem to be a good starting point. This is going to let you scale the backend separately from the frontend with few wasted cycles in between.
(b) when building the one-page app use tools that limit your exposure whether the rendering takes place inside your servers or is pushed to the client. For example using template tools like mustache which are supported in a number of different languages like C#, Go, Jav…

Irrational Fear of Ruby when working JavaScript

I'm trying to find a good javascript client framework that I can use against a REST backend. I like many of the ideas in Ember including it's routing and embedded handlebars. But I seem to have this innate fear of ruby when it comes to this project. It just feel unnatural. Less and CoffeeScript seem more natural.

CQRS Is Proof That Sock Fairies Exist

I suppose that everything needs a name and an acronym... but CQRS? Really? Just reading a few articles on the subject it seems to be too verbose. (a) there is CRUD and then; (b) there is CQRS. And it's also important to note that CRUD is CQRS but that not all CQRS is CRUD.

The thing is we all experience CQRS almost every day as not all architectures are CRUD. For example in systems where network traffic/payload/protocol needs to be optimized by reducing many-to-one transactions or when refactoring the backend DB for whatever reason we tend to encapsulate the CRUD within CQRS.

NodeJS servers to support one page aps

I've tried a number of NodeJS servers [expressjs, sails, meteor, hapi]. I cannot say that they are all completely different or that they are completely the same. They are what they are.

expressjs comes from a long line of connect experience.sails feels a lot like rails with some really cool features like auto subscription,, and the browser console.meteor is a complete departure from the others. It's a complete server but it's also a complete platform. More so than the others. It's also it's downside. It already includes bootstrap but what version? Then there is the customizations too.hapi is an odd duck. It's like a traditional app server but then they go a long way to help you handle some of the edge cases like client ans server side cache with a simple config setting. But then when you look at the add-ons they are so very incomplete.The documentation and useful examples are another pain point: expressjs the documentation is just barely adequate when s…

Bootstrap Metro theme

Someone published a metro theme for bootstrap. At first I thought it would be a novel idea.  Then I recalled that the talking heads were down on PC sales and blaming Microsoft's Windows 8.  So why on ear would someone continue to emulate Windows 8? The worst part is that the theme is basically static where one might be expecting more animated widgets.

Big data says what?

Given the number of big data scale databases you'd think there was an endless supply of big data.

Just how many businesses really need these databases? In my estimation not many at all. So don't let them dominate the conversation for the wrong reasons.

Do you know RealTime?

That anyone would suggest that an HTTP-proxy or webserver of any kind is "realtime" means two very powerful things. (a) that person has absolutely no idea what RealTime means. (b) that person has less of an idea what a webserver is.

GOLANG Encoding not always ideal

When using GOLANG's encoding for JSON and the datatype is Time. "omitempty" does not work. It always emits the default value '0001-01-01 00:00:00 +0000 UTC'. This is not working as expected.

type Stuff struct {
  Cloned       time.Time   `json:"cloned,omitempty"`
  Expiration   time.Time   `json:"expiration,omitempty"`

Scaling Deployment

Every time I start a new project there is this realization that there are so many moving parts that really need to be addressed and are never part of the original development plan and yet there needs to be a bootstrap for that too. For example there are many type of logging that take place in development and production. I also hate building the infrastructure each time. What I'd prefer is a wrapper that would send my logs to loggly until I was ready to assume that role.

Monolithic deployment file ... a la jar file

The monolithic code repository still has some value. It does get a little tricky when you implement continuous deployment but that another story. The jar file is nothing more than a compressed tar-like file with a little compression sugar sprinkled in.The only difference is that jar files are read by the java runtime engine so while other types of file objects make sense in system delivery it all amount to the same thing.

My New Server Naming Convention

I've decided to name my machines with the abbreviations of the Zodiac, Planets, and periodic table of elements. That gives me a working set of over 10K machine names. I might even add a single letter suffix in order to describe it's function(s).

My new all-in-one server might be designated:


TAU - taurusE - EarthO - OxygenLLPS - Linux, Lighttpd, Postgres, sshdFor this to work you need a really good DNS support system and a very flexible application configuration system.

The Killer App

The killer app is not really the killer app but the killer framework. The idea came to me when I was watching the keynote from RubyConf AU 2013. Dave Thomas, the speaker, talked about many subjects, however, most notably he talked about developer productivity as it results from the granularity of the language; in his case Ruby and it's DSL-ness.

I do not particularly care for custom DSLs, however, general purpose embedded DSLs serve a terrific purpose.

Scale or the ability comes in many different flavors and many combo flavors too; and it can effect each point in the stack. It's also why companies move certain aspects of their applications to the client and sometimes back. There is also a migration to and from distributed computing and the monolithic appliance. However, in most cases the workflow or transaction and the infrastructure are linked together.

Being linked together refers to a number of linkages:

The source code is literally compiled and linked togetherThere is some l…

Dart for real dev.

The cool nerds are moving to dart. But is it a real migration? I saw the benchmark where darts version of the JavaScript form of the app out performed native java. I suppose it's the JIT effect.

It still requires too much plumbing to get real work done and it feels a lot like GWT which did not get adopted as quickly as needed.

This environment is still to volatile.

3 levels of logging goodness

Typical syslog and related logging systems implement a level system that address individual message context. However, logging usually has multiple contexts. (a)The framework, (b)the internal diagnostics [the application ping], (c) the application's transactions.

As sort of a best practice; if you're using syslog etc... then open multiple connections/categories. One per application context. And when you're "transactions" make certain to use a UUID or transaction id with EVERY single message so that you can aggregate the messages.