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.
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.
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.
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!
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.
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.
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