Current Status: Busy

Hello everyone,

Last week, I had every intention of writing a post. This week, I have that same intention. Sadly, I was not able to do so last week, and probably won’t be able to this week. The reason for that is I’ve taken on a lot of things lately.

First, I’ve started going back to the #DowntownDevBC here in Columbus, and have a book to read along with that. Second, for reasons that I will not go public about just yet, I’ve been attending just about every user group and conference I possibly can. Third, I’ve been arranging talks for sessions at CodeMash and Columbus Code Camp. Fourth, my mentor and friend Matt Groves and I decided to change up our mentoring system to more closely follow Calvin Allen and Seth Petry-Johnson’s system. It has a bit more involvement and homework involved, so that’s one other thing I’ve been working on. Fifth, I’ve got another app project that I’ve started with fellow Improver Jonathan Hammond, along with the other project that I was already working on with Nick Hunter.

Sixth, my family and I decided to become members at our local church that we started attending after we moved into our house (Broadman Baptist Church is the name, for any who are interested). With that, we’ve been volunteering our time and effort towards teaching and setting up events. Seventh, we have a men’s group that meets up on Tuesday nights at a local restaurant. We’ve decided to start reading a book, so I’ve got something else to read now (a J.I. Packer book, for anyone who’s interested).

Eighth, I’ve started to regularly organize/host a game night at my house called #GamesAndGrub, which is a ton of fun, but does take up some time and effort to keep it going. Ninth, I’ve been organizing a family reunion that will be happening soon. And finally, tenth, I’m still doing all the stuff I was doing before, like being a father, husband, full-time worker and hobbyist ocarina player.

Needless to say, my time is a bit full right now. I hope to get a good post in this coming week after a couple of these things pass and I get some free time in. Either way, I hope all is going well with you all, and as always…

Thanks for reading!

Update: the parts that we implemented in our mentoring system was the concept of homework and of having lunch at least once a month. This will help me to focus where I need to learn and grow, and give Matt a good opportunity to figure out what I know and what to review.


Silently Enforced Inequality

Hello everyone,

I don’t particularly enjoy ruffling feathers or starting tough conversations, but I feel this is a necessary thing.

I’m the oldest of 5 children, but am the only Caucasian out of those 5. My stepfather is African American, and so is my uncle, and my cousins as well. I went to a high school that did and still does have a majority African American student body. I have two sisters, and I now have a daughter. My wife and both of my children have red hair and pale skin. For the most part, I am surrounded by and in love with some of the most disenfranchised groups of people in the U.S.

My beautiful family

My beautiful family

The coolest wife and kids I know :)

The coolest wife and kids I know 🙂

My experience with all these peoples is that they are no more unintelligent or ignorant than I am. They excel in some things that I’m just plain awful in. They are intelligent, passionate, and determined, just like any other peoples. They can often differ, just like any culture or people. They can often have their own style of talking, dressing, driving, eating, working and playing. But nonetheless, they are worthy of respect. As a matter of fact, they are not THEY. THEY are WE. We are humankind, with our own unique eccentricities and cultures and tongues and activities.

I make this point because there are some that look at my wife, daughter, sisters and mother and see someone that is only useful in the kitchen. There are some that look at my stepfather, uncle, cousins and siblings, and see people that are unworthy of nothing more than manual labor, lacking the ability to comprehend anything more than brute force and violence. There are some that look at my wife and kids and see a weak people, only worthy of being picked on and bullied. If it isn’t already obvious, these things concern me.

I went to a Girl Develop It meeting the other day. For those who haven’t gone before, it’s not a “no-man’s land”. It was created to emphasize that women are pretty scarce in the IT field, and to help teach women so they can learn software development skills. What I found there was highly intelligent women and a few men who came together to teach and learn. It was a great experience that I learned much from.

For quite awhile now, I’ve been following Black Girls Code. This group is not only fighting the troubles that women often run into, but also overcoming cultural stigmas concerning being of African descent. I sadly haven’t made it to one of their meetings, but I plan to in the near future.

Why is this important? Why should anyone care? Just look around in your development groups, and you’ll notice a trend: there are not a whole lot of these different peoples in nearly all development groups. This isn’t because these people don’t want to be software developers. If that was so, the groups I listed above wouldn’t exist. It’s because there is a silently enforced inequality that discourages them, and sometimes even prevents them completely from entering these circles. For someone who loves these people, that upsets me. I’m looking for a change.

So, instead of just talking about change, I’m going to push for it. I’ll be spending my time helping out with Girl Develop It. I’ll be looking to attend a Black Girls Code meeting. I’ll be encouraging my family to follow their passions and ignore those that think lowly of them. I’m even considering making a user group dedicated to respect and learning, regardless of background, color, culture, gender or life choices. I’ll need some help ironing out the details for that, so volunteers would be awesome :).

And that’s all I have for now. Please comment or send me a message if you have any questions or concerns, or would like to back me up on this.

Thanks for reading!

Teaching Is Learning

Hello everyone,

For as long as I can remember, I’ve enjoyed teaching. It’s gratifying to relay information that helps others. Also, for anyone who’s taught before, they can tell you that it’s challenging. To teach properly is to know what you’re trying to teach with a great deal of certainty, lest you risk public embarrassment and passing out false information. So, at least for me, it takes a great deal of confidence in what I’m trying to teach before I teach it.

So far, I haven’t been confident enough in my current abilities in development to do a talk at a user group or conference. Not that I don’t know anything, but that I didn’t believe I knew anything that would be of great value to someone else. I feel that a talk should have content that is compelling and gives the listeners something that could help them greatly. I feel what I know would be better shared in this blog, as they’re usually little snippets of information that wouldn’t fill up an hour block for a session. However, thanks to the different perspective of good friends and colleagues, I now know I have something of value.

Seriously though, thanks!

Seriously though, thanks!

I hopped on Twitter recently, and noticed Seth Petry-Johnson, Matt Groves, and Calvin Allen of Heuristic Solutions and Craig Stuntz and Rodney Smith of Improving Enterprises wanted to get together at the Improving Ohio office to review CodeMash abstracts. Being curious, I was going to show up just to be helpful in reviewing theirs. It was pointed out that CodeMash does have Lightning Talks, which I didn’t know, because I haven’t attended yet. Although this type of talk would be more up my alley, I still didn’t know what to talk about.

For awhile, many in the community have suggested that I talk about more DevOps-type topics. This would make sense, due to my system administration and tech support background and more-recent familiarity with development. However, I’m more interested in a pure development role, and don’t wish to make it seem as if I’m interested in continuing down the ‘ops’ part of that role. So, I went to this abstract review in hopes that I would get some feedback on what else I can provide to the community.

...but not this kind of feedback!

…but not this kind of feedback!

They suggested I use my perspective that I’ve gathered from my previous blue-collar and system administration/tech support positions to assist in an area that developers may not be aware of. It was also suggested that it be something that I’m passionate about. This is so I will be fully engaged and have a good amount of material to talk about, as it will be a priority to me. Immediately, I think of the social struggles that many developers have, and some do not realize the implications of these issues, or that these issues even exist. I’ve witnessed these issues in others, and have struggled and overcome many of them myself, so I felt this was a good fit for a talk.

I wrote up the idea in a gist and received a ton of great feedback. Although this was to be a lightning talk, I got a lot of ideas from Justin Foley, who showed up randomly at the review. These ideas, coupled with having to wait a couple more weeks to submit my Lightning Talk, I decided to submit it as a full session. Whether it will be selected or not is yet to be determined. Even so, it will give me a great motivation to continue learning on the subject.

I’ll update via the comments section and all the social sites whether my talk is selected or not, for those who are interested.

Thanks for reading!

Working From Home

Hello everyone,

I have a good amount of friends and associates who work from home. In an emergency situation, my current client via Improving allows for employees to work from home through VPN, which I’ve had to do a few times. I’ve worked on my various side projects both from home and from coffee shops. With all this experience, I feel I now have a firm grasp on why this is a big deal on both sides of the fence.

On one hand, the person who works from home has a lot of advantages. They don’t have to travel far to start working. They don’t have to use gas or wear down their car. They don’t have to spend much time and money to get lunch and breakfast. They can control many aspects of their environment, like temperature and seat comfort. They can modify their work space as they see fit.

On the other hand, it’s more difficult for others to see what you’re working on. There are more distractions, like television and games and pets. Communication amongst coworkers can be more difficult and less personal. Socialization, or ‘water-cooler talk’, can be lessened. Family members can be disruptive to flow if not properly briefed. It can also be tough for some who tend to over-work, as they won’t have much indication of when to quit.

With both sides in mind, I find that working from home can work out very well if handled properly. I found that working on my side projects on the same PC that I also play games on was not a good idea, as I became easily distracted. A briefing with my family was necessary (and a locked door and headphones helped too). A dedicated office or work area with minimal distractions is great. Keeping constant communication with relevant team members about what you’re picking up and what you’ve finished helps minimize miscommunications. Going to lunch with friends on a regular basis helps keep socializing morale high. Also, implementing a timing system like Pomodoro can help keep track of work.

Although I believe this post won’t change too many minds on the subject, I hope it will give both employees and managers some ideas to implement and put some worries to rest.

Thanks for reading!

How To Perform A Natural Sort On A List Of Numbers

Hello everyone,

For those who have no idea what the title is about, the post will explain it in due time.

In my log parsing project that I’ve written about in previous posts, I’ve received new requirements to parse another type of log. This type of log has nearly no similarity to the other logs, so parsing this was a whole new ball game. For the sake of keeping this post focused, I’ll go into more details on the new stuff I added at a later date.

These new logs had messages which were associated with threads. These messages would show the initiation of an action, and would log all steps of that action until its success or failure, along with the times that these actions occurred. The new requirements stated that I must show the time the thread started, the amount of time the thread ran, the thread’s ID number and any error message in the case of a failure. I’d gathered this data, used DateTime to parse the times, and then used the Subtract method to find the difference between the first and last message of the thread. I then inserted this TimeSpan output into my custom class object as a string, not knowing the trouble I was stumbling into.

This list of times should be sorted by this difference in descending order, so I performed an OrderByDescending sort in LINQ. However, it sorted them in this fashion: 1, 10, 100, 2, 20, 200, 3, 30, 300, etc. This is because it’s being sorted in ASCII order (computer-friendly) instead of natural order (human-friendly). It would have sorted just fine if my number was stored in an int, but because it was in a string, it sorted it in this fashion. Considering I couldn’t change the type in the class without breaking other things, and using another class for this one scenario would be a bit overkill in my opinion, I searched for other options.

One option was padding, either with zeroes or with spaces. Although this wouldn’t look very pretty, it would solve the problem. This is because zero and a space are both valid ASCII, so they would be sorted in natural order, like so (if using spaces):

The TimeSpan output to a string already is padded, as it’s in a HH:MM:SS.SSS. So, if my time difference was 1 minute, 10 seconds, it would read 00:01:10.000. If I then have a difference of 1 minute, 9 seconds, it would read 00:01:09.000, and so it would be sorted below the first when in descending order. This is the way I did it, because I’m attempting to make a log summarizer. A user would need to read through this summary quickly, so having fields of equal length make reading it easy. Also, it doesn’t give the summary a ‘staircase’ look to it (like the example above).

Also, one could convert the string to an int. This would be a good solution, because LINQ’s OrderBy and OrderByDescending could be used to easily sort this in a natural way. However, TimeSpan or padding may work well as well. It’s a case of figuring out what’s best for your scenario.

…and that’s all I know at this point. Please feel free to give suggestions/comments.

Thanks for reading!

Dealing With Major Depression

Hello everyone,

This topic is a difficult one for me, as it leaves me open to scrutiny. However, I don’t see many talking about it in the community, so I wished to share my experience in hopes that it will help others. I want to talk about depression. No, not the kind you have when you’re having a bad day, or the kind that lasts for a little while after a death in the family, or even the kind after your favorite sports team loses a big game and you become sad for a few days. I’m talking about major, or clinical, depression.

I’ve figured out from experience, and from others, how to be happy even in the most difficult of circumstances. I know just about every professional tactic there is out there, and have tried them all, so this isn’t a case of me not knowing how to ‘find my happy’. Major depression, at least in my case, is caused by something completely out of my control. In my case, it was caused by low levels of serotonin in my brain. For those who don’t know, serotonin is a chemical your brain uses to regulate your mood. In other words, you could nickname it your ‘happy’ chemical.

Having a lower-than-normal level of this chemical can cause many side affects, many of which can affect your professional life. Examples of these would be: inability to focus, indecisiveness, fatigue or loss of energy and diminished interest or pleasure in activities. All of these symptoms could greatly diminish our ability to live a good and happy life, and also perform good quality work. Also, this is a fairly common thing that people experience, with around 7% being affected by it constantly, and 20-25% being affected by it at some point in their life.

I’d found out about this after I’d started experiencing times where I simply could not focus at all. I would try to read words on my screen, but my mind was not processing what I was reading with any sort of efficiency. I was tired constantly, even when I exercised, slept well and had a good diet. I was anxious about many things, which took my mind off my work. My passion and drive were diminishing quickly, and I was finding it difficult to do anything. People noticed these things, and started to avoid me, because few would want to talk to an unhappy person. I even stopped going to almost all user groups, as I just didn’t have the drive to do it.

After some consideration, I went to my physician and told them about my symptoms. I came to find out all these facts above, and also found out that this can be hereditary, or caused by major trauma. I have people on both sides of my family that deal with major depression, and I have gone through quite a few stressful life events, so this could’ve cropped up from either. In any case, they had many treatment options available, which I happily accepted. Now, I’m able to focus, feel much less tired, am generally in a more cheerful mood, have my passion and drive back, have been going to user groups again, people have stopped avoiding me, I feel nearly no anxiety, and my wife is much happier for all of it :).

If you’ve experienced these symptoms, please go see your physician. If you don’t have one, ask me and I’ll recommend one. It’s not worth it to deal with those symptoms.

Please pass this along if you know anyone that’s dealing with this, in hopes that it will help them along.

Thanks for reading!

Agile Family Update #2

Hello everyone,

After going through multiple iterations, I have to say I really love this system. More things are getting done, morale is up, responsibility is being taken, and communication is high.

Since the last update, we’ve made a few changes. One thing that we’ve done to make things simpler is to take smaller tasks and blend them into other tasks to make the list of tasks seem less daunting. An example is: our laundry room is in the basement, and we had a task on our board for both the laundry and the basement. Solution: make them the same task, so when someone goes down to do laundry, pick up a few things in the basement.

Another thing we’ve changed concerns the backlog. For the most part, no one wanted to touch it. To make it easier, and give us enough time to complete the tasks in our own lane, we agreed to tackle those tasks together. That way, it gets knocked out quickly, and no one feels over-worked.

Also, Mikey was constantly asking us what he should do next. This system has kept him pretty motivated for the most part, and he usually knocks out his tasks quickly. Considering he had some extra bandwidth, we gave him one more drawing, so his total tasks for each week are up to 3, while ours are at 4, with a backlog of 2.

Then there’s the last item we changed: shopping. To be honest, I don’t really like shopping, although I’d do it under ideal circumstances. However, we’ve been shopping at cheaper stores that seem to have not-very-nice customers, and are generally more crowded. Being a larger man, I seem to have issues running into people while in crowds, which angers people. Not wanting to ‘throw down’ in a store over an accidental shoulder charge, this task has been permanently given to Jen.

Well, that’s all the changes we’ve made recently. I’ll post again if there’s any new developments in the future.

Thanks for reading!