Experience Agile – The Ballpoint Game

It is one thing to read about the agile processes and quite another to experience them.

This face-to-face activity quickly demonstrates how effective the iterative process can be.

The Challenge: As a team, the group must “process” as many balls as possible following specific rules. The group has four opportunities with a ‘SCRUM’ meeting in between each and a fifth “Grand Challenge” at the end.

The Results: The first time I directed this activity the team processed 15 balls during the first iteration and 88 balls in the Grand Challenge. They all experienced problem-solving, flow, and cooperation and had fun at the same time.

Reflection: The activity ends asking the group these questions:

  • How does this relate to agile code development?
  • What does this mean? “Every system has its own velocity.”
  • Flow is being totally focused and losing track of time. Did you experience this during this exercise?
  • How does that relate to other experiences such as programming or gaming?

Here is a PDF presentation you can use to implement this activity: labProcessFlow – The Ballpoint Game

Here is a video showing one team in the first iteration of the game:
You can purchase a bag of 100 plastic balls from Amazon for around $20: https://www.amazon.com/gp/product/B01LX7BAK6/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1

Adding JavaScript to WordPress

In my Advanced Web (CSC245) class that I’m teaching at Concordia University, St. Paul, the students needed to know how to add JavaScript to their WordPress blog postings.

I put together this demo page walking them through the process along with this video.

Adding JavaScript to WordPress

Here is the source code for the JavaScript function used in the video.

How old is each mask?


Ivory Pendant Mask: Court of Benin. Iyoba, Nigeria


Yoruba (Ife) bronze casting of Oduduwa


Ngady aMwaash, Kuba Royal Mask, Peabody Museum, Harvard University

edoIvoryMask1500Creative Commons, Wikipedia Edo Ivory Mask

ifeKings_Head1100Public domainIFE Kings Head

ngady-aMwaashKubaRoyalMask1890Creative Commons, Wikipedia Ngady aMwaash, Kuba Royal Mask

The Finger Dance

Computer KeyboardOn the keyboard? Stay on the keyboard. On the mouse? Stay on the mouse.

Every time you switch back and forth your brain has to remap itself to new processing areas. 

 For example, if you are editing web pages:
1. Start out in your text editor.
(Have FireFox already open and viewing the same file:  File/Open File)
(Using your pinky finger on the CTRL or ALT key so you can do these one-handed)
2. CTRL s
– Save
– switch to FireFox
4. ALT r 
   – Refresh the web page to see your changes
– switch back to your text editor  (Hit TAB multiple times to jump to other open applications.)
6. Edit the code in your editor.
7. CTRL s
– Save your changes and loop around again.

 Other very help hot keys (to keep your brain from switching tracks every few seconds)

CTRL a – Select all information (without having to scroll down)
copy the selection  or CTRL x  – cut the selection
– insert the selection (think of the v as a wedge inserting at the cursor position)

And my all time favorites:

CTRL z – undo  (walk backward through your changes)
– undo your undo

All of these work on all operating systems which makes them especially powerful.

Remember the mantra: On the keyboard? Stay on the keyboard. On the mouse? Stay on the mouse.

Minnebar – An (un)conference.

Minnebar LogoI’ve been waiting to attend my first (un)conference for over a year and a half, patiently watching my Google alerts each week to catch the next one. This weekend I was finally able to catch one.

An (un)conference is an informal conference designed to bring together programmers, designers, entrepreneurs, venture capitalists; anyone interested in technology.

(Un)conferences or barcamps happen all across the country. They are a great place to find local talent or make connections with other people dealing with technology.

This year’s minnebar (un)conference was held at the impressive Best Buy headquarters in Richfield, MN and consisted of seven sessions covering more than 42 topics. The sessions were grouped into tracks including design, development, start ups, social media, and other. In addition, there were several empty meeting rooms where people could talk about their own favorite topic. Over 1,000 people registered, making this the largest (un)conference in the country.

The price was free or you could pay $10 as a community supporter or $30 as an even more generous sponsor. Breakfast and lunch was provided as well as free beer and wine after conference. ip-House provided everyone with a really nice notebook (spiral bound with grid layout paper) and I am now the proud owner of a very colorful cyan t-shirt. (It is the one color I didn’t have in my t-shirt collection and looks really great with my SXSW 2009 baseball hat.)

I attended several Drupal related sessions and discovered that the Twin Cities has a very active Drupal group that meets several times a month.

Robert Stephens, founder of Geek Squad, along with Larry Jacobs from the Humphrey Institute and Rachel Smith, Director of Elections for Hennepin county, led a group discussion on electronic voting. Robert started the discussion out with "If I can order a pizza with my iPhone, why can’t I vote?" The discussion evolved from voting into different ways that technology could be used for more participatory and transparency in government. For example, at election time wouldn’t it be nice to have a mobile app that would give you a score card of an incumbent from the previous term? Or, to be able to fill out a form selecting the ideas and values that are important to you as a person and have these cross-matched with the platform of various candidates, giving you recommendations on which candidate meets your personal values and ideas?

In another session, Dr. Andrew Fleck, from Appleton, Wisconsin, talked about social networks based on Schumpter’s Hive. He described the theory behind innovative networks as well as giving working examples (the development of Linux). He wasn’t talking about FaceBook or Twitter, but collaborative, innovation networks and how innovators, learners, and interested people communicate and interact with each other.

If you are into technology, especially if you are a developer, designer, or web entrepreneur, don’t miss the next Minnebar!  You can register here for email notifications. And, if you have a topic you are passionate about, put your name in the hat and be a presenter at the next Minnebar.


Special thanks to Luke and all the people who continue to make Minnebar possible.








Quoting a New Customer

A graduate of mine is quoting on his first project and he sent me an email asking what he should charge.

I thought this information might be helpful to you.

Quoting a job for a new client is always a difficulty.

  • You could ask for a lump sum for a specific task.
  • Or, set up an hourly rate and a set number of hours.  And then renegotiate when that time/project runs out.
  • Another idea is to work for a lower rate but ask for shares in the profits. Make sure it is a specific things ($10 per sale or 10% of the gross sale) and something that can be tracked and verified by a third-party.
Start small. Do a simple add/change to the program just so you can get the feel for it. Make it a specific task that you can estimate better on how long it will take.
Encourage your client to chunk the project so you can bid on each task or a group of similar tasks.
After awhile,  you will have a working relationship with the client and will have a better feel for what he can afford and how fast you can accomplish it.Also, look for things that the client might not think of. The more “value added” you bring to the project (from his or her point-of-view, not yours) the more you will be worth.An earlier blog entry I wrote might help you determine a rate for yourself:

Figuring out a rate is very personal. Don’t think so much about what the client will pay, but more of how much your time is worth. If you bid to low you will be cranky near the end of the project because you will feel like it has kept you from doing what you really wanted to do and all you got for it was a lousy t-shirt.

Above all, work towards a partnership vs. how much money you can make, that will pay off the highest dividends in the long run.

We feel fine

We feel fine is an interesting Java Applet utilizing colors, shapes, and motion. It summarizes phrases from blogs on the Web based on emotion keywords, weather, age, sex, etc.

Check out the presentation that its creator, Jonathan Harris made during a TED conference:

Here is a quote from their mission page:

Since August 2005, We Feel Fine has been harvesting human feelings from a large number of weblogs. Every few minutes, the system searches the world’s newly posted blog entries for occurrences of the phrases “I feel” and “I am feeling”. When it finds such a phrase, it records the full sentence, up to the period, and identifies the “feeling” expressed in that sentence (e.g. sad, happy, depressed, etc.). Because blogs are structured in largely standard ways, the age, gender, and geographical location of the author can often be extracted and saved along with the sentence, as can the local weather conditions at the time the sentence was written. All of this information is saved.

At its core, We Feel Fine is an artwork authored by everyone. It will grow and change as we grow and change, reflecting what’s on our blogs, what’s in our hearts, what’s in our minds. We hope it makes the world seem a little smaller, and we hope it helps people see beauty in the everyday ups and downs of life.

Six movements of We Feel Fine
Six movements of We Feel Fine

Problem Solving

Every semester I get frustrated emails from students containing the phrase, “I just spent ____ hours on this and couldn’t figure it out.” Here’s a short excerpt that I usually include with my reply:

I can sure understand how frustrating it is to do something without success for so many hours. But, next time something like this happens, and after the first half hour, stop and ask for help, do something different, or find another resource. It depends on the problem but, normally if you are spending more than a half hour trying to solve a problem than your problem-solving skills need some work.

Here’s a checklist that will help you build up your problem-solving skills and hopefully speed your way to solutions:

  1. Stay focused. Don’t try to multi-task. Behavioral scientistists have proven that trying to do multiple things at once makes all of the tasks suffer.
  2. Simplify the problem. Web page not changing? Try typing in some odd letters (XYZ) in the middle of the page to see if they display. If they don’t you might have been spending the last hour typing in one file and looking at another!
  3. Keep track of what you have tried. Write it down so you aren’t repeating the same thing over and over and over. Be organized and consistent on how you look for a solution. Don’t just shotgun things over and over and over.
  4. After each failure try something different. If one combination doesn’t work think of something different to do. (Use number keys instead of number pad, check caps lock, type out the password in a simple editor to see the results…)
  5. Google is your friend Do a web search with the error message or a short phrase so you can see if others have had a similar problem.
  6. Think about the problem differently. Maybe what is broken is something completely separate from what you are focused on! Think of what else might be causing the problem.
  7. Go do something else or take a short nap After a set period of time, stop what you are doing and do something else. I usually give myself 1/2 hour to an hour depending on the problem.) Go take a shower, or sit down with a cup of tea, coffee, or pop and sit quietly, go take a 15 minute nap. Let other alternative solutions come to mind and then jot them down. Don’t force them, they will run away like minnows in a clear pool. Set a time limit for this activity. You should have 3 or 4 alternative things to do in 15 minutes of sitting quietly.

    No, playing video games does not count here. That just focuses you on other problems that may be more interesting (at the moment) to solve.

  8. Imagine what the solution or success looks like. If you don’t believe something will work, it probably won’t.

Photo from iStockPhoto.com. I tell my Java students that this is what the Java compiler looks like 🙂

What should I charge?

What should I charge? This question comes up a lot.

Here’s are some pieces to the puzzle that might help determine what to charge a customer. Each one has to work with the others.

  • What is your time worth?
  • How fast are you?
  • Do you want the business relationship to be long term or short term?
  • What is the current market rate?
  • How much experience do you have?

What is your time worth?

A person out of high school working at a burger shop will put a lower price on his or her time than a professional manager that is making big bucks. Be careful not to undersell the value of your time.

How fast are you?

You have to realistically look at how fast your can create web pages or write a program. It takes a new student a much longer time to figure out a basic CSS design than a seasoned, five-year CSS expert. And, the expert will have several templates ready and waiting so he or she can create a basic site in minutes. Literally.

Even something as simple as typing speed plays into this figure. Let’s say you can only tap out 30 words per minute on a good day. And, that’s using English words. It might drop down to 15 words a minute when you start typing code…

Now compare your output to another person who is able to type code at 60 wpm or higher. Who will be the most productive? The 60 wpm will be able to generate four web pages or more for every one the 15 wpm typist can write. If you have your skill set down (CSS, XHTML, design, some JavaScript) and have a few web site templates in your personal library that you can build from you will be able to finish normal tasks much quicker than someone that doesn’t. The faster you are the more you can charge. Time is money for both you and your client.

Do you want the business relationship to be long term or short term?

This will help you determine how to charge. If you want this to develop into a long term relationship you may want to charge a flat rate for a set number of pages. Later additions and changes could be billed at an hourly rate. A common error though is to charge to little in order to “buy the business”. After awhile you will find yourself doing lots work and the first question, “What am I worth?” will be nagging at you. It’s always harder to raise rates later than to bill a little higher in the beginning.

Should you charge by the hour or by the project? A short job is usually best by the hour. Longer projects could be billed by a flat rate. Also, if you are newer to the business of web site programming and design you might want to charge a flat rate for a set number of pages.

What is the current market rate?

This is the question that most people are really asking. But, these numbers are only valuable if they seen in context with the other questions listed here. Most professional agencies charge between $100 – $200/hour. A complete, professional website normally runs $1,500 on up depending on how complex it is. The keyword here is professional. Also, keep in mind that these rates are what the agency charges, not what the web programmer gets paid. The agency or company has to pay salaries, utilities, and rent out of this money as well as show a profit.

I usually recommend to people just breaking into the market to charge between $15 – $50/hour depending on their skill level. Once they are established they can charge the higher rate. Established could be roughly defined as a person that has at least 10-15 working web sites that they maintain.

How much experience do you have?

As you continue to work in the field and learn more skills and techniques you will be able to charge more. Experienced people have built up a toolbox of code and techniques that allow them to build and maintain sites/programs quickly and easily. Also, a web developer/programmer that can build a shopping cart or a web page that can be maintained by the customer without needing a programmer is a lot more valuable than one that can only create static web pages that simply display information.

If you can think of better ways to do the routine things quicker and easier you will be even more valuable. For example, one of my students started work at a web design company and put together a framework of code that allowed him to created complex web sites very quickly. Each web site had the same basic structure, but by adding different graphics and modifying the CSS code he was able to create unique sites in an hour or so (once he had the framework built.) All the other employees took several weeks to accomplish the same amount of work.

Technorati : , ,
Del.icio.us : , ,

What Lanaguage(s) To Learn?

top10.gifBeing a one-language programmer isn’t good enough any more. In today’s world you need to have the right “product mix” to stay in the job market. Here is a story from eWeek.com highlighting the ten most popular languages along with how many jobs are available for each based on the current jobs out on dice.com, one of the more popular tech job sites.

Java and C# rate the highest with a total of over 19,500 jobs. Keep in mind that C# is the “Java” as part of Microsoft Visual Studio. If you learn Java and you’ll be able to easily write code in either language. Another hot language to know right now is VB.NET with 2,090 jobs.

What the article doesn’t cover is the future… In the next 10 years 30-50% of the COBOL programmers in the USA are going to retire. When I first heard these numbers, several years ago, I thought that the mainframe companies would convert over to the languages that are now common on the PC platforms, but this is not proving to be the case. According to the IT people at Wells Fargo Bank, COBOL be around for a long time to come.

Chad Fowler, the author of “My Job Went to India – 52 Ways to Save Your Job” adds to this discussion. He points out that “Java and .NET programmers are a dime a dozen in India. As a .NET programmer, you may find yourself competing with tens of thousands of more people in the market than you would if you were, for example, a Python [or Ruby On Rails} programmer.” He points out that, “You don’t find mainstream Indian offshoring companies jumping on unconventional technologies. They aren’t first-movers. They generally don’t take chances.”

He recommends competing in the job market in which there is actually lower demand globally and focusing on niche technologies such as COBOL in the banking industry or Ruby-On-Rails, which is the cutting edge (right now) in web programming.

Does this mean you shouldn’t take Java or VB.NET? Not really. These languages are considered the base knowledge for today’s programmers. And, once you understand how Java and VB.NET works you can pick up other languages like Ruby On Rails much more quickly.

The key is not to focus on any particular language but to learn the concepts that are common to all programming languages. Once you have that base you can adapt quickly and easily to the changing needs of the job market, now, and in the future.

Technorati :
Del.icio.us :
Ice Rocket :