• Westward Bound
  • About Aaron Brander

The Saulzar Codex

~ and other writing by Aaron Brander

The Saulzar Codex

Tag Archives: technology

Keeping your software young

01 Monday Oct 2012

Posted by Aaron Brander in On Technology

≈ Leave a comment

Tags

.NET, Mindscape, technology

Every once in a while, I look at the date and wonder how fifteen years have passed since I graduated high school.  Looking back at those four adolescent years, they feel more like four decades.  It is crazy to experience the speed of life.

The software we build wonders the same thing. Has it really been seven years since that website was built?  Wasn’t it just yesterday that Ajax was the thing of the future, and IE 7 was the greatest step forward in Internet history (ok, maybe that was never the case).

Time and Technology stop for no man, and it certainly does not stop for the applications we build. So what can we do to keep them fresh and healthy?  It’s not so different from the additional exercise, better diet, and regular checkups that we do for ourselves. In the case of technology, the key is to keep up on blogs, product releases, and to continue to use the application so you can understand its needs.

Microsoft released .NET 4.5  on August 15, 2012, and I was pleased to have a few minutes to install Visual Studio 2012 with .NET 4.5, and give webTRAIN, our Web Marketing Platform, an upgrade.

webTRAIN was built back in 2007 as a .NET 2.0 website using Visual Studio 2005.  Since that time, we have upgraded it to .NET 3.5 and have been using Visual Studio 2008 to code it.  I really have been looking forward to upgrading to .NET 4.0, but I wanted to wait until we had new servers with IIS 7 installed.

We made the move to a new 4 server network with IIS 7 a few months back. With that, we were finally able to consider moving to .NET 4.  I heard .NET 4.5 was around the bend, so it made sense to wait just a bit longer.

The actual process of moving into Visual Studio 2012 and .NET 4.5 was not as painful as I thought it would be.  We have run into two hiccups so far in our testing.

1) .NET 4.5 handles request validation differently that .NET 3.5 and .NET 4.0.  This came up specifically when trying to pass HTML from a Tiny MCE editor to our model.  We found the answer in this whitepaper. The portion that affected us was “Support for unvalidated requests’”, which I have copied below:

*******************************************************************

To allow this, ASP.NET 4.5 now supports unvalidated access to request data. ASP.NET 4.5 includes a newUnvalidated collection property in the HttpRequest class. This collection provides access to all of the common values of request data, like Form, QueryString, Cookies, and Url.

Using the forum example, to be able to read unvalidated request data, you first need to configure the application to use the new request validation mode:

<httpRuntime requestValidationMode="4.5" ...
/>

You can then use the HttpRequest.Unvalidated property to read the unvalidated form value:

var s = context.Request.Unvalidated.Form["forum_post"];

Security Note: Use unvalidated request data with care! ASP.NET 4.5 added the unvalidated request properties and collections to make it easier for you to access very specific unvalidated request data. However, you must still perform custom validation on the raw request data to ensure that dangerous text is not rendered to users.

*********************************************************************

 

2) After updating our development servers to .NET 4.5, webTRAIN seemed fine and dandy. However, we found that it caused an issue with an MVC app that used automatic build and deploy via Team City on our development server. It built the code against .NET 4.5 assemblies and when we deployed it live, where .NET 4.5 is not yet installed, it ran into an error.

The error was:

Could not load type ‘System.Runtime.CompilerServices.ExtensionAttribute’ from assembly ‘mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’.

We ended up having to retrieve mscorlib from C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0 and building it directly into our application.  It required a manual change to the programs’ XML file to include:

<Reference Include=”mscorlib” />
<Reference Include=”System.Core” />

There’s still lots more testing to do to make sure webTRAIN will play nicely with the new updates, but it’s great to know that we can begin to include Strongly Typed Datasets, Model Binding, HTML 5 snippets, and all the other great .NET 4.5 upgrades into our new features.  webTRAIN is feeling younger already!

Have you had luck upgrading to .NET 4.5?

Aaron Brander is the VP of Technology for MINDSCAPE at Hanon McKendry.

Share this:

  • Twitter
  • Facebook
  • More
  • Email

Like this:

Like Loading...

Coding is Creativity

31 Friday Aug 2012

Posted by Aaron Brander in On Technology

≈ 1 Comment

Tags

technology, work

I was having a discussion about great literature the other day, and something that was said struck me as very applicable to software development.

“How did he build an entire world out of what was in his head?”

We were talking about Tolkien, and were both impressed with the breadth of material he created.  Sure, he wrote the Hobbit and the Lord of the Rings.  But supporting that was the creation of a couple of languages, most notably Elvish, and books of foundation legends.

The same could be said of music and art.  How does someone take what they see in their mind, and bring it forth into the world for others to enjoy?

I like to consider myself a writer, and since I have a book published at Amazon, and have even received a small check from its sale, I guess that makes me a published writer.  I am also a software developer, and have created applications for personal use, sale, and at the direction of clients.  You may think that on the surface, the two have nothing in common.  However, I have found that they are very closely related.

The Idea

Both a great story and a great application begin with an idea. The idea phase is exhilarating and freeing. There are no boundaries, no road blocks and no constraints.  Your imagination runs wild over what you could make and what you could do with it.

The Implementation

Once the idea is decided upon, a story and an application take planning.  There are some writers, and some coders, that can hop right into the details.  I’ve read a book on Stephen King’s writing process, and he’s fortunate enough to be able to watch the story unfold as he writes.  For me, I write like I code. I plan it out.

That’s the first step in implementation. Then I start coding the large portions of the application or outlining the different plot devices and characters. It’s in this phase that I see the full scope of what I envisioned, and start to give myself constraints such as time, cost, or word count.  Working with constraints inspires more creativity.  How can I finish this in a weekend?  How can I keep it under 100,000 words?  The constraint drives good design.

The Details

When writing, the difficult detail for me is creating believable dialogue. I can write fight scenes all day, but crafting discussion between characters is not easy.  In code, it’s often all of the small items, like the UI for the user signup screen, the retrieve password code, or making sure all the possible iterations of interaction are covered and tested.  It’s where the project is no longer fun every day, and the only way through is to roll up your sleeves and to keep moving forward.

The Payoff

Once my website is live, my application is released, or my story is in front of readers, the feeling is the same.  Relief that it is done, pride that my idea came to life, and concern that others will treat it with the same love and care that I did while building it.

Writing great code is an art, and one that is beginning to receive the recognition it deserves alongside literature, music, and art.

Share this:

  • Twitter
  • Facebook
  • More
  • Email

Like this:

Like Loading...

Scheduling is a breeze (Thanks to LiquidPlanner)

24 Friday Aug 2012

Posted by Aaron Brander in On Technology

≈ Leave a comment

Tags

Mindscape, technology, work

Back in February, we were buried under a mountain of work.  It’s not a bad problem to have, but it sure made for quite the logistical nightmare.  It was not easy to schedule dozens of projects for dozens of team members and still make sure we hit our deadlines.

I wrote about the problem at that time, and a small sliver of hope that had appeared on the horizon. That sliver of hope is called LiquidPlanner.

lp

We have been using LiquidPlanner since February, and it has significantly streamlined our process.  Instead of juggling a calendar for each team member in Google Calendar, we just assign tasks to a team member, put a low and high estimate for how long it should take, and let LiquidPlanner handle scheduling the project.  It’s easy!  The whole team participates in project management now because they can see all of the tasks assigned to them and how it affects the schedule.

Instead of using Basecamp to handle messages, to-dos and file management, LiquidPlanner handles that too. Tasks are central to LiquidPlanner because they drive the schedule. It also allows us to comment on tasks, add messages, and work with clients.

As an added bonus, we can track our time against a task.  So, we’ve eliminated our home grown time tracking system and instead track time directly in LiquidPlanner.

LiquidPlanner is not all rainbows and unicorns.  There are a few things that were nicer in our previous systems, or could use some improvement.

  • The upcoming schedule is not as easy to read as Google Calendar.  They do a great job handling a LOT of data, but it takes time to get used to.
  • Communication is not as nice as it was in Basecamp. The biggest issue is not being able to tie files directly to a comment. 
  • If I assign a restricted member to a task in a project they don’t have access to, they should automatically be added to the project.  Too often we have tasks that people can’t see.
  • Pricing is per user, so it can get pricey.

But in the end, not having to use 3 different systems, and scheduling that is WAY easier makes LiquidPlanner a no-brainer for us.

If you have lots of projects that need to be schedule across many different resources, and you are tired of using MS Project, or cobbling together multiple systems to try and create something useful, give LiquidPlanner a try!

Aaron Brander is the VP of Technology for MINDSCAPE at Hanon McKendry.

Share this:

  • Twitter
  • Facebook
  • More
  • Email

Like this:

Like Loading...

Code Collaboration or (Subversion isn’t always Subversive)

11 Wednesday Jul 2012

Posted by Aaron Brander in On Technology

≈ Leave a comment

Tags

technology, work

Have you ever attempted to work on a Microsoft Word document with friends?  You created the document, emailed it to six friends, and suddenly found yourself struggling to merge all of the different changes that came back to you.

It’s a nightmare.

If so, first off, it’s time to leave the Office and move to Google Drive.  It’s a great way to collaborate online, in real time, on documents and spreadsheets.  I use it when I write stories and blog posts in my spare time, and for all of my work documents too.

This post, however, is not about how to plan your vacation with six friends by using Google Drive.  This post is about how multiple programmers can work on the same project at the same time.  In its simplest form, it is two programmers sharing one content file, much like working with a friend to edit a Microsoft Word document.

At its most difficult, it is multiple teams of front and back end coders working on thousands of files in a project.  Do you want to be the person to merge all of those files by hand as changes are made?  Nope, neither do I.

That’s where subversion comes in.  No, not subversion, the attempt to overthrow structures of authority.  The subversion I am talking about is a software versioning and control system.

We did not always use subversion at Mindscape. Originally, we used the FTP server functionality that came with Dreamweaver.  It allowed us to check out a file from the server.  If someone else tried to checkout and work with the file as well, they were told that it was in use.

It was alright when there was three of us. Sure, sometimes a person would ignore the lock and work would get lost. Or someone would forget to check a file in before going on vacation, and we had to wait for them to get back and unlock it.

As the team grew, those mistakes happened too often. That’s where subversion came in.

A very trimmed down explanation of subversion would be that there is a machine that controls the repository that all the files come from.  Users can get files from the repository.  On their machine, a subversion client keeps track of changes made to those files.

When the user checks the files back in, the server compares the changes to the what it has. If there have been no changes since the user started working, it just applies the changes. If someone else made a change first, the server will attempt to merge the changes together.  Mostly it works great, but sometimes it cannot merge it for you. In that case, the users are notified and have to manually merge the changes.

At Mindscape, we use a software service called Springloops to manage our repositories. It was easier to set that up then to learn how to administrate our own server. It has the added benefit of being able to deploy sets of changes to our development and production servers. It’s actually been a great tool for us.

On our computers, many of us use Tortoise, a free subversion client that keeps track of file changes locally. It’s easy and integrates directly into Windows.

Utilizing subversion, we are able to have multiple people working on a project at the same time. We can use the logs to go back through and see each change that happened, when it happened, and who made the change. It’s a great way to see who built a feature, and just as nice to figure out who to blame for a bug!

It certainly beats emailing files back and forth and trying to have a person manage merging them together.

Aaron Brander is the VP of Technology for MINDSCAPE at Hanon McKendry.

Share this:

  • Twitter
  • Facebook
  • More
  • Email

Like this:

Like Loading...

Another set of eyes (or Blinded by the Light)

30 Wednesday May 2012

Posted by Aaron Brander in On Technology

≈ Leave a comment

Tags

Mindscape, technology

sherlock

I just spent the last week banging my head against a wall.  I came away with no physical bruises, though my metaphysical cranium hurts a bit. 

It is not the first time this has happened to me, and I am sure it won’t be the last. And I’m willing to bet that something similar has happened to you, Dear Reader.  

The issue cropped up with our new server environment.  We added a second web server and a load balancer to split traffic between the two machines.  It will be a great environment for both performance and for redundancy.

We ran into a strange issue after running with the load balancer for a few days. It seemed that if we made a change to the website, the two servers got out of sync and started throwing errors. The error mentioned that it was looking for a particular dynamically built assembly file.

The issue happened quite frequently in our old environment, and typically it just took a refresh of the page to get it running perfectly until the next update.  That didn’t work in the new environment. We troubleshooted it for a while, but we finally made the decision to stop load balancing and go back to one server until we can figure out the issue.  As soon as we went back to a single server, the issue cleared up.

To me, that meant it was an issue with having more than one server in the mix.  I began to work with our hosting partner to find a fix while I did a lot of googling for answers. After a week of trying a lot of different things, including making our site work as a precompiled site instead of dynamically compiled, we were no closer to the answer.  I was really confident that precompiling the site would fix it and when it did not work, I was out of ideas.

Enter a second pair of eyes.  Eric Patterson had just come free from a different project, so he helped me look deeper into the issue. Armed with the knowledge of all I had tried in the past week, he took a closer look at the Stack Trace for the error we had.  Stuck deep down in the stack trace, he kept seeing this:
DBauer.Web.UI.WebControls.DynamicControlsPlaceholder.RestoreChildStructure

That is a control that we use to put our “Page Parts” onto the site in the correct order. For me, that was not a clue because I knew it was used on every page.  For Eric, who had no such mental constraints, it was a place to start looking.

He quickly found this article.  It seemed to fit perfectly:
1) Error only in a web farm (which is what we have after introducing the second server) 2) Error with finding the temporary Assembly name
3) Using the DBauer Dynamic Controls Placeholder.

That article has a pretty easy fix to the issue that will cause the Dynamic Controls Placeholder to use a relative path to the User Control and not a fixed path.  If you need the source code, it can be found here.  I made the change to the source code, compiled it, and added it to our website.

The error disappeared!

There’s something to be said for walking through a problem and eliminating possibilities. That needs to be done.  But when you find the frequency and power of your head banging into that wall increasing, go grab someone else to help.  Their fresh perspective can often find you the answer quickly.

Share this:

  • Twitter
  • Facebook
  • More
  • Email

Like this:

Like Loading...

The Internet is Down (or How did we ever live without it?)

29 Tuesday May 2012

Posted by Aaron Brander in On Technology

≈ Leave a comment

Tags

technology, work

The internet is down in the office.  My productivity just came to a screeching halt.

The code I was writing in Visual Studio? Turns out I was connected to our development server’s database, so I can’t test my code without the Internet.

Check my email and work on that? I work in Gmail all day, and don’t have a way to access it offline.  Without the internet, I don’t have any email.

Ask a co-worker if they have Internet? Not feasible.  Google Chat is down when the Internet is out, so no instant messaging.  Use my voice to ask?  That’s just barbaric. Instead I’ll take off my headphones, I can’t reach Pandora anyway, and stare at the expensive brick in front of me.

Check Facebook or ESPN while I wait for the Internet to come back… oh wait. That’s on the internet too.  I’d watch some TV while I wait, but I stream that through Hulu and Netflix.

No work, no email, no music, no diversions.  What’s left? When did our lives become so dependent on the Internet?  I’d go outside, but without weatherchannel.com, how will I know what it’s like out there? Should I risk life and limb and step outside unprepared? I think not.

I thought I’d write this blog, but I use Google Docs and those need online access too. It took some brainstorming, but I realized that I had Microsoft Word on my computer still and that I could type this blog up there. Whew, something I could accomplish.

I guess I could have used pen and paper, but I’m not even sure where I could find it!

Oh, wait.  The internet is back! Sweet. Now I can post this blog and get back to work!

Aaron Brander is the VP of Technology for MINDSCAPE at Hanon McKendry.

Share this:

  • Twitter
  • Facebook
  • More
  • Email

Like this:

Like Loading...

Request.URL–what’s that property?

24 Thursday May 2012

Posted by Aaron Brander in On Technology

≈ Leave a comment

Tags

.NET, technology, work

Request.URL can be used in .NET to get the value that the web browser used to access a page. However, there are many different properties to choose from, and sometimes it is difficult to know which property to use.

I tired of guessing at the correct value and decided to write a small bit of code to display all of the properties so I could find the correct value faster next time.

Here’s what my code looks like:

Imports System.Reflection

Partial Class Tests_requestURL
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Dim info() As PropertyInfo = Request.Url.GetType().GetProperties()
        For Each a As PropertyInfo In info
            If a.CanRead Then
                Me.ltlValues.Text &= String.Format("{0}: {1}<br><br>", a.Name, a.GetValue(Request.Url, Nothing))
            End If

        Next
    End Sub
End Class

The code uses a bit of reflection and I am sure can be helpful for figuring out the properties of any other object.

For this url:

http://train.mindscapesolutions.com/tests/requesturl.aspx?query1=test&query2=test

The output is:

AbsolutePath: /tests/requesturl.aspx
AbsoluteUri: http://train.mindscapesolutions.com/tests/requesturl.aspx?query1=2&query2=3
Authority: train.mindscapesolutions.com
Host: train.mindscapesolutions.com
HostNameType: Dns
IsDefaultPort: True
IsFile: False
IsLoopback: False
IsUnc: False
LocalPath: /tests/requesturl.aspx
PathAndQuery: /tests/requesturl.aspx?query1=2&query2=3
Port: 80
Query: ?query1=2&query2=3
Fragment:
Scheme: http
OriginalString: http://train.mindscapesolutions.com:80/tests/requesturl.aspx?query1=2&query2=3
DnsSafeHost: train.mindscapesolutions.com
IsAbsoluteUri: True
Segments: System.String[]
UserEscaped: False
UserInfo:

Share this:

  • Twitter
  • Facebook
  • More
  • Email

Like this:

Like Loading...

Java, JavaScript and jQuery (Or What’s With All the J’s?)

13 Friday Apr 2012

Posted by Aaron Brander in On Technology

≈ Leave a comment

Tags

Mindscape, technology, work

Technology is full of confusing terms, and building websites is no different. As a developer or as a person in need of a website, you will no doubt encounter a number of acronyms and words that you either don’t understand, don’t want to understand, or that just plain make you want to cry a little bit out of sheer frustration.

DNS? PHP? .NET? IIS? Apache? Joomla? Drupal? CMS? IE? FF?

The list grows longer and your attention span grows shorter. I’ll not bore you with all of the acronyms now, I’ll just save that for another post. Instead, I want to shed a small ray of sunshine upon a dark corner of confusion.

What’s the difference between Java, JavaScript and jQuery?

Java

Let’s start with what Java is not. Java is not coffee; you won’t find it at Starbucks.

Java is not a populous island nation in the Indian Ocean; at least, not the Java we are talking about.

Java is a programming language developed in 1995 for Sun Microsystems. Its main purpose is to be able to run on all different types of operating systems. In other words, a program written in Java can run on a Microsoft computer and an Apple computer. All you need is to download the Java run-time to your computer and you can run any Java applications.

Java can be used on the Web, but I haven’t seen an example of a site using Java in a long time. If someone is telling you they’ll build your website using Java, they probably mean JavaScript.

JavaScript

JavaScript is not Java, just like tea is not coffee and Bermuda is not the same as Java the nation. Beyond some superficial similarities in syntax (the words and symbols used to write the code), Java and JavaScript are quite different.

JavaScript is built to run on the Web. How it executes and how well it performs is dependent on the type of browser you are using (Check out this website to help you determine: What is a browser?).

JavaScript was decried, denigrated and dismissed by many programmers for years, including myself. The relatively recent rise of “fancy” websites that update quickly without reloading a page (Ajax or asynchronous JavaScript execution) has brought JavaScript into prominence, and has even made an old hater like me at least acknowledge its importance.

If a salesperson is talking to you about using JavaScript to build something on your website, they are probably talking about implementing some sort of “fancy” interface feature to make the site more appealing to your visitors.

jQuery

Finally, we come to jQuery. jQuery has nothing to do with questions. In fact, it answers a lot more questions than it raises. jQuery is a library of functions that uses JavaScript. It is like using the phone instead of sending a telegram. It is like sending a text instead of using the phone. It is like using GPS navigation instead of an old, paper map.

jQuery is what made it palatable and fun to start using JavaScript again. It is the most popular JavaScript library in use today, and if you are building a site you should be using it. If you are having a site built, when the sales person talks about JavaScript, it is almost certain that the developer will be utilizing jQuery to make it happen.

So there you have it. Java, JavaScript, and jQuery, now clear as mud for you!

Share this:

  • Twitter
  • Facebook
  • More
  • Email

Like this:

Like Loading...

What is a Technical Design (Or Why You Need a Blueprint)

30 Friday Mar 2012

Posted by Aaron Brander in On Technology

≈ 1 Comment

Tags

Mindscape, technology, work

Have you ever had a house built, or an addition added to your house? Did it go like this?

*****

“Good day, Mr. Architectman, I would like you to build a home for me,” Chris VonClient said.

“I would be happy to help, Chris. How big do you want the house to be?” Andy Architectman responded, tilting his head to the right so that he could hear Chris better.

“I was thinking we needed three bedrooms and two bathrooms. So I don’t know, two thousand square feet?” Chris was not really sure what he wanted, but he had a vague picture in his mind.

“Two thousand square feet, eh? Hmm. Yes. I can see it now. That’s enough for a big kitchen, vaulted ceilings, a den in the basement, a living room upstairs. Wait, you do want a basement, right?”

“Oh, that’s a great idea, Mr. Architectman. A basement is just what we need!” Chris was excited. He could see the house better already.

“Alright then. We can get started next week. How’s $150,000 sound and we’ll be done by September?” Andy was quite sure he knew exactly what Chris wanted.

“Perfect! Thanks Mr. Architectman!”

*****

I am hopeful that when you had your home built, it did not go this way. Somewhere in this process, Mr. Architectman built out a full blueprint for the project, perhaps even with visual aids like a 3D rendering of the home so you could walk through it.

Unfortunately, too many software projects are treated like the short story above. With a few descriptive words about the project, the developer is off and running and the client is left to wait for the project to be done.

Honestly, we have done projects this way at MINDSCAPE in the past. It was a long time ago, but still it happened. It was fairly standard practice in the software industry. There are two main ways to protect against this.

The first way is something called agile development. You can go ahead and look that up on Google if you would like, but basically it means that we work directly with the client through all phases of the project. The client asks for something small and we will deliver in a week or two. That thing is then evaluated, changed as necessary and we start work on thing two. It’s a great way to make sure the client gets what they want; but it has two downsides:

1) It is time intensive for the client. We’ll need your ear and your mind a lot of the time during development. That could be a month to a year of work, and not many clients have that time.

2) We don’t know how much it will cost because we are working collaboratively on it. That means we end up charging for all of the time we put into the project. Not many clients are willing to engage in that agreement.

So, we have taken the idea of agile development and married it to a more traditional process. Once we get to development, we make sure the client receives regular updates of what we are building and they will get to play with the software as we work. We do this by breaking up a large development into multiple milestones.

But to get to development, we first have to build the blueprint, and that’s where technical design comes in. There are three benefits to the technical design.

1) The client and the developer can look at words and pictures and sometimes even partially functional prototypes to make sure we see the same ideas.

2) The developer has a better understanding of what the client wants and how long it will take to build.

3) The client can take the technical design and have it quoted by other development companies. Sure, we’d like to have their business, but the technical design ends with a solid deliverable that will give other development shops a solid way to understand the project quickly.

So what does a technical design include? Much of it will depend upon the scope and complexity of the project, but it will always include one or more of the following:

Feature List

This is present in even the simplest design documents. It lists out the features that are needed with a description of what the feature does.

Wireframes

Often, we’ll pair the feature list with a visual representation of what each page may look like. This is not intended to be a final design, but rather a way to communicate how the feature will flow and look on the page. We often use a program called Balsamiq to help this process. Here is what a Balsamiq mockup looks like.

Prototypes

Sometimes, it is necessary to model interactions or complex use cases in a more dynamic way. In this instance we will build out a prototype. This allows the client to play with the proposed solution instead of just reading about it or seeing a picture. This is helpful when there is a lot of animation or fancy user interaction with the application. It is not the final solution, as it will not have any data or logic tied to it, but it is helpful for showing what the application should do.

No two technical designs are ever the same as we tailor it to the client, the project and the scope of work to be completed. However, the technical design should make the requirements clear to the developer and the client, should allow the developers to create a reasonable estimate of work and give the clients a deliverable that they can shop to other developers.

And it’s just a good idea to build a house with a blueprint and not an ambiguous conversation.

Share this:

  • Twitter
  • Facebook
  • More
  • Email

Like this:

Like Loading...

Scheduling Sucks (Or The Problem With Rampant Success)

09 Friday Mar 2012

Posted by Aaron Brander in On Technology

≈ Leave a comment

Tags

Mindscape, Project Management, technology

Life as a Project Manager at MINDSCAPE used to be pretty nice. I know, because I was a project manager for a couple of years.

We had a solid team and plenty of work to keep us busy. What made it nice is that it was manageable. Between two designers and two or three programmers, it was not so bad keeping their schedules straight.

We had a nice process. The salesperson would enter a form with the information I needed to make the schedule. I would take the form and create a Basecamp project using the information provided.

The Basecamp project would hold all of the tasks we needed to complete and the communication that we had on the project. Basecamp still works pretty well for this, and we use it daily.

Once a week I would sit down, write out by hand the hours needed for the different projects that came in, and get to work on Google Calendar. Each person in the company had a calendar, and I would put an All Day event in place for what they should be working on each day.

In this way, I could model the 4 days it would take for design, the 2 days of design revisions we would need in a week, and then the HTML and other programming that a different resource would need to do when the design was complete.

It took a little while, but it was manageable. And it was free. Each person could check their calendar each day, and know the main projects they should be working on. Here is a look at a schedule from February of 2010:

Pretty crazy looking, right?

Well, those quaint days are long gone, and yet we have not updated our scheduling methodology. We tried sticking with this process, but now there are two project managers, an entirely new department for marketing and double the number of programmers. It has become onerous to keep track of what project has priority and what each person is working on.

Want to find when we can fit a project in or get a new project completed? Good luck tracking that date down. We just don’t have it right now.

The issue came to a head over the last few weeks. New projects started pouring in, as our two salespersons worked their magic and Mike, Pete and Paul got in on the sales too. It became very clear that we needed to find something new. It was time to evolve.

So what is that something new? We don’t know for sure yet, but I have really enjoyed LiquidPlanner so far. It certainly makes scheduling a breeze compared to what we have done in the past. I have spent the last three days adding nearly two dozen projects into the system, assigning them to resources and adding tasks and estimated effort to each. And every time I add a new project Liquid Planner updates the schedule for me.

I am pretty sure I cannot go back to Google Calendar.

I will circle back to this subject in month and let you know a bit more about how we have solved the scheduling problem.

(If we have not solved the problem by then, Sisyphus and I will be best friends.)

Share this:

  • Twitter
  • Facebook
  • More
  • Email

Like this:

Like Loading...
← Older posts

Categories

  • On Books
  • On Miscellany
  • On Technology
  • On Travel
  • On Writing

Get Social


My Links

  • Brander Photography
  • Libzig.com
  • Mike July.com
  • Mindscape @ Hanon McKendry
  • Picture Perfect
  • Westward Bound

.NET 1 star 2 stars 3 stars 4 stars 5 stars 90 day challenge African Mythology Alexander the Great Basketball Bernard Cornwell Bob Lee Swagger China Coming Soon Dan Brown Danes David Gemmell diet Dresden Files Fantasy Fencing Fiction Final Four fitness Gladiators golf books golf practice Google Halo Hiking Historical Fiction History HTML James Clavell Japan Jim Butcher Kindle King Alfred Last of the Mohicans Lord of the Rings Magic Michigan State Spartans Microsoft Mindscape Neil Gaiman Non-Fiction Norse Mythology On Books programming Project Management Putting R.A. Salvatore ratings Richard Sharpe Roman Empire Roman History Romans Rome Samurai Saulzar Saulzar Codex Saxons Science Fiction Shattered Sports Books Stalin Stephen King technology Tolkien Travel Washington D.C. Wizards work Work in Progress Writing

Create a free website or blog at WordPress.com.

Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy
  • Follow Following
    • The Saulzar Codex
    • Join 33 other followers
    • Already have a WordPress.com account? Log in now.
    • The Saulzar Codex
    • Customize
    • Follow Following
    • Sign up
    • Log in
    • Report this content
    • View site in Reader
    • Manage subscriptions
    • Collapse this bar
 

Loading Comments...
 

    %d bloggers like this: