What is Refactoring?

To me, refactoring is one of the most important parts of the software development lifecycle. Most developers are familiar with the idea of refactoring, but customers and managers may not be.  So, what is refactoring and what value does it bring to the development process? Refactoring is the process of going through code and redesigning, updating, and fixing with the intent of improving the code. This can encompass a lot of different improvements. For example, a developer may find that certain blocks of code are repeated over and over again. Repeated code can cause all kinds of problems. At the very least it increases the size of the application needlessly, but on the more problematic size, it also decreases maintainability of the application. For example, if a code block is repeated 8 times, and the required logic for that code must change, the code will need to be replaced in 8 different places. Chances are good that developers will only find 7 and you’ll spend months trying to figure out where the problem is. Other common tasks involve redesigning to make the application cleaner, removing unnecessary code, and all sorts of things to generally improve the codebase. Why is this important, and what is the benefit to the organization? Without refactoring, code tends to become messy. Each new developer adds something new, code is duplicated, paradigms change, data models are updated, technologies are improved, etc. As these things happen, the application becomes increasingly difficult for developers to follow. Additionally, bugs increase, the size of the code increase, and things run less than optimally. In the end, refactoring is kind of like getting a tuneup on your car. As a good developer, I am always looking for ways to improve the code so that future developers will have an easier time maintaining the application. It’s incredibly important and should be a priority not only for developers but for management and customers as well.

Visual Studio Code

Anyone who knows me knows well that I am not a huge Microsoft fan. I’ve been a Unix user for over 20 years, I’ve been using Linux for nearly as long, and my current laptop is a Mac. I prefer Google Docs to Microsoft office, I never run Internet Explorer (Or Edge), I don’t like IIS, and I would never run SQL Server. So, it comes as a shock to most of my tech friends that I am a huge fan of Visual Studio Code. In fact, I would have to say that it’s probably one of the best general purpose development environments ever created. What makes it so great that I, a Unix user would endorse it? I think there are two main factors that made me fall in love with Visual Studio Code. First, it’s cross platform – Visual Studio Code runs on Windows, Mac, and Linux. This is a big deal for me. I prefer tools that I can run on a variety of platforms. While I typically work on a Mac, I do have a Windows machine too. Having an environment that runs on both means that I can easily transition from one machine to another without having to adopt different tools. Second, and probably even more important, is the wide variety of plugins available. Whether you need to create or edit HTML, C# .NET applications, JavaScript, Python, XML, there’s a plugin available for you. There are also plugins for Docker, git, and a REST client. Furthermore, the IDE is pretty simple and easy to work with. Where I used to use text editors such as UltraEdit or TextWrangler, I have now come to rely on Visual Studio Code as my default choice for editing code when I don’t have a more specific IDE installed. Kudos to Microsoft for a creating such an amazing cross-platform code editor!

RapidWeaver 7

There are countless technologies for web development running both on the desktop (Muse, Dreamweaver, etc) as well as the server (WordPress, Drupal, etc). I think one of the most underrated solutions is RapidWeaver 7. My first web page was a video game site hosted on GeoCities in the 90’s. Since then, I’ve had a hand in countless websites ranging from simple sites for local non-profits to complex e-commerce sites for major corporations. With 20+ years of web experience, what do I like about RapidWeaver 7? I think my favorite feature of RapidWeaver is how approachable it is for people without web experience, yet it’s easy for the web expert to get in and change almost anything. Options to override CSS, enter custom JavaScript, add code to the head of the document, add metadata, or anything else you can imagine are just a click away. I also like RapidWeaver’s built-in blogging framework, options to enter HTML, markdown, or to use a styled text editor. No matter how you want to create content, RapidWeaver supports it. RapidWeaver has countless plugins and themes that can be added. One of the most common is the Stacks plugin. With Stacks and RapidWeaver, it is trivial to create a responsive website that will look great on any device. Another amazing feature of RapidWeaver is how easy it is to integrate with PHP. If you have content that needs to be programmatically generated, but you still what the style to match the rest of your page, no problem — simply change the page’s extension to .php and enter your code in the HTML editor. I love how you can enter your content and change your theme with a simple click of the button. In a world of Software as a Service, it’s also nice to see that I can still purchase a license for RapidWeaver instead of a subscription. Note, as a developer, I rarely pay for software — most things I want are freely available for download. RapidWeaver is a piece of software I am all too happy to pay for. The features above don’t even begin to scratch the surface of the richness of the application and I believe it is worth every penny I paid for it.

Why am I a Mac user?

For most of my life, I viewed Macs with great disdain. They had little software, and I just didn’t see them as particularly useful as a developer. My first experiences with computers were all with Unix machines — and I loved them. The ability to program them with built-in tools as well as their stability meant they were all around great machines. But as a home user, I didn’t have the luxury of a Unix Sparc machine. Like most home users, I was forced to use Windows and grew accustomed to the issues they always have — registry problems, boot problems, driver problems, on and on the list goes. After a while, I got tired of the endless problems with my Windows machine and, when Linux became a viable option, I switched my home computer to RedHat. I got the stability I wanted, and substantially fewer problems than my Windows computers presented. But, there has always been one big problem with Linux – it doesn’t always have the software you want. For example, you can’t run Photoshop on Linux. When I started doing iOS development at work a couple years ago, I had to use a Mac, and I fell in love immediately. The stability of Linux as well as most of the same command line utilities, shell scripting, and the addition of an excellent graphical interface made for an amazing user experience. Even better, most of the software I want to use is available on my Mac – the Adobe Creative Cloud, Android development tools, Java environment, and Unity. In addition, most of my favorite command line tools are there including C, C++, Python, Shell, and countless others. It truly is the best of both worlds AND it’s remarkably stable. That doesn’t even mention how lightweight a MacBook Pro is, it’s amazing battery life, or any of the other reasons I use a Mac. I don’t look back at the Windows world. While I often need to use Windows for development (Visual Studio projects, for example), I do so while sadly longing for my Mac.