Agile


7
Apr 09

ZoomIt Application

This week I am down in MPLS attending SQL Server Analysis Server training at New Horizons.  The instructor is using a sweet application that allows you to draw on the screen, zoom in on part of your screen and also has a break timer for meetings.  The drawing part is probably the best.  It is very similar to what they use when watching sports on TV.  The break timer will work very well for our planning meetings at W3i.  Here is the link for the download.


27
Dec 08

Database Administrator Position Available in Saint Cloud MN

If you or anyone you know is a Database Administrator and has experience with MS SQL Server, please send a resume to michael.fransen@w3i.com. For more information on the position please visit here. I will also be looking for a few .NET developers in the next few months so please send me your resumes if you are looking for work or a change.



24
Apr 08

Extreme Paper Prototyping

Tonight while checking LinkedIn, I actually clicked an ad!! It is a pretty cool product to help you prototype your user interfaces on a white board. This would have been very useful on the Experimentation Platform we developed awhile ago at work. It’s called GuiMags.


6
Apr 08

Code Camp 4

   Yesterday I attended Twin Cities Code Camp 4. This was my third code camp. It was probably one of my favorite ones. I went down to the cities with James, Manohar and Jordan. We also met Joel D a former developer where I work. It was kind of nice that they had some classes that were not strictly .NET. They actually had a RoR session, although it was pretty basic. The only thing that was mentioned that I hadn’t learned yet was the concept of using tasks to populate table in your database. It was nice to confirm that I was on the right track with rails. No pun intended! I am hoping that their might be a more advanced rails session for Code Camp 5. The second class I attended was regarding new features in SQL Server 2008, SSIS and SSAS. This was a pretty interesting class, however towards the end my mind was wondering. It was also kind of worrisome how he kept using words like “flaky”, “unstable” and others when describing features. He won’t be a salesman anytime soon for SQL Server. Anywho, some of the new features that I thought were cool that I am looking forward to are:

  • Intellisense in SQL Server Management Studio.
  • Regions – These are similar to what you see in C# code, however, there are some caveats according to the speaker. You can’t have comments in your regions. Pretty stupid if you ask me.
  • Insert multiple rows using one insert statement. This one i will use. I have actually attempted to do this before, so I am looking forward to this one.
  • Grouping Sets – Didn’t catch this one totally. If your dying to find out, google it.
  • Merge (Upsert) – This is a new keyword and functionality that I know I will use as well. This is where you have two tables and if a record is in one and is in the other it will run an update statement. If the record in one isn’t in the other one it will run an insert statement.
  • Star join query optimizations for joining facts to dimensions.
  • Change Data Capture – This is a feature that records DML changes for a table to another table, so you can track data changes. The current implementation does not allow you to record who is making the change. Also, if you want to add another column to a table you have to set this up all over and lose all your previous history. Just another anti-agile feature from microsoft. Come on, who has database tables that don’t ever change.
  • Sparse columns – This was demonstrated and was pretty cool. For two given tables, one with sparse specified on a column and one without, it made a huge difference in the size of the table with the same data inserted.
  • Filtered indexes.
  • Hierarchical Data Type – Here is a good post on this. Oracle has had this for quite sometime. You can see how to use it here with Oracle. It is pretty straight forward. I used this in queries at my past job and having this can remove some craziness in your data model.

   I also went to “Things every ASP.NET developer should know.” Don’t let the title fool you into thinking that it was for beginners though. He got into some interesting stuff with IIS and querying IIS logs to figure out problems, HTTP Compression and setting expiration of content in IIS. “Writing better code” was also a great session by Jason Bock, the organizer of this event. One thing that he mentioned that resonated with me was keeping your coding standards to less than three pages. This is something that I think was a very good point. Currently the standards we use are many more pages than that, not to mention the SQL Server standards on top of that. I will be reducing our coding standards in the next couple of weeks.

   Overall, it was a great code camp. I feel fortunate to be able to attend as do my teams. Free food, free event with high quality content. You can’t go wrong!


13
Mar 08

View Source

Tonight I was visiting space150’s website. I decided to view the source of their website because I was curious and there was a surprise. Check it out! Pretty clever if you ask me.


13
Feb 08

Continuous Integration Signs

And I thought our Hulk Hogan sign was cool…

Buildsonmymachine Small

Wheresthebuild Small
Youbrokethebuild Small

Technorati Tags: ,


30
Dec 07

Ruby on Rails

Since I have a long weekend due to the holidays, I thought I would spend some time getting familiar with ruby on rails. RoR just came out with version 2.0 this past month and pretty much all tutorials and resources are centered around previous versions and a lot has changed. RoR is built around the MVC (model, viewer, controller) pattern which is somewhat new to me as well. I wanted to get more familiar with this pattern to better understand ruby but also because the ASP.NET MVC Framework is coming out. I was pretty impressed with scaffolding in RoR. It also demonstrates why RoR is used in many agile environments. You can get a simple web application functionality and database schema by running three commands. This allows you to have working software right away and gradually build upon it. So you can see this in action I thought I would post the steps below. This is assuming you already have ruby is installed. Since I am using a Mac it is already installed and I just had to run a few commands to upgrade. I am using TextMate (30 day trial) which is a popular editor to use when developing in Ruby. You can also work with about 30 other modules for other languages. You can even blog from it.

Create website structure. Open a command line. Type rails movies. This will create an application named movies.

When you open this up in TextMate you will see the structure that was automatically generated for you. Notice that you have folders from controllers, models and views. Also notice that you have a folder called tests for unit tests.

Now you are going to create the movie scaffolding. This will create the classes needed and EVEN the code that will generate the table for storage. To get scaffolding for Movie type the following command as shown:

script/generate scaffold Movie name:string description:text year:integer (Make sure the types are lower cased)

This also specifies the properties of a movie and the type. This will determine the types in the database table and also the fields on the web page.

Notice the new files that were created below.

In the picture above you notice there is a file in db/migrate. This file was generated automatically with scaffolding and this code will generate our database table. You actually code the table in Ruby so that way our application isn’t specific to the type of database. I am using SQLite, however you can use many others such as MySql. Below is the code that is in this file.

To create the database type the following in to the command prompt:

rake db:create

Following that we will run the migration files which is the code that was created two steps up. After you do this the table will be created as defined in the migration files. To create the table enter the following into the command prompt:

rake db:migrate

Our application is now created with basic CRUD functionality for movies. You must start the server though to serve the pages. To do this enter the following into the command prompt:

script/server

Then go to the following address in a browser window and you will see the following windows:

http://0.0.0.0:3000/movies

As you can see with scaffolding, you can get up and running pretty fast once you understand it. Scaffolding, however, is not meant to be used to build your whole website, just enough to get a site that is functional fast. I plan on posting more once I learn more. :) There are not many resources right now for the 2.0 version although. Please feel free to let me know of any resources that you have found useful.

For some basic language/syntax check out:

http://www.sitepoint.com/article/learn-ruby-on-rails/1


21
Jun 07

Application Naming

Yesterday I learned a very important lesson when naming a new application.  Make sure you say it three times fast to make sure you won’t end up in the HR office once it is released.

Often, in Agile Software Development, teams practice continuous integration(CI).  Often one person becomes the guru regarding CI  and is referred to as the Build Master.  This last sprint my team developed a primitive web application to make it easier to set up CI and nightly builds on Team Foundation Server.  I thought I would call this application BuildMaster.  And just to cover our asses I thought I would have Beta in the title (Google gets away with it, why can’t I?).  Nonetheless, I was confused when people on my team started laughing

when I said that BuildMaster Beta was ready for release.  Needless to say, our application got out of Beta status immediately and was fully released.

:)

 


22
May 07

Scrum with TFS

     Last week I attended my first VSTS (Visual Studio Team System) user group in Minneapolis with Adam, the product manager of my team.  It was a very small group.  There were only about 5-7 people and 4 pizzas.  There was definitely enough to go around.  I think the group was just small because the topic was very niche.  The presentation showed how to leverage TFS when you have an agile team that specifically is using the Scrum methodology.  A demonstration was given using Conchango product, Scrum for Team System.  It looks like a very useful product, yet very simple.  Currently we are more concerned with getting all of our code into TFS from SVN, Continuous Integration and unit testing setup.  Hopefully, we will revisit Scrum for Team System as it may be a better solution for project management (backlog management to task completion) than what we are currently using. 

    More time was spent on Scrum principals than what I was expecting, but it was nice.  It was nice to see companies doing things similar to the way we do things.  One interesting thing that did happen is that after hearing people talk about ranking stories using time (vs story points), the product manager and I got more on the same page.  Another thing that other companies due is have a demo for the business.  For some stories this is not applicable but for others I think it would be very beneficial.  I think that the reason I like both of these ideas is because they hold people accountable.  Since we have started agile at my place of employment I have seen extreme benefits (communication, project ownership, sprints with a consistent velocity just to name a few).  I like the team emphasis that Agile brings and I think it is very valuable, however, there is a downside.  I think accountability is sometimes lacking because people can hide behind the team.  On the other hand I also think the visibility is lacking for people that work hard on a team.  For people to enjoy working on the team they need to feel like they aren’t pulling all the weight and for a successful team, every member needs to feel that they have a commitment to the team.  When ranking stories with story points it is easy for a developer to say they will be done with a story of size “3″  tomorrow because it doesn’t mean that much.  However, if they had a story that was a size of “8 hours” they need to explain why it is taking longer.  On the other hand, if they finish that story in one hour, they would need to explain to the team why it took so much less.  Did they write unit tests?  Or worse yet, did they just code and check in?  Of course, ranking with hours still can be inaccurate as is any prediction, however, flags would be raised if someone is consistently under or over.

     I also like the idea of providing demonstrations to the business.  For larger stories, I would like to see the primary developer for that story demonstrate it to the business.  This has many benefits.  It encourages the developer to have a high level of quality.  This reminds me Bill Gates getting a blue screen during a presentation.  No developer would want to demonstrate their work and have it fail.  It is possible in an agile environment for developers to become disconnected from the business.  I think that this demonstration would alleviate some of that disconnection and allow the developer to get direct feedback, instead of feedback from the business to the product manager to the team lead and finally to the developer.  Last, but not least, the business gets to see how their requested software works.  Win-win situation.