I’ve been slacking…

about writing here at least. In reality, it’s been a really busy summer. In between work, trips to the zoo, horse riding camps, volunteering some time at Code Review SE and (oh, yeah) getting ready for our wedding, I’ve not had much time to think about this blog. Which is okay, but I did promise myself I would write something at least once a month.

It’s important to me that I keep that promise to myself. Most Programmers think that their most important skill is the ability to write clear and concise code. I would challenge that. We should generalize that and work on being able to write clearly and concisely whether we’re writing in C#, VB, or English. If we can’t communicate with the business, we will not be effective programmers. If we can’t communicate with each other, we will not be effective programmers. If we can’t communicate with the non-programmers in our lives, we will not be effective human beings.

I know I’ve been absent for a while, but I kept my promise. I’ve accomplished a goal and I feel better for it.

Until next time, Semper Cogitet.

Very Cool Writer/Reader Library

I found this native vba file input/output library over at the CodeReview Stack Exchange site. I thought you all might appreciate taking a look at it.

If you’ve not been to SE’s code review beta, you should really check it out. The people are ubër friendly and there’s a lot to be learned by letting someone else dissect your code. It makes you really stop and think about what you’re doing with every line of code you type.

Until next time…
Semper Cogitet.

Metaprogramming In VBA

Metaprogramming In VBA

I came across an interesting question over at StackOverflow this morning. I thought you all might be interested as well. While I truly don’t recommend running code stored in a spreadsheet, the VBIDE library does allow for more efficient development by writing “snippets” and metaprogramming. Perhaps I’ll do a more in depth write up in the future.

The Last Mile – Why Good Enough Isn’t

A few weeks ago I was talking to a particularly good friend of mine. We somehow got on the topic of “good enough” and how it just isn’t. Let me preface this with “I’m guilty”, and I truly am. There’s no way for me to say this without sounding condescending, so please believe me that I don’t mean it to be arrogant. My “good enough” tends to be better than average. This has allowed me to more or less skate through life and let me tell you something, I have not done nearly enough.

Oh sure. I’ve done pretty well. I have a good career, a great family, and the best friends a guy could ask for, but what have I done? The truth is I’ve done a lot, but not nearly as much as I could. Why is this? Because I, like you, am lazy. Of course I’m lazy. I didn’t intentionally become a programmer. I became one because I was lazy. I understood that if I put the effort in up front to build a piece of software to do it for me, I would never have to waste another second doing it by hand again. That’s also the only reason my good enough is better than average. I’m lazy, but I recognize that it’s a better investment to do some extra work up front in order to reduce the overall amount of effort over time. Continue reading

VBA ODBC DSN Installer

One of the most common questions we come across as MS Access developers is “How do I make sure every user can access the database?”. Often, and with good reason, a DSN-less connection is the way to go. However, DSN-less connections aren’t for every situation in Access. Sometimes they’re clunky, or some functionality of Access just doesn’t work with a DSN-less connection. I suspect this is because Access was designed specifically to use linked tables, which use a DSN by nature.

I ran across this problem a little while back. While I can’t remember exactly what it was that just wouldn’t work no matter what I tried, I did need a fairly robust solution for manipulating the Domain System Names via VBA. Not only did I need to install them, I needed to fix them when they weren’t set up correctly. So, for my case, a *.reg file just wouldn’t do. I had to code this. Continue reading

You’ve Got To Do What You Can’t Not Do

The title is a quote from Cloud Atlas and it hits home for me. I’ve had to make hard choices, we all have, but it always comes down to just that for me. What can’t I not do?

This is subtly, yet importantly, different from “What do I have to do?”. Oddly enough, phrasing the question as what has to be done has a negative connotation. Whereas the double negative statement of “What can’t I not do?” is a positive and reaffirmative statement. Asking yourself what you must do is a trap. It can make you feel, well, trapped.

I have to do my taxes.
I have to stay at this job, even though I hate it.
I have to get over my ex.

Traps. All of them. Statements like these make you focus on the problem instead of the solution. Compare them to these.

I can’t not do my taxes.
I can’t not quit this job, so I can pursue meaningful work.
I can’t not get over my ex. If I don’t, then I’ll never be happy.

Are you starting to see the power of this particular double negative? Try it. Think about what YOU can’t not do.

A year and a half ago I realized that I had to pick up my life and move hundreds of miles to be with the woman I love. It took a little longer to realize that I couldn’t not take the risk and go.

For the record, it was the best thing I ever could have done. I couldn’t be happier.