I’m really digging this new startup here in SF called Mixpanel that focuses on segmentation and funnel management. Very clean interface and ability to define your segmentation rules in one simple shop. It’s a much needed improvement over other Adobe products as well as other competitots in this space. I seriously think this is a hot space for the year 2013 so I’m interested to see what some of these other companies evolve to with regards to customer segmentation and funneling.
On the 1st I posted an article of my 2013 goals. I thought about it for the past week and I’d rather this year post my definitive accomplishments that I will accomplish. Goals are so passive and everyone knows we don’t commit or hit all of our goals. So instead I’m going to break out my accomplishments that I will hit.
- Pay off all remaining debt by summer
- Become an expert in Ruby
- Become an expert in a specific Ruby framework such as Rails or Sinatra
- Get a new car
- Stop eating late night snacks
- Launch at least two public apps into production using Ruby
- Read at least one book a month
- Only be in Windows for work needs
- Visit family at least one every couple months
- Take a vacation to Hawaii
- Start blogging actively again here, writing at least one in depth post a week
- Cut out television; spend nights reading or on the computer
- Look forward to having a baby
- Attend at least one meetup a month in San Francisco
I feel this is a better achievable and honest goal of things I want to do. I am sure there are more I will come up with during the year but this is a great start.
Cisco AnyConnect VPN with Windows 8 Fixed
I installed Windows 8 a couple months ago at home on my notebook but since my company uses the Cisco AnyConnect VPN client I could never get it to work at home. This prevented me from getting much done in my Windows partition. So I finally took the time to figure out the problem and offer everyone a fix.
- Open the Windows Registry editor with the ‘regedit’ run command
- Browse to [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ vpnva]
- Modify the value of the field “DisplayName” to “Cisco AnyConnect VPN Virtual Miniport Adapter for Windows x64”
- If you are running on the 32-bit version of Windows leave off the x64 part
- Close regedit
If you notice when editing this value it contains something like the following:
“@oem48.inf,%vpnva_Desc%;Cisco AnyConnect VPN Virtual Miniport Adapter for Windows x64”
This bad garbage string is what prevents the client from working properly.
Be the Worst
So I’m reading The Passionate Programmer and there are several topics that Chad Fowler discusses in this book. Some are worth noting and talking about which I intend to do more here throughout this blog. The first one I want to call out is the concept of “Be the Worst”.
What does being the worst really mean? In this context it’s about putting yourself in a situation where you consider yourself the worst in the group so that you effectively surround yourself with others who are better than you.
In many ways this sounds strange, but realistically it makes total sense. Think about it, when you are surrounded by others who may be more influential or qualified than yourself you indirectly become more inclined to learn more and push yourself. This is how human nature works. We are impressionable and absorb that around us like a sponge.
So I think the concept of being the worst is a good example of something for us including myself to try. Work on a side project with some really intelligent people. Try to attend some meet ups on topics you are not as familiar with so that you have the desire to learn more to be on the same level as others. Contribute to some open source projects. These are all great methods.
If you feel too comfortable in your career, need a change in pace or want to just generally feel pushed in regards to something you are not that familiar yourself, give this a try! You might discover yourself learning things in a new way. I know I will be.
The big headline today at the beginning of the year is that Avis has acquired Zipcar, a non-traditional car rental company that’s part of the sharing economy craze. I’m a huge fan of this model myself, both using CityCarShare and also previously working at a software company that provided a rental platform.
My big question is will this now be a trend, with the bigger companies finally hopping on the bandwagon and acquiring these smaller companies to change their image. I personally still prefer traditional car rental companies for the longer trips because Zipcar is way too expensive. If you think about it, typically with Avis I would pay something like $30/day to rent a car with free miles and I cover the cost of gas. With Zipcar it runs about $8/hour + $30c/mile but the gas is free. If you do the math Avis is poised to make a lot more money with this model than their current model.
Passionate vs. Career Developers
A few years ago when I had this blog powered by Wordpress, I wrote an entry on passionate vs. career developers. Since I lost my old post I’m going to rewrite it now in 2012 that I’m a little older and wiser.
So first off, why drive this comparison? In my mind there are two different kinds of developers in the world or at least in the work place: passionate, and career. They are two opposing forces, typically at odds with one another and cause potential ripples through the ecosystem. Let’s start with what I define as a career developer.
A career developer is someone who chose the career path of being a developer. They chose it because it paid well. Or because it’s the popular thing to do a few years ago. Or because someone they knew switched careers. It basically means they learned most of what they know through text books. Books are great, don’t get me wrong but within this industry it’s all about the desire to want to always learn and be hands on.
Passionate. Those guys are up until 3AM tinkering with a linux distro. Or installing the latest version of MongoDB on an AWS instance. Or hacking at NodeJS scripts for fun. They do it because they love to do it. Not because it’s a wise career choice. Development of software in general, is such a different industry that it thrives off of the passionate folks in the world. The Mark Zuckerberg’s if you will. To be a truely great developer you have to have that passion and that sparkle. You need to want to wake up every day exciting about what you’re going to build that day and what problems you are going to solve.
I’ve always considered myself passionate, hence the purpose of this post. But instead of thinking negatively about the people who are more on the career side, I prefer to mentor and evolve their interest in development into a real passion. That’s what it’s all about. Why do we love to write code if we don’t want to spread that love among others? You’d be lying to yourself if you didn’t feel that way.
I want everyone to be passionate about technology. To look at it more than a career. To look at it a a challenge in life. Facing and overcoming challenges is part of our DNA as humans.
Microsoft Surface Is Confusing Like A Car That Flies And Floats.
We are starting to open source some of our code and give back to the community. As we develop frameworks and other libraries we will release them to the open source community and also accept fork commits. Follow us to stay updated.
Making the Big Switch from Team Foundation Server
We have been going through a couple rounds of re-evaluation over what SCM solution we should be using lately. As we are a BizSpark partner, it’s natural to want to utilize their tools; it’s free, it’s low maintenance and quick setup. The realization came quickly that this is really not the case the first time you need to step outside the box of the Microsoft world.
Continuous Integration and Delivery is Important
First let me just say if you do not have a continuous integration and/or delivery process implemented please do yourself a favor and ready this article from Martin Fowler on the topic. You should not be deploying software out to production in 2012 without it going through a rigorous and thorough process.
Team Foundation 2012
Microsoft has made some great strides over the past year regarding the migrating to support the open source community. But with that being said, their flagship SCM and build solution hasn’t made much progress over the years. When TFS 2012 was recently released I was hoping for some really cool shiny new features. But there weren’t that many, or the ones they did release other solutions have been doing it for years. The biggest new features to me were:
- Local workspaces
- Enhancements to the SDLC process including a Scrum dashboard
- Testing improvements
- Code reviews
- Hosted TFS solution using TFSpreview.com
TFS Preview is a Step, But Still Lacking
When TFS 2012 was released I immediately jumped on it and implemented these features. The big one to me was the new scrum dashboard. Finally we get a real agile dashboard! But the biggest thing was the new hosted TFS solution located at TFSpreview.com. A hosted integration server in the cloud, sweet! No quite. After using TFSpreview we have found many limitations:
- You can only have one build controller which limits the amount of concurrent builds
- TFS still has not made any strides to support other languages out of the box
- You are locked down to using MSBuild for all of your custom tasks
- Adding new build steps in your build configuration is a Windows Workflow nightmare
- The new Scrum tool works well, but it’s not true scrum and lacking features
- TFSpreview has went down already a few times in the past month
So what then? There are many options. At my last employer, we had implemented a solution by ThoughtWorks Studios called Go. I recommend to go check it out, I won’t go into it in detail. But overall, it’s really overkill for what I need but might be an option later down the road. I decided to go with TeamCity by JetBrains.
Be Open, Be Flexible
Part of my decision was to utilize a tool that’s reliable, open and flexible. As the Microsoft code base is only a small subset of our code, we need a solution that will scale, allow for cross-functional development and be flexible to our needs. This is why TeamCity works well.
For the free version, you can have up to 10 users, unlimited projects, 20 builds and 3 agents. This will be more than enough to support most small teams. It supports a variety of runners such as Ant, nAnt, MSBuild, Command Line, Powershell, nUnit, Rake and even Xcode.
Been thinking about giving Ruby a shot again. With the mess that is Windows 8 and Visual Studio 2012, it’s worth it to stop boxing myself into the Microsoft ecosystem these days. It’s not a wise thing to do technically speaking anyways being here in silicon valley. I’ve been pouring over documentation this weekend and it seems very straight forward and such a great convention based language. My goal is to look back over this post and see how far I’ve become in three months.
Github has become one of the places to go to regarding code repository and any open source project. Recently it has gained some attention and is even going through a major round of financing from Andreesen-Horowitz. So this is why I wanted to share a blog post from a Github employee that talks about their culture and what really makes a well oiled and fast moving engineering team.
Creating a positive and fast moving culture is so important at any company. Many fail to see this and have the correct vision thus being extremely ineffective.
Sweet little infinite scrolling library built by Airbnb. Simple and clean.
TFS 2012 and TFS Preview
Microsoft has been trying to play catch up in the recent years with some of their process tools. By this I mean scrum and continuous delivery. With the release of TFS a few years ago, they provided a decent tool to allow you to get some nice integration out of the box with your code as well as a half baked dashboard to do some work item based task management. But it was clunky, slow and hooking TFS up to some sort of continuous integration system was a major pain in the ass.
Welcome TFS 2012 and TFS Preview. Finally, Microsoft has started to get it right in my book. If you have not yet checked out TFS Preview I suggest you do. Basically they are offering a cloud hosted solution of TFS 2012 that allows you to get a full Scrum solution on top of your TFS work items with a real backlog and real task board; source control browser to view, compare and manage your source code similar to a Github like interface; and a build management area to view your builds in real time.
By hosting your TFS repository on Microsofts solution you are getting very tight integration in their infrastructure. Part of this is the direct integration with Azure Services. Now with the click of a button, you can enable direct deployment to an Azure instance right from your TFS build. This is extremely cool.
So with TFS Preview, I have been able to have a full cloud strategy that includes source control, scrum process application and continuous delivery solution to push checked in changes out to Azure Services.
Looking forward to more of what Microsoft has to offer.
It’s been a while since I’ve written a post, I guess I’ve neglected it a bit. One updated I wanted to add was that since last time I’ve taken a new role in my life at a great startup here in San Francisco called Getable as Director of Engineering.
We are a small, early stage startup building a platform to allow users to have a better overall experience while renting products effectively spending less and doing more. Part of my job will be responsible for implementing process and culture, assisting to build teams as we scale, ensuring high quality of code among many other things.
I’m excited to join the team!