In our last colurm, we wrote about how technical mentors can benefit companies
(Ann Arbor Business Review, May 22, 2008). In this installment, we're going to talk
about finding a mentor, and how you can work with a mentor to help guide your career.
We'll also talk about how employers can participate in this process, to benefit
their ernployees and likely improve staff retention rates.

Read the rest of the article.

Bill Wagner and Dianne Marsh have been writing a monthly column for the Ann Arbor Business Review since May 2008. This is an article that Dianne wrote. The Business Review content is not available online, so we have permission to post the scanned pdf.

Posted by dmarsh | with no comments
Filed under: ,

When most people talk about mentoring, they are talking about someone that they can contact with personal or professional questions about “soft skills,” the business acumen that you develop over time. That sort of a mentor can be invaluable, but in this article, we’re going to focus on “technical skills” mentoring, the guidance that you need to move from yourself or your team from apprentice to journeyman to craftsman, and also over time, from expert in one set of skills to expert in another ...

Read the rest of the article.

Bill Wagner and Dianne Marsh have been writing a monthly column for the Ann Arbor Business Review since May 2008. This is an article that Dianne wrote. The Business Review content is not available online, so we have permission to post the scanned pdf.

Posted by dmarsh | with no comments
Filed under: ,

As a business leader, you've undoubtedly nurtured your company's image in the marketplace. You take great care in ensuring that your customers view you as a quality organization, an ethical organization and a positive member of the community. Often, an equal amount of care isn't spent on a company's brand image with other members of the business community ...

Read the rest of the article.

Bill Wagner and Dianne Marsh have been writing a monthly column for the Ann Arbor Business Review since May 2008.  This is the article that Bill Wagner wrote for their first submission (May 2008).  The Business Review content is not available online, so we have permission to post the scanned pdf.  

Posted by dmarsh | with no comments
Filed under:

Ann Arbor Give Camp started with Jennifer Marsman, of Microsoft, wanting to organize an event to pull together the developer community in the Ann Arbor area. She had heard about a Give Camp organized in Dallas, where developers worked over a weekend to produce applications and/or websites for charities, and wondered if it would work here.  She started organizing this a few months ago, and started soliciting charities. 

45 charities submitted proposals, but only about 15 could be selected.  A team of volunteers (including SRT's Bill Wagner and Patrick Steele) called charities to clarify requirements and to ensure that their projects could be done by a team over the weekend.  It was critical that the charities be given something of value, something complete. The organizers thought that it was critical that the charities not be left holding partially done work.  Other volunteers, including SRT's Lisa Zuber, reached out to area restaurants and stores for donations of food, water, and snacks.  Lisa even stopped by on Friday night (her day off!) to deliver the snacks!

About 118 developers signed up (some on the day before the event!) and showed up at Washtenaw Community College on Friday July 11 to kick things off.  Satellite teams worked in Knoxville, TN and in Columbus, OH.  SRT's Patrick Steele and Mike Woelmer were in the main group working from Ann Arbor.

The blogs about Ann Arbor Give Camp are amazing.  Jennifer has posted a list of blogs for GiveCamp on her blog; read more about it there.  It was estimated that about a half of a million dollars in value was donated by these generous folks over the weekend.  Great job, everyone!  With a success like this in the first year of this event, I can only imagine that both charities and developers will be even more interested in contributing next time!

Initially, only Bill and I had blogs at SRT.  When others (consultants and employees) wanted blogs, we added them and enjoyed reading the blog entries, but realized that other people may have a harder time finding them!  To make the other SRT blogs more prominent (they're available on the http://srtsolutions.com/blogs page, we wanted to put them on the front page.  So, we tasked our brilliant intern (Charlie) to add the appropriate code to pull snippets from the most recent 3 blogs, to appear on the front page.  Of course, all of the blogs are still available on the blogs page.

Charlie rolled out the changes today.  We hope that you enjoy reading the varied insight.  Feel free to comment on all of the blogs.  Since blog spam is so prevalent, we do have comments set to "moderated", but we eventually find your notes and we do appreciate them!

Posted by dmarsh | with no comments
Filed under: ,
I was first introduced to the term polyglot when I was in high school.  Our French class did a presentation at a Foreign Language Day.  I have this vague recollection that the theme of the day was "Polyglots Have More Fun". I've always liked the word, so I was thrilled to see Neal Ford using it.

In any case, Bill Wagner started things off at SRT by working the Project Euler problems in C#/LINQ.  Marina Fedner joined in, addressing the problems in Ruby.  Darrell Hawley tackled them with Python, and I (Dianne Marsh) jumped in with Scala.  This article compares the solutions to Problem 1, in each of the languages.  We don’t maintain that these are optimal solutions, in any of these languages, and we’re happy to take and post feedback containing better solutions.

Problem 1:

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.

Here are the SRT “solutions”, in alphabetical order.

C# 3.0/LINQ:

var nums = from n in
           Generators.NumberSequence(0, 1000)
           where ((n % 3 == 0) || (n % 5 == 0))
           select n;
var answer = nums.Sum();

// note: Bill put this in a library for future use

public static IEnumerable<int> NumberSequence(int from, int to)
{
    do
    {
        yield return from++;

    } while (from < to);

}

Python:

print sum([x for x in range(1,1000) if x%5==0 or x%3==0])

Ruby:

answer = (0..999).select {|a| a%3 ==0 || a%5==0}
puts answer.inject {|sum, n| sum+n}

Scala:

  val nums = 3 until 1000
  val somenums = nums.filter(x => (x % 3 == 0 || x % 5 ==0))
  var sum = 0

  somenums.foreach(sum += _)
  println (sum)

The Ruby and Python implementations are really concise! I was left wondering if Bill and I could have done better jobs in our respective languages.

Without rethinking the approach, but just eliminating local variables, I was able to get the Scala version down to a more respectable:

    sum = 0

    (1 to 1000).filter(x => (x %3 == 0 || x % 5 ==0)).foreach( sum += _)

    println (sum)

Then, I looked at the C#.  The only thing bloating the C# implementation is the missing “Range” function, which Bill rightly put into a library for later use as NumberSequence.  The comments in his blog for Problem 1 noted a built-in function

Enumerable.Range(0, 1000)

that could be used to simplify the code and obviate the need for that function.  So, the C# code refactored to:

var nums = from n in
           Enumerable.Range(0, 1000)
           where ((n % 3 == 0) || (n % 5 == 0))
           select n;
var answer = nums.Sum();

So there you have it: 4 implementations, fairly similar in their approach but using different syntax, to Problem 1.   If you wish, add a comment to this blog indicating which you prefer, and why!  And, perhaps also indicate if your preferred implementation is in your typical programming language or if you like what you see in another, better.

 

Posted by dmarsh | 1 comment(s)
Filed under: , , , , ,

CodeMash is a conference held in Sandusky, OH.  It attracts developers mainly from Ohio and Michigan, but also some from surrounding states.  This year, at least one person came from each of the states of Nebraska, South Dakota, Georgia, California, Virginia, and Washington.  The talks were great and the conference experienced about a 40% growth over last year's inaugural event.

Sponsors and great speakers are the key to the success of CodeMash, and the conference has been fortunate enough to attract both.  This year's sponsors included big companies like Amazon,IBM, Sun, and Microsoft, regional companies like Pillar, TechSmith, HMB, Quick Solutions, and Stout Systems.  And, we at SRT Solutions sponsored as well as helping to organize the conference.

The conference, organized completely by volunteers (all of whom are developers) attracted industry luminaries such as Brian Goetz, Neal Ford, Scott Hanselman, and Bruce Eckel.  Some speakers traveled to the conference, including Dick Wall (Google, Java Posse), James Ward (Flex), and Andrew Glover (Groovy).  Well known local speakers included Bill Wagner (C#), Brian Sam-Bodden (Java) and Kevin Dangoor (DoJo) .. and many others.  It was truly a great conference, and we're already looking forward to next year's event.

CodeMash Families was introduced this year.  This was organized by the spouse of one of the attendees, as a result of recognizing that many families attended last year but didn't discover one another until well into the conference.  Organized activities for families included group dinners and story time.

KidzMash took on a life of its own.  Just before the conference started, discussions centered around who was bringing kids.  A few people volunteered to lead some "kid geek" activities, to show our kids what it is that we do, as computer scientists.  One demonstration (thank you Arnulfo Wing!) included showing kids how to program in the Kids Programming Language (KPL).  It was truly amazing to see young kids (ages 4-8 or so) intently listening and participating!  The other demonstration was a Lego Robotics demo by Duane Collicott (thanks Duane!).  The parents seemed to enjoy it as much as the kids!  

And yes, the conference was held at a water park: the Kalahari Resort.  It's a great venue for a conference and lends itself well to the family-friendly atmosphere that the CodeMash conference organizers are promoting, by including CodeMash Families and KidzMash.

Posted by dmarsh | with no comments
Filed under: ,

 

Ann Arbor Area User Groups

SRT Solutions strongly supports the local user groups.  We believe that enabling developers to connect with one another and be exposed to different technologies provides a navigable path through a field where technology changes very quickly.  This is good for our employees as well as for the community in general.  The following is a description of some of the area user groups (there are more!).  All of these meetings are free and open to the public.

Ann Arbor Computer Society

The Ann Arbor Computer Society (http://www.computersociety.org) was started in 1993 by a group of developers interested in keeping the community vibrant.  The meeting topics are not specific to any technology.  The AACS meets at SRT Solutions on the first Wednesday of the month at 6:00 pm.  Pizza is provided.

 

The next AACS meeting is on December 5th, when Kevin DuBois will be presenting on the latest release of Ubuntu Linux: what is new, what is old and general linux desktop things.

Ann Arbor .NET Developers Group

The Ann Arbor .NET Developer Group (http://www.aadnd.org) was organized in 2006 for developers to get together and discuss .NET-related topics.  Previously, people went to Northwest Ohio or Southfield for meetings, and Ann Arbor provided a location in between.  The AADND group meets at SRT Solutions on the second Wednesday of the month at 6 pm.  An introductory level presentation kicks off the meeting, then pizza is served, followed by a more in-depth presentation.

 

The next AADND meeting is on December 12, when Aydin Akcasu will discuss Wii remote programming.

Ann Arbor Java User Group

The Ann Arbor Java User Group (http://www.aajug.org) is one of the Top 20 JUGS in the US, by size.  Meeting size has been fairly small in recent years, but there is a concerted effort to harness the size of the group to build that back up again.  Several talks in 2007 brought in large groups of people.  The AAJUG meets at Washtenaw Community College.  They are moving their meeting date around to try to avoid conflicts with other meetings, so the best source for information is on their website.

 

The next AAJUG meeting is on November 27 at Zattoo (www.zattoo.com), where food and beverages will be served.  The meeting will start at 6:00 pm.

 

Michigan Python Users Group

The Michigan Python User Group (http://groups.google.com/michipug) is a small, dedicated group of developers that enjoy talking about the Python programming language.  Python, a dynamically yet strongly typed language, is interpreted.  Its strength lies in its readability and the many packages (libraries) that are available for it.  The MichiPUG group meets at the SRT Solutions on the first Thursday of each month at 7:00 pm.

 

The next MichiPUG meeting is on December 6th.

Ruby User Group

The Southeast Michigan Ruby User Group (http://wiki.rubymi.org) is for enthusiasts of the Ruby language who live in Southeastern Michigan.  In addition to the presentation, each meeting includes a User Group challenge.  The Ruby User Group meets at the University of Michigan North Campus, 1200 EECS on the first Monday of the month at 7:00 pm.

 

The next Ruby User Group meeting is on December 3.

 

Join us for a discussion of software topics

Posted by wwagner | with no comments
Filed under: