Continuous Integration with Hudson

Recently I came across Hudson, an open source Continuous Integration server.   I often hear about cruise control, however it always seemed like it would be difficult to get setup.

A Continuous Integration server can help you automate tasks in your development life cycle.  It will checkout a project from your source code repository, build it, and run any number of additional tasks that you can configure.  For example, it can run unit tests that you have written for your project.  Another example would be to configure StyleCop or FxCop to analyze your source code against various rules.  All of these tasks are completed on a build server automatically and any issues are delivered through the UI, email, or RSS.  This instant feedback loop will make you and your team members spot any issues sooner and make you a better programmer.

Some things that make Hudson in particular stand out:

  • It can build .NET and Java applications.
  • To get started you just run the jar, or deploy to tomcat.  No db or other configuration to install.  It can even install itself as its own service.
  • Lots of plugins.  Plugins that you can install from within the application just like WordPress.
  • User interface is simple and clean.
  • It just works.

Bottom line, take 10 minutes and check it out.  Let me know if this is not the best Continuous Integration server for Java and .NET.

Posted in development | Tagged , | View Comments

Effective Meetings 101

One thing that really bothers me is long in-effective meetings.  Here are a few basic meeting tips.

  1. Always have and distribute the objectives of the meeting beforehand.   (Hint: if you don’t have an objective, then you don’t need a meeting.)
  2. Meetings do not always have to be 1 hour in length.  If you just need 15 minutes, then schedule 15 minutes.
  3. Once you complete the agenda of the meeting, end it.  Do not fill the rest of the meeting time with something unrelated.
  4. Take notes and distribute them after the meeting to all attendees.  This makes sure everyone is on the same page and does not forget any conclusions.  Often handy for any follow-up meetings.
  5. Start on time.  If people are frequently late, it becomes a trend and more people will show up later next time to avoid waiting for the late people!
  6. If there are action items identified, note them and be sure to assigned to an owner.
  7. Always come prepared with any documentation or diagrams to facilitate the conversation.  (For example, I don’t need to spend 15 minutes watching you draw our existing network diagram on the white board.  This is what printers and projectors are for.)
  8. Stay on point.  It is easy to lose focus and have attendees push discussion onto something unrelated to the objectives.  Table any off topic discussion and move on.
  9. Limit the attendees to only those people required.  It is very difficult to keep everyone on the same page when there too many people in the discussion.  (Keep in mind that presentations can have lot of people, however presentations are not meetings!)
  10. Lastly, improve every meeting.  After the meeting think about how the meeting went and how you can make improvements.

What tips do you recommend to make a meeting more effective?

Posted in leadership | Tagged , | View Comments

Clever Web Design at Refresh DC

Earlier this evening I attended a Refresh DC event at CDIA.  Paul Annett, design lead at Clearleft, gave a great presentation on how being clever in web design can promote viral word of mouth marketing.   He gives great examples of logos and websites that have intentionally and unintentionally added subtle features/easter eggs that allow the user to discover and share them.  Who knew FedEx had an arrow in its logo? Check out the presentation below or on his site:

Posted in design | View Comments

Network Monitoring with Zenoss

Recently I configured Zenoss for a client to allow them to be more proactive and receive email notifications when a service or server goes down on their network.  When you are frequently upgrading or modifying applications there are bound to be issues that crop up and cause failures.  It is best to be aware of these and correct them before your users notice.

To get started you can download a Virtual appliance with Zenoss already installed.  Once it is up and running, you will want to install a few ZenPacks that are relevant to your environment.  These are basically just extensions to the product that can give you more specific collection and reporting tools.  The next step is ensure there is an SNMP agent running on the machines you plan to monitor.  SNMP is a common network monitoring protocol and an basic agent comes with Windows.

Once you have the basic ZenPacks and SNMP running you can have Zenoss discover all your servers and network devices, or you can add individual servers as needed.

Zenoss will model each device, determine what software, services, ports, disk drives are on the device and assign default thresholds and alerts to each.  For example if a disk drive is more than 90% of capacity it will create an event message.  These messages will start displaying in nicely color-coded dashboards for now.  The next logical step is to setup email notifications by defining alert rules per user or group.  Alert rules allow you to filter the event messages and only receive the ones that are important to you such as only Production systems that throw Error messages.

If you are in need of a monitoring solution, I highly recommend you give Zenoss a try.  It really is quite easy to setup and has a vibrant community behind it with a lot more advanced capabilities than I have discussed here.  Also take a look at a ramp up video put together by JumpBox for Zenoss at http://vimeo.com/6408567.

Posted in tools | View Comments

Remote Desktop Manager

If you find yourself managing a number of Windows servers take a look at Royal TS 1.5.1

Royal TS allows you to organize your connections to multiple servers over RDP.  There are other programs that do this, but this one allows you to easily categorize, sort and search the list.  It saves all of your settings in a XML, which you can easily share with other co-workers as they join the project.

RoyalTS

The latest version is shareware, however I use the freeware 1.5.1 version and it works great!

Posted in enterprise, tools | View Comments

Maintenance and Support (Enterprise vs Open Source)

One the common concerns in using open source software at some companies is having formal maintenance and support contracts.  The crazy thing is that most enterprise software products come with really bad maintenance and support at high prices.

Take for example Premier support offered by most enterprise software vendors that include claims of 4 hour response times and the like.  If your goal is having someone on the phone, then sure this works ok.  However if you actually want your problem solved, then get ready for a surprise.  Most of the time you are going to have to pull some pretty intense efforts to prove the issue is the vendors problem.  In most of these situations you end up doing all of the leg work which often includes writing the fix or workaround.  In many cases, the vendor boils down to becoming a place for you to file bugs along with their solutions so that you dont have to deal with in the next release.

Upgrades.  Oh don’t get me started.  Enterprise software vendors never sell licenses on how easy it is to install or upgrade their software.  In fact, sometimes I wonder if they don’t intentionally make this process difficult in order to require customers to buy more hours from consulting services.

Lastly, the enterprise product knowledge bases often require you to use the vendors website using customer logins.  This limits who has access and makes searching and contributing to this content difficult if not impossible.

Open Source on the other hand has to have great maintenance and support processes in order to gain any traction and acquire a user base.  WordPress is a great example.  The installation and upgrade process is as simple as it gets.  Searching for any problems or issues is as simple as searching the web.

Like many things in the world, the logical choice is not the first choice due to tradition and fear.  Just keep in mind times are changing, walls are falling, and open source will set you free.

Posted in development | View Comments

Kiva now allows loans to people in the US

Kiva.org allows you to make micro-loans to people in need. This is a great example of how the social web can organize groups seeking a common goal. It is pretty awesome when you can easily make a small loan of $25 with a group of random people to help someone start or expand their business. If you haven’t tried it yet I encourage you to check it out. When I started using the site I wondered why something like this was not available to people in the US. Well now it is possible through Kiva. This service is a win-win for all involved and I see this service growing dramatically over the next two years.

Posted in Uncategorized | View Comments

Windows services crash after restoring from Standby mode

Recently Windows Update applied SP3 to XP on my Dell Latitude D630. I was pretty sure I already installed SP3, but I applied it anyway, what could it hurt right?

Well…every time I restored from Standby mode, my network services, firewall, sound and a number of other services stopped working. Most notably was the sound, and after further investigation I noticed the rest. Odd flickering of the windows theme also cued that something was out of whack. I first thought it might be related to a virus or Conficker, however after triple checking and re-scanning everything nothing came up.

Looking further, windows has all of these services running under the same svchost.exe process. Therefore when one of these crashes, it takes down all of them. Below is a list of the services Windows runs as a shared process on my machine:
AudioSrv,BITS,Browser,CryptSvc,Dhcp,ERSvc,
EventSystem,helpsvc,lanmanserver,lanmanworkstation,Netman,Nla,RasMan,
Schedule,seclogon,SENS,SharedAccess,ShellHWDetection,TapiSrv,Themes,
TrkWks,w32time,winmgmt,wuauserv,WZCSVC

Turns out you can modify these services to run their own process, which would allow me to determine which service is causing the problem. From the command prompt:
sc.exe config ServiceName type= own
You need the space between the “=” and “own”. This command will cause the service to always launch in its own svchost. To revert the service back to its original state, run the following command from the command prompt:
sc.exe config ServiceName type= share

After setting this and restarting the services I went into Standby to reproduce the issue. This time nothing crashed except for the Wireless Zero Configuration service. Now that I have narrowed it down, I did some more searching and found http://support.microsoft.com/kb/951447 which says to disable the the power management features on the Wireless Network Connection. Makes sense, so I give it a try. Go into Standby, startup and then immediate blue screen of death.

Taking a look at the wireless drivers reveals they are pretty old, so a quick search for the Intel 3945ABG wireless driver reveals some recently released driver updates. With these updated drivers I don’t get a blue screen, however I still have the issue of the Wireless Zero Configuration service crashing.  Luckily this service isn’t necessary as Intel provides Wireless connection software.  Also the service can be started once it fails if needed.  However it is a bit annoying.  Even though I didn’t completely resolve this issue, I do think the troubleshooting steps that were taken would be useful in other similar situations.

Posted in troubleshooting | Tagged | View Comments

Downloading Enterprise Software

Why is finding the correct software installer or documentation so difficult?  If you are a enterprise software vendor (particularly IBM, EMC, Oracle) and want to increase customer satisfaction, please fix this!  Granted these companies are in this situation because they have acquired a number of other companies.  However this problem is simple to fix and would save many from wasting time finding installers or writing documentation on how to reach the documentation.  My personal recommendations below:

- Product Name  (Pick one name and stick with it across the board)

- Product Category (I usual find these to be very unhelpful and arbitrary.  Most times, I would rather see a long list of products or product suites.  If I have to click through three or more categories just to see a list of downloads then you are doing it wrong.  I can scan through 100s of product names in a single list, much quicker than I can click through each category.  Most of the times the categories are wrong anyhow.)

- Product Version (I only want to see the most recent version, but leave a link to access previous versions right next to it)

- Product Platform / Type (If your going to list this, then be consistent and accurate.)

- Product Documentation (This is best included in the installation download and available completely separately in an HTML online version.  However don’t list the installer and the documentation as separate zips in the same list, this just clutters the whole thing.

Posted in enterprise | View Comments

Windows Azure presentation

Yesterday I went to the Mid-Atlantic Cloud Computing user group in Reston, VA.  It’s a newly formed group that plans to meet once a month.  The topic of the evening was Windows Azure, in which Scott Zimmerman from Microsoft gave a great overview of their online suite of products with a focus on the Compute and Storage capabilities of Windows Azure.  I wont go into the topic right now as the presentation is available, but below are a few interesting notes:

  • $500 million dollars invested for each data center
  • Half of all Exchange/SharePoint/Dynamic CRM revenue is expected to come from online service in the next 5 years
  • Everything is replicated at least 3 times
  • Currently runs .NET and C++.  Java/Ruby other languages coming soon
  • Visual Studio works with all of the services but is not required, everything is exposed through REST and SOAP
  • BizTalk Server 2009 can be used to help manage connections to the cloud
  • Declarative Fabric controller handles the deployment and configuration automatically
  • Community Tech Preview is currently free.  Service will be live by the end of 2009 with pricing plans

Other Cloud Computing links of interest:

http://www.cloudcamp.com/
http://cloudcomputingexpo.com/
http://videos.visitmix.com/mix09 has videos on all of the sessions including some on the Microsoft Azure platform.

Posted in development | Tagged , | View Comments