I code, therefore I am... a software engineer.

The Art of Writing Beautiful Programming Code

In the vast landscape of art and design, beauty often dwells in the intersection of form and function. Philosophers and artists alike have long debated the definition of beauty, with many concluding that it’s an amalgamation of unity, proportion, and harmony. But can this classical definition of beauty be applied to the more structured and logical domain of programming? The answer is a resounding ‘yes’.

In programming, “beauty” transcends mere aesthetics. It encompasses the clarity of expression, the simplicity of design, and the elegance of solutions. When code is beautiful, it not only works flawlessly but also communicates its intent clearly to its readers. This duality of purpose—to serve both machines and humans—is what elevates programming to an art. Beautiful code is that which is efficient in execution yet remains accessible and maintainable for fellow developers.

Read more

How to Deploy Web Applications to IIS Using Powershell

NASA Shuttle Takeoff w/ Powershell Icon

My development team utilizes the old school zip-and-deploy method for building, packaging, and deploying web applications. Our typical web application runs on the Microsoft .NET Framework on a Windows server running IIS (Internet Information Services).

Our deployment strategy going to production servers is much more complex and involves an IT operations team. However, for our test and development servers, we have liberty on how we deploy. I was formerly pushing across all of the files in the build to the webserver from our build server. As the number of files in our web applications has grown, this became quite time-consuming. I needed a way to push over a ZIP archive of the web application, which we are already building, and then deploy it on the webserver.

Read more

How to Prevent Data Loss in the Subversion Cleanup Cycle

Subversion is an open source version control system. It uses local directories and files as metadata in order to keep track of synchronizing your local copy of a project with the copy that is on the Subversion server. Sometimes these local files get “hosed” (that’s a technical term meaning really messed up). This is usually because there was a connection issue that occurred during the time that you were performing an SVN action with the server.

In such cases, the software will inform you that something went wrong and that you need to perform the Cleanup action. And in some cases, this Cleanup action also fails, leaving you with a project that can no longer commit code changes back to the server. What to do?

Read more

How to Delete Old Emails in MS Exchange Using EWS

Background

I work within a corporate environment that manages its own Microsoft Exchange Server. I am also on a development team and receive thousands of automated email messages per day from various services that run across multiple servers. I started out creating rules for these emails in MS Outlook that sorted them into folders based on the service that generated them. I would go in once a day and clean out the folders. This is a bit tedious. Additionally, I want to keep emails that are within the last day in case something goes wrong with that service and I need to reference an email that was generated. Even more tedious.

Next I thought to myself, “Why don’t I use the built-in Outlook Archive method?” That would be a great option, but my company manages our archive policies, meaning I cannot modify them.

Finally, having all other avenues closed to me, I decided to write my own utility to perform this task. I am, after all, a Software Engineer.

Read more

How To: Create a NetBeans Startup Project

As a user of the NetBeans IDE, I have always had this one complaint. NetBeans has what they call Project Groups. These are used to group projects that should be worked on at the same time, similar to a Solution in Visual Studio. You can define multiple Project Groups and switch between them. Great, right? What’s the problem?

The problem lies in the fact that NetBeans will always open the last Project Group that you had open when it starts up. Some of the projects that I work on are quite large, with Maven repositories that must be scanned and re-indexed upon startup. That’s all fine and good if that is the project I am working on, but if it isn’t then it becomes a big headache. Then I must cancel the operations and try to convince my machine that I really don’t want to go through all of that scanning and indexing… I just want to open up a much smaller project or even create a new one.

My solution: Create a Startup Project Group and have NetBeans always open that when starting. Here’s how to do it.

Read more

How To: Get Average of Variable Range in Excel

Computer Image

Have you ever needed to get an average of a group of numbers in an Excel spreadsheet? And have you ever needed to do so with a range that is variable? In other words, “I need to get an average of Column B, but I don’t know upfront how many rows are going to be in Column B.”

Well, it turns out to be fairly simple in Excel. I’m partly sharing this with the world to be a help to others, but also because I forget things… and I needed a place to keep it!

Read more

My Entire Ebook Library Online

Oh… you didn’t think that title meant I was providing my entire ebook library to the public, did you? Sorry. Thar be no pirates here, maties. This is more of a tutorial on how I make my ebook library available to me. Onward, hoe!

I love using Calibre to maintain my ebook collection. If you have not heard of it and would like more control over your ebooks, then you should take a look. Calibre also has a built in server that you can access via a web browser. This allows you to browse your ebook collection and download them if you like. This is a really neat feature, except that the software has to be running in order to access it.

What I really want is to be able to publish this library and be able to access it from anywhere without any dependence on my computer and the Calibre software running.

This is my solution.

Read more