Looking for a Website/Software Developer

We have an open position and are looking for someone interested in joining our team.  We work with several different technologies and types of projects.  If you are interested, please send a resume and cover letter to solutions@sumtech.biz. We look forward to meeting you.

Website/Software Developer @ SumTech Business Solutions, LLC

Reports to: Senior software engineer, Brian Dorgan
Located in: Pullman, WA
Wages: DOE
Job Purpose
The software engineer manages web application development and maintenance by assisting in planning and completion of features, tasks, debugging, and routine update management.
Primary Objectives
  • Develop quality software solutions that are valuable to the client
  • Build reasonable project scopes and timelines such that the client and SumTech benefit
  • Deliver software in a timely manner based on the agreed-upon scope and timeline
  • Build skills and knowledge to benefit personal growth as well as the growth of SumTech
Key Responsibilities
  • Complete features, tasks, and debugging on web application projects
  • Update project management software based on planning and work progress for projects
  • Use version control software to track changes and work simultaneously on projects with other developers
  • Update company wiki knowledge base

Other Responsibilities

  • Research new technologies and techniques for use in our software development process
  • Build custom templates and plugins for content management system (CMS) websites
  • Update WordPress websites
Required Knowledge, Skills, and Abilities
  • Demonstrated ability to work with HTML, CSS, and JavaScript
  • Demonstrated ability to work with at least one server-side programming language, e.g., C#, VB, PHP, Python, etc.
  • Demonstrated ability to work with at least one relational database, e.g., SQL Server, MySQL, MS Access, etc.
Desired Knowledge, Skills, and Abilities
  • Demonstrated ability to work in the MVC development model
  • Familiarity with source control software such as Git
  • Ability to develop database and code models
  • Familiarity with practical clean code practices
Education and Experience
Degree in one of the following areas, or equivalent experience:
  • Software Engineering
  • Management Information Systems
  • Computer Science

Infallible I.Q. Test

A friend of mine showed me this list of questions.  I quite enjoy riddles like these.  See if you can match the correct term at the bottom with each phrase or question.

  1. What Noah built
  2. An article for serving ice cream
  3. What a bloodhound does when pursuing a woman
  4. An expression to represent the loss of a parrot
  5. An appropriate title for a knight named Koll
  6. A nearly sunburned man
  7. A tall coffee pot in use
  8. What one does when it rains
  9. A small dog sitting on a refrigerator
  10. What a boy does on the lake when his motor won’t run
  11. What do you call a person who wrote for an Inn?
  12. What the captain said when the boat was bombed?
  13. What a little acorn says when it grows up
  14. What one does to trees that are in the way
  15. What you do if you have needles and yarn
  16. Can George Washington become a country?

Here are the possible terms:

  • perpendicular
  • inscribe
  • decagon
  • center
  • hypotenuse
  • cosecant
  • coincide
  • axiom
  • polygon
  • tangent
  • cone
  • geometry
  • circle
  • are
  • unit
  • hero

Hard Drive Space

So, I’m having some new issues with hardware: hard-drive space:
  • My 2 x 100GB SSD hard-drive space is running out.
  • I have multiple machines (desktop, laptop. macbook, iPad) for which I want to share files and work on similar projects.
  • I want to have more people work with me on projects, so I need to share files with others easily
What do I do?  Here are some options I found:

Google Drive

This is an excellent place for me to place files I want to share with others.  We can edit files simultaneously, which I have seen work magnificently in several situations.
I use this application for any collaborative documents (or spreadsheets, presentations, etc.) I need built.  Using Google Drive on my iPad has not been as convenient.  For my own notes, I use Evernote, where I can easily sort and manage my documents on many machines.


Dropbox has been a great application to sync my frequently used files between all my machines.  Once any of my machines gets only, Dropbox makes sure I have the current version of these files, and I don’t have to worry about “Did I make those changes here or there?”.  This works well for small files I need to be synced routinely, or when I’m working on a project and don’t want to use my USB stick to transfer files between my machines.
I will continue to use Dropbox to sync frequently accessed files that I keep around for a while.  This week I purchased a pro account to Dropbox.  I will store documents and working files here.  Soon, I will be able to access my files from anywhere, but it will take about 2 weeks to upload everything to their server.  Wow!


GitHub is a great source control location to store projects I am currently developing.  I currently have the Micro plan for $7/month which allows me to store 5 repositories.
I am often working on 10+ projects in a given month nowadays.  I need somewhere I can store several projects.  I would even like to store my past projects as well.  Then I could simply download the projects I am currently working on, and my versions would automatically be saved for me.  Also, I could allow others access to the same projects and allow Git to merge our separate changes together.

In writing this blog, I found a list of hosted Git repositories, and read a stackoverflow article which lead me to choose bitbucket, a free alternative to GitHub.  bitbucket charges per user rather than per repository, which I believe will be much more beneficial for my business.  GitHub’s price structure is excellent for a large team focused on a few projects, especially large open-source projects.

Now Hiring!

The Time has Come

I am excited to enter a new phase of business!  I am now registered with the state to hire employees!

My business has been steadily growing since I started 4 years ago.  I started out part-time with side projects here and there.  Then I started working more consistently on small projects.  Last year landed a couple larger projects lasting months and years.  Today, I have so much work I realize I am not capable of completing everything myself.

What’s Next

I am looking forward to building more connections with web designers and web developers in the area who want to work together on projects.  I am very appreciative of those people I already collaborate with, and look forward to discovering who else would like to join with me.

If anybody is interested in subcontract work, employee work, or hiring my business to do work, please send me an email or give me a call!

Follow-Up to Evaluating My Hardware Situation

So, I wrote a post almost a month ago to help me determine what hardware to buy for my office.  Well, now I have made my major purchases and am very pleased with the results.  Here is what is new for my business:

+16 GB RAM for my Desktop

OK, so maybe I don’t really need 8+16=24GB RAM at the moment, but I am really happy to have gotten rid of the “not enough memory” type warnings.  And when I begin doing more virtualization I will be prepared!

iPad (3rd-Generation)

This has been an excellent investment!  I don’t need to lug my giant backpack with my computer, power chord, mouse, Bible, and other reading material anymore.  I can simply grab my shoulder bag with the iPad and keyboard, and off I go.  I am very pleased with Evernote, too.  I can take notes during meetings, organize these notes, and later transfer all my TODOs to my project management software at the end of the day.
Having a tablet has been amazing.  I don’t know whether getting an iPad is necessarily better than an Android tablet, but I do feel cool…

MacBook Pro

This was at the bottom of my list of items to purchase since I don’t really need a Mac.  Yet I had a friend selling his old 2009 MacBook Pro with upgraded memory so he could purchase a Windows laptop.  I decided to go for it.  Timing-wise, this was great to have while my old laptop was out of commission and I had not yet received my new ThinkPad.
I have a lot to learn about running a Mac.  It is very different than my Windows machines.  I am looking forward to learning what settings and features the Mac has.  Maybe I’ll even find some scenarios where I will use a Mac exclusively, but for now I am leaving this machine for cross-platform and cross-browser website testing.

Lenovo ThinkPad T530

I am very excited for this machine!  The machine has an i7 processor, 8GB RAM, 100GB SSD, and a wide 15.6″ display.  And the cherry on top is a fingerprint reader so I can login without typing my ridiculously long password.  Also, the speakers are amazing (at least when compared to the puny sound coming out of my old ThinkPad SL500).


Now I know I have the equipment I need and then some.  I have already made use of all these purchases, and I know the investments are not going to waste.  Business is growing, and now I’m feeling even more prepared.  I still have other dreams for my office (two more large monitors to replace my three smaller monitors), but those are definitely not needed for now.  I’m doing pretty well with what I have for now.
Thank You Father God for Your provisions.  Give me wisdom and guidance to steward your provisions well and to make use of what you set before me.

Evaluating My Hardware Situation

My backpack has been dropped a couple too many times with my laptop in it.  Now the hinge to my laptop monitor is busted and may only have another month or two before another fall fully incapacitates my mobile computer.

What now?  Do I get a newer laptop?  A Macbook?  A tablet?  If a tablet, do I get an iPad?  Android?  Windows 7?  Wait for Windows 8?  Oh, the options are so numerous!

So, in order to answer this question, I decided to look at the bigger picture: What hardware to I need to run my business?  I’ve spent lots of time evaluating software, since that is what I focus on most, but not as much time on what hardware I need.  The rest of this blog post is my attempt to evaluate this question for my business.


  1. Develop software using Microsoft products, e.g., Visual Studio, SQL Server Management Studio, etc.  I love the tools Microsoft has made available!
  2. Test operating systems and application configurations.  I would like to be able to test Windows 8, Windows 9 when it comes out, or different Linux systems.  Also, I need to test applications on Windows XP or Windows Vista.  Also, I build and test some websites on Linux servers.
  3. Use source control for version tracking and making application development accessible to multiple machines.  This will also be very useful when I hire other people to help me on projects.
  4. Remote desktop  to my main computer when travelling or meeting clients.
  5. Automatic backup of current documents and general files stored for different projects.  This is useful in case a hard drive fails or some other catastrophic event.
  6. Periodic backups of files.  I keep several backups in case I accidentally delete a file and want to get back to it a couple months later.  I have yet to actually need this since I started, but I have definitely had this issue one time or another in the past.
  7. Test websites in Mac browsers. &ngsp;I actually had an instance this year where there was a bug in a Mac browser, but the PC equivalent did not see the same bug until two weeks later.  This was very hard to troubleshoot on my PC!
  8. Develop applications while travelling or while with clients.  Also while away form my office, I will need to present development websites to clients and manage my projects using OnTime (add features, view burn-down charts, etc.)

Hardware Solutions

  1. My current desktop machine running Microsoft Windows works great (Intel i7, 8GB RAM, 2 x 120GB SSD, 2 x GeForce GTX 550 Ti, etc.)
  2. Virtualization would be a good solution here.  I will need a larger hard drive (1-2TB) to store the virtual machines and more memory.  On the software end, I see two main possibilities: Microsoft HyperV and VMWare Player.  I will likely use VMWare because it has been around longer (hopefully more mature), appears to allow more use of USB, CD burning, etc., and I have already a little more familiear with VMWare Player.
  3. GitHub is my likely candidate right now.  I enjoy using Git and look forward to new tools they will be coming out with for Windows.  Now I need to think through what size of plan will work best.
  4. I am having issues using RDC since I moved my office down town.  The step that seems to be an issue with the router given to us by our internet provider.  I may have to get another router so that I have more control of the firewall.  Hopefully that will smooth out this issue.
  5. Carbonite has been an excellent solution!
  6. I use a couple 1-2TB hard drives.  I store one away from my office  in case a catastrophic event occurs to destroy the backup in my office, and I rotate them regularly.
  7. I may actually get a Macbook.  I wonder if an iPad would be good enough, though.  Getting both may be most appropriate, since their browser capabilities are optimized differently.
  8. Again, I need a mobile machine running Microsoft Windows with the power to run software development applications.  I’m looking forward to see the Microsoft Surface come out with Windows 8!  Until then, I may need to find something different.  I am partial of Lenovo ThinkPads, which I have enjoyed using so far.

Shopping List

So, I think these are the items I will need to purchase next:
  • New laptop running Microsoft Windows
  • New router (for the main office)
  • Another large hard drive (for virtualization)
  • More memory (for virtualization)
  • A paid account to GitHub
  • Android tablet (for fun)
  • Used Macbook and/or iPad if found on a good deal
  • Maybe the Surface when it comes out

Opening SQL Server Compact Files

Today I am taking a look at some code someone else developed.  They used SQL Server Compact database files (.sdf), which I have read about but never personally used.  I went on a little journey to simply open the file and see what is inside.

Of course, my first assumption was, “Use SQL Server Management Studio.”  Alas, the file would not open in neither SSMS 2008R2 nor SSMS 2010.  After Googling for a little bit, I realized Visual Studio was the place to go.  All I needed to do was install the SQL Server Compact Toolbox:

  • Open Visual Studio 2010
  • Click Tools >> Extension Manager
  • Click Online Gallery and search for “SQL Server Compact”
  • Click “SQL Server Compact Toolbox” and Download
Then, to open the .sdf file, I had to
  • Go to the Server Explorer section
  • Add a new connection
  • Change the data source to Microsoft SQL Server Compact X.X (in my case 3.5 worked)
  • Find the database using “Browse” and test the connection
And there it was!  Now I can explore the data tables as I expected to.  Now to see how this program works…

Beginning a New Year

Today I am updating my website.  There aren’t any major design changes, but I moved the infrastructure from ASP.NET WebForms to ASP.NET MVC.  I also did some automation for creating my project summary pages.  This will help me keep this list more up to date.

In my updating, I decided to check out my blog and see what I did in 2011… hmm… 0 entries is not much for 2011.  How am I supposed to share how my business is doing if I don’t talk?  This year I will do better.  My personal challenge is to complete at least 12 entries in 2012.

I updated content on my page, and added a new “FAQs” page.  Are there any other good questions I should ask/answer?  Let me know.  Here is what I currently have written up:

Why did you name your business “SumTech”?
To me, “Sum” represents the words “Summary” and “Summation”. When solving a problem, I try to summarize the big picture of the situation, problem, or challenge at hand. This helps me build a purpose and vision for the solution I am developing, which keeps my projects and decisions focused where they need to be. Then I can break up the project into definable and manageable features and tasks, which when added (or summed) together produce the final eloquent solution.

“Tech” represents my interest in working with technology to build these solutions.

What are your rates?
I do not post rates because there are several factors I use to build quotes, such as the technology(ies) used, the particular type of problem, the monetary benefit to the company/group, etc.

My first consultation is always free, up to 2 hours. During this time we can meet, evaluate the situation, determine some potential solutions, and plan some next steps.

Depending on what is mutually beneficial for the client and myself, I can charge either by the hour or per project. For larger projects choosing the latter method, defined milestones are used to allow payment through the duration of the project.

Your formal education is not in computer science. How did you change careers?
The only formal education I have in programming is a CS 112 course my freshman year where I learned some rudimentary basics. When I graduated with my Masters degree in chemical engineering, my wife and I loved where we were living (which does not have many opportunities for chemical engineering, except for becoming a professor), so I had to find something new. I had learned a little bit about Microsoft Access, which got me connected with some temporary hourly possitions at Washington State University working with computers and Access databases. After completing several projects, and teaching myself several technologies, I began helping other businesses and started SumTech. Eventually my business grew large enough to focus on full-time.

I do not regret leaving the engineering profession, but I do miss working with differential equations, calculating flow rates, analyzing transport phenomena, and designing heat-transfer units. Yet I have seen my education shape my problem solving strategies in incredible ways. In engineering, I learned to break big problems into small, manageable pieces, I was taught that economics is an important factor in which solution is chosen, and I saw how people relations are an important aspect of seeing a project become successful. In mathematics, I also leaned systematic ways of developing algorithms, learned how to analyze whether my approoach to a problem is valid or not, and saw how technology may be used to solve complex problems thorugh automation.

In the end, I love the work I do now. I am grateful for the opportunity I have through my business to tackle some intricate problems, help businesses and individuals, meet great people, learn tons about fascinating problems and technologies, and have a lot of fun with what I do.

Could you share a little bit about yourself?
I was born in Oregon, but was raised in Mountain Home, Idaho. I came to the Palouse in 2000 to pursue my degrees at the University of Idaho.

Here, I met my beautiful wife, who has been incredibly supportive of my pursuits. We currently have one son, who is the most adorable child ever (I realize the strong potential for bias here). We hope to have more who are just as wonderful!

When I am not working or learning new technologies, I love to spend time with my family. We are also very involved in our church, Living Faith Fellowship. Also, when I do get out of the house, I enjoy playing pool, frisbee golf, ultimate frisbee, tennis, and lots of other sports.

Do you have a blog?
I do have a blog, which can be found at blog.sumtech.biz. I try to give highlights of what I am learning about business, technologies, and the such.

What would be a good way to tip you for your excellent work?
Oh, thank you! If you are interested you could always get me something from my Amazon.com wishlist of books. I love books! And I love learning! My wife thinks it is funny that her husband reads textbooks for fun. It’s true. I really do read textbooks for fun, especially when they are written by good authors who express more than facts, but also impart wisdom and experience.

Unit Testing while using Entity Framework

I have been recommended to use Entity Framework (EF) instead of LINQ to SQL while building .NET applications. So I pulled out some reference materials, learned the beginning concepts of EF, and started to build an application.

Then I started trying to figure out how to do Unit Testing and Test Driven Development (TDD) while using EF.  What I had read about EF showed me how to build a SQL Server database and then have Visual Studio build the entities for me. I had to design the entire database first and then leave all the classes tied to the database, both of which are incompatible with TDD and Unit Testing.

So I started my Google search, and these are the documents I found really helpful. In the end, Unit Testing and TDD are compatible with EF!  Here is where my journey took me:

TDD and ADO.NET Entity Framework
This late 2008 posting has several people sharing their concerns about using TDD with EF, which is where I was yesterday morning.

Walkthrough: POCO Template for the Entity Framework
Feature CTP Walkthrough: POCO Templates for the Entity Framework
These articles shows how to use the  ADO.NET C# POCO Entity Generator and the Microsoft ADO.NET Entity Framework Feature Community Technology Preview 3 assembly to separate a .edmx Entity Framework file into two groups of classes: the persistence ignorant entity classes (not connected to the database), and the data context class which talks with the database.

Feature CTP Walkthrough: Code Only for the Entity Framework (Updated)

This posting illustrates how to build an EF from code only, without using Visual Studio’s automated generators.  In this process, they were able to keep the persistence ignorant entity classes separate from the database context classes.  This technique required the Microsoft ADO.NET Entity Framework Feature Community Technology Preview 3 assembly.
These articles illustrate how to practically use TDD and EF together!
Now I feel prepared to move forward using Entity Framework together with Test Driven Development methodologies!

Current Reading Materials

My library is steadily growing. Here are some summaries of what I have been reading recently, in no particular order:

Pro C# 2010 and the .NET 4 Platform by Andrew Troelsen
I realized C# is my language of choice now, so I am giving myself a more formal education on the subject.  This book is amazingly written for me.  The author gives great explanations of the programming concepts, uses code in a very informative manner, and keeps moving.  For a book that contains 1700 pages, I am very much enjoying the read.

Integrating Agile Development in the Real World by Peter Schuh
I very much appreciate this introduction to agile development.  The book is very pragmatic, and there is plenty of realism shared about how to get started with agile methodologies, what are the likely pitfalls for businesses, and how/when to partially implement different practices.  I am now sold on the concept of agile development!  I realized while reading the book that I had started trying to use certain practices, and this book helped me understand how to actually make these plans work!

The Art of Unit Testing by Roy Osherove
Unit testing is the next major concept I want to learn and incorporate.  So far, this book seems to be pretty light reading, peppered with very useful concepts for me, the beginning unit tester.  I appreciate his simplicity and useful tips/wisdom.

Agile Principles, Patterns, and Practices in C# by Robert C Martin and Micah Martin
This is a phenomenal book.  Right now I am amazed by chapter 6: A Programming Episode!  This chapter is the dialog reenactment between two programmers while building a simple bowling scorecard program.  I got to actually see how they implemented Test Driven Development, what their thought processes were, how they handled refactoring, and why they approached decisions as they did.  I am excited to keep reading more!

Fire Someone Today by Bob Pritchett
This book has many great insights about running a business.  After building his own computer software business and learning from his mistakes, the author has shared much wisdom that he has learned and been taught.  The book is an easy and fun read, his writing style is very entertaining, and I have seen many great nuggets of wisdom to learn from as I grow my own technology business.

Here are a couple other resource books that I have also been using lately:

Pro ASP.NET 3.5 in C# 2008 by Matthew MacDonald
I LOVE this book!  This book has helped me understand ASP.NET in amazing ways!  I appreciate his ability to reach deep into concepts and bring a clear explanation of what is going on, why, and how to practically implement this technology.  I refer to this book often.

Programming Microsoft LINQ by Paolo Pialorsi and Marco Russo
This is an OK book.  I do not always find what I am looking for, but I do have it, and it at least gives me a good start on what I want to know about using LINQ.