Since I’m new to Headspring and we are hiring, I thought I would help give an edge to anyone applying and subscribing to our blog. There are many “features” (pun attempted) that make up a Headspringer and I’m hoping my fellow Headspring bloggers will help me verbalize them through the “Becoming a Headspringer” blog series. I will be starting this series with some quick tips on ReSharper. If you do not already have ReSharper or know what it is, immediately after reading this post is as good a time as any to try it out. Read the rest of this entry »
Because it’s a leap year, we get to take advantage of an extra day of work. What are you going to do with all the extra time?! Here is a list of great ideas to make February 29th 2012 a day to remember: Read the rest of this entry »
Once upon a time, a problem was identified. Shortly thereafter a solution was found. After all it wasn’t a tough problem and the solution was simple. A commercial framework was selected and the solution was implemented. Then it was re-implemented with an open source framework and then rolled back to the commercial framework. Both frameworks were evaluated and the findings revealed both frameworks had the features and functionality to solve the problem within the context of the solution. So what was the reason for indecisiveness? Read the rest of this entry »
Today, I was investigating a pretty intricate bug, and wanted to determine whether it was introduced recently or had always been present. I wanted to revert my workspace to an old commit to see if the problem could be reproduced there. If not, I’d be well on my way to finding the Guilty Commit That Broke Things. When I tried to jump back in time like this, I was presented with an unusually verbose warning message that helped to fill in a gap of my understanding of git.
Read the rest of this entry »
Deran Schilling, Senior Consultant at Headspring, is new to the team, and we have warmly welcomed him in as an additional web technology and design enthusiast. After working in education for several years at LSU Alexandria, and Clear Creek ISD, Deran has gracefully transitioned to the corporate world and the Austin tech community. So far, he has lead a team of Headspringers to participate in this year’s Knowbility Austin AIR, and has plans for more events and competitions this year. Here is some of our conversation:
What led you to software development? Read the rest of this entry »
At some point in 2005 or so, I started using ORMs to perform data access to a RDBMS. ORMs solved a lot of problems I was running into as a developer, namely all the boring ADO.NET code to deal with reading data and populating objects. Previously, my data mapping strategy was something like writing a bunch of stored procedures and corresponding ADO.NET code that is hard to write and even harder to maintain.
I would wind up with a lot of code dealing with DBNull and such, but not much of the code dealt with actually reading information out. It was annoying. It was easy to get wrong. In my attempt to rid myself of this kind of code, I ditched all the things that SQL Server does well. Read the rest of this entry »
I guess I would consider myself an events butterfly. There is not a week that goes by that I do not attend a user group, special interest group, conference or unconference, networking event or some other form of peer to peer learning and networking.
I was recently asked if going to all of these events was really worth the time. My answer to them is the answer I give to everyone. There is always Read the rest of this entry »
LINQ’s .Any() method is under-utilized, given the benefits it brings in making your code briefer, clearer, and more efficient. LINQ in general improves the expressiveness of your collection-manipulating code by using declarative statements instead of imperative foreach loops; .Any() is a great tool in that regard.
Here’s a representative example:
bool hasMissedDeadlines = deliverables
.Where(d => d.Deadline < _systemClock.Today)
.Count() > 0;
I want to determine if my to-do list has any items that are late, so I use .Where() to filter my list of deliverables down to items with a deadline in the past; then I take a .Count() of the resulting list, and see if that number is greater than zero. This is a plausible solution, and our years of SQL lead us to write LINQ this way. But it can be better. Read the rest of this entry »
This week I was pleased to sit down and chat with Nolan Egly, our newest Senior Consultant at Headspring. Nolan has been working as a software developer in Austin for years. He was hired here at Headspring after being placed on our famous internal spreadsheet that lists our employees’ “dream” coworkers. That is, if you could work with anyone, who would it be? Apparently it’s Nolan! Read the rest of this entry »
At a previous job, I worked for a company that used Subversion for all of its projects. This was a welcome change coming from a TFS and Visual Source Safe background.
We did relatively little work with branches. For the most part, a branch was created only to represent the state we wanted to deploy to production. In other words, everybody worked against trunk, and when we were happy with what we had we would create a branch with the version number as its name, and we would deploy from there. If a hotfix was needed, at least we didn’t have to worry about deploying it along with incomplete features under development; we’d base the hotfix on the version branch and deploy that.
On one occasion, someone needed to make a fairly drastic change to the system. It was a little risky, and would have interfered with the rest of the team if it was performed against trunk, so they made a feature branch for it. About a month later, I was tasked with merging that back into trunk.
This was, shall we say, an Interesting Merge.
Read the rest of this entry »