About:

David Foster is a software engineer passionate about education and open source, with hobbies in reading and dance.

Website:

Specializations:

Interests:

Software development Computer science education Open source contributions Typechecking extensions Digital archival and preservation

Outgoing Links:

Subscribe to RSS:
The blog post discusses the challenges faced by the author, DaFoster, in configuring custom icons for a website downloader application called Crystal across macOS, Windows, and Linux. It details the technical steps taken to make p...
The author shares their experience of encountering and resolving a deadlock in their Python program, Crystal, during automated testing. They describe the symptoms of the deadlock, the use of Python's faulthandler module to diagnos...
The article discusses the challenges of displaying up-to-date information on web pages rendered by backend frameworks like Django and Rails, particularly when concurrent modifications to the database occur. It highlights the risks...
The article discusses the Bulkheads Pattern in software development, inspired by watertight compartments in ships. It aims to improve error handling in graphical programs by preventing unhandled exceptions from causing crashes. Th...
The article discusses key concepts from the book 'A Philosophy of Software Design,' focusing on the nature of complexity in software systems. It identifies symptoms of complexity such as change amplification, high cognitive load, ...
The post discusses the advantages and challenges of centralized continuous integration (CI) solutions for software development, particularly in the context of graphical applications. The author shares personal experiences of not s...
The blog post discusses the importance of automated performance testing for Django web applications, specifically focusing on 'database clamps' which measure the number of database queries during server-side rendering. The author ...
The blog post discusses a debugging technique in Python where the author modifies the print functions to include a traceback whenever a specific substring (like an error message) is printed. This method helps in isolating the code...
This blog post provides a simplified method for creating a binary .deb Debian package using Docker. It explains the structure of a .deb package, including its contents and control file. The author outlines the steps to create a Do...
The blog post discusses how to implement a real-time chat server using Django Channels and WebSockets, focusing on a publish-subscribe (pub-sub) pattern. It covers the design of a chat application with public and private chat room...
The blog post discusses the integration of Vue and Django for building modern web applications, comparing the advantages and disadvantages of using a single server versus two servers. It outlines various asset bundling strategies,...
The post discusses the concept of symbols in programming languages like JavaScript, Ruby, Lisp, and Erlang, highlighting their uniqueness and speed of comparison compared to strings. It explains how symbols are stored in a global ...
The post discusses techniques for improving the effectiveness of code reviews in software engineering. Key points include limiting review sessions to 1 hour to avoid focus fatigue, restricting the number of lines of code reviewed ...
The post announces the release of django-mysql-compressed-fields, a new open-source library from TechSmart that allows Django developers to use a compressed version of the TextField for MySQL databases. It provides examples of how...
The author discusses the changing licensing of Redis and the implications for its sustainability. They argue against the notion that Redis should uphold the ideals of Free and Open Source Software, emphasizing that its primary pur...
The blog post provides a detailed guide on how to use the bashdb debugger for debugging bash scripts. It explains how to install bashdb based on the version of bash being used, with specific commands for Ubuntu or Debian-based sys...
The blog post provides highlights from PyCon US 2024, focusing on various talks related to Python programming. Key topics include performance improvements with subinterpreters, debugging techniques, API design principles, and adva...
Crystal is a newly released website downloader program designed for long-term archival of websites, even after they are no longer available online. The beta version supports downloading complex static sites and includes updates fo...
Crystal is a website downloader program designed for long-term archival of websites, even after they are no longer available online. The latest release (1.3.0b) introduces features such as the ability to download sites requiring l...
David Foster, a software engineer and CTO of TechSmart, shares his extensive programming background, detailing his journey from early coding experiences to his current work in web development using Python and JavaScript. He discus...
The author discusses the increasing GitHub issue count for their software project, Crystal, despite completing some issues. They explain that completing larger issues often leads to the creation of smaller, related issues, resulti...