Saturday, November 30, 2013

SauceJS could be the one reason for NodeJS

I'm not sure that I completely understand the internals or functionality of SauceJS but one thing that I think is a killer idea. Being able to move code from the browser to the server in a transparent fashion and clearly JavaScript would be the only real way to do that for now.

Technology leadership and debt

I'm really not qualified to speculate on the type of person that Linus Torvalds is, However, I am truly grateful for his invention or is implementation of the UNIX invention. To paraphrase him he talks about the cool kids collecting the difficult and complicated toolchains as badges of honor.

But when it comes to business choosing the more complicated tools is not always the best medicine. The choices you make should create more opportunities for more choices later rather than filtering the number of potential choices over the lifetime of your target.

So I say know and understand the technologies at the bleeding edge but implement with technologies at the cutting-edge.

Friday, November 29, 2013

Idiomatic anything

The next time I read "the idiomatic way to do X "you have to ask yourself who decided what the idiomatic way of doing whatever their professing is; especially in the absence of a reference to the idiomatic definition.

Wednesday, November 27, 2013

The danger of being "lightweight"

Whenever I see the word "lightweight" applied to a project or library my eyes gloss over and I start to shy away from it. Lightweight has a number of implications or anti-implications.

  • lacking features
  • lacking quality
  • lacking robustness
  • lacking momentum
So when someone posts about a lightweight object database on hacker news I cannot help but laugh, delete and move on.

The One True First Step In Any Project

The proponents of TDD would have you believe that designing your test cases should be performed first. The DDD contingent would have you believe that apportioning the domain is the first activity. And the list of possible vectors can be endless and when you consider proper project management and the allocation of resources and resource availability the one true first step is never consistent or obvious; it just depends.

Let me be clear that every project is going to start with the big bang whether it's an internal need, a client request or just an unsolicited project idea. There is that spark that begins it all. And from that moment you're not usually going to start writing code either and even if you did there are still many steps that have been started but not communicated.

I like this plan:

1) the spark
2) initial requirements and use cases
3) return on investment
4) intellectual proof of concept and value
5) estimate cost, time, resources

and now things get fuzzy and more like a checklist than an ordered list

*) CI/DI or the build system
*) complete requirements gathering and prioritization
*) testing
*) metrics
*) architecture
*) design UI/UX
*) SLA
*) hardware (dev, test, staging, QA, prod)
*) monitoring
*) archives
*) disaster plan
*) ...

More to come.

Saturday, November 23, 2013

Moving to golang

You can do a lot with GoLang as it is a general-purpose programming language. However I see the humor when programmers are looking for features that map back to Java or Java frameworks.

Thursday, November 21, 2013

I want more micro self-hosting

There are some tools like gmail that I'm happy to outsources but there are many others that I want to self-host. There are several reasons why:

- the value proposition: as your culture evolves many tools will too
- aggregate cost: private is not always free and external services are not always eyes only
- secrets: I want to keep my secrets
- the law: 3rd parties will never act in your interest unless your interest is stronger than everyone else's and that's not likely.

I don't know what tools I want but I know I want a small number of options. Integrated would be nice but at least something that could be integrated. One new feature I read about today was emailing into Trello.... but I want a self-hosted Trello.


Sunday, November 17, 2013

Too many options

Watching Ted conference speech last night I was left with the thought about how complicated we make our software today. In summary the presenter suggested that the more options you gave a person the less they would like the thing that they were presented with.

When I think back on the days of wordprocessing WordPerfect had the market locked until Microsoft Word came in with an abundance of new features. No one ever used all the features that Microsoft Word presented but they were there and that was attractive to the buyer. Even today I only use a fraction of the capability of Ford perfect or Microsoft Word. In fact now I do all of my editing online using the most minimal of editors(google doc). And I'm very very happy. I would add; when Microsoft came out with the first GUI wordprocessor I was still using PFS right and IBM writing assistant and I was very happy. 

UPDATE: as the apple iPhone apps become more complete and I delete many 3rd party apps my happiness quotient increases. The latest to be retired was readmill. 

UPDATE: obamacare might have too many options. 

Tuesday, November 12, 2013

Three guys three days Obamacare

The news media is back to their old tricks so sensationalizing stories that really matter with counterpoints that are far off the mark. While the story about three guys three days Obamacare would be fantastic if it were a complete replacement for the system that the federal government developed it is in fact not by their own admission a replacement.

iPhone icon placement

When my icons are on different pages I check each app less frequently than when they are on one page. 

The Real Full Stack Programmer

I receive a lot of job descriptions from recruiters. This morning one caught my eye. They company was looking for a "full stack" programmer. What I find curious about this is that the definition did not provide any real concrete detail but one could infer that by "full stack" they meant web-stack.

The web-stack looks like:

  • html, css
  • javascript
  • ajax
  • http
  • rest
  • web-server, reverse proxy, HA and load balancing
  • some application language
  • database and an ORM
  • and maybe some photoshop
But when one describes "full stack":
  • PAL
  • BIOS/firmware
  • device drivers
  • kernel development
  • desktop, daemon, server apps
  • now add the web-stack
  • and finally add the network
I'm certain I missed a lot but the point I'm making is that web-stack is not full-stack.

GoRoutines are cheap but not free

Creating GoRoutines is as simple as "hello world" but maintaining an inventory of GoRoutines is tough and implementing a GoRoutine manager is near impossible. I say this as I am now experiencing a GoRoutine leak.

Dynamic Un/Marshalling in Go

I cannot say for certain that the following applies to all of Go's encoding schemes as I can see at least one use-case in XML that would fail; and upon reflection (no to be confused with the library) this might actually create more problems than it solves if it were not for the power of Go's reflect lib.

The problem:

Given a message, in string or []byte format, UnMarshal that message to it's internal structure; however the message can be one of any number of specific messages. As an example consider a message queue where the messages represent arbitrary events.

The Solution:

(a)Implement a wrapper structure that encapsulates the target classes and (b)when UnMarshal'ing add the wrapper to the outside.

Full stack programmer

There was a time when the definition of a. Programmer meant that you can implement device drivers kernel adjustments as well as user applications on the desktop. Now. Programmer means that you can implement the front end which is typically a web browser interface in a single page application framework and the backend which is typically a REST type call some sort. Amazingly there is very little overlap. They are even two completely different disciplines.

Monday, November 11, 2013

Tunable CAP

The nice thing about ACID is that the definition, when implemented properly, has only one meaning. But now that vendors are offering tunable CAP they are inserting a whole new level of complexity. What was originally sold as a NoSQL=NoDBA model is even more wrong than it was initially.

Tunable CAP, if implemented correctly and consistently, means that someone needs to be sensitive to the client, the business, and the developers. None of which the freshman programmer is going to be sensitive to on the first day.

Sunday, November 10, 2013

Monthly calendar view anti-pattern

I like my iPhone calendar but the monthly view is completely useless. With anyone weekly daily recurring event every calendar day is an event day.

Saturday, November 9, 2013

Not so smart phone

On the one hand I wish my smart phone was smart enough to be my desktop and my laptop and my any top computing device. But that's not possible. Employers and clients alike all want their products documentation intellectual-property to be sandbox in such a way that there is no possibility of co-mingling. This is a reasonable request.

Since that's not really possible I really want my smart phone to be nothing more than a smart communicator and not a platform for all applications. Sure it's fun to play angry birds from time to time but it's better to play angry birds on your tablet. In fact all of these ecosystems are tending to converge. Making that even more probable or more likely.

another bad day for open source

One of the hallmarks of a good open source project is just how complicated it is to install, configure and maintain. Happily gitlab and the ...