Time.To(x => x.Get()).Funky(x => x.And()).Dance();

Jun 21

Vegas Again

On Sunday we will be flying into vegas for vacation for a week. It’s the middle of summer so that means this will be a hot trip. But that’s alright, time to relax pool side and get some nice rest and relaxation, with a few drinks to keep me fuzzy.

I’m going to try posting pictures here each day of my vacation and keep my blog a bit more updated.

Apr 15

Paper

I posted a photo here already that looks like a little 10 year old doodle. It’s actually me doing some doodles using this insanely awesome iPad app called Paper. Try it.

Visual Studio 11 by Default

I installed Visual Studio 11 a few weeks ago to try it out when it came out. I didn’t have too much time to play with it plus I was running it side by side with Visual Studio 2010 and it just didn’t sit well with me especially considering they changed the color them and it changed some of my icons in Visual Studio 2010 which looked odd.

This weekend I finally wiped both Visual Studio 2010 and 11 and started from scratch. The installation was blazing fast, maybe less than 10 minutes. I remember the old days of Visual Studio 2003 taking like an hour!

Anyway, got everything installed, fired up a project for work which is versioned controlled via TFS. Everything seems to work okay. I had to manually adjust a line in my solution file though to reflect it’s a 2010 solution. One gotcha it seems to have is it cannot open our Load Tests projects but it’s a bit difficult to debug what’s going on but this isn’t the highest requirement and we can look into it.

While I was reading about some of the new features one that caught my eye was that now unit test frameworks are pluggable which means you don’t need an extension ot external tool to run unit tests within Visual Studio. This helps us a lot as we don’t use MS Test and use nUnit. It also gives you code coverage!

You can find more about that here.

So for now, I’m opting to make 11 my default IDE for development from now on.

Mar 31

I’m Loving Rdio

A while back when Spotify was coming to the US, I started getting excited. Finally a subscription based music service people were paying attention to. With it’s simplistic design, and vast array of music it was an obvious choice for me who did not like buying music that I was only interested in hearing a few times until it faded into memory. DOn’t get me wrong, I love the classics and supporting the artists who make great music but for most of the music I listen to now days, it’s one off stuff or something I have to buy from ten different sources. After I used Spotify for a while I ran into a couple issues that I still deal with.

Discovery

Discovering music with Spotify still feels extremely difficult. If I know what I’m looking for, sure it’s straight forward to find what I want. But after that I consistently hit a wall. Where to go from here? What new music should I be listening to because of my musical interests? Spotify’s mobile app does not address these concerns well. I tended to just play the same music over and over because for me to sit and think about what I wanted to listen to got tiring.

iPad

I love my iPad, especially the new retina display model. So where is Spotify’s iPad app? It’s still nowhere to be found. According to CrunchBase they’ve raised $189M but still do not have a decent iPad app. What a shame, as I tend to listen to a lot of music on my iPad at home.

Introducing, Rdio

Rdio is not a new company on the block. They’ve actually been around for a while providing almost the same type of experience as Spotify. Some of the features they have are:

I could go on, but you get the point. Plus, these guys are located in San Francisco. Awesome. I think their platform is really great, they offer a lot of selection in upwards of 15M+ I believe and just beats the pants off Spotify in my opinion.

Feb 07

Flexible Work Hours Inspires Performance

During the first ten or so years of my professional life I worked for a company which had “flexible” work hour options. Let me break down what this really meant from my experience of pushing these rules to the limit over the years.

So realistically those are not flexible work hours. Actually, they are pretty restrictive for such a small technology company. Fast forward to now, and my flexible work hour structure works like this.

I honestly think some technology companies got it all wrong. The whole point is not about rewarding employees based on time spent on a task. You are then punishing those who can get three times the job done within the same amount of time. Instead, focus on providing the most flexible and efficient way to allow employees to get the job done and done well. Statistically it’s proven that providing a more flexible environment actually drive a higher performance.

Why Flexible Hours Inspire Performance

All of the time, energy, stress and overall employee morale lost on this process is such a waste. I think we calculated about twenty hours lost per year on the time management process.

1200 = 5 * 5 * 4 * 12

5 minutes a day, 5 days a week, 4 weeks a month, 12 months a year comes out to approximately 1200 minutes of lost time per year, or 20 hours.

Such a shame. Let’s instead spend our time delivering real products and being innovators.

Feb 01

Karma Police

So over the past six months or so I’ve had to defend remarks I’ve made both on Facebook and Twitter. Most of what was said was taken out of context in extreme ways, but what I got to thinking about more was about how things are interpreted online these days. One outburst among some people was a remark regarding the removal of the former CEO of HP Léo Apotheker noting that maybe he was not hip enough to understand today’s digital youth. Sheesh.

Context

With the internet today it seems the understanding of context is fading. When I used to spend time on IRC back in the late nineties and early dot com era for hours on end, making quick witted cracks, jokes and wise cracks online was common place. No one took anything offensive and if they did they were not as quick to jump on the issue. It seems these days, context is thrown out the window. Indeed, it is difficult to gather context just by what someone says but it’s really next to impossible now since we are moving more and more away from normal day-to-day interaction with each other as humans anymore.

Negativity

I notice that whenever a celebrity, popular Twitter user, musician or anyone even slightly steps over the wrong line with their online persona everyone is locked and loaded to bring them down. What gives? Who cares if a person has a specific opinion on a sports team, or if they prefer Mac vs. PC or if they like a certain brand. Everyone is excited to find every moment to tear someone apart online. Back in the days, the only people that were like this were called “trolls” and went out looking for this trouble. Now it’s everywhere. TMZ is a big instigator in this.

Social Networking

Maybe the rise of a social network for everything has taken over as the norm for typical human interaction and conversation. There exists many people who prefer to use their social network of choice as their personal soapbox to vent their personal opinions, especially ones you may not have known before adding them as an acquaintance online. I have many times in the past jumped in the middle of someones personal Facebook post and hijacked it because of something I didn’t agree with. But maybe it’s not my job to tell someone what they can and cannot say within their own social ecosystem. Who is the internet etiquette police? Definitely not me. Maybe this is why Facebook is a bore these days because everyone is afraid to really express their feelings anymore.

Jan 30

Go: Agile Release Management

At my current company we are moving towards a much more automated continuous delivery model. This reflects more of what some companies such as Facebook are doing to allow a very rapid deployment and integration cycle, such as rolling code on a daily basis to production.

But before you can do this, you need a few things in place from the infrastruture side of things. One of those in my opinion needs to be a good and efficient release model, which allows you to hook in your integration gates through some sort of pipeline flow. For this we use Go by ThoughtWorks.

Workflows

One really awesome feature about Go is it’s purely driven by a pipieline workflow system. So this allows you to configure each pipeline stage within your environments, and push a batch of code from one end down to the other. Usually the latter is a production system which makes this automated process very easy to use.

Realtime

Another great feature is the interface is very easy to use and realtime. So as your pipeline is running, you can see what the progress is at each state within the pipeline. This is handy to quickly catch errors or stages that are not passing acceptance.

Distributed Agents

As your organization grows and more users begin using the system to automate more deployments, the use of agents is what drives the parallel processing of each pipeline job. So everything is distributed so you do not get queued in waiting for your deployment to run. This is very nice, as you can scale these to your needs. Also, you can configure different agents for different purposes, so if you have pipelines that need Windows and some with Linux, you can configure appropriately.

nAnt

Another very helpful feature is that each job can be configured to run an nAnt script. So you can configure each process within your pipeline to fire a seperate nAnt task that can be implemented at your own discretion. For example, a task to run unit tests against your solution or another to automate a xcopy process. This is extremely powerful.

Overall, this is an extremely powerful system not to mention done by some of the industry leaders in the agile space. You can download it now and give it a try, I highly recommend this software and will continue to find uses for it going forward in my own time.

Nov 27

Penetrating the psychological startup barrier

I’ve read a few great books lately about living your dream to launch your startup idea or just pushing yourself on executing your idea. One of the common key points each author makes is just get out there and do it. Stop making plans; stop thinking about it; stop trying to get everyone together to figure out the next big thing.


If you have something you’re passionate about and love, just go do it.


I absolutely love this approach. It’s one step they always leave out when explaining in school how to be successful and start your own company because people have a psychological barrier. In todays world, especially the tech startup one it’s extremely easy to cut a lot of the initial fat out of forming your own company. No longer do you need to spend thousands of dollars on marketing and legal fees, and having to form your complete business plan before writing one line of code. The idea here is to ship fast, ship often and learn to pivot.

Now I’m off to work on that idea.

Oct 31

Getting Things Done with Evernote

In the past few weeks at work since my role has changed I’ve been actively trying to maintain all of my notes digitally. This process will allow me to easily go back and search or filter on previous notes I had taken or to recall notes from a specific sprint planning session.

I originally went with Microsoft OneNote. It’s a decent piece of software with most of the features you’d expect from a fancy note taking application. But I have found some definite flaws with this software.

First, how it synchronizes my notebooks. You never have the notion anything I ever being synchronized. Ever. I have to manually click the sync panel and either see it being synchronized or manually sync it myself. This isn’t the most obvious interface and is a bit confusing.

Also, sharing a notebook with someone is very tedious. If I want to share something easily I need to first enable the notebook to publish to the web (see above) then I have to enable the notebook in SkyDrive if this is even an option. Again, a huge pain. Sharing does not seem to be the focus of OneNote. One nice feature to have would of been the ability to integrate into Exchange deeper with the ability to share directly with someone within our Active Directory.

So I started looking into Evernote again. I used this product years ago and it has dramatically evolved. Really great sharing functionality. Great mobile app support. The ability to define tagging, you can use a browser and best of all it’s free.

The OneNote interface is not my cup of tea and I’ve converted all of my notes over to Evernote for now.

Sep 29

Finally, Google Analystics Goes Realtime

Google is finally introducing real-time analytics with their Google Analytics product. This sounds like a serious competitor to other real-time analystical apps that track data from social media sites like Twitter and Facebook. I’m curious to know if this will begin getting into the untapped market share those companies have deserved for quite some time.

If interested in trying out the new features check out Google’s blog post on the subject.

Amazon Kindle Fire Sounds Intriguing

I have been reading into and thinking about the new Kindle Fire Amazon has announced. Comparing this “Android iPad Tablet Killer” device to every other one out there one thing really stands out: integration. It integrates very nicely just like the iPad with all of your other Amazon services right out of the box so it’s a very seamless experience.

So for $199 Amazon is really delivering a comparable device. We’re talking:

So already this device to me looks comparable to the Apple iPad. But what I start thinking about is now Amazon has their own device that integrates with all their products is what new products will they introduce that it will support? I’m thinking stuff along the lines of:

These are the two I could think of that would give them a huge lift over Apple right now since as far as I’ve heard they are not introducing a subscription music service anytime soon. I have no pre-ordered one yet as I want to wait to read the initial reviews but at the price point of $199 I’m definitely not scared of trying one out soon and see how it goes.

Then again, a second version may be around the corner.

Sep 20

As long as your going to be thinking anyway, think big

So this week I was asked to take on a lead role in another team at work. As I always look at every situation with a potential challenge, I still find my career and what I do extremely fun.

When you work with a team of intelligent and talented people it can make your job a very pleasant place to be. It allows innovation, increased productivity and creative output. This is what we’ve pushed with our team since I started ten months ago and it still shines today. As we continue to innovate and push the bar with programmatic freedom, we still meet the goals of our team and our product owners each sprint. This is what makes my job both awesome and fun.

Back to my original point, I am really excited to work with the new team. We all know each other already very well, so this fact alone proves that everyones strengths are a great asset that if harnessed correctly can make a product work. Some people are faced with challenges in life, so they get bored or give up. Personally I try to find the best solution to solve a problem but am always open minded when it comes to other opinions.

With that said, I can’t wait to put some brilliant minds together and see what comes of it.

Sep 08

[video]

Aug 21

MongoDB: Intro

A while back I started reading into some of the NoSQL options for quick and dirty data storage. While there are plenty of them out there now days, I really liked MongoDB which serves as a document based NoSQL data store.

The beauty of this is that instead of thinking in a relational model, you store your data on a document level which is much more friendly to a programming if you ask me. For example, say you have an object like so:

var user = {
    “name”: “robert”,
    “age”:     31
};

First thing you notice is the syntax looks exactly like JavaScript, well that’s because it is. MongoDB document engine is built on top of JavaScript with a JSON type syntax called BSON; very cool. So that means you can already elverage your existing skill set at this point. Anyway, back to my point.

The awesome thing about this is instead of thinking in a relational mindset where if you had relational storage like a user and address you normally would have to create two tables. Since MongoDb uses a dynamic (or schema free) design there is absolutely no need to define this. Check out how easy this is:

var user = db.users.findOne({ “name”: “robert” });
user.address = {
    “street”: “1234 Street”,
    “city”   : “San Francisco”,
    “state” : “CA”
};
db.users.update({ “name”: “robert”}, user);

And that’s it. No modification of schema, no dropping tables and re-creating, nothing. Obviously this is a short example of the power of MongoDB but really shows the power of this sort of schema-less design.

I’m in no rush to run out and attempt to migrate all of our databases to a NoSQL approach but for things like logging, simple storage, statistics and so forth why not. By the way MongoDB supports replication sets and sharding automatically out of the box which makes scaling out horizontally a breeze.

One of the biggest advantages as far as performance goes is that MongoDB writes really, really fast. When doing writes to the database it’s basically an instantaneous write, where the client doesn’t wait from the server for a response, the response is essentially an “OK”. In my opinion this is why MongoDB is perfect for things that don’t need to have high availability with their data like when charging a credit card with the need for transactional support. It does support safe writes but this is another topic.

Since this is my new fascination I predict some more posts based on Mongo, my new love child.

Aug 19

Twitter Bootstrap -

I love discovering new css and development frameworks, and today Twitter has released their own called Bootstrap. It provides you with a nice grid framework, layouts, lists, tables, forms, buttons, navigation, you name it.

The probability of me using something like this is pretty high, as it really encompasses many elements other frameworks don’t provide.

It also uses Less which is a powerful CSS preprocessor. Check it out!