home · blog · groups · about us · contact us
DevelopmentNow Blog
 Thursday, December 28, 2006
 
 

It's been a bit since I last wrote, but I wanted to write a quick piece about New Year's Resolutions.

At the end of every year, many of us look back at the past year and try to come up with things we'd like to do differently in the coming annum. Dieting and exercise are probably near the top of most people's personal lists, of course, but I think setting some resolutions can also be good for your career.

Like any good goal, a resolution should be something realistic and achievable. Ideally it should be specific (e.g. "exercise at least once a week" instead of "exercise more") to allow you to measure your progress. And of course you should have a timeframe in mind. Often it's just "before the end of the year" but sometimes it's something different. But you should also allow yourself to adjust your resolutions, and give yourself a chance to redeem yourself if you mess up. Get someone else involved (friend/partner/coworker/accountant) so they can cheer/nag you on. And yes, the emphasized words above fit into that handy goal acronym -- S.M.A.R.T. -- that I discussed a while back on setting goals.

Resolutions should be something that are important to you. Think back about the missed opportunities over the past years. Think about what you wish you accomplished but didn't. Think about how good it'll feel to cross those things off your list, and look back, a year from now, feeling better about yourself and your career. Force yourself to consider the above reasons every day, and you'll be further towards making things happen.

Anyhow, in the spirit of resolutions, here are my techie resolutions for 2007:

  1. Get a multi-exam technical certification
    I've been studying on & off for the MCAD but have always been "too busy" to get it and wasn't sure if it was even necessary. Well, I want to get it done. Maybe the MCAD, maybe MCPD, maybe something else. But some sort of Microsoft certification that involves more than one exam. It's possible that during the year I may do a non-Microsoft cert instead, but we'll see.
  2. Publish something technical
    It can be as simple as publishing an article on a site like 4GuysFromRolla, or maybe authoring a column for a printed magazine. Or even being involved in a book. But I think it'll be good for my career and my personal development to push myself and publish something. Sure, blogging takes some effort, but writing a focused, clear, and useful article is a new level of contribution.
  3. Speak somewhere
    I had a chance to speak at Portland's Code Camp 2006 this year. It was fun, a lot more work than I expected, and a great learning opportunity. I want to repeat that experience again in 2007.
  4. Learn about and/or get involved in something new technology-wise
    I want to branch out and get some experience and involvement in something substantial in the technology world. Maybe it's working more closely with GData, or deeper experience with mobile development, or using Ruby on Rails for a few projects. But I'd like to spend enough time with something that you might call a niche so that I can talk intelligently about it, help others with it, and/or specialize in it if I wanted to.
  5. Get a new computer
    I love my overclocked Athlon XP 2100+ dearly, but it's time to upgrade. Visual Studio is slow enough, and I'll be doing more and running more in the year ahead. I suppose I could scrap it all and go the Notepad + Mono route, but I really like strong IDEs. Plus who knows what new games are coming out in 2007. :)

That's all for now. There are other things I'd like to do next year, but they're smaller, less important (to me), and I don't want a huge list. You'll notice my resolutions are a bit on the generic side, partly because technology moves so quickly and I haven't 100% decided how I'd like to fulfill them yet.

Hopefully I've encouraged a few people to make some 2007 techie resolutions for themselves, and provided some ideas on some fun and useful things to resolve to. In case my list isn't for everyone's taste, here are some other good (IMO) techie resolutions that people might choose:

  • Update your resume
  • Start a blog and/or personal web site
  • If you're not ready to write articles, post some code samples up on CodeProject.
  • Attend a conference or trade show. See some presentations, talk to a few people, and hand out your business cards. Code Camps are good because they're informal and free, but anything that exposes you to people, ideas, and sunlight is good.
  • Join (or start!) a local users' group and attend some meetings. It's a great way to network with others, get ideas and feedback, and snarf some pizza.
  • Share your technical knowledge with others in need. Volunteer your services for a school, church, or non-profit. Tutor kids on computer skills. Teach or help out with a YMCA class.
  • Clean out your basement and donate all those older computers, monitors, cables, and whatnot to groups that can refurbish them and put them to use. Check out Microsoft's Computer Donation Tips page for ideas and places to donate. You'll be helping others and getting a tax writeoff at the same time.
  • Get involved with something technical outside of work, e.g. make your own mashup, contribute regularly to technical newsgroups, or help out with open source projects on SourceForge or CodePlex.
  • Implement a backup scheme so your pictures, documents, and code don't get lost in case something happens to your computer or home.
  • Be proactive about your career by learning a new system, using a new tool, or maybe even transitioning to a new position and/or company.
  • Replace your ugly, power-hungry, eye-hurting CRT monitor with a nice LCD. You can find a 19 incher on NewEgg for $200 or less, and believe me, you and the environment will be glad you did it.
December 28, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Monday, December 18, 2006
 
 

I saw this nice Code Smell summary at Berkeley thanks to Diederik Krols' anti-pattern blog. The Code Smell Summary (or maybe it's a cheat sheet) gives nice overviews of bad code practices, (briefly) explains why they're bad, and provides links to refactoring.com's illustrations and examples to demonstrate the problems and the cures.

Reviewing the code smell summary will help you become more aware of problem code in your own projects. Then if you really want feedback on your code, you can start using code analysis tools like FxCop or NDepend. :)

You can also read through some of the common refactorings as well as this list of database refactorings, although there's some sifting required to get to the real "a ha, that's a good idea!" stuff. I will say that the refactoring sites don't provide much explanation on why the ideas should be followed, presumably so that we'll be forced to buy the books.

Code | Tools
December 18, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Wednesday, December 13, 2006
 
 
The December 2006 CTP of Sandcastle, Microsoft's free .NET 2.0 documentation tool, is available. It has some new features and a bunch of fixes.
December 13, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 
 

A service pack for MySQL Enterprise 5.0 was released, bringing the version number up to 5.0.30 and including changes like:

  • Bug Fix: InnoDB showed substandard performance with multiple queries running concurrently.
  • Bug Fix: InnoDB exhibited thread thrashing with more than 50 concurrent connections under an update-intensive workload
  • Bug Fix: Some queries that used MAX() and GROUP BY could incorrectly return an empty result

Plus a new beta version of MySQL 5.1 is out, with various fixes and enhancements.

December 13, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Friday, December 08, 2006
 
 

One of my clients has employees across the country at their clients' offices, and sometimes users at a given location report that their connection to the company web site is slow. To assist with troubleshooting, I usually have them first run a bandwidth speed test at SpeakEasy and/or SpeedTest.net. I have them choose a test server closest to where the company web site is hosted (in this case, Chicago). Several times in the past the speed tests would demonstrate a slow connection, and we'd then be able to start troubleshooting.

That doesn't always resolve the issue, though -- sometimes the speed tests would be fine, but access to the site would still be slow (again, only for those locations). I recently found another free traceroute tool to help diagnose connection issues between the user and the web site. I prefer web-based tools since oftentimes the user doesn't have rights to install desktop bandwidth monitoring tools.

I've thought about putting a speed test on our web server itself. You can actually host SpeedTest.net's speed test for $400/year, or Visualware's MySpeed speed test for $250/year.

I found one or two free tests that you can seemingly host, but they were java source code & required linux. I suppose making a very simple Flash-based speed test wouldn't be too hard -- download some uncompressible files (like ZIPs, JPGs, MP3s) from the web site and measure how long it took to download them, then display the results. For the upload test, generate some data, POST it to the server, and measure that upload time (either on the client and/or the server). Or I guess one could do the same thing using AJAX, too, maybe.

December 8, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Wednesday, December 06, 2006
 
 

Installing Subversion & TortoiseSVN

James Kemp posted a guide to installing Subversion on Windows. Unlike most guides on the net, his is pretty up to date.

Note that when it comes time to install svnserve as a service, just use this command line instead of James' longer steps:

sc create svnserve 
binpath= “\”C:\Program Files\Subversion\bin\svnserve.exe\” 
–service –root c:\pathtoyourrepository” 
displayname= “SVN Server” depend= tcpip

Note that the above command should be done all on one line -- I just broke it into multiple lines for display purposes. It also assumes you installed Subversion to the default location.

TortoiseSVN is really easy to install, & adds right-click context menus to Windows Explorer so you can perform SCM commands.

Once you have Subversion & TortoiseSVN installed, you can perform checkins, checkouts, branches, merges, etc. with wild abandon.

Integrating with Visual Studio

If you want to integrate Subversion with Visual Studio, you can use the AnkhSVN Visual Studio Addin. However, be warned that AnkhSVN isn't fully released yet (it's on RC4). In fact, reading the blog of one of AnkhSVN's developers, statements like "renames and deletes were very buggy", "a number of Ankh error reports had an AccessViolationException", and "I was pretty shocked to see that we do in fact delete files when Exclude From Project is invoked" kinda scare me. IMO you should probably treat it like a beta product for now ... you don't want to lose vital source code.

So...while I like the idea of Visual Studio integration, I just can't have a lot of bugs, crashing, and surprise deletions on source code. I'll just stick with TortoiseSVN for now (which is easy enough to use, just switch to Windows Explorer, make a few clicks, then switch back to Visual Studio).

December 6, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Monday, December 04, 2006
 
 
I just posted an article up on CodeProject about ASP.NET's machineKey. Feel free to check it out & comment.
December 4, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 
 

FireBug, that awesome javascript/css/ajax/dom debugger plugin for Firefox, has a new version out. Blurb from their landing page:

Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.

Just the way you like it

Firebug is always just a keystroke away, but it never gets in your way. You can open Firebug in a separate window, or as a bar at the bottom of your browser. Firebug also gives you fine-grained control over which websites you want to enable it for.

Learn more

Inspect and edit HTML

Firebug makes it simple to find HTML elements buried deep in the page. Once you've found what you're looking for, Firebug gives you a wealth of information, and lets you edit the HTML live.

Learn more

Tweak CSS to perfection

Firebug's CSS tabs tell you everything you need to know about the styles in your web pages, and if you don't like what it's telling you, you can make changes and see them take effect instantly.

Learn more

Visualize CSS metrics

When your CSS boxes aren't lining up correctly it can be difficult to understand why. Let Firebug be your eyes and it will measure and illustrate all the offsets, margins, borders, padding, and sizes for you.

Learn more

Monitor network activity

Your pages are taking a long time to load, but why? Did you go crazy and write too much JavaScript? Did you forget to compress your images? Are your ad partner's servers taking a siesta? Firebug breaks it all down for you file-by-file.

Learn more

Debug and profile JavaScript

Firebug includes a powerful JavaScript debugger that lets you pause execution at any time and have look at the state of the world. If your code is a little sluggish, use the JavaScript profiler to measure performance and find bottlenecks fast.

Learn more

Quickly find errors

When things go wrong, Firebug lets you know immediately and gives you detailed and useful information about errors in JavaScript, CSS, and XML.

Learn more

Explore the DOM

The Document Object Model is a great big hierarchy of objects and functions just waiting to be tickled by JavaScript. Firebug helps you find DOM objects quickly and then edit them on the fly.

Learn more

Execute JavaScript on the fly

The command line is one of the oldest tools in the programming toolbox. Firebug gives you a good ol' fashioned command line for JavaScript complete with very modern amenities.

Learn more

Logging for JavaScript

Having a fancy JavaScript debugger is great, but sometimes the fastest way to find bugs is just to dump as much information to the console as you can. Firebug gives you a set of powerful logging functions that help you get answers fast.

Learn more

December 4, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 
 
Development is switched over to a new web server, so if you see this post, you're on the new box. Lucky you!
December 4, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Friday, December 01, 2006
 
 

position:absolute had a post about the new Opera Mini Simulator, and I must admit it work really well. Now granted you can also download normal the Opera browser & run it in "Small Screen" mode, but the simulator seems better.

December 1, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 
 

Found another big list of accessibility checking tools at NSCU. Maybe I should start making a comprehensive list. Or a wiki. Or a delicious link set. Or something. Anyhow...

Fangs, a Firefox plugin, is interesting. I tried it out. Basically it displays a text version of your site similarly to how JAWS (the most popular screen reader) would read it. So it helps you look for a bunch of repetitive stuff, etc. It's not perfect, though, but nice for a quick page check.

Google Home Page
CropperCapture[3].Png

Fangs' "intepretation" of google.com would be read by JAWS
CropperCapture[4].Png

Fangs' list of links (similar to JAWS' link list)
CropperCapture[5].Png

 

December 1, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 
 

Scott Mitchell has a new article on 4guys about using the ASP.NET CSS Friendly Control Adapters. Using them causes standard ASP.NET controls to basically use fewer tables for layout, and instead use more lists, divs, and "proper" tags for layout & markup. The adapters also cut down on in-line styles, allowing you to keep layout in a CSS file where it belongs.

And all that means better accessibility, cleaner code, and fewer laughs of derision from your Mac-toting designer friends who say things like "Yuck, Microsoft .NET is le glos poulet laid, look at all those tables!" and then they refer you to their hipster CSS blogs. Well, look who's laughing now!

December 1, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [1]



 
 
MIT has a cool timeline widget under open source.

Unfortunately I can't really stick it inline here, but you can visit the link to check it out.
December 1, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]