User login

Michael Neel's picture

How did I get started in Software Development?

I'm such a slack - just now responding to this meme after being tagged by Derik.  Normally, I can't stand these things, but there are some I like - and this is one of them.

How old were you when you started programming?

I was about 10 years old when Dad came home with a Tandy 1000EX.  We played some games on it (Zork) and used it for homework (Mom loaded all our spelling words each week into a program that would flash the word and we would have to type it in).  One night, I watched Dad use BASIC to send escape codes to the printer, getting it to change settings and that was all it took - I was now curious about the secret language of computers.

What was your first language?

BASIC was where I started, and stayed for most of my time in school.  I checked out books from the library and back then, Family Computing used to publish a BASIC program in each issue.  I tried to teach myself assembly, but only managed to reboot the computer every time I ran my programs.  I didn't know anyone else into programming, so it wasn't until college and the military that I learned about C.

What was the first real program you wrote?

The first program would be a BASIC program that played songs from Les Misérables while drawing images on the screen (the Tandy was known for its 16-color display and 3-voice sound).  The first program I was paid to write was for the military, and it was a series of automation programs in C to move weather radar and satellite imagery from proprietary systems to an Internet website (note: I probably violated all kinds of military regulations and vendor contracts doing this!)

If you knew then what you know now, would you have started programming?

Without a doubt, and I would have looked into C much sooner!

If there is one thing you learned along the way that you would tell new developers, what would it be?

This is hard, but if I must limit myself to one thing I would stress to remember that technology, languages, platforms, etc are not that important.  Software is only a tool to accomplish another task, and the less of it involved the better off we all are.  As a developer, seek to understand the real problem you are solving for someone and then only apply your programming skills to solve that problem.

What's the most fun you've ever had ... programming?

Back in the military I was going to night school and met another programmer named David.  David and I both loved programming and games, and did many of our programming assignments together - often going way beyond what was required.  One night we had been trying to crash each other's program with bad input for a few hours, when finally we felt we had achieved indestructible code.  We then proceeded to call our wives into the room, and show off how manly our programs were - programs that could never be hacked.  David's wife sat at the keyboard, and at the input prompt hit Crtl-K and caused his program to crash.  She then repeated the same on my program, and it crashed as well.  The wives shrugged and left - not understanding the look of horror and shock on our faces.   We then spent the rest of the night trying to figure out why that one combination caused a crash and all the others were fine.

I don't think either of us have claimed to write indestructible code since.

Who am I calling out?

Knoxville, represent!

Nathan Blevins

Alan Stevens

Dylan Wolf

Wally McClure

Walter Lounsbery

DylanW's picture

Creating SharePoint Workflows with WSPBuilder and WSS

As I mentioned in my previous post, WSPBuilder is a great tool for SharePoint development. Between its built-in commands and its project templates, it takes a lot of the hassle out of setting up SharePoint configuration files for your features and solutions.

However, it's a little tricky to get it working for workflows, especially if you're using Windows SharePoint Services instead of MOSS. Here's what I eventually worked out:

  • Make sure you're using the "WSPBuilder Project with Workflow" template for your project. I made this mistake this first time through, and nothing worked.
  • Remove references to Microsoft.Office.* Pull out the "ReceiverClass" and "ReceiverAssembly" references in feature.xml; you don't need them anyway for a basic workflow. (If you do, you can always add them in later.)
  • Remove the AssociationUrl, InstantiationUrl, and ModificationUrl attributes from elements.xml. You'll need to add them back in if you create forms for this workflow, but not for a basic workflow.

More...

DylanW's picture

Start Developing SharePoint Now

Last week, I started a new job where my responsibilities include quite a bit of SharePoint development. Not that my last job didn't, but I didn't really have the time to focus on it, and I was the SharePoint guy. (If you dig back through my blog archives, you're going to find a lot of posts where I wrestle with how to do certain things from a SharePoint perspective.)

SharePoint is a difficult beast when it comes to development. Getting started and actually doing something useful is difficult--Visual Studio doesn't package solutions for you, there's a ton of very different things you can extend, and high-level developer documentation is sparse (unless you buy a lot of books). You'd be surprised how much you learn when you have a specific objective, time to focus, the right references, and a properly configured development environment.

And if you want to try out SharePoint development, it's surprisingly easy. After running Windows Server 2003 as my primary OS at my last job, I've decided never again. But I ran into this tip on one of the SharePoint videos on Channel 9 which makes it so much simpler.

  1. Install Virtual PC 2007 (download it here).
  2. Download and run the Windows SharePoint Services 3.0 SP1 Developer Evaluation VPC Image.
  3. This will create a virtual hard drive and the virtual machine settings to match. Open Virtual PC and add this as a new virtual machine.
  4. Install Virtual Machine Additions. You can do this through the "Action" menu on Virtual PC, which will mount a CD that will allow you to install this application.
  5. Go into the settings for your Virtual PC and share a folder on your computer.
  6. Download and install WSPBuilder on your virtual machine. This will automate building and deploying solutions and attaching the debugger to IIS worker processes, as well as give you templates to work from for common SharePoint development tasks.
  7. Set the main SharePoint site on the virtual machine to debug mode. Find its web.config file, and then make the following changes:
    • In the SharePoint section, find the SafeMode element. Make sure the CallStack attribute is set to "true."
    • In the system.web section, find the customErrors element. Make sure the mode attribute is set to "off."
    • In the system.web section, find the compilation element. Make sure the debug attribute is set to "true."

The main caveat at this point is that I'm not sure about the licensing situation here. This VPC is an evaluation license, and includes Windows Server 2003, Office 2007, Visual Studio 2005, and SQL Server 2005. My company's licensing agreement includes all of these, but your mileage may vary. Of course, this is for development; to actually use these applications in a production environment, you'll have to have real licenses. At the very least, it's an evaluation license, so it's a good way to get your feet wet before you set up your own development environment.

And one major difficulty here: the virtual machine is time-bombed to expire on September 30, 2008. Which means you'll have to set it up all over again, should Microsoft release another version of this virtual machine. (I have no reason to doubt they won't; they have similar VPC images for IE6 and IE7 that are continually expiring and being re-released.) Of course, that's part of the reason we set up the shared folder, so that we can migrate our code easily from the virtual machine to our computer.

Of course, doing any actual development (that is, not just poking through the SharePoint web interface) will require some reading material to get you started, but I'll cover that in a later post.

More...

Michael Neel's picture

Where's Mike?

I recently posted that everyone should read The Dip and I try to follow Seth's advice pretty closely.  The current "dip" I'm slugging through is organizing CodeStock - which means I have to "quit" or ignore many other things to focus on getting through this dip.  Less time spent playing with new .Net toys, which leads to less blogging and less speaking.

One thing I'm slightly jealous about having to pass on is helping in the Ann Arbor Give CampTim Rayburn first told me about give camp's last year at the Memphis Day of .Net, and ever since then I've wanted to be part of one (or more).  I am however glad to see Nathan Blevins jump in and assemble a remote team so that Knoxville developer's can join in the Ann Arbor Give Camp, even if I can't.

Fortunately however, a system has been created to allow one a temporary break from slugging through a dip - the vacation.  While most would imagine a vacation involves a beach and doing nothing, if we define vacation as "taking a break from daily routine to spend time doing an enjoyed activity" we see that a speaking tour is a vacation!

Next week I'll be staying in the New Orleans' French Quarter and speaking at nearby .Net user groups.  Below is a list of dates and groups - if you're going to be in the area be sure to join in my vacation!

  • GNONUG in New Orleans, LA Mon 7/7 (topic TBD)
  • Perficient, Inc. in New Orleans, LA 7/8 @ 11:30 - Welcome to the Church of Agile
  • LANUG in Mobile, AL Tues 7/8 - From Zero to XAML
  • Acadiana .NET UG in Lafayette, LA on Wed 7/9 - SOA: Building the Arch
  • Hattiesburg, MS on Thurs 7/10 - "Geek Dinner" (this is still in the planning stages, but there will be something happening)

GiveCamp - Knoxville,Tennessee

As most of my friends know by now, I am an active member of the ETNUG (East TN .Net Users Group). If you live in Knoxville, Tennessee and you are a .Net developer, you really should come check it out.  It is a wonderful way to met new people, learn about new ideas / opportunities, and to stay frosty

Anyway, the ETNUG has a lot of events going on this year, one of which is CodeStock but another, which I am working to organize, is the Give Camp. 

Ann Arbor Give Camp

What is the Give Camp?

Briefly, the main goal of a give camp is to organize talented developers and ask them to donate a small amount of their time in order to develop applications for charities.   This particular give camp is located in Ann Arbor, MI and will be benefiting:   Michigan Chapter of the National Children's Alliance, Michigan Humane Society, The Wellness Community, Neighborhood Senior Services, Forgotten Harvest, Ann Arbor Hands-On Museum, and Angels' Place. 

Of course, they say it better than I could - http://annarborgivecamp.org/WhatIsAGiveCamp.aspx .

Personally, I think this is an wonderful idea!  I love to be able to participate in charity events.  Unfortunately, I usually don't have a lot of cash sitting around, so I tend to be able to give little to no monetary contributions.  The idea of the give camp not only lets me give to a charity event but to also do it using something that I love to do and something that (IMHO) I am good at!  This is an excellent idea and I am very excited about it!

What does Ann Arbor have to do with Knoxville?

Since the event is in Ann Arbor, it makes it very difficult to many people outside of that area to attend / contribute.  As a way to answer that problem, the Give Camp is asking people to try to organize remote facilities in which they can gather their own teams.  These remote teams will be given their own tasks to complete and will be able to function as a completely separate unit.  Since remoting is possible, the ETNUG is wanting to organize their own remote camp and gather together the best and brightest of our area to assist in the effort.

What can you contribute?

The Give Camp is not limited to just one field of expertise.  In fact, there is need for Web Apps, Desktop Apps, Database Administration, Design + Layout, etc.  Basically, if you have any programming experience (even if it is not 100% Microsoft), we can use you and would be glad to have you.  Any contributions will be welcome!

What is in it for you?

Truthfully, nothing and everything... lol.  The time spent is completely voluntary.  There will be no monetary gains for any of the participates  However, I am going to make sure that we get some good meals out of it and, hopefully, have a few nice door prizes to give away in the end.  Despite these things, I can think of several reasons why this would be not only a fun event but also helpful to you.

  • You get the satisfaction of donating your skills to a good cause. This way, I get to do something that I love and still greatly benefit the charities.  In fact, the donation of our expertise would equate to a huge monetary contribution.
  • You get to meet new people and learn new ideas.  As developers, we are always on a quest to learn more / get better.  This is a great way to meet that goal and learn about new ideas / concepts.
  • You get to network.  As any person in the industry could tell you, getting good jobs and opportunities is all about who you know.  This is a very visible event that would make an excellent chance for you to get your name out there.
  • Fun!  This is not a work task.  We will be working w/ a great group in a very laid back and enjoyable atmosphere. 

Fun In the Sun

What are the Logistics of this event?

The basic format that is suggested by Ann Arbor is using three days(Friday, Saturday, Sunday).  However, we are free to organize our remote event in any way that meets our needs, provided that we are within the July 11 - 13 time frame.  Once I get a running list of interested parties, we will find out the days / times that will work out for everyone else.  I do want to stress that this will not be like 'going to work' but, rather, a nice time to socialize and work with other professionals within our area. 

Although I have not worked out a location (once again dependant upon interest), I am planning to find a large common space somewhere in Knoxville.  The space will have Internet hookups but we will need to ask everyone to bring their laptops if possible.  If you do not have a laptop, please don't worry.  We will have spare desktops / laptops that can be used.  We can use all the talent we can get.

In conclusion, I really feel that this will be a worthwhile and fun event that will enable us to uniquely assist those in need.  If you are interested in participating, please feel free to post it here or shoot me an email at Someword at nathanblevins.com.

Thanks!

daryl's picture

Stage

For a long time at my day job, one of our big web site issues has been the staging of database-driven content. Particularly if you’re editing Drupal pages that have a lot of markup in them, publishing a node can be sort of scary, as it goes live instantly with any bugs you’ve introduced. In theory, Drupal’s preview feature can be used to view your changes before you commit to them, but this too is scary, as the content isn’t rendered exactly as it will be once published. Further, using vanilla Drupal with its preview function to stage content requires that you roll out changes one by one. If you want to group changes for a mass rollout, the best you can do is wrap your changes in html comments and uncomment them one by one during deployment, hoping you don’t fat-finger anything in the process. I’ve always thought this would be a pretty difficult problem to solve, but yesterday, I came up with what feels like a satisfactory method for staging content.

The new stage module addresses both safety-netted staging of individual content and management of change sets.

It works by tapping into Drupal’s revision system, which already allows you to track changes to content over time and to revert to older content. For specified types of content, any additions or edits are published using the normal Drupal workflow, but on publish, the revision number is pinned at its last blessed point. You can edit or add any number of documents, and they all remain pinned at their pre-edit revision until you roll the whole batch of changes forward. When you roll a batch forward, all the revision numbers are brought to their most recent and pinned there until the next deployment. In the administration section, you identify staging and production servers. If you view an affected node from one of the specified staging hosts, you see the latest copy; if you view it from a production host, you see the pinned version.

This workflow is ideal for environments in which fairly frequent milestones are deployed. Because of Drupal’s handy dandy revision system, you can compare versions of the content across pushes to see what’s changed.

The module is hot off the presses this morning and so is probably still buggy and feature-poor, but it’s a start.

Book Review : Freakonomics

Lately, I have been working to improve my reading habits.  Although I am an avid reader, I tend to read only technical books (programming, design, etc.) or fantasy novels.  Although I certainly find value in reading these 'genres', I have made it a goal to branch out to other topics / fields in order to diversify myself a bit more and to learn more stuff.  With that being said, I took the recommendation of Mike Neel to read the book Freakonomics

Freakonomics

Basic Concept

In a nutshell, this book takes the thrilling subject of economics and applies them to the basic incentives and actions of different groups of people.  Using gathered data and logic, the authors Steven Levitt and Stephen Dubner try to solve one of the most common questions that is asked:  Why do people do what they do? 

As it turns out, the books is primarily a book of cause and effect.  According to the authors, everything in the world is based on incentives.  If you want someone to do something / act in a certain way, give them an incentive to do so.  If you want them to quit a  behavior, offer them a counter-incentive that is greater than the incentive the is driving them to do that behavior.  Conversely, actions that a group (or single person) perform often change the incentives that people are adhering to, often causing drastic reactions.  As a way to prove this point, the authors visit a myriad of topics that range from why legalizing abortion caused a drastic reduction in crime, how charging daycare parents  $$ when they fail to pick up their child may increase the number of late parents, and, my personal favorite, what sumo wrestlers have in common with teachers.

Of course, this concept is much more complex than applying common sense to a problem.  Generally, common sense and conventional wisdom are horrible ways to try to create incentives.  Due to this, intense research and data crunching are essential - as well as patience (in some cases, 10 years worth of patience).  Simply put, we live in a very complex society and it is very difficult to predict even the basic behavior of one person, much less thousands.  Also, relaying on conventional wisdom, the-tried-and-true way, and / or common sense is just another form of assumption.  And, we all know about assumption....

The Good

First off, this book is written in a very clean style, which makes it a very easy read.  Throughout the book, I was able to keep a very steady pace, thanks to the author's wit and ability to convey fact in a very simple and clean fashion.  Really, I spent most of the book being totally amazed as the authors describe amazing scenarios and then defining the cause of those scenarios as things that I would have never associated with the cause.  The information was well presented and, IMHO, as accurate as possible.  In fact, if you purchase the newer addition, the authors spend some time discussing their efforts of keeping the book data up to date w/ the current printing in the forward.

The Bad

Be prepared for shock factor overload.  The book does a great job in presenting amazing facts and figures, but, eventually, you get a little numb to the effect.  The overall lesson of the book never changes - Everyone reacts according to incentives.   Consequently, the books tends to drive that point into the ground, but, at least, with some really good data!

I would liken reading this book straight through to reading the Guinness Book of World Records for an hour sitting.  Eventually, you no longer care about the world's longest measured turd - even if it is 12 feet 4 inches.

Final Thoughts

I would certainly call this an essential read for our times.  In fact, this book has altered the way that I plan / perceive events because it introduced a new realm of possibilities of how to create incentives.   I find applications for this book in just about every aspect of what I do, since everything we do usually involves a 'human factor' at some point.

If you are planning to read this book, I would recommend treating each chapter as if it were an essay rather than a chapter in a book.  Take enough time to read the 'essay' in one sitting, and then take a break from the book for a while.  This way the value of the book is enhanced but you don't suffer from 'shock overload'.

Have fun reading!

CodeStock 2008 is coming!

Please come and join me at CodeStock!  It will be well worth your time!

My personal reasons for attending:

  • I will be speaking there!  (Shameless plug - I know)
  • The conference will be covering a plethora of topics, having topics of interest for almost any kind of developer.   They have 30 sessions!
  • The conference speakers and organizers are pretty amazing and really know their stuff. (And many of them are local which means that you can not only pester them at the conference, but catch them at the local users group (ETNUG) or catch lunch w/ them around town!)
  • Jeff Prosise will be there as the keynote.  If you have not heard Jeff speak, he is a very down to earth and energetic speaker.   His presentations not only cover the theory but the practice as well, making them very valuable to the practical developer.
  • Finally, there are some really fun things planned for the day.  I can't say more right now, but, needless to say, it will certainly add to the conference overall.  (I will probably get heckled for saying this much, lol)

But, if you don't want to listen to me, here is what they have say about themselves!


CodeStock's mission is to bring the best and brightest code experts to East Tennessee for a one day conference open to all developers. This is not a trade show with slick salesman giving prepared demos - this is a gathering of real programmers learning about the latest in technology from each other. Sign up now at CodeStock.org and join us for CodeStock 2008!

  • Keynote by author and MVP Jeff Prosise
  • 30 amazing sessions, by industry leading speakers
  • An area reserved for Open Spaces (self-organizing sessions)
  • Great prize giveaways including: VSTS 2008 Team Suite with MSDN Premium ($10,939 Value!)
  • Space is limited, register today!

Register at CodeStock.org

 

UPDATE - Now that they have officially announced the fun stuff - I can post it here:

Attending a conference to learn the latest in development practice and
see up close the new tools available is only part of what makes a
conference valuable. The other part is the time spent socializing and
networking with your peers. That's why CodeStock is throwing an after
party!

From 6pm till 8pm we'll have hot dogs, drinks and live music by
Knoxville's own Hanover Fist - these guys know how to rock (and I have
insider information that confirms some of them are also computer
geeks)! The stage area is located right next to the conference, and
there will be shade tents and tables setup for those not accustom to
Southern Living.

CodeStock - After Party

DylanW's picture

CodeStock 2008

I'm a little late posting this as I was on vacation last week (or at least that's my excuse), but CodeStock registration is now open. Here's the info:

CodeStock

CodeStock's mission is to bring the best and brightest code experts to East Tennessee for a one day conference open to all developers. This is not a trade show with slick salesman giving prepared demos - this is a gathering of real programmers learning about the latest in technology from each other. Sign up now at CodeStock.org and join us for CodeStock 2008!

  • Keynote by author and MVP Jeff Prosise
  • 30 amazing sessions, by industry leading speakers
  • An area reserved for Open Spaces (self-organizing sessions)
  • Great prize giveaways including: VSTS 2008 Team Suite with MSDN Premium ($10,939 Value!)
  • Space is limited, register today!

Register at CodeStock.org

More...

DylanW's picture

Feedburner

On a whim today, I switched all my RSS feeds over to Feedburner. Mainly, I was tempted by all the nifty stats they promise (I'm a sucker for stats).

So, for those of you interested, here are the new feed URLs:

More...