Skip to main content


Showing posts from April, 2014

Do it all well

"You do not have to do everything; but everything you do, you need to do well."Yesterday I read an article where the author suggested that Google+ is dead. I hope not. As an entity it seems to be a mashup of several ideas, however, as a repository of knowledge it must persist. (unlike Wave).

I'm recalling the 80s when there were many all-in-one applications that were awesome. PFS Write, Calc, Database etc... and then the lead was stolen as brands moved into the dedicated app space. Things would so much simpler if PFS had won the day.

I have the same advice for Google. Keep it lean and simple... and done really well.

Broadband service provider SLA bullshit

[UPDATE] This could be a duplicate post or even incomplete for that matter, however, now that Comcast is moving into my neighborhood offering more features and service levels at half the price... I'm moving to them.

My local broadband service provider continues to tell stories about service level in our community. The easiest way to determine whether or not there's truly an event happening in the community is based on the hold time with customer service or technical support.

Regardless of the circumstances customer service has the same answers. #1 our system is working flawlessly and you should be able to perform a speed test with our internal server. Of course that's crap from the get-go when 50% of the formula for determining infrastructure problems is the gateway from The service provider to the Internet as a whole. Many times I have been able to achieve optimum speed tests between my local system and the internal target server however when attempting to run the same test…

So long Rackspace, hello GCE

Rackspace has been very good to me over the years. They have been taking a modest $50USD/month for about 2 years and $75USD/mo for the last year. But now I'm looking back on those servers and realizing that there is just way too much work for me to keep it all alive. So I am moving to CoreOS running on GCE (google cloud engine) with plenty of docker. I should be able to get to the magic $25USD/mo and still get the same service I have been getting.  With the remaining cost savings I might allocate a huge disk so that I can backup my 300GB of family photos at full resolution.

UPDATE: I just deleted my second server.  I had turned this server off several months ago (after backing it up) but in that time I have not missed it.  So goodbye.

UPDATE: only 2 servers left.

The vendor approach to 3rd party libraries

The "vendor approach" is defined by the relative absorption of a 3rd party library directly into a project by creating a "vendor" directory and putting the libraries and all of it's dependencies in that directory.

This might seem to be a reasonable solution because it means that the project is now static and embedded in your project. Sure; it has a bit of security embedded in the fact that you control what changes are implemented in the version you have locally. But unfortunately if the 3rd party lib is part of an active development process then it may be prohibitively expensive to maintain alongside your own code.

My recommendation is that you fork the code so that you have your own copy. This can get a bit hairy when the code has deeper dependencies and for that reason alone this might not be the right library for you. In my case I might build a pkg, import one 3rd party lib and the rest is limited to the standard lib. Reducing the risk based on change. This mi…

main() is a fractal dimension of semi goodness

Most of the main() functions I've seen and implemented are typically just a few lines long and then immediately launch into the application. On the one-hand it plain to see that the thin layer acts as a way to match the impedance between the application and the underlying operating system. By FD (fractal dimension) one should also be implementing thin layers between the application and any other 3rd party library linked in.

On the other hand... if you migrate some code into the main() function making it thick and actively implements some of the startup then... also by FD you could argue against thin layers between any part of the application and the 3rd party libraries.

I like the thin layers. They create the best opportunity to mock the target and write more test cases (IoC and Dependency Injection). Ick!! But then you gotta ask yourself whether or not a thin main() makes any sense or if the compiler/linker should shorten the dependency.

Using (almost) FREE f1-micro for simple naked redirect

[UPDATE] sadly while I was collecting my notes and trying to reproduce the results I was getting from my n1-standard project I was not able to get my /media/state partition to mount and I have not been able to determine if it has anything to do with the FREE partition or not. I will try my steps again with a larger system and see if that makes any difference. Keep in mind that the FREE f1-micro is awful for anything other than the simplest tasks anyway.

[UPDATE 2] I was able to get it to work. The debug session started after attempting to build the system about 10 times... then I started scanning the logs (sudo journalctl -f) but did not yield any fruit. Finally I looked at the entire log file (sudo journalctl -a) and ready it after several redeploys and reboots. I found a strange error message in the log: "Failed parsing user-data: Unrecognized user-data header: coreos:" I rebooted a few more times and did a few google searches. Still nothing. Then I found an obscure referen…

Logging everything is not the answer

I have long since held the belief that if you're going to send someone a status email of some kind then whatever alert you're providing must be actionable. I was reminded of this fact while reading a blog post from a recent gophercon. 
In the context of the blog post the author suggested that you should not log anything unless it was actionable.That is a very strong statement and so I started to think about it and more practical terms.
In one recent project there was very little  test automation. It would be too easy to blame the fluidity of the environment and lack of knowledge of the target to justify not writing any tests. This project was an integration between two systems that were very dynamic. It ended up being realize as a series of code templates and cookie-cutter implementations. In this case I had to log everything. Every entry and exit into an API produced a timestamp in the log file along with a calculated elapsed time. Implementing the trace was not a difficult or …

Curated news instead of social news

One of the things that I really liked about RSS feeds was that I could batch my news and take on a weekly basis. The social news machine like Twitter requires hourly and daily updates just to keep on top of all of the meaningful tweets and filter out all the croft. 
I follow more twitters and Google plus feeds that I can watch in one day and still be productive. Some of those sources are news many of them are meant to provide cues for innovation in my profession and career.
What I've realized is that there are too many distractions. The carefully curated news is inclusive of a greater frequency of social news rather than political financial or human interest news. The technology news needs to be batched so that it does not have a real-time affect on progress being made now.

I'm Absolutely Convinced...

I am absolutely convinced that (a) I should be able to author a non-trivial application using mothing more than my tablet (and maybe a bluetooth keyboard); (b) that the metaphores, processes and tools that game developers use to implement games should also be used for application development.
Call it intuition or some deep seeded post hypnotic suggestion, whatever, it's just a thought I cannot get out my head today.

Software patents

Two big corporations fight patent lawsuits and pay off patent lawsuits instead of attempting to reform the patent system or for that matter abolishing the patent system of today?
I believe the most large corporations are embracing the current patent system based on the price of entry and the price of violation most start up companies that would get a leg up from that scenario are halted before they start.