Stone Porch Consulting is born!

The stone porch of Stone Porch Consulting

This peaceful place is a main living space for my wife and I from about May through September with a few glorious days thrown in during April and October. It is a place where conversations happen, where ideas are expressed, beat up, embraced or tossed out. The conversation might be family, politics, music, art, work, the future, or just people in general. We don’t always agree and are both pretty passionate about things we care about. But, we enjoy our company together here and we deal with issues here and it is OK to disagree. We also meet and watch our neighbors and their kids from here, something we miss a lot by the end of the winter.

In this calm place where things are are always fine, it was decided to launch my own business and leave the security of a good steady paycheck. It represents something missing in the high tech world, and probably in the world at large. This porch is 100+ years old, made of hand placed, rough cut field stone. Though it needs a little love from time to time, the mortar not as resilient as the stone to rain, snow, ice, bugs, vines and moss, it is strong, solid, peaceful, enduring and beautiful. It remains so during all of the changes around it.

Your projects, my work, they are full of potholes, the unexpected, the unintended, the unwanted. Embrace it, it is the real world. But there is a calm peaceful place in which all that can happen. Hopefully you can imagine that place too.

So the name has been chosen, Stone Porch Consulting. Definitely where I want to be, and I think you will too.

Advertisements

Link to my slides and sample code for Twin Cities Code Camp 13

As promised, the sample files and slides are here. Thanks to all who attended the talk.

Speaking at the Twin Cities Code Camp

I’ll be speaking on a updated topic, Intro to Windows Workflow Foundation 4 on  Visual Studio 2012 on 10/6/2012. I did this talk in Appleton in 2010, at Day of .net, but I changed it up quite a bit. This is for code camp after all, so the emphasis will be on .. code. I think developers can get a lot of the basics on their own, so I am going to focus on those topics that workflow offers that really are difficult to do on your own. Mainly that will be long running processes that have to pause, resume at the same location and continue or escalate in the event that something doesn’t complete in time. Flow and even parallelism are pretty easy to do with plain old code these days.

Looking forward to it!

Drupal on Windows experience report

It has been over a year since I first decided to give a try to running Drupal 7 on Windows/IIS/Sql Server  instead of the long trusted LAMP platform. So how did it go? Mostly it has gone well, and exhibit A is the sales page for one of our partners. Check it out and establish a new 401k plan for your company at the same time!

Drupal

At the time in 2011 when we first started this, the database driver(s), both Drupal and PHP, were just short of complete. So there were issues right away in the install. But those issues have long been resolved, other than one nasty issue related to DB independent unique keys that Drupal likes to use. This prompted me to create my first Drupal patch for Drupal SqlSrv driver. So far with this patch (yet to be noticed by the maintainers) the Sql Server transition  has been solid.

We aren’t using any esoteric modules or themes so most of our experience is Drupal Core with custom themes, running in multisite mode. We are using the Domain Access module and the TinyMCE editor and have only dabbled so far in views and custom content types. So a pretty vanilla setup other than the heavily customized theme and multiple domain setup. Domain Access is a pretty powerful tool by the way if you are ever in the need for affiliate type site arrangements.

Really our only issues right now are:

  • the public:// scheme for locating files on the file system and creating relative links is too tied to linux/apache. You can’t run your site from a drive other than C:/ While there is a specific document explaining how to use NFS on linux, you can’t use a virtual directory in IIS AND use the built in upload feature at the same time. This is a pain in the case of a load balanced server. Solution is to use custom code or some time of replication scheme. I was able to use mklink and make it work, but didn’t release that way as most sysadmins are uncomfortable with that tool.
  • Occasionally, I have had some odd errors that pop in and then disappear never to be seen again.
  • When DB errors have occurred it is because of upgrades and schema updates from modules. My patch should correct most of these, but when you have a problem, you don’t have a small army of developers with answers like you do when running Drupal on LAMP.
  • Our Windows/.net oriented staff has had a learning curve on the admin skills to install, deploy, and maintain Drupal. Not a tiny issue when it gets right down to it.

That isn’t too bad for a system that only ran on Linux the last release, version 6.

Not too dramatic, so that is the really good news. Yes son, you can run your Drupal on Windows.

Are you conceptual or detail oriented?

Trajan's Column

Do you see the scenes or the spiral more?

I have spent a lot of time looking at how developers fit into the culture of the businesses that employ them. The disconnect that often exists is legendary and while there are many myths and opinions about the reasons, the disconnect continues. I often really connect with the business people I work and see their frustration, but also have experienced the frustration many developers feel. It comes down to communication but in this case, the communication needs to be between people who genuinely think differently.

Business people, particularly executives and leaders, are often conceptual thinkers in the sense that they see the goals to put in front of them, and hopefully align the right people and (sometimes) the systems needed to reach those goals without a lot of specifics as to how. Often times they believe something is possible because of a combination of their past interactions with the people and processes in place and sense that new requests of the team will be predictably similar. It is driven by their model of the system and their experience which leads them to believe it will react more or less predictably despite a definition of most of the details. Of course, these predictions are based on nothing rock solid if you look at the details and all manner of devils and dragons may still need to be found and slayed. On a bad day, somebody who lives purely in the conceptual frame of mind may resent having to muddy the concept with mind numbing details that can be contradictory and even force the concepts to change. Sound familiar?

Developers are usually very detailed oriented and are by necessity good at building precise sequences of repeatable actions with those details. People who are very detail oriented are invaluable on a team as projects work towards completion making sure every t is crossed and every i dotted. They eliminate uncertainty from outcomes to the degree possible and to the degree time allows. Without detail oriented people able to grasp and wrangle all the details to actually move work through to completion, your system may well *not work at all* or worse appear to be working, but actually be making major mistakes. A detail oriented person sweats this stuff and gets it right. On a bad day though, detail oriented people can be seen wasting tons of time chasing dead ends because they like to see things get completed or do things a certain way. They may over emphasize unimportant tasks because they don’t grasp the concepts that provide the context for prioritization and may avoid alternate or otherwise more appropriate solutions. At the worst case, they may produce a system that executes without errors but fails to solve the problem or opportunity originally envisioned. Sound familiar?

For a system to work all the way from imagination to completion, I think we can call agree that both conceptual and detail thinking is required. But if people can’t communicate well enough, what can be done? I think every participant in the process needs to possess a share of and appreciation of both conceptual and detail skills or you are in trouble. Everyone should exercise both their conceptual and detail skills. If you can’t deepen your sense of details, or step back to understand the driving concepts of your work you really risk delays or complete failure to deliver your projects.

Here is an example from my own life. I really like troubleshooting. Before I can do any sort of repair or troubleshooting, I have to have a model of how I think the thing works. Against this model, I create a hypothesis of problems that could produce the symptoms I am facing. Then I try to prove the hypothesis with various tests, observations and solutions. If the problem wasn’t solved, a couple of things need to happen.

  1. examine why the hypothesis was not correct
  2. improve my conceptual model to incorporate what I’d learned
  3. create more than one additional hypothesis of the next possible solutions
  4. pick the most likely hypothesis to try based on my improved conceptual model
  5. repeat until goal met, problem solved or solution determined

As a troubleshooter, you are often wrong. The way you thought things worked is often confounded by many variables, conflicting bits of evidence and sometimes incomplete vision of the inner workings of the system. Details! Yet, you have to get the thing working. A naive troubleshooter uses only trial and error to go through a list of mostly predetermined courses of action until hopefully the problem goes away. Case in point, “having a problem with your computer, rebuild it”. Results are limited.

It is the deep conceptual model that enables you to think of more possibilities and more accurately dispense with irrelevant details. It is attention to details that allows you to try a hypothesis and really understand what worked and what didn’t and from this improve the conceptual model in your head. These go hand in hand with neither working well without the other. Nearly all projects have the quality of a largely unknown solution to a project request at the beginning, and ever increasing understanding as the project progresses. It really takes your whole brain!

Where are you strong, being able to grasp lots of details, or in being able to think about a system in abstract conceptual terms? There is no right answer, but there is an outcome for you. Work on the one you are weaker in.

“My retirement plan is free”. uh, not so much

There has started to be and will continue to be some news regarding new fee disclosure regulations that kick in beginning 7/1/2012 that will probably come as quite a shock to apparently 71% of you with retirement plans. You are going find out a lot more about what your retirement plan costs you. The bad news may come in the form of fees that you realize are subtracting from your piggy bank and that you didn’t know about before. The good news is that now you will know about them, and can make better decisions about how you select and manage your retirement plan if you are a business. As an employee in one of these plans, you will know more about what to suggest to your employer who really does have some legal responsibilities to you and your retirement savings.

Full Disclosure of my own: My day job is working for PAi and I make my living from fees that PAi charges to run micro and small business retirement plans, maybe even yours as PAi often runs as a back office to larger partners and brands.

I wanted to add my 2 cents to this conversation because it is hard to make sense of all the various opinions out there, some of which while well intended, fail on a key mantra of mine: be really careful what you delegate to a single point of control or failure. Yes of course, this is the software geek coming out. And of course I have my own biases.

The prevailing anti-private market solution, aka anti-401k plan opinions out there focus on a centrally or government run plan with guaranteed returns and  an annuity to pay it out over time at retirement. There are millions and millions of possible investments out there, and it takes thousands to possibly millions of people to evaluate the best investments. This is a worst case example for a centrally run retirement plan. Putting artificial massive demand the small number of investments a centrally run plan could reasonably expected to evaluate would actually change the outcome for those investments, completely independent of the merit of the underlying investment. Simple supply and demand would affect the valuation. The best you could ever hope for is average returns as anything currently losing value is automatically out, and anything remotely risky is probably automatically out. Whether government run, or privately run would make no difference.

You must have an opinion on the investments your retirement plan is participating in. Cost is one of those factors to watch and the new fee regulations will allow you to see more about how it works and what is best for you. But this is important: when people keep talking about the power of the 1% to invest and help create jobs (or not), they forget that they themselves have this power of investment by the choices we make in what to invest our retirement in. The masses of retirement dollars out there are an important part of our economy and you actually have input on where those dollars are invested and how wisely they are managed.

So go for it, learn, talk to your friends, and use that power.

My centrist point of view

While idealogues from the left and right argue that their respective biases toward more government control, or more corporate control (aka less government) represent a coherent world view, I see them both as intellectually bankrupt. It is not a government bad, corporation good or visa versa characterization that really matters. A major move in either direction would not adequately address the issues we face in retirement, jobs, healthcare or many other problem areas. It would only change the players, but not fundamentally change the system. That type of opinion is really not about a better system at all, it is just about who is in control. My people, not my people, as simple as that.

I believe that large organizations, both public and private fail or succeed to deliver with equal likelihood. They grab  power and control with equal tenacity. The problem is that whether or not an organization is public or private, large organizations are controlled by too few people and as such have too few ideas that can be tried, evaluated and then discarded or promoted. Too few people with too many biases, needs and objectionable opinions of their own. Or perhaps narrowly guided opinions, opinions appropriate for one context but not another.  Too many bureaucracies public and corporate  are run by the person with the highest salary or highest rank. Most large organizations have too much inertia to change in spite of an army of consultants, authors and academics that exists to try and correct it.

We need to be mindful of a basic tenant of mine:

be wary of central control and single points of failure

Yes, this comes from the software and systems part of my brain.

What we need is continuous improvement of systems, not just shuffling control to nearly identical large systems to different people. By this I mean systems of government, systems that run our economy, systems that run our healthcare and so on. I do not mean the current systems with control changed from one party to another, public or private, left or right. I am talking about the structure of interactions between the participants in the these systems in ways that promote efficiency without overloading key parts or key participants. Flow and predictability are good. Being able to adapt and change flow is good. Requiring a lot of management of that flow comes at a very high cost and should be scrutinized very carefully before accepting it.

I wanted to write this down as I have referred to it often in conversation and writing. Hopefully I can improve it and articulate it better over time.

[note that this page will be updated over time!]

Fox Valley Day of Dot Net

As promised here are my slides and the list of links I never got to talk through. Thanks for all the great questions during the talk and the suggestions in your comment cards. Good stuff and much appreciated.  I’d love to do this again somewhere, let me know if you want me at your location.

Windows Workflow Foundation 4 for Fox Valley Day of Dot Net

Windows Workflow Foundation 4 is fairly interesting, fairly unique in the large list of players in the BPM field. It does seem like some additional sessions of more advanced topics are going to happen so stay tuned. The MSDN samples below are an absolute must. You can search for the name and find more documentation about each. I also had good luck with the VS2010 guidance package for my first introduction way back when.

MSDN samples – http://msdn.microsoft.com/en-us/library/dd483375(VS.100).aspx

Ron Jacobs video and blog http://blogs.msdn.com/b/rjacobs/

 

 

Help Jake Egelhoff in his trip to Junior Olympics

We have the wonderful “problem” of having a great kid make the national team for the second straight year and now we need your help again. We need to take care of supporting him so he can work more on skiing and less on fund raising money for all the expenses. We’ve setup an active.com donation site for Jake, though he gets slightly more of the money if checks are written to him directly. Let’s try to get people outside our normal volunteers and parents to help pay for the trip. Get local businesses, your employers, master skiers from the area, whomever you can think of to donate some money. Last year we were able to get all the funds needed for both Deedra and Paul, and let’s get this done for Jake this year!
Share this link: http://www.active.com/donate/jakeegelhoff

Aside

I am happy to let you all know I’ll be speaking at the Fox Valley .Net Users Group, Day of .Net event on March 5th, 2011. I’ll be covering Windows Workflow Foundation 4 (WWF4) where I’ll outline the basics with demos and examples, and then talk about where it fits in to the larger concept of workflow. Let me know if you have specific things you’d like to hear about.  I’ll post my outline soon.