Several years ago I wrote a post on simulation the Schrodinger Equation that had a brief intro to Quantum Mechanics paired with a simple Python simulation and visualization.
That ended up being one of my more popular pages, despite the follow up post with 2D visualizations being arguably more visually appealing.
Probably down to the titles in the end — people love a Python…
It’s been a bit over a year since my last astrophotography post highlighting galaxies and a bit over two years doing serious astrophotography.
Even though my rig has been nearly static, with the exception of adding an Antlia ALP-T 5nm Ha+Oiii filter to retire the Svbony and its impressive Oiii halos and replacing my flexible spider vane with a rigid one including better adjustment screws…
I’ve always been a bit fascinated by radio and wireless communication, so I decided to get some commodity SDR dongles like the RTL-SDR blog V4 and see what I could hear , if you know what I mean.
Several DIY antennas and long distance receptions later, I started to wonder what else (beyond communication with other enthusiasts) easy access to an SDR receiver could unlock.
That led me…

 Hive One sitting on the first BeeLogger platform after surviving the 2024-2025 Winter. 
 
 

 With the success of my beehive livefeed and bee-counting neural network in monitoring bee activity, I decided last year it was time to augment my data collection capabilities.
Beyond the general activity of the bees that I can already assess, there are several aspects of bee…
The last astrophotography post covered all the details on the technique for capturing deep-sky images and went into some detail about precisely how to interpret these images.
Check it out if you’re not sure what you’re seeing below.
The only downside of the last post is that it only showcased the “best” images of various different types.
Unfortunately, the…
I was presented with an anecdote from a guy doing software development job interviews that went like this: 
 Interviewer: Show me how you would add two big numbers represented as strings?
 Candidate: How about `adder = lambda a,b: return int(a)+int(b)`?
 Interviewer: No, the numbers are too big `int(a)` would fail.
 Candidate: ...
 First off, Python is a bit unique among modern…

 None of the images here were taken with this rig, but its where I started in 2010. 
 
 

 It’s been a while since my last post, largely due to time spent on beekeeping and astrophotograpy .
So, to move the needle, I’ve pulled together some of the best images of deep-sky (meaning: far away) objects I’ve taken at night from the relatively light polluted…

 I’m now the proud owner of a Sky Watcher Quattro 200P on a EQ6-R Pro mount. Currently paired with a Sony α7C and coma corrector, along with the occasional OSC filter. Guiding to 0.6" with a ZWO ASI120MM on a Svbony 60mm F/4 106SV guide scope. Living the dream.

 Technically not from the BeeCam , but about the same perspective. 
 
 

 After the previous post where I setup a live stream for my beehive, I decided I wanted a quantitative measure of the bee activity going into the winter.
The most straightforward thing to start with was simply identifying and counting the bees in each frame of the feed.
While not directly…

 A still frame from the BeeCam . The carnage on the front is a rogue black cherry. The bees are friendly. 
 
 

 This post is begging for an initial post on how I ended up with bees, but as this isn’t a beekeeping blog (yet), I’ll first go into some detail on the live stream I setup to watch the bees come and go.
There are a lot of live streaming guides…
This post will try to give a grounded conceptual (with a side of mathematical) understanding of quantum computing by comparing it to classical computing.
This can be a bit tricky, since robust quantum computers are still a nascent technology, but I’ll stick to the low level concepts here instead of getting into the esoteric science that is programming quantum computers.
Primarily I…
When people learn that I have a physics degree, they typically reveal that they have a question about physics they’ve always wanted to have answered.
Often it’s something along the lines of trying to understand time dilation in relativity: the phenomenon where observers at different velocities disagree about the amount of time between events (in other words, the rate of…
Motivation 
 In this post, I will run through the construction of a 30A 125V smart plug based on the ESP32 platform that can be either controlled from a simple webpage, or integrated into a system like Home Assistant . 
 While there are many good commercial options for smart plugs for home devices, and there are many industrial options for controlling heavy machinery, there’s a bit…
In a previous post I discussed the development and capabilities of the sdfray package , which represents scene geometries as signed distance functions (SDFs), and supports several rendering approaches.
In this post, I’ll be discussing the rendering approach I previously called true optics , which tries to realistically simulate most commonly observed properties of light, to achieve a…
I stumbled onto the concept of using signed distance functions (SDFs) to represent a three dimensional geometry almost by accident when looking up ways to generate 3D models (for 3D printers) programatically, as opposed to using traditional CAD software.
Unlike more standard CAD processes for 3D printers, which tends to boil down to triangular meshes, SDFs are mathematical functions that can…

 The HSV colorspace, matching angle to hue around the circle, and saturation to the radius. 
 
 

 In a previous post on simulating quantum mechanics , I visualized the complex numbers in the wavefunctions by plotting their real, imaginary, and magnitude (square root of probability) separately.
As I mentioned briefly in that post, this is a bit lacking compared to the more…
I was reading an article about scientists who created an accurate simulation of the behavior of simple cells, to really understand their dynamics, and I wondered whether it would be possible to do the same for “simple” atoms or molecules.
Some quick exploration into the topic indicates that’s a fairly difficult problem , not to mention an area of active research for…
At this point, probably everyone has heard of the game Wordle where one has six guesses to determine a secret five letter word.
Each time you guess, the letters are colored to represent the following: 
 
 Gray — the letter is not in the word. 
 Orange — the letter is in the word, but not at this position. 
 Green — the letter is in the word at this position.…
Statically generated sites, like this blog and other sites built with tools like Hugo , are great for simple deployment and fast serving pages, but they lack some features like live editing and other dynamically generated content.
Fortunately, most of these shortcomings have been sorted out by the community.
Here, I’ll focus on search functionality. 
 Typically, when searching…
My initial motivation was to build a device that could receive and decode the WWVB time code broadcast from Fort Collins, CO at 60 kHz, and used to synchronize so-called atomic clocks seen on people walls or on their wrists.
These clocks really just decode the broadcasts on the WWVB station, which is synchronised to actual atomic clocks co-located with the radio broadcast.
The protocol is…
When I ended up with a second connection to the internet (courtesy of being a Comcast employee), there was a potentially painful decision to make.
Xfinity includes a lot of streaming features, which require being on Xfinity’s network to utilize.
Key here is the ability to turn many streaming devices (including a Roku) into a live and on-demand streaming platform for TV with the…
We recently had a new large patio put in to replace the old, broken one, but there was no outdoor lighting or even outdoor power, so it was quite difficult to enjoy this investment after dusk.
Instead of hiring an electrician and contractor to remedy this, I decided to flex my handyman skills, and do it myself. 
 The design goal was overhead string lights, approximately 10 feet off the…
This post is a (likely one-off) departure from the technical themes of previous posts to focus a bit on the career trajectory and prospects of academia compared to industry.
I have had the opportunity to develop a lot of very marketable skills in particle physics research.
The chance to manipulate and analyze some of the biggest datasets in big data is itself a great resume…
Neutrino detector often detect neutrino indirectly by recording information about photons produced in the neutrino interaction .
 Simulations are used to understand how light propagates through the detector, and this allows one to understand the kinds of optical signals produced by different types of interactions.
 Many techniques can be exploited to maximize the amount of information…
Photon simulations for DUNE 
 The DUNE experiment is nominally a time projection chamber (TPC), which records the paths of high energy charged particles by collecting the ionized electrons left in their wake.
Studying the paths of these particles gives information on the particular type of physical interaction responsible for creating them.
DUNE is particularly interested in the…
A historical perspective on automation 
 As I’ve mentioned before , the desire to automate (cheat, bot, macro, …) games like RuneScape was the primary reason I learned to program at such a young age.
Back in 2002, there was no Stack Overflow to rely on for code snippets, no Reddit to connect me with like-minded individuals in the niche of game automation, and (thankfully) no…
One could argue that the goal of a physicist is to write and publish peer-reviewed papers , which incidentally require enough research, novelty, and scientific merit to pass peer-review at some major journal.
There are, however, a lot of papers out there, so some advertising is necessary in the form of conference talks to generate interest in the physics community or public talks to inform the…
Particle physics is the original big data field, and science in general produces some of the largest datasets in the world .
The desire to store, transfer, and process particle physics data has driven the development of large, distributed computer clusters and the internet itself .
Underpinning all of this is the ability to store and access the data produced by experiments and…
This is a post about an algorithm I developed over a decade ago to generate mouse movements that could be mistaken for actual human input.
The algorithm, called WindMouse, has been used in many different places , as a quick google search will show, and often appears unattributed in stackoverflow questions , despite being licensed under the GPL.
Since it’s seen rather wide use, and…
I have previously posted about the basics of maximum likelihood fitting, and how to perform such a fit using binned histograms for both the data and the probability density functions (PDFs).
For context, and a gentler introduction to the math, I’d suggest skimming the previous post.
In summary, maximum likelihood fitting is a method of statistically determining the makeup of some…
In previous posts I implemented a math library that can do perform computations on arbitrarily large (or small) numbers.
First came algorithms to manipulate lists of symbols as integer numbers , which represented signed numbers in a little endian binary format with an arbitrarily large number of bits, along with the mathematical operations of addition, subtraction, multiplication, and…
Following the previous post on implementing integer math without utilizing some lower-level math implementation, this post will extend the functionality to approximate real numbers using the building blocks for representing integers.
As before, this is targeted for the simple LISP-like language L2 but will be done with Python code first, using only functionality present in L2. 
…
I previously posted about simple, programmable, Turing-complete machines .
That post discussed a programmable machine that optimized ease-of-programming and ease-of-implementation while still being able to run any program.
With those goals in mind I put together a Python package L2 which emulates such a simple machine in software.
For the L2 emulator, I used math operations and…
Detecting neutrinos 
 
 Neutrino interactions produce energetic electrons which in turn produce Cherenkov (directional) and scintillation (isotropic) photons in scintillators. 
 
 

 
 Rare processes like neutrinoless double beta decay, which produces two energetic electrons, can also be studied by neutrino detectors.
The SNO+ experiment will eventually search for neutrinoless double beta decay ( 0 ν β β 0\nu\beta\beta ) by loading Tellurium metal into the organic liquid scintillator Linear alkylbenzene (LAB) and precisely measuring the energy of electrons produced by double beta decay of Te 130 ^{130} .
The amount scintillation light produced by the double beta decay electrons is proportional to their…
Exponentiation, or x y x^y , is typically provided by a standard math library on the system you are using as the function pow(x,y) , or similar.
However, if you are programming on some embedded system without standard libraries, or have some externally imposed constraints preventing you from using standard math libraries, it is possible to implement it yourself.
Of course, you could look…
Solutions to the puzzle 
 This is (perhaps?) the final post in the series about solving a dust-matching puzzle pictured below, where the whole cluster of similar-colored piles are removed when one in the cluster is clicked, and the piles the fall down and towards the center to fill any voids that are created.
 
I wrote a depth first search (DFS) solver that is able to find the best…
Previous solutions 
 Previously I wrote a depth first search (DFS) solver for the dust matching game pictured below, and have since done some thinking on how it might be solved more efficiently.
 
As a reminder, the rules of the game were that any similar color pile touching a pile of dust that is clicked are removed from the board, then the piles fall down and towards the…
The case for a fast JSON database 
 Simulation programs and data acquisition (DAQ) systems for physics experiments are typically driven by databases which contain the numerous parameters that can be changed to control the behavior of the simulation.
This can vary from the mundane, such as how many events to simulate for this particular run, to the exotic, such as the neutron capture…
The dust matching game 
 I was presented with a simple puzzle minigame from the MMORPG Nodiatis , which I had never heard of and know nothing about.
I have quite a history of automating computer games with tedious mechanics (looking at you, RuneScape ), so I couldn’t resist taking a stab at this one.
The minigame consists of a 8x6 grid of five different colored piles of stuff…
Programming a machine 
 Von Neumann machines, such as a typical desktop computer or smartphone, can (in principle) have programs written for them by hand using the machine’s assembly language .
In practice, program compilers have been constructed to transform high level languages (like C or C++ , which are even easier to write) into assembly language programs.
Still, there is a…
Context 
 In a particle physics experiment, a lot of data is produced and must be analyzed to extract useful information.
This data typically consists of many independent observations of a “physics event” inside of some detector, which records information about the event.
Often the analysis boils down to classifying a large dataset of events into a few categories, with the…
Introduction 
 
 Home sweet home on the Direwolf20 1.16 server. 
 
 

 I have played a lot of Minecraft and continue to enjoy the game because it is very open ended and every world is unique.
For those that don’t know, Minecraft is a world made of blocks, and all the blocks can be moved or changed by the player.
It starts off as a procedurally generated…
I have a server on a residental internet connection with relatively limited upload bandwidth.
That server hosts this website along with several services for personal use including: 
 
 A Jellyfin media server for streaming my own video content 
 A Booksonic-Air audiobook streaming server 
 Automated full-system backups using rclone to Google Drive with borgbackup 
 
 If…
I was commissioned to solve a critical problem during the Covid-19 pandemic: staying active on Slack / Microsoft Teams / etc while not actually at your computer.
Apparently some workplaces monitor your work-from-home habits based entirely on whether your status on these messaging applications is “Active.”
This is decently effective, since you have to be moving your mouse and/or…
Introduction 
 
 A Chroma model of the Theia25 detector with PMTs and LAPPDs as photon detectors. 
 
 

 Neutrino detectors like SNO+ and Theia don’t detect neutrinos directly.
Instead they detect optical signals (light/photons) produced by high energy charged particles present after neutrinos interact in the medium.
Detectors like these are typically large…
Early in the Covid19 pandemic I decided to take a deep dive into the math and implementation of neural networks (NNs) .
Instead of treating NNs as a black box and using state-of-the-art packages like Tensorflow and Keras , which make NNs as accessible as LEGOs, I wanted to start from scratch and build the algorithms that Tensorflow (or any NN package) is based on.
Historically this…

The DUNE experiment will transfer a massive amount of digitized analog signals from the wire planes, which collect electrons ionized by high energy particles produced in neutrino interactions, to software that decides whether or not the current state of the detector is interesting enough to store for future analysis.
Sitting in the middle of this infrastructure is the Warm Interface Board…
Introduction 
 
 Chroma is a simulation package for optical photon raytracing that aims to be physically accurate and very fast.
In fact, an instance of Chroma running on a single GPU can propagate photons up to 200x faster than similar methods on a single CPU.
It’s built on PyCUDA and contains CUDA kernels for propagating photons in triangular mesh geometries.
This…
I finally got around to buying an actual domain and benland.us now points to my server. When I discovered the top level domain .land existed, I couldn’t resist, and ben.land is setup identically. Previously my website was a MediaWiki instance, now archived in the Internet Archive, and may contain useful information, but I have switched to using the statically generated site you see here,…