Party with Palermo: MVP Summit 2011 – save the date

Party with Palermo On Feb 27, 2011, I will host another Party with Palermo.  The location is TBD, but from 7PM-10PM, come on out and hang with other developer MVPs in a relaxed setting.  Details are in the works, and the registration page will be coming online this month.

Get the word out to your friends now and make sure your flight schedule gets you to Bellevue so you can make it to the Sunday night party by 7PM.

Help me get the word out by retweeting this tweet.

Department of Justice acting on web accessibility

In mid-2008, we began hitting web accessibility in a meaningful way.  One of our projects was a law enforcement systems for some local government entities, and the requirement was there.  We have used tools such as the WAVE toolbar for Firefox as well as developed our own tool for testing accessibility compliance for ASP.NET called NAAK:  .Net Accessibility Analysis Kit.  It’s free and open source.  Go use it.

The US Department of Justice is planning some regulations around web accessibility, and it is quickly becoming a real requirement for web development.  Individual programmers ought to be educated in this, but it is more important for company executives to know this is going on.

Please go read about it here.

Running the company on cloud services

This is a brief post about the core cloud services we use.  Along with developing systems that run on cloud platforms, we make heavy use of them ourselves in the basic infrastructure of our company.  Here is a quick list of the ones we depend on every day.

  • Email, Calendar
  • Phone system
  • Development/Test server infrastructure
  • Salesforce

Background

I will start by describing our current solutions to each of these needs.  We are a professional services company.  We help small & mid-sized companies compete by building custom software and automation solutions.  By understanding the business model of our clients, we are able to help them executive their business strategy better.  We are 100% owned and operated in Austin, TX, but we do have some clients in other parts of Texas.  By working in the industry, we have developed expertise in many areas, and that knowledge and experience flows into our training program.  Our consultants have laptops (Dell Precision dual-8x cores, 8GB RAM), and we are set up so that any of them can work for anywhere.  We still perform all of our work from our custom offices at 4807 Spicewood Springs Rd in Austin, TX where the open environment fosters collaboration across projects and event across clients. 

Since all but a handful in our company have computer & technical backgrounds, we have little need for a helpdesk.  Our office network infrastructure consists of fast connectivity to the Internet and solid wireless access points.  While we do have one server in the office for historical reasons, it is soon to move to the cloud.  Because of this, we do not employ the use of Active Directory, Novell or any other domain/groupware.  Each computer is a stand-alone computer. You could call it “workgroup mode”, but it is no different than just plugging in a computer and using it.  This has kept our workstation overhead extremely low.  All our important infrastructure is in the cloud.

The first cloud service I’ll cover is for email and calendaring.

Email/Calendar

image We use Google Apps Premier Edition.  It provides us the following services:

  • Email
  • Calendar
  • Chat/voice soft phone
  • Mobile access
  • Email groups

The email interface is Gmail, but a few elect to connect via Microsoft Outlook.  Calendar is integrated, and we can schedule times and conference rooms according to everyone’s schedule.  As of this week, we also have integrated Google Voice into the mix so that everyone has a public phone number instead of just and extension.  For instance, you can call me directly through Google Voice just by using this little app.

https://clients4.google.com/voice/embed/webCallButton

Phone System

We use a hosted SIP phone system through a local provider, PrismNet.  These folks do the hard work of connecting the phone system to AT&T’s backbone here and getting the actual phone lines.  They also maintain the phone system’s software upgrades, patches and operation.  The only artifact in our offices are GrandStream GXP2000 desktop handsets.  We can install and use any SIP soft phone we like, and we are also able to run SIP clients on iPhone and Android phones.  Because it’s a phone system in the cloud, the mere act of taking a phone to another location and plugging it in makes the phone number/extension active.  Our office network uses a Cisco Power of Ethernet switch, so the desk phones are powered through the CAT5 network cable, as are our wireless access points in the dropped ceiling.

 

Development/Test Servers

All of our dev/test servers are at Rackspace Cloud.  We run JetBrains TeamCity as our main build server software.  It has flexible build agents, so the dashboard and main server is accessible from any location, but the build agents can be anywhere.  We have a build agent at Rackspace Cloud as well, but we also power up any spare developer workstations we have, install the TeamCity build agent software, and instantly, we have more computing capacity to run builds for client projects.  TeamCity also has Amazon EC2 integration, but we have not hooked that up yet.

Through Rackspace Cloud’s management dashboard, we can provision a server, and that server is up and running in under 10 minutes.  Through daily backups, we always have a full image of that server for the last day.  Each server is really VMware, and to create a new server, we can choose to create it from a backup image of another, so cloning servers is a breeze, and we only have to install server software once.  Even starting from scratch, the operating system comes pre-installed, of course.

 

Salesforce

We, like many people, use salesforce.com.  It allows us to keep track of our sales pipeline and opportunity workflow.  It helps with contact information for prospects and a host of other things.  We like it, and we are in the process of integrating it with Google Apps for shared contacts and automatic sales email logging.

Conclusion

My company writes software for the cloud, but it also runs on the cloud.  With all the hype about cloud computing, it’s easy to discount the whole notion because of how it has been glamorized.  For us, it’s not glamorous.  It’s just how we do business.  It makes our infrastructure reliable.  It lowers our operating costs.  It allows an employee to be productive if working from home because of a mild illness (we are extra sensitive to colds being passed around in the office because then it makes it home to children).  Finally, it makes us portable.  We moved office spaces at the end of July, 2010.  We moved on a Friday afternoon, set up furniture on Sunday.  Monday at 10am, all of our infrastructure was up and running because the only necessary thing was the Internet connection and monitor/keyboard setup.  Phones worked automatically just by giving them an internet connection.  It was a very low-cost move because of it.  That is not a small consideration given that we will have to move again given the rate at which we are growing.  Any infrastructure that must be physically installed will be costly to move in an office relocation.

To end, my goal was to merely share what we are doing so that others may benefit.  I’d by happy to answer your questions through the comments.  If anyone else has some commentary on cloud services you are employing, please chime in.

Register for my free workshop next week – The Continuum of Modular Architecture

Next week, I am giving a free afternoon workshop at the Microsoft office in Austin, TX.  This is a free workshop, and it is one in the series of free monthly workshops that Headspring hosts in conjunction with Microsoft.

I am the speaker for this month, and my topic is below.  Please head on over and register now.  Please ensure your seat.

Title:  The Continuum of Modular Architecture

Abstract:

Modularity is a concept applicable to all types of systems.  In software systems, the term "modular" is often used to apply to coding practices all the way to deployment techniques.  There are varying degrees of modularity.  In this interactive workshop, you will learn about the continuum of modularity as it relates to software architecture and design.  After attending the workshop, you will be able to analyze and select a degree of modularity appropriate to your situation and apply it.  Techniques will also be shared in areas such as how to partially deploy a system, version parts of a system independently, and methods for choosing different libraries, languages, and platforms within a system.  Modularity is not an all-or-nothing decision.  Come learn about the full continuum so that you can apply the appropriate design to your system.

More info:  http://www.headspringsystems.com/community/workshop/

Adobe AIR web browser with Flex 4.1 sample application available

At Headspring, we have to work with a variety of technologies.  While our greatest strength is .Net, all technologies and platforms are on the table while serving clients.  In the past we have worked with SAP, Windows, Linux, PHP, ADOBE Flash/Flex, CRMs, Java, Ruby, etc.

Being a “.Net” shop isn’t really a workable solution for a company looking to serve customers while meeting all of their needs.

One technology that compliments .Net really well is Flash built with the Flex framework.

Flex 4 was release in March of 2010, and 4.1 was released this summer.  Similar to Silverlight, one can build data-driven interactive applications that interact with any back-end server, such as an ASP.NET application.

image If you would like to see how an Adobe Flex app is put together, you can take a look at a sample we have available for download.

It is a simple, non-fully-featured web browser (using an embedded HTML control).  You can get the application directly with this link.  All the files are text, but you do need Adobe Flash Builder to open up the project correctly.  Flash Builder is a custom-configured Eclipse application, so it is running Java.

image

Without a doubt, new programmer we bring on board are versed in some, but not all of the technologies we might have to use on client projects (and the list of technologies keeps on changing and growing).  When hiring, I’m not so concerned about what technologies programmers are an “expert” in as their aptitude for learning.  In a consulting company, learning the the ticket to the game.

Quality assurance is not testing

We at Headspring have just posted our Quality Assurance article over at http://blogs.headspring.com.

I’ll give a summary here of our view of QA.  Here are the main points:

  1. Move QA before coding
    That’s right.  We are assuring quality of the whole result, not just the code.  If we code the whole thing, but the quality of the design or analysis wasn’t spot-on, we have a problem.  QA starts with analysis and goes through deployment and operations.
  2. Unit testing vs. Full system testing
    Everyone is so caught up with unit testing and TDD, but full-system testing is the only type of testing that gives close to the coverage the system will experience in a production environment.  If you aren’t doing any type of automated testing, start with full-system testing, not unit tests.
  3. Get to production quick, before the software is finished (ok, this is a point I wish were in the article)
    I’m actually expanding on it right here, but you will never have as clear a picture of whether something works until it it goes to production.  Until then, there is a risk that it will fail.  Get to production quick.  Sometimes, it seems that the type of problem or system just won’t work with an incremental rollout.  The hard problem to solve is how to not solve the whole problem right away.  How do we solve a piece of it quickly, but fully solve it.  In some cases, an incremental production rollout might be incremental by feature.  In others, it may be incremental by user group.  Still in other cases, live pilots may be appropriate.  In any case, old and new systems will need to be integrated.

Go check out the article here.

What is the difference in <%: variable%> and <%= variable%> in ASP.NET MVC?

With many folks adopting ASP.NET MVC as well as Visual Studio 2010, there is a fairly confusing change if you are one of those people who doesn’t engage in the alpha and beta phases of new product releases from Microsoft or any other vendor, for that matter.

The issue of <%: vs. <%= has had a great deal of discussion around it in the years leading up to the Visual Studio 2010 release.  This new expression syntax, or code nugget, is a new feature of ASP.NET 4.  It applies equally to ASP.NET Web Forms and ASP.NET MVC applications that are using the Web Forms view engine (ASPX).

In short, <%: ViewData["Message"] %> does the same thing as <%= Html.Encode(ViewData["Message"]) %>.

When creating a new ASP.NET MVC web application in Visual Studio 2010, you will see that the default Home/Index.aspx view is as follows.

image

However, if you create an ASP.NET MVC 2 web application in Visual Studio 2008, you see that ViewData[“Message”] is printed using the syntax that heralds back to the IDC/HTX technology of IIS 2.

image

I hope this tidbit helps in sorting through code samples online.  If you see <%: %>, you know that the code sample was produced for ASP.NET 4 or later.

Plugged in, not charging Windows 7 solution

I recently had the popular problem of Windows 7 battery manager malfunctioning and not charging my battery when plugged in.  The battery was fine, the power supply was fine, and the motherboard was fine (I have enough laptops with the same specs in the Clear Measure office, and I was able to swap out parts to isolate the problem).

I also searched for this problem online, and many folks are having this problem with all makes of laptop computers.  I found the steps that solved my problem here on the TechNet forums.

There are multiple solutions proposed, and here are the steps that fixed it for me:

  1. Disconnect AC
  2. Shutdown
  3. Remove battery
  4. Connect AC
  5. Startup
  6. Under the Batteries category, right-click all of the Microsoft ACPI Compliant Control Method Battery listings, and select Uninstall (it’s ok if you only have 1).
  7. Shutdown
  8. Disconnect AC
  9. Insert battery
  10. Connect AC
  11. Startup

Please comment if this fixes your problem so that others can solve their problem sooner.  I was surprised at how many people were having this problem with Windows 7.