home development system design Linux databases Docker kubernetes about me contact
Software Development

Software Development is a big topic, but the end result should be computer programs that work, and equally importantly, are readable and easy to maintain. I understand the imporance of this for my clients.

Here are more details on this site:

Go language is important enough that I have its own page.

I like Tcl/Tk for scripting. One of my stories:

Back in 1999, I got a call from a friend at Bell Labs Computer Research who was working on a GUI sales tool for Lucent. The program was to be a laptop app and run math solvers that would aid salespeople in showing the best configurations for equipment, based on size, expected growth, elasticity, etc. Brian Kernighan and I were both Tcl/Tk fans, and he had put together a kind of proof-of-concept demo where someone could interactively add nodes to a map representing POPS (points of presence) for equipment, and showed it to my friend. But, Brian had better things to do, so I came in to complete the project. I rewrote the whole thing, and made it a client/server system, all in Tcl/Tk.

Programming Environments

IDEs

Interactive Programming Environments (IDEs) are popular, but I don't use them for a variety of reasons. Also, Microsoft Windows is far inferior to Linux for programming. Here's another story:

I've used Unix commands along with Emacs for development for decades, and was never keen on IDEs like Eclipse, though forced to use them on a few projects. I've seen programmers that were so dependent on Eclipse that they couldn't even compile Java without it, and didn't know how to bring up a terminal on their Windows laptops.

At Boeing, I worked with three less experienced programmers on a Java project. The legacy code base was pretty big, and had grown over a period of about ten years. Frankly, it was a mess. My colleagues couldn't do a thing because Eclipse refused to load the non-standard code, and they were stuck for weeks until I fixed the Java package statements and rearranged the source tree to match, which I automated using Groovy.

Perhaps this kind of problem is something I could help you with?

Command Line

One problem with IDEs like Eclipse is that they usually work for one language, like Java in this case. When JavaScript tools like npm, yarn, Node, Webpack, Babel and so on started gaining in popularity, developers had to abandon their IDEs and go back to the command line again. Another of my stories:

I've been called old fashioned for sticking with my command line tools, but I made the right decisions. For example, one developer I worked with couldn't find the Java source files on her Windows laptop. I opened a terminal for her (I'd insisted that she install Cygwin Unix command tools) and did a quick find . -name \*.java >files.txt as she watched in apparent amazement. I've actually had people laugh when they see a terminal window, saying It looks like DOS. It's like an illiterate looking at the menu at a fine restaurant and trying to find pictures to point to, like at MacDonald's.

CLI's are more flexible than dedicated IDEs, and I hope this can help with your team, like I did at Boeing.

Windows

Windows is everywhere, partly because, as a colleague once said, it comes practically engraved onto your computer's hard drive when you buy it. As a development environment however, it lacks the resources of Linux or Macs. Unless your environment relies on .Net or other Microsoft-specific stuff, it's best to use a better platform for software development, like Linux.

I can help set up a more productive software development environment with your team.

Visual Studio

Microsoft's editor and programming environment is very popular, and is full featured. It's available for Windows, Mac and Linux, but not open source. Licenses range from free to $6,000.

Emacs

Out of the box, Emacs is just an editor with a learning curve that never ends. Fully configured, it's a full blown IDE. Automatic indenting and formatting, on-the-fly syntax checking, auto completion, color highlighting and much more. I prefer Emacs over Visual Studio because it's totally free, open source, programmable, infinitely configurable and most importantly, the devil I know.

Emacs runs on any platform I've seen, and there is no apparent difference running on any of them. The same packages, extensions, and configuration files work on all of them. It can run inside a terminal without a graphics environment, so using it on a remote connection through ssh isn't a problem.

Does this resonate with you?

If my thoughts on software development align with yours, I'm hoping we can work together. Let me know.