Technology:

My Personal Tech Favorites

Here are some links to programming resources you might find interesting.

Favorite Programming Languages

What I do for a living is develop applications for people to use. For the past decade or so I've focused on web applications, but I also develop Windows applications and command-line applications.

This means my daily focus is typically on object-oriented languages that are either interpreted or compiled down to an intermediate form, rather than on system programming languages, or (with some exceptions) data-focused languages.

Intermediate Form Languages

What I mean by "intermediate form" is a computing environment that emulates an actual processor, but is platform-independent. Compilers that target an intermediate form allow you to write code that will run on any operating system to which that computing environment has been ported. The two most prominent ones are the Java Virtual Machine and the .NET Common Language Runtime.

There are quite a variety of languages whose compilers target either the JVM or .NET CLR. For the JVM, the well-known ones are Java (obviously), Scala, Kotlin, and Clojure. For .NET, there is C#, Visual Basic .NET, and F#. There are many others, and some languages have variants that target either platform - COBOL, for example.

I'm a .NET developer, and I've got to say that C# is hands-down my favorite general-purpose language. I prefer the conciseness of C# syntax over Java.

C# has language features that are left out of Java. For example, if I want to pass a parameter by reference, I can do so in C# without boxing the value into an object. Java adheres more strictly to object-oriented principles, so it will probably never have this feature. Of course, you can write pure object-oriented code in C# if you desire.

You can also use C# to write functional code. New language features have been added to support the creation of read-only objects, and functions can be treated as first-class objects.

One of the best features of Microsoft's .NET infrastructure, LINQ (Language Integrated Query), really shines in C#. And along with LINQ comes many other language features, including anonymous classes and lambda functions.

C# is a living language - that is, Microsoft continues to grow and refine its features.

Scripting Languages

Just as it's important for a handyman to have more than one tool in his toolbox, it's important for a programmer to know more than one programming language. While C# is great for just about everything related to building applications, sometimes you need a different kind of language - one that that runs right away, without a lot of preparatory work. What I'm talking about is scripting languages, otherwise known as dynamic languages.

My favorite scripting language has to be JavaScript, if for nothing else than its ubiquitousness - it's the most widely-deployed programming language on the planet. Not only is there a JavaScript language interpreter behind every web browser, there are also multiple products that will let you run JavaScript at the command line or on a server - the most famous being Node.JS.

But even if it weren't everywhere, it's still hard to beat JavaScript as the go-to language for small projects or one-off tasks. I've found JavaScript's casual syntax for creating objects and arrays to be ideal for Extract-Transform-Load (ETL) solutions.

Some folks may have developed a bad taste for JavaScript because of its dynamic nature making it too easy to make hard-to-find mistakes. If that's you, may I suggest TypeScript - it's a free, open-source compiler from Microsoft that adds type safety and compile-time checking to JavaScript.

If I had to pick a second favorite scripting language, it would be Python. Python has got to be one of the easiest programming languages to learn. And you can do just about anything with Python, simply by downloading the appropriate library.

Favorite Tech Magazines

A good tradesman will keep up with his profession by subscribing to trade magazines that are oriented to his field. And while actual paper magazines are quickly becoming a thing of the past, the electronic form of these trades are flourishing for the software development field.

For all things related to .NET, one of the best sources has got to be Visual Studio Magazine, which is part of the 1105 Media publishing family.

For broader coverage of programming topics, another 1105 Media magazine is Application Development Trends. While they cover all sorts of topics, I find this to be a great resource for Java development.

Boy, I sure do miss Dr. Dobb's Journal. That was one of the best resources out there, but it's been gone for years. Some of the articles are still available online.

Favorite Authors

For all things related to the C# programming language and the .NET programming environment, I've found Joseph Albahari to be one of the most thorough authors out there. I find his books to be easy to read and understand. Most of his publications are available at O'Reilly.

Another author of very comprehensive and readable books on .NET technologies is Matthew MacDonald. He's written titles for both O'Reilly and Apress (whose books are now available at Springer Link).

I have many other favorite authors, but these two are the first that come to mind.

Favorite Tech Links

https://docs.microsoft.com/en-us/dotnet/
It's a given that Microsoft is the place to go for anything related to .NET programming languages and environments. Here you can find compilers to download and reference material.

https://www.entityframeworktutorial.net/
If you write code in .NET, sooner or later you'll work with Entity Framework - the premier object-relational mapping tool for talking to databases from inside a .NET application. This site is a great place to go for ramping up your data access skills.

https://www.odata.org/getting-started/
Before there was GraphQL, there was, and still is, OData - one of the best ways to make a flexible, consumer-oriented Web API. OData makes full use of HTTPs verbs (GET, POST, PUT, PATCH, and DELETE) the way they're supposed to be used.

https://developer.mozilla.org/en-US/docs/Web
For anything related to Web technology, whether it's JavaScript, HTML, CSS, or a host of other topics, the Mozilla Developer Network is the place to go.

https://owasp.org/www-project-top-ten/
No web application should be created without keeping in mind, from the very start, what to do (and not do) to make your application secure. The best place to start is to commit this top-ten list to memory, courtesy of OWASP - the Open Web Application Security Project.

https://www.accountingcoach.com/
While not actually a tech link, as a business software developer I find Accounting Coach to be a great resource for bookkeeping knowledge. There are free and paid resources here.

YouTube Channels

https://www.youtube.com/c/ContinuousDelivery
Dave Farley hosts this terrific channel covering the software development process. He's a big proponent of behavior-driven development, which is test-driven development that focuses on the behavior your users need from your application.

https://www.youtube.com/c/Fireship
If you're looking for a quick overview about a new technology, or if you're looking for in-depth coverage of a particular topic, Fireship is worth a visit.

https://www.youtube.com/c/Freecodecamp
You can't argue for the price of the programming tutorials you'll find at FreeCodeCamp.

https://www.youtube.com/user/IAmTimCorey
Tim Corey wants to make software development easier for you. His channel covers all sorts of topics, but he's mostly focused on Microsoft technology.

https://www.youtube.com/c/JacobSorber
Jacob Sorber brings an in-depth look at programming topics mostly focused on the C and C++ programming languages.

https://www.youtube.com/kepowob
Hey, CSS doesn't have to be a mystery! Let Kevin Powell not only teach you how to use CSS correctly, but also tell you why it works the way it does.

https://www.youtube.com/c/Elfocrash
Nick Chapsas can tell you more about what's going on in your .NET program than anyone I know. Tune into his channel to get some development insights.

https://www.youtube.com/c/WebDevSimplified
Kyle Cook takes web-related topics and provides careful, step-by-step tutorials to make it easy for you to learn.