Thoughts and Tutorials on Programming, Software Engineering, and Computational Science

  • How to Start Contributing to Open Source Software

    How to Start Contributing to Open Source Software

    Getting started if you are completely new.

  • [Review] Naming Things: The Hardest Problem in Software Engineering

    [Review] Naming Things: The Hardest Problem in Software Engineering

    In today’s post, I review Naming Things: The Hardest Problem in Software Engineering, by Tom Benner. Background Naming Things Phil Karlton once said There are only two hard things in Computer Science: cache invalidation and naming things. This is a fairly famous quote among software professionals and it refers to the difficulty in naming variables,…

  • How to Use C Functions in Python

    How to Use C Functions in Python

    Did you know you can write functions in C and then call them directly from Python? Isn’t that cool? Let’s skip all the background and the “why would I ever need to do this” for now and just dive on in to the code! Originally posted here on dev.to First, the C Function To demonstrate,…

  • An Introduction to Software Architecture

    An Introduction to Software Architecture

    Software architecture is the concept of how a software project is structured; a holistic view of the entire system including class hierarchies, interface design, even deployment patterns. A system’s architecture impacts nearly every facet of interaction with that system, from end users to the developers that build and maintain it. When you understand your system’s…

  • How to Debug Code (with Python Examples)

    How to Debug Code (with Python Examples)

    Often in your programming career, you will inadvertently write flawed code that introduces some fault into your codebase. These faults are called bugs and the activity of fixing bugs is called “debugging.” Of course, as developers, we try to write correct code every time, but writing bugs is simply a fact of life for programmers.…

  • [Review] Managing Technical Debt: Reducing Friction in Software Development

    [Review] Managing Technical Debt: Reducing Friction in Software Development

    In today’s post, I review Managing Technical Debt: Reducing Friction in Software Development, by Phillippe Kruchten, Robert Nord, and Ipek Ozkaya.

  • Python Exception Handling and Customization

    Python Exception Handling and Customization

    Like bugs, exceptions are inevitable when developing software, especially as the complexity of that software increases. Sometimes exceptions are surprising, other times we can anticipate them coming. How a program responds to the occurrence of exceptions is called exception handling, and as programmers, we can define and customize exception handling. In this chapter, we’ll learn…

  • Test-Driven Development with Python: a Primer

    Test-Driven Development with Python: a Primer

    Making sure the software we build works the way we (and our customers) want it to work is called, unsurprisingly, software testing. Software testing is an enormous topic; indeed, there are entire books, courses, conferences, academic journals, and more about the topic. One can even make a career out of testing software. We couldn’t possibly…

  • Understanding INNER, OUTER, LEFT, and RIGHT Joins in SQL

    Understanding INNER, OUTER, LEFT, and RIGHT Joins in SQL

    One of the first and most common things newcomers to SQL struggle with is how each JOIN is different from the other. In this article, I’ll explain the differences between the inner vs outer JOIN and left vs right JOIN in SQL using examples from each.

  • Improve Knowledge Sharing and Productivity with Rubber Ducking

    Improve Knowledge Sharing and Productivity with Rubber Ducking

    Rubber ducking is a software development technique in which you communicate some problem you’re dealing with in an attempt to gain better clarity or understanding of the problem. The communication can be verbal or written, and the audience can be real or imaginary. In this article, I give you some tips for facilitating a recurring…

Questions?