Concurrency with Python: Separating Identity from State

The Concurrency with Python Series: Concurrency with Python: Why? Concurrency with Python: Threads and Locks Concurrency with Python: Functional Programming Concurrency with Python: Separating Identity From State Concurrency with Python: Actor Models Concurrency with Python: CSP … | Continue reading


@bytes.yingw787.com | 1 year ago

Property-Based Testing in Python

NOTE: This blog post complements a PyDistrict presentation on the same topic posted on this date.Thanks to Rami Chowdhury for inviting me to speak, and the PyDistrict organizers for hosting me.Code samples from this talk are available at this GitHub repository.The full YouTube ta … | Continue reading


@bytes.yingw787.com | 3 years ago

Use Docker to simplify development workflows

Overview During my ongoing work on TinyDevCRM, I realized I need this ability to trace / audit / lock down dependencies while also not adversely impacting my development velocity during the MVP phase (where dependencies come and go in a game of musical chairs). I also want to rep … | Continue reading


@bytes.yingw787.com | 4 years ago

TinyDevCRM Update #2: Front-end Shenanigans

This is a summary of TinyDevCRM development for the week of February 15th, 2020 to February 22th, 2020.Goals for last week [❓] Work through React.js tutorial [❓] Work through TypeScript tutorial [❓] Understand how pieces of create-react-app come together [❓] Build out working, f … | Continue reading


@bytes.yingw787.com | 4 years ago

TinyDevCRM Update #1: Towards MVP and 0.1 Release

This is a summary of TinyDevCRM development for the week of February 8th, 2020 to February 15th, 2020.Goals for last week [❓] Published two technical reviews on this blog [❓] Re-do the landing page to reflect updated value proposition [❓] Purchase Balsamiq Cloud license and wire … | Continue reading


@bytes.yingw787.com | 4 years ago

I'm working on a data-driven event generation tool for software engineers

Subscribe to TinyDevCRM development here.Discussion on Hacker News I'm taking the covers off an effort I've been making over the past two weeks. I call it TinyDevCRM. Friends and acquaintances also call it “tinydev”. It's a new software project I'm building to address some of the … | Continue reading


@bytes.yingw787.com | 4 years ago

A Pythonista's Review of Haskell

(I'd like to give a big shoutout to John Chandler Burnham, who published a very clear and comprehensive set of notes that helped me immensely.) Background I've used Python in production for about three years now. Even as it's a wonderful Swiss Army knife, Python also feels limiti … | Continue reading


@bytes.yingw787.com | 4 years ago

What my QC25s taught me about designing long-lasting interfaces

I understand this post may sound like a paid advertisement. Let me be very clear, I'm not paid or otherwise incentivized by Bose to say any of this. Bose didn't tell me to do shit. Would you find swear words on professional marketing copy? I don't think so. Consider this my prope … | Continue reading


@bytes.yingw787.com | 4 years ago

Writing Software to Last 50 Years

(Correction on 01/13/2020): Original version of this post mentioned that “GNU grep ships as a standalone executable”. lobste.rs user aufziehvogel pointed out that GNU grep is actually a set of dynamically linked libraries, which both he and I verified through ldd:$ lsb_release -a … | Continue reading


@bytes.yingw787.com | 4 years ago

Concurrency with Python: Hardware-Based Parallelism

The Concurrency with Python Series: Concurrency with Python: Why? Concurrency with Python: Threads and Locks Concurrency with Python: Functional Programming Concurrency with Python: Separating Identity From State Concurrency with Python: Actor Models Concurrency with Python: CSP … | Continue reading


@bytes.yingw787.com | 4 years ago

Monads aren't as hard as you think

Much of this information comes from Computerphile and their video on monads. I found their videos extraordinarily beginner-friendly and understandable. Highly recommend you to check them out 😄I would also like to give a big shoutout to Jason DeLaat for building the pymona … | Continue reading


@bytes.yingw787.com | 4 years ago

Concurrency in Python: Data-Intensive Architectures

Overview The field of data-intensive computing introduces systems design around datasets much larger than a single machine’s disk or memory, and hence must be persisted and processed across multiple machines. Ensuring data-intensive tasks are correct, performant, and efficient, a … | Continue reading


@bytes.yingw787.com | 4 years ago

Concurrency in Python: Actor Models

Overview Actors are containers of state communicating with each other via message passing. Based on a received message, actors can choose to: Send messages to other actors Create new actors Alter how it treats new messages it receives And that’s it! State exists, yet remains enc … | Continue reading


@bytes.yingw787.com | 4 years ago

Concurrency in Python: Functional Programming

Overview In contrast to the threading/locking concurrency model I described previously, the functional concurrency model abstracts most if not all hardware primitives out of the application picture. No mutable state, and no side effects, can exist in (pure) functional programming … | Continue reading


@bytes.yingw787.com | 5 years ago

Concurrency in Python: Threads and Locks

Overview Threads and locks are a software-defined formalization of the hardware underneath, and as such comprise the simplest possible concurrency model. It forms the basis of other concurrency abstractions built on top of it, so it’s important to understand in this regards. Howe … | Continue reading


@bytes.yingw787.com | 5 years ago