Posted: December 24th, 2011 | Author: Matt Ruma | Filed under: Uncategorized | 1 Comment »
I owned my own custom software development shop, Creative Logic, for eight years, prior to joining the Epitec Group in 2010.
Running my own business had plenty of ups and downs and in the end I decided that I had given it a fair shake and was ready to “go corporate.” My personal ambitions as a business owner needed to take a back seat to other, more important, areas of my life, like my family. It wasn’t an easy decision, but it was the right decision.

My family, the reason behind my decisions
Someday I’ll write a post that explains in more detail the reasons why I felt compelled to “go corporate.”
The Epitec Group had been a customer of mine for almost eight years up to that point, a great customer I might add. Being on the outside, looking in, I knew that if I ever joined the corporate ranks again; it would be with a company like the Epitec Group.
I liked their mission statement, their vision and their values, and what was most important to me, is that these weren’t just “words” on a page, these were words that the Epitec Group believed in, and followed, so much so, that it was ingrained into the company’s culture.
I like their people; I liked the ownership, the management, the sales team and yes, even the recruiters.
I liked that they were driven by processes and procedures, ensuring that that would continue to be successful because they had developed the right formula.
I like that they were not afraid of change when times dictated, which was important to me, as I think of myself as an agent of change.
Just because I was no longer a business owner, didn’t mean I wasn’t still an entrepreneur. If I was going to “go corporate” I needed to be part of a company that would embrace my inner entrepreneur. I need a company that would allow me to passionately contribute and innovate. I needed to be part of a company that would exercise the entire breadth of my skill set, to some degree. I also wanted to be part of a company that was like a family … something I was never able to succeed at on my own.
This past week we had our 2012 company kick-off, where we reviewed our goals for the previous year, our objectives for the coming year and our theme, which was BE212. The enthusiasm and excitement surrounding the kick-off is what really got me thinking about my decision of leaving the world of business owner and joining the corporate ranks. It was inspiring to see everyone excited at the opportunity to contribute to the continued growth of the company.
Have you ever heard that phrase, “Burn the ships?”
In 1519 Spanish Conquistador Hernando Cortez landed on the shores of Mexico in the Yucatan. He convinced a combined force of soldiers and sailors to join him in his quest to go after a greatest treasure in this distant land. They sailed on 11 ships and landed in a country that was control by a very large and powerful empire, the Aztecs.
Could it be possible for a small band of men to battle a nation and win? Cortez made a command decision that might have confused his men, he ordered them to, “Burn the ships.” His men refused at first and he gave the orders again and declared, “If we are going home we are going home in their ships.” Without an option to fail, to retreat, to not stay committed to their purpose, history reveals that in fact they did win.1
Almost two years later, I can look back, and without a doubt, say I made the right decision for myself and my family.

Me (far left) with the management team for our 2012 company kick-off
I just finished my 2010 tax statements for Creative Logic, which turns out to be the last step in officially closing Creative Logic down … It’s time to “burn the ships.” No turning back, I’m committed. This is that path that I have chosen, this is the path that I have enjoyed walking for the past couple of years and will continue to do so.
I looked forward to another exciting year with the Epitec Group servicing our customers, our consultants, our employees, our partners and our community!
In my next post I’ll talk about our company kick-off, without giving away any secrets, what we did, what we are doing, what we are going to do, and oh, the scavenger hunt!
1 http://toolstolife.com/articles/Burn-the-Ships-467:
Posted: November 3rd, 2011 | Author: Matt Ruma | Filed under: Software Development, Speaking | No Comments »
This past Saturday (Oct 29th) I attended the Ann Arbor Day of .NET at Washtenaw Community College.
I want to thank Jason Follas, Jay Harris and Scott Zischerk, the organizers, for making the Ann Arbor Day of .NET such a success! Also thanks to the sponsors, Telerik, JetBrains, TechSmith, Infragistics and DevExpress, for their support and all the free goodies! Lastly, thanks to the speakers and everyone that attended!
It was great to see friends, and finally meet friends face-to-face that I follow on Twitter, e.g. Sarah Dutkiewicz. I find the more I am involved in the developer community the more I enjoy these events, and events like CodeMash, as I get the opportunity to get to know my peers, and make some new friends.
There were (5) tracks for the day: Cloud, Frameworks and Platforms, Soft Skills, Tools and Mobile, which amounted to over 20 sessions. It was a fantastic line-up of awesome topics with awesome speakers!
I attend quite a few conferences each year, but this conference was a bit different for me … as this was the first time I was going to be presenting.
A couple months back I presented a Lighting Talk to the Great Lakes .NET User Group (MIGANG) on Sucking Less. This was my first presentation to a group of my peers, but it only lasted 10 minutes. This time I was going to have to speak for almost an hour, and on top of that, entertain questions at the end.
I was very nervous, but received some excellent advice from David Giard and Jeff McWherter, such as:
- Just do it! If you want to start speaking then start. If you want to be a better speaker then keep speaking.
- The audience is forgiving, if you make mistake, move on, and don’t get bogged down with a botched demonstration.
- If you are asked a question that you don’t know the answer to or one that is outside of the scope of the talk just let the person know you are available to answer that question afterwards … you want to focus on the questions that are relevant to the talk and ones that you can answer.
- Your first couple of times presenting, you’ll spend more time working on your presentation, then enjoying other sessions … and that is alright.
- Adjust your presentation to the people. If only your mom, dad and few other show up to listen to you, then rearrange the room (if possible) to a more intimate setting.
- Be prepared, for a new presenter or new presentation, you won’t be able to enjoy other sessions, like you use to. You’ll be focused on making tweaks to your presentation, practicing, and in my case, dealing with first-time jitters.
- Practice, practice and practice.
This was excellent advice and was much appreciated. It helped me out immensely with my first presentation.
My time to present finally rolled around … I felt ready. I was up against some solid sessions and speakers, sessions that given the choice between mine and these other sessions, I would have attended the other sessions. The other sessions were “Developing Apps for Windows 8” by Susan Anspaugh-Yount and Stone Soup or Creating a Culture of Change by James Bender.
My presentation was going to discuss the importance of patterns in software development; my title – and the one that my presentation was submitted under – was simply going to be the “Importance of Patterns.” I usually like things with a bit more of an edge, but was pressed for time, and this would work.
My abstract for the presentation was:
Patterns can be found in all areas of your life, from creating grocery lists to crafting robust software applications. This session will introduce you to the concept of patterns, their history and benefits. We’ll look at some different uses of patterns in crafting software applications, including design patterns, architectural patterns and user interface design patterns. We’ll chase a rabbit and look at where patterns fail or might not be used correctly. You’ll leave this session able to identify patterns and successfully use them in all facets of the design and construction of software applications.
Prior to my session starting I changed the title to “I <3 Patterns.” This better represented my passion for being the best software developer I can be and how I think patterns can help us become better software developers.
The session before mine, “Develop IT: Intro to PowerShell” by Sarah Dutkiewicz, was wrapping up and people began filing out. I started setting my laptop up, organizing my note cards and was ready to go … unfortunately I still had to wait for 10 minutes, until my session “officially” started.
To my surprise, the room was packed! My mom and dad must have forgotten the date, because they were noticeably absent. Time seemed to move to a crawl, 9 minutes to go, 8 minutes to go, it was taking forever … and the silence was a bit unnerving to my already frazzled nerves.
So I started to show family photos, why not! Something to break the ice, and thankfully it did. Someone asked if “there were twins somewhere in the pictures”, to which I chuckled and answered “no.” That killed another 5 minutes and I asked the audience if they minded getting started early … which they didn’t … see we got things underway 5 minutes early… I had a lot of information to share, and no use waiting any longer, everyone was ready!
I gave a short introduction of myself and let everyone know that I had been writing code since the Commodore 64. This comment brought smiles, to both young and old … you could see the nostalgia wash over the older attendees while younger attendees were thinking “this dude is way old!”
I thought the presentation went well. Once I started the information just flowed and people seemed engaged.
The crowd was awesome! Great mix of people! Very attentive, interested and engaged … I was very thankful. The time flew by … and it was over. Unfortunately I didn’t get a chance to ask or answer any questions as closing ceremonies were about to begin.
I did overhear some comments people were saying as they left, the best one was, “I’m glad my team attended this session … this is going to help us [develop better software].” That made my day! Someone walked out of the session having learned something! It was an awesome feeling!
With all that being said, I do have some things I need to improve on, those being:
- Save some time at the end for questions and answers. If I had spent more time practicing I would have had the timing down better.
- Spruce up the slides … just a bit. Little more color and maybe a relevant picture or two. My slides were just black text on a white background.
- When switching from section to section, in my slides, I’m going to add all the sections, and highlight the current section.
- This way people know where we went and where we are going.
- There was a lot of information presented, and I think this will help “recap” during the presentation as opposed to just the end.
- Ask for feedback. I wish I would have had a short questionnaire for people to fill out so I could get some feedback on what I needed to work on.
- Practice, practice and practice.
Thanks to everyone that attended my session, I was honored that you took time out of your busy day to sit and listen to this geek rattle off about his love of patterns for almost an hour! It was very much appreciated!
If you attended my session and have any feedback, please send it to me at mattruma@gmail.com.
Thanks and God bless!
You can find the slide deck at http://www.slideshare.net/raz0rf1sh/i-lt3-patterns.
Posted: August 18th, 2011 | Author: Matt Ruma | Filed under: Software Development | 2 Comments »
Here is the summary of my first lightning talk at the Great Lakes Area .NET Users Group … if you saw the talk I would really appreciate any feedback or insight you might have.
If I had to sum up my goal for each day, it would be simple, I just want to suck less than I did yesterday.
I’d like to share with you how I try to suck less by tapping that same creative process that I use to write awesome code and channel it into making usable and appealing user experience.
Here is the poster child for a poor user experience, FileMakerPro.
Looking at this user experience one can not help but wonder, what was this person was thinking … or better yet, not thinking!
Is this just some cruel trick played by God … does He give developers the ability to create awesome code and then limit, or leave out entirely, the ability to create an equally awesome user experience?
I’m going to assume that there is some awesome code behind FileMakerPro … but for some reason that awesomeness failed to translate to the user experience.
The next version of FileMakerPro didn’t look much better, but it did allow skinning … now you could have variations on the ugly user experience.
Every day, we developers think of creative solutions and write creative code to solve problems, but for many of us, that creative process seems to disappear when we get to the user experience. Why is that? Does it really have to be like this?
Perhaps a better understanding of creativity and the creative process will shed some light on this.
A lot of the material I am about to discuss comes from a video series entitled “Everything is a Remix”, by Kirby.
The act of creation is surrounded by a variety of myths. One person might think that creativity comes via inspiration, another might think creativity is a product of geniuses.
The truth is … creativity isn’t magical: it’s just a process.

Copying
The Creative Process has it’s roots in something that is scorn and often misunderstood, even though it gives us so much … and that is copying.
We learn by copying. We can’t introduce anything new until we’re fluent in the language of our domain, and we do that best through emulation.
I’m teaching my son how to program an introduction to python book. All of his lessons involve typing in a program found in the book. It is by copying that he is beginning to understand statements like print or for loops.
If you think about it all artists spend the beginning years of the careers producing derivative work.
- Bob Dylan’s first album contained eleven cover songs.
- Richard Pryor began his stand-up career doing a not-very-good imitation of Bill Cosby.
Nobody starts out original. We need copying to build a foundation of knowledge and understanding.
Transforming
After we’ve grounded ourselves in the fundamentals through copying, it’s then possible to create something new through transformation. Taking an idea and creating variations. This is time-consuming tinkering but it can eventually produce a breakthrough.
- Christopher Sholes’ modeled his typewriter keyboard on a piano. This design slowly evolved over five years into the QWERTY layout we still use today.
- And Thomas Edison didn’t invent the light bulb — his first patent was “Improvement in Electric Lamps“ — but he did produce the first commercially viable bulb… after trying 6,000 different materials for the filament.
These are all major advances, but they’re not original ideas so much as tipping points in a continuous line of invention by many different people.
Combining
But the most dramatic results can happen when ideas are combined. By connecting ideas together creative leaps can be made, producing some of history’s biggest breakthroughs.
- Henry Ford and The Ford Motor Company didn’t invent the assembly line, interchangeable parts or even the automobile itself. But they combined all these elements in 1908 to produce the first mass market car, the Model T.
- And the Internet slowly grew over several decades as networks and protocols merged. It finally hit critical mass in 1991 when Tim Berners-Lee added the World Wide Web.
It’s just that simple! It’s just a process made up of three pieces: copying, transforming, and combining.
Story Time
And the perfect illustration of the creative process at work is the story of the personal computer.
It all started with a company called Xerox.
Xerox invented the first mouse-driven system computer with a graphical user interface that mimicked a desktop. It had documents, files, folders, menus and scroll-bars.
Steve Jobs visited Xerox to see this new computer. Jobs was quickly convinced that all future computers would use a graphical user interface, and copied every single one of the aforementioned features into the Lisa, and later into the Mac.
But it was the first combination it incorporated that set the Mac on a path towards long-term success.
Apple aimed to merge the computer with the household appliance, like a TV or a stereo. Up to this point computers were intended for professional use. The Mac was going to be for the home and this produced a cascade of transformations.
- Apple removed one of the buttons on the mouse to make its novel pointing device less confusing.
- Then they added the double-click for opening files.
- The Mac also let you drag icons around and move and resize windows.
- The Mac introduced the menu bar, which stayed in the same place no matter what you were doing.
- The Mac added the trash can to make deleting files more intuitive and less nerve-wracking.
All features missing from Xerox’s computer.
And lastly, through compromise and clever engineering Apple managed to pare down the Mac’s price to $2,500, more that $15,000 cheaper than Xerox’s computer.
This Is How We Do It
We now understand that creativity is just a process. It’s the same process that we use to write our code, and it can be the same process we use to create user experiences that suck less.
I’m going to share with you my teams process for designing user interfaces, that is very similar to the creative process we just discussed, it just breaks out the processes in a few more steps.
Trolling
We create a virtual pile of information.
We sign up for every web application that offers a free account, just to look at how these companies are designing their use experience, and take screen shots. For those applications that don’t offer a free account we just search for screenshots of their application.
We check out websites like feedmyapp.com or web2go.com that have a library of web applications.
We might spend time on a sites like themeforest.net, ui-patterns.com, smashingmagazine.com looking at templates, design patterns and tips in general.
Isolating
Now it’s time to sift through this virtual pile of information.
We identify graphic elements that we like, maybe we like how Product X displays their menu, or how Product Y handles searching.
We identify a design pattern on how to collect comments in your web application.
We identify an icon library that matches the graphic elements gathered above.
We create a color scheme based on a single color, from which we can create a color wheel of complementary colors.
Borrowing
Now that we know what we want to do we now need to figure out to do it.
If it’s a web application, we’re looking at the HTML and the style sheets. If it’s a Windows application we’ll download code samples look at the XAML.
For one project we had to mimic Google dashboard … including the rotating image based on the time of the day. We spent a lot of time looking at how Google implemented this through the HTML and stylesheets and then created our own variation.
Buying
Sometimes pieces are still missing so we have to purchase them.
There may be a particular icon library we just got to have or a graphic from istockphoto.com or a custom logo from 99designs.com. If we found a template on themeforest.net that we want to model our application after we will purchase it.
Building
Once we have all the graphical elements of the design we then start building out the application. We might leverage the layout of basecamphq.com, with some design elements for zendesk.com, sprinkled with some icons we downloaded from iconpot.com and lastly, some of our own secret sauce.
Proving
This where we take the user experience we built and put it in front of the user. A few more rounds of transformations and combinations and our product is ready for release.
It’s just that easy … no magic … just following the process.
Real World Example
This is our internal project management software … when we first are coding it, we leave the user interface pretty bland, so it forces us to focus on the functionality.
After looking at a variety of web applications, we copied, transformed and combined to get our final result.

By leveraging the same process we use to create awesome code we can create and awesome user experience … just follow the process … and we can all suck less!
Here is a list of resources that I use to help me create awesome user experiences:
Icons
Inspiration
Best Practices
God bless and keep coding!
Posted: August 18th, 2011 | Author: Matt Ruma | Filed under: Software Development | No Comments »
Yesterday I presented my first lightning talk at the Great Lakes Area .Net User Group meeting.
What is a lightning talk? It’s just a ten minute talk prior to the main speaker. It can be a wide array of topics from demonstrating a development tool, new programming language or on a particular soft skill.
I was extremely nervous, as it was the first time I was speaking in front of a group of my peers.
I had scrapped my original topic two days prior to the meeting and was scrambling to complete my new – and hopefully improved – talk, as well as practice it.
I took advantage of my team and asked them to sit through a preview of my talk … more than once. With their help I was able to streamline my talk, making sure it had a beginning, middle and end, as my wife would say, and cut out unnecessary words.
I was ready for my big – at least in my eyes – debut.
I think the talk went well, my delivery was more like reading than speaking, something I knew about and need to work on. I bobbled my conclusion … further practice would have helped. Other than that, I felt good afterwards. The Twitter feed was kind, and I got a good response. It was a lot of fun – especially now that it is over – and a great opportunity to share some of my experiences with my peers.
It is something I would recommend every developer to do … at least once. I’m thinking about approaching other user groups in the area to do the same talk just so I can get more practice … and suck less!
What did I talk about? I’ll share that in my next post.
Posted: July 25th, 2011 | Author: Matt Ruma | Filed under: Software Development | No Comments »
It is the criticism that we are subjected to in life that makes us better people. Think about it, if all anyone said to us was how great we were, we would have no need for personal improvement! This simple truth applies to any criticism that we encounter in our lives, including our beloved developer conferences.
Recently I attended the Lansing Day of .NET 2011, affectionately referred to as LDODN. The LDODN is one of many local developer conferences and user groups that I attend throughout the year.
I’d like to share with you my thoughts of the good, the bad and the ugly of the LDODN. I’ll then share a couple of ideas (my two cents) on how to improve the LDODN, and any DODN conference, for that matter.
The Good
Sessions started on time and finished on time. There were plenty of seats in the sessions and plenty of leg room. The roster of speakers was impressive. The coffee was hot and the sodas were cold. There were plenty of prizes given away, including an iPad – I won a book on Entity Framework.
The end of the day activities included a yummy barbecue, beer and a dunk tank – things I have never experienced before at a developer conference. Dennis Burton, and crew, organized a fantastic conference as far as location, community, prizes, food and fun went! Great job!

The Bad
While the speaker credentials were impressive, I was a bit concerned about the content of the sessions. There seemed to be a lot of soft skills content, and not a lot of .NET content, and the .NET content that was offered was entry-level.
Let’s face it, I am a Microsoft guy, I have drank the Microsoft Kool-Aid by the buckets. I cut my programming teeth on VB6 and all of my current development is in Microsoft.NET. Of the 12 sessions, I counted only 5 that were .NET related! Less than half of the conference was .NET related!
Don’t get me wrong, I love soft skills. I love attending conferences like CodeMash, Agile and Beyond, and the Kalamazoo X Conference – which I was bummed to have missed this year. I love entry-level sessions, at CodeMash this past year I did the Ruby koans with the EdgeCase guys, and it was awesome!
Was my expectation misplaced thinking that the majority, if not all, of the sessions should revolve around .NET?
Was there really not enough .NET content to fill a whole day?
Again, I was a little bit concerned.
The Ugly
Things started to get even uglier when I began attending the sessions.
The soft skill sessions, I attended, were, well “soft”. Not much substance. I think I can wrap them up in a couple of phrases, like “be nice” and “be agile”.
The technical sessions, of which two were .NET related, were solid, both from a content and speaker viewpoint, but were still academic.
For the first time in my life, I walked away from a conference having learned very little.
Ideas for Improvement
I don’t like to be just a problem finder; I like to be a solution provider. What would I do to make the DODN conferences better?
Remember the name of the conference is “Day of .NET”, and let this and this alone, drive the content of the sessions.
I love being a .NET developer, I love C#, VB.NET, ASP.NET MVC, Windows Forms, Web Forms, WPF, WF, WCF and whatever other W-? Microsoft will come out with, and on and on we could go!
There is plenty of .NET to fill an entire day, if not an entire month!
Let’s get some “meat” into some of these sessions, introductory and beginner sessions are great, but it would have been nice to have a few advanced sessions.
All of the speakers at the conference were fantastic, but it seems like they are handcuffed into keeping their talks fairly basic.
When Mike Eaton, in his talk on WPF, started talking about using Caliburn Micro in WPF, I was excited! This was something new! Something I hadn’t seen before … but time quickly ran out. I could have sat through another entire hour just to learn more!
What do I think some cool sessions could have been?
- Create a WP7 application in an hour
- Create a WPF application in an hour
- Create an ASP.NET MVC application in an hour
- Using NHibernate with ASP.NET MVC
- Using MSBuild to automate your build process
- Create a RESTful API using WCF
- Adding Authentication to a RESTful API using WCF
- Using MVVM in your WPF or Silverlight application
- Working with the Office Object Model
- Using WF in a real-world application
- Using the ChartHelper in ASP.NET MVC
- Overview of the Silverlight Toolkit
- Review of .NET controls from Telerik, DevExpress, and more
- Using the database tools in Visual Studio
- Extending Visual Studio
- Tips and ShortCuts for using Visual Studio
- Write better code in Visual Studio using Resharper and/or Code Rush
- Why does LightSwitch suck
- Introduction to the Micro.NET framework
- What is NUGET and/or Create a NUGET package
On and on we could go … all sessions could easily be .NET focused and a variety of different skill levels.
Wrapping Things Up
I appreciate all the effort that went into putting this conference together. I enjoyed time spent with friends and the developer community in general. I enjoyed meeting new friends. I was just disappointed with the overall content of the sessions.
Here’s to hoping the organizers can put the “.NET” back in the “Day of .NET”.