My take on management

February 22, 2017 Leave a comment

I have had the question posed to me… what is your management style? I have been thinking about it a lot. I have been thinking about how the last 3 years has shaped how I do things now through managing programmers, non-programmers and consultants. My philosophy of management is four fold: Engaging, Equipping, Supporting and Directing.

Engage:
Leading a team requires strong engagement efforts with the people on that team, both professionally and personally. If you don’t know what your team wants or is capable of, how can you lead them efficiently? There is a time, of course, when you need to do things in ways they wouldn’t prefer, but I believe that if you have engaged them successfully, then you won’t have an issue explaining why things are going that way. This is all about building trust because you don’t have a team without trust, just underlings.

Equip:
A team must be equipped to do their jobs effectively. Firstly, it means technology like powerful computers and collaboration tools. Secondly, it means good training and ways to keep up with technology as well as growing in their profession (this is closely tied to Support). The first act I ever did as a manager was to get my team brand new top-of-the-line laptops with dual monitors and webcams so we could conference together effectively. I do not regret that decision.

Support:
No one who hasn’t been a programmer can really understand how a day solving problems goes. For example, my lovely wife often asks “When will you come home?” while I’m working on solving a problem at the end of a work day. It is possible that I might solve it in 2 minutes and head home immediately. It’s also possible (and more likely) that it’ll take much longer, but you never know until you actually solve it. That’s tough for dinner planning, but even tougher when it affects project timelines and blows estimates out of the water. It’s easy to say “estimate high” but that is tough on large scale projects for effective planning.

Support goes one step further, in my opinion. If your team is trustworthy, you need to have their back in all circumstances. If there is a mistake made by someone on my team, I will take the fall for it, and work to get the problem resolved. I will never let someone discipline or call out a member of my team from outside of it, that is my job as the manager and it does not need to be public (usually). My team understands that they are my priority and that I will support them as they get their job done and I expect that to be as efficient and correct as possible. Traveling that two way street has allowed me to accomplish some remarkable things in my current position and I am proud of that.

Direct:
This one is easy. How can I expect my team to take me somewhere if I don’t tell them where I want to go? Big picture direction and explaining how the smaller projects take us there incrementally is the final key. If they know that the dumb thing they have to do will move the needle even a little bit, then they will do it more quickly and with fewer issues. Likewise, on the large projects they need to see the big vision and can drive forward to it together. I have seen the power of good direction and I have languished without it.

All four of these things as legs make up the chair that I chose to sit in as a manager and it has served me well thus far. Enable your people to do what you need them to and get out of the way while they do awesome stuff!

Categories: Uncategorized

My absence

September 20, 2016 Leave a comment

I know that I don’t exactly have a bunch of followers in this world, and I’m okay with that. At the end of the day, I am validated by my ability to solve problems and support my team effectively and quickly rather than how many people read this statement.

Basically, I haven’t posted anything in a few years for two reasons, firstly, and most importantly, my wife and I have started our family and I am fully dedicated to being the best husband and father that I can be. Writing things on my personal website doesn’t usually register particularly high on my daily to-do list as my team to effectively support at home grows larger! Secondly, I have been very focused on transitioning my career…

I have now been the Director of Application Development at the National Restaurant Association for over two and a half years. This job is exactly what I was looking for as I moved out of coding daily and into management and for the most part, my job experience has been tremendous (more on that later). But transforming myself into a competent manager who is still able to code and support systems has been a rewarding and exhausting effort. That also has left little time as I strive to be the best I can be for my team’s sake.

I have thought a lot about this and I will be renaming my site from Exploits of a Coder to Exploits of a Reformed Coder. The reformed speaks to how I believe that I have come into my own as a manager and as someone who can speak on behalf of the technical team as well as thinking bigger than any particular problem and to the enterprise architecture as a whole in order to guide decisions. I am open to other naming suggestions and I intend to extrapolate on my visions that have clarified in recent years as I progress in my career.

Happy day,
-Eric

Categories: Uncategorized

Creation Debate thoughts

February 5, 2014 Leave a comment

I never really intended this blog for remarkably personal thoughts, but I need a forum that is larger than Facebook or Twitters to discuss my thoughts. To start, here’s some honest background points of reference:

  • I am an unabashed and unashamed believer in Christ, God and the divine inspiration of the Bible. If that is a point of disagreement, I’m sorry, but I will never change my mind there.
  • After being a Christian, secondly, I am a physicist by training, mindset and by belief. I fully subscribe to the scientific method, theory and experimentation.
  • I have never found or seen anything scientifically proven to cause these previous two points to come into unresolvable conflict.
  • I love and respect Bill Nye, and his Science Guy show heavily influenced me in my desire to seek knowledge from science.

I am fascinated by the idea of an open debate on the origin of our universe, which basically is a debate about the existence of God in the first place. I also really think that any forum like this will usually do little change anyone’s beliefs, but what it can do is spark thoughts that can grow into a full fledged fire. I hope and pray that God does use this as a spark to show Himself to the people listening and participating in the debate.

So, where do I come down here… I have a really hard time with some of the statements that are made by Young Earth Creationists. Their hearts are in the right place and their beliefs are essentially the same as mine, except that I think they’re misrepresenting Christians as a whole. Making statements that sound completely insane is a waste of time in any debate. Most of the YE statements tend to come off, to non-believers and rational thinkers alike, as insane. They tend to discount a lot of the scientific progress that has come to pass and by doing that, or saying things that are absolute like “you cannot prove that” does not win an argument.

Science is the pursuit of knowledge and truth, and I believe the Bible is truth as well. The best part of this is that:

Truth cannot disprove truth!

So there must be a way for the science and the faith to coexist and, in fact, to encourage each other! When you take all these thoughts together, I find myself asking this question:

WHY AREN’T PEOPLE TALKING ABOUT OLD EARTH CREATIONISM???

Now, can Old Earth Creationism answer all the questions? No, of course not, but it just poses the question of “If the universe was created by the big bang, as science suggests, then what caused the big bang?” That question is the one that science will never answer, nor can it, but God did already in Genesis 1. The rest are details that all pull and push against each other, but neither breaks. One special note regarding evolution. This is not to say that God does/did not use some form of evolution in the creation of the Earth, however, I reject the unproven theory of evolution as the whole process of deriving all life from a single organism. This is the difference between “macro-evolution” and “micro-evolution” [more similar to adaptation than evolution].

One of my favorite authors and Christian thinkers, Glenn Packiam felt compelled to add his thoughts and I think it perfectly sums up the correct Christian response to entire discussion and a thorough discussion of the Genesis 1 text. Check it out: Glenn Packiam Blog

To read more of the science side of Old Earth Creationism, please check this article out: Old Earth Creationism

At the end of the day, the most important thing really is not how the Earth came to be, because frankly, does it even matter??? It is what we are going to do on this Earth to love each other and show God’s love and mercy to the world as ambassadors of Jesus Christ himself. Feel free to disagree about this, or not, but remember, we’re all on the same team!

Categories: Musings, Personal, Religion, Science

5 Incredible Years

November 21, 2013 Leave a comment

Well, I’ve officially been a consultant with my awesome company for over 5 years now, and with that comes the 5 year anniversary mark of my marriage to one of the most wonderful women in the world. I am blessed beyond belief to have such an amazing and wonderful partner to share this life with!

I had a message from a friend, and while we were chatting about work and the fact that he’s working on the healthcare.gov rescue project (another post on that coming another day), it came up that he’s been dating his girlfriend for a long time. Like 4+ years. I have no judgement on that, this is all in the way of backstory. He asked me “how do you know when you’re ready”, referring to proposing, this is what I said:

for me, there was a moment when I realized that I couldn’t see myself living without her. That I wanted to experience everything in life with her as my partner through and through. I then decided that I was willing to going to go all in on the relationship, to put her before me and to do everything I can forever to serve her and keep her happy. When I realized that doing that would bring me the utmost in joy and I didn’t want to live in a world where I wasn’t doing that every day, I had to make it happen

the conversation continued:

I can get a little religious with that, too – but from a straight up emotional prospective, I feel like that was what happened.

The key to my marriage, is that I make the decision to love her and serve her every single day, regardless of how I feel. And I think that is why life is so wonderful

He then asked me: “and she reciprocates that by doing the same for you?”

indeed. but even if she doesn’t, it won’t change the fact that I will.

and if you’re not ready for that, that’s totally fine, but make sure you are ready for it before you take things there

Anyway, I thought it was worth recording, and I hope you can be as blessed in your marriage as I am!

Categories: Musings, Personal

Personal Thoughts on an up and down week

September 13, 2013 1 comment

So, in an effort to stay sane, I’d like to MUSE some on my week, which has had remarkable highs and lows.

  • Past weekend: thought contract was going to be canceled.
  • Monday/Tuesday: contract extension agreed to, terms still outstanding.
  • Wednesday: best concert I’ve ever been to, by of my favorite bands of all time (MUSE).
  • Thursday: Bittersweet ending of one of my favorite TV shows, Burn Notice.
  • Friday: had to take my precious bulldog to the surgeon to have her torn ACL repaired.

Consulting Musings
Consulting is one of those professions that is always in flux. In fact, my current contract is one of my longest, but usually every 6-12 months I’m on the look out for new work. Its built into the rate and frankly, if you can stay on contract, its tolerable 95% of the time. The worst part is the uncertainty. Sometimes you can be the best consultant ever, get more work done for the money than your client could have dreamed, but you’re still a consultant which means you won’t stick around forever. Contracts end and you have to go find something else. I understand the business part of it, but when someone says things like “I want to keep you, but…” or “…budgetary constraints…” it stings and begins the uncertainty period which can be a few days to a few weeks. I don’t mind an impending end of a contract, in fact, I am reminded to enjoy the nuances of the client and try to relish the pros of working for them. I don’t mind short contracts either. I do mind being a week or three from an extension deadline and being uncertain as to what will happen to me. That’s the risk. At the end of the day, all I can do is work my hardest all the time and make sure there is little reason to not be extended!!

IMG_20130911_204835_362MUSE Musings
I’ve loved MUSE since 2003, honestly. The song Time is Running Out is probably my all time favorite song and opened my eyes to the wonderful world of “alternative” music. It was a ridiculously awesome concert, and I had floor tickets, so I got to stand up there for four hours, but was 8 feet from Matt Bellamy.

Burn Notice Musings
Its always sad when TV shows that you love and have spent years watching end. It now joins other shows that make me sad to think about missing still: (begin geekery) Seaquest DSV, Star Trek Voyager, Stargate SG-1 (and other SG iterations), LOST, Eureka, Chuck (end geekery) and soon to be HIMYM. It was a good ending to the show, I am satisfied, but hope they do more because I do love those characters.

Bulldog Surgery Musings2011-11-23_11-26-06_581

My bulldog is 3 years old, and she recently partially tore her ACL (in dogs, they don’t have ACLs, they often injure their CCL, but for illustrative purposes, we’ll just call it the ACL). We tried physical therapy, but she had ups and downs and it became obvious that she would not recover without surgery. It was really hard to leave her this morning at the vet, really hard. I just feel so sad thinking about her being locked up alone and said before surgery begins, though the vet tech said that she’d get lots of love today, which I believe. She’ll be at the vet for about 30 hours total before we take her home and its about a 3-4 month recovery time where we must restrict her immensely. No playing, stairs or being off leash ever. That will be hard, but supposedly they do heal quickly, we just have to ensure that she is fully healed before we let her be herself again. She will be okay in the end, and this is all for her own good. More PT and exercising will be necessary on the back side, but I hope and pray that she’s okay today :-/

So, I will be glad when this week is over officially, my dog is home and my contract is signed for the next 3 months. Happy Friday.

Categories: Consulting, Musings, Personal

ASP.Net dynamic control/postback/event-handler madness – Part 2

May 13, 2013 Leave a comment

As a continuation of the HOW I was able to deal with dynamically creating grids based on a query, I had a problem. The problem was that that the ItemCommand was NEVER firing on postback. If you already know where I am going with this, then I’m sorry, but this was a crazy problem that was having a tough time getting to the bottom of. None of my debug code would ever hit or do anything related to that generated command button click, even though the post back happened.

When testing, I also noticed that all of my grids were disappearing on the post back, which made sense, because I had done this is usual:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}

But, it appears that when the Page_Load fires on the postback and it does NOT create the control that caused the postback in the first place (my grid with a command button), it never fires the event handler! I was able to get it all to work by removing the IsPostBack check, but it seems silly to think that I am recreating the control from scratch in order to fire a button click. Almost like the button that ASP.Net is saying was clicked is gone forever and is replaced by another one which IT thinks was clicked. Kind of bizarre!!

Categories: .Net, Musings, Problems

ASP.Net dynamic control/postback/event-handler madness – Part 1

May 13, 2013 Leave a comment

Well, I recently had a difficult problem that I solved in a way that I don’t really like, but it works all the same. In the process I discovered something bizarre about ASP.Net. Here was the problem: I had a dataset coming out of a SQL stored procedure (that I had no control over or information about, except the output). The dataset needed to be grouped (1 – by period) and subgrouped (2 – by description) based on the properties, then displayed in a table for editing (3), if conditions permitted (4).

I solved these 4 problems with some interesting logic, first based on a container object that I populated out of the database. Then I did the following to solve problem 1:

HashSet periods = new HashSet();
List report = Helper.GetReport();
foreach (objContainer container in report)
{
periods.Add(container.Period);
}

Dictionary<string, List> periodDictionary = new Dictionary<string, List>();
//need to get periods and descriptions within them.
foreach (string period in periods)
{
periodDictionary.Add(period, report.FindAll(p => p.Period == period));
}

This gave me the values broken down into a dictionary of the containers grouped by their period property, but I had to do this again in order to group them again, and then I had to break it down again in order to output the information to the screen. Which, presented a problem, incidentally. I needed a way to display this information in an aspx. So, I just created a div tag with a server side ID value (grids) and then added controls to it, which you’ll see here:

foreach (KeyValuePair<string, List> kvp in periodDictionary)
{
//Okay, broken down by periods now.
//Now we need to break down each value list by description in the same way.

//print header
Label title = new Label();
title.Text = kvp.Key;
title.CssClass = “PeriodHeader”;

grids.Controls.Add(title);

HashSet descriptions = new HashSet();
foreach (objContainer container in kvp.Value)
{
descriptions.Add(container.Desc);
}

Dictionary<string, List> descDictionary = new Dictionary<string, List>();
foreach (string description in descriptions)
{
descDictionary.Add(description, kvp.Value.FindAll(p => p.Desc == description));
}

foreach (KeyValuePair<string, List> kvp2 in descDictionary)
{
Label subtitle = new Label();
subtitle.Text = kvp2.Key;
subtitle.CssClass = “DescHeader”;

grids.Controls.Add(subtitle);
DataGrid grid1 = BuildDataGrid(kvp2.Value);
grids.Controls.Add(grid1);
}
}

I’m sure anyone could pick out issues here, primarly the use of a DataGrid instead of a GridView. I like the DataGrid, okay?!? Get off my case!! Anyway, this worked and allowed me to just generate the information and group it with classes as needed in my BuildDataGrid() method. The specifics aren’t important, but here are a few examples of how I created the grid:

dataSource = dataSource.OrderByDescending(o => o.TransactionDate).ToList();
DataGrid grid = new DataGrid();
grid.DataSource = dataSource;
grid.ItemDataBound += new DataGridItemEventHandler(this.grid_ItemDataBound);
grid.ItemCommand += new DataGridCommandEventHandler(this.Grid_ItemCommand);

grid.AutoGenerateColumns = false;
grid.BorderStyle = BorderStyle.None;

BoundColumn column1 = new BoundColumn();
column1.DataField = “TransactionDate”;
column1.DataFormatString = “{0:MMM dd,yyyy}”;

ButtonColumn column4 = new ButtonColumn();
column4.ItemStyle.CssClass = “editButton”;
column4.DataTextField=”ShowEdit”;
column4.CommandName = “Edit”;
column4.ButtonType = ButtonColumnType.PushButton;

grid.Columns.Add(column1);
grid.Columns.Add(column4);
grid.DataBind();

return grid;

Okay, this long post is getting very long, but the point is that I was able to dynamically generate the columns and buttons and data all on the PageLoad() call and entirely server side. The bolded lines show how I was able to add the event handler code to the grid so that I could get in the way of the binding and the itemCommand events to adjust things as needed (styling, and dynamic commands like delete or edit based on the CommandName).

Categories: .Net, Musings, Problems

Quantum Entanglement – illustrated

April 9, 2013 2 comments

This is by far the most interesting of all natural phenomena, in my opinion, and unlocking the HOW in this bizarre situation could possibly get us into the distant future of science (ie, quantum computation/data transfer, faster than light travel or even teleportation). I’m fascinated by it, and wanted to share a great illustration! CAUTION: SCIENCE AHEAD! Quantum entanglement boggled Einstein, for good reason, because it makes no sense. The real question here is, how does the information about one particle get to the other particle, especially over long distances faster than the speed of light.

Scientists are working on a Bell experiment (a test of quantum mechanics principles) to send one half of an entangled pair to the space station, read more here: LiveScience article. I expect this to play out as the math predicts, which is that the pair will affect each other, even over distances larger than ever, but the question will become… “okay, so it’s true. Why and HOW and what now?” Scientists will need to theorize about the communication channel and how it exceeds the C barrier (speed of light). I say, lets make a communication device that will affect one half and then again in a manner like Morse Code so that we can communicate to places like Mars without any delays, even if its less information. You could have two pairs in the device that would allow for simultaneous back and forth and just need a program that translates information back to something useful. Seriously, this stuff is cool and the stuff of science fiction. Enough of my ramblings, see for yourself what happens:
Find out how quantum entanglement keeps particles linked even when widely separated, in this LiveScience infographic.
Source:LiveScience

Categories: Musings, Science

Random SQL problem – null safe comparisons in MSSQL

January 30, 2013 Leave a comment

Having worked with MySQL, Oracle and MS SQL Server (as well as a few NoSQL database types), I just ran across a random bug that I’ve not seen before and I thought I’d share it.

Obviously, NULL in SQLServer is a placeholder for missing data, and it has its own comparisons IS NULL and IS NOT NULL.  But, the problems with this entity (or lack thereof) is that within a script or stored procedure, you cannot use =,<,!=,or <>.  The problem happened when an old stored procedure was doing an update statement based on a comparison where one side had a null value that was not checked.  When a customer complained about some records not being updated, I determined that the comparison was the issue:

 

UPDATE    Accounts
SET        PAID_THRU = a.PAID_THRU
FROM    Accounts join Accounts a on Accounts.Company_ID = a.ID
WHERE    Accounts.PAID_THRU <> a.PAID_THRU  –ERROR HERE IF Accounts.PAID_THRU is NULL

 

The last line was the problem in this statement, as they needed to be checked for null values separately.

WHERE (Accounts.PAID_THRU <> a.PAID_THRU OR(Accounts.PAID_THRU is null AND a.PAID_THRU is not null))

 

This is especially tricky when the values are not always or rarely null, so the update does run and update values, but the NULL records will fall through the cracks until someone notices.

One final note: I believe that in MySQL you can use <=> and it will cover cases like this, but in Oracle and MSSQL, you’ve gotta check it yourself!

Categories: Problems, SQL

Infopath, Sharepoint and retrieving data; a terrible problem solved

December 4, 2012 2 comments

Recently I had worked on a temporary InfoPath application to be run on the internal Sharepoint server for doing performance reviews for staff.  This was a great learning experience that was a lot of trial and error to solve several upgrade requests from a previous version and to pull forward goals that had been previously defined in an earlier version.

So, to be clear, I was working with existing data in a predefined repeating section.  Anyone could have any number of goals and I had to figure out how to get the data out to then import it into a specific performance review tool.  Turns out there were about 750 goals total for all the employees.

First, I had to get the data out.  I found that in InfoPath, during a publish, you can select a repeating section and it will automatically give you all the contents of the fields merged. This is great, but there is no way to split the information out if its just a bunch of text, because of no delimiters put in automatically (boy, that’d be nice…).  So after searching around online, I discovered that for any type of repeating section, I would have to create a new text box to contain the data and to use some magic to concatenate them together with a specific delimiter.  I chose ~ because it was unlikely to be in the data.  So, I create a TextBox (this was later changed to a Rich Textbox, but more on that later) with the default value of:

xdMath:Eval(xdMath:Eval(../my:goal, ‘concat(my:goalDescription, “~”)’), “..”)

This function of evaluating an evaluation will go in and iterate through each goalDescription and concatenate them with the “~”.  It is important to note that in order to get this to work, I had to edit the XPath to make sure that the my:goalDescription did not start with “../”.  This took a ton of trial and error and getting it to work exactly was very frustrating.

This evaluation gave me a chance to see all the goals together, but my problem was that this box would only update when I added a new goal or changed the goals value (note the “Update this value…” checked box?  Without it, it would never update).  So, I had to come up with a reasonable way to update all the forms (200 total) as efficiently as possible.  I solved this by adding a form rule that was applied any time the form was opened.

This opens up a dialog that allowed me to add a Rule, which I did here:

I had to change the XPath to work for the global location, because the goal data was buried not at the relative “../”, but in sectionFour.  When I changed the XPath from that, it was successfully updating my AllGoals variable with my concatenated value.  Here is the global version:

xdMath:Eval(xdMath:Eval(my:sectionFour/my:goal, ‘concat(my:goalDescription, “~”)’), “..”)

 

It was a quick task to them open each of the forms from the Sharepoint library manually to have this run to populate the AllGoals value for each employee.  But yet there were issues.  I published the AllGoals variable for Sharepoint to show me (on the last screen of the publish wizard, adding the variable to access).  I saw the entire value in my TextBox, but when I viewed it in the sharepoint list view, it was truncating at 255 characters.  Apparently all textboxes default to “Single Line of Text” in the column settings.  I was able to get around this by removing the published variable, change it to RichTextBox and then publish it again.  That caused it to be “Multiple Lines of Text” which gave me all my data.

 

Okay, home stretch!

I could then export the view to Excel which gave me all my goals and employee names like this:

Employee1                   Goal1~Goal2~Goal3~

But I wanted it to look like this:

Employee1                   Goal1

Employee1                   Goal2

Employee1                   Goal3

So, I turned to macros in Excel.  I should say that I’m not a macro guy, having done VBA a few times before, I really don’t like it (explanation).  After frustrating hours of messing with it, I posted the question on MrExcel.com and got an answer in two hours 😉  Here it is, if you care to see yucky VBA that worked perfectly: MrExcel Forum Thread

 

I was able to get preconfigured data out of Sharepoint, format it correctly and then send it off to be imported to the new system.  Problem solved, but please don’t make me do it again!

Categories: Problems, Sharepoint