← Înapoi la Urmăritori

Cel mai recent articol

Ultima verificare

Urmăritori 0 urmăritori
Articole: 49
  1. Hexadecimal Drum Loops

    When you program a drum machine, you’re encoding a binary state (play or don’t play) for each drum (kick, snare, hi-hat, etc) at each time step.

  2. A Deep-ish Dive Into Python Overloads

    Overloads are a powerful tool for defining precise types in a Python package with polymorphic functions.

  3. TIL: Migrating Keras 2 Models to Keras 3

    I’ve been working on upgrading the tech stack for a deep-learning research project that I’m involved in, moving the Docker devcontainer from Python 3.8 (which reached end-of-life over a year ago) and Tensorflow 2.13.0 (similarly dated) to Python 3.11 and…

  4. Terrain Algorithms on the GPU with Taichi

    A few years back, I explored some common terrain algorithms like slope, aspect, and hillshading by implementing them from scratch in Python.

  5. I recently stumbled onto a blog post by Aldo Cortesi about using space-filling curves to visualize the structure of bytes within a binary file.

  6. Google recently released the AlphaEarth Foundations annual Satellite Embeddings dataset, a 64-dimensional vector representation of Earth’s surface that incorporates spectral reflectance, radar backscatter, climate, and topography in an analysis-ready form…

  7. TIL: Configuring jj fix with Ruff

    I wrote a recent blog post about hacking together a crude version of Git hooks in the Jujutsu VCS.

  8. Measuring Dead Trees from Aerial Photos

    My day job involves a lot of time spent looking at NAIP aerial imagery of burned forests.

  9. Controlling a Raspberry Pi over IR

    I have a digital photo frame running on a Raspberry Pi hooked up to a small TV, and want an easy way to control playback.

  10. Automating Pre-Push Checks with Jujutsu

    I spent a few hours this weekend trying out the Jujutsu version-control system and I never want to use git again. jj manages to strip out the sharp edges of version control – progress-killing merge conflicts, manual rebases, and mazes of subcommands – wit…

  11. Invoking Existential Dread with Numpy

    If you’ve lived in the US – especially an area prone to extreme weather – you’re probably uncomfortably familiar with this sound: Your browser does not support the audio element.

  12. Building Autoencoders with Scikit-Learn

    scikit-learn’s support for deep learning is pretty limited, but it does offer just enough functionality to build a usable autoencoder.

  13. TIL: Fast Array Accumulation in Xarray

    I’m working on a project1 that requires splitting a large raster into a few thousand overlapping chunks and iteratively processing and accumulating each result into an output raster.

  14. TIL: How Fast is Solar Bitflip Sort?

    Solar Bitflip Sort is a joke sorting algorithm that relies on cosmic particles colliding with transistors in a memory node to randomly flip an array of bits into a miraculously sorted arrangement.

  15. Simulating Digital Circuits in Rust

    I’ve been dabbling with Rust lately and looking for a good learning project to help ground some theory in practice.

  16. Optimizing Long List Labeling in eerepr

    eerepr is a Python package I wrote that generates HTML reprs for Earth Engine objects, converting JSON data to trees that can be navigated in a Jupyter notebook.

  17. Classifying MNIST as 1D Signals

    The MNIST dataset of hand-written digits is ubiquitous in image classification, the de facto “hello world” of 2D CNNs.

  18. Procedural Blog Posts with Markov Chains

    I’m sick of blog posts written by LLMs.

  19. The randomVisualizer method in Earth Engine assigns randomized colors to unique values in an image, providing a quick shortcut to visualize classified pixels without manually creating a color palette.

  20. I’m building a domain-specific language called Arpeggio that compiles code into songs.

  21. Paleo MODIS

    I have an idea.

  22. I recently needed to export an image from Earth Engine to overlay with a local GeoTIFF.

  23. Earth Engine + Cloud Run + Redis

    A few months back I posted my experiments deploying serverless Earth Engine functions using infrastructure-as-code with Pulumi.

  24. UPDATE: It looks like the bug that prevented connecting to mapped network drives is fixed as of NordVPN 7.39.1.0, and this workaround now causes issues with VPN connections.

  25. Replacing My Guitar Amp with a Neural Net

    Vacuum tubes are an expensive, inefficient, and unreliable relic of early 1900s technology.

  26. Exploring Parity in Python

    I was recently introduced to the idea of a parity drive, a specially reserved hard drive in a data server array that can be used to recover data when another drive fails.

  27. TIL: Promises in Earth Engine

    Using evaluate with a callback function is the standard way to handle potential server-side errors in the Earth Engine JS API, e.g. parsing a date: ee.Date("2012").evaluate(function(result, err) { err ?

  28. TIL: Using Icons in Earth Engine

    Some UI elements in Earth Engine (labels and buttons) support image icons, but the feature has some quirks that aren’t well-documented.

  29. Running Earth Engine code as a serverless function is normally a multi-step process that involves manually creating a service account through the web UI, downloading a credential file to zip with your code, and enabling and configuring a handful of APIs.

  30. Building Arpeggio Pt. 3: The Engine

    I’m building a domain-specific language called Arpeggio that compiles1 code into songs.

  31. Summarizing 51 Years of Landsat Data

    BigQuery, a cloud platform for storing and analyzing big tabular datasets, was added as an export option in Earth Engine last year, and I’ve been looking for an excuse to test it out ever since.

  32. TIL: Handling Rule Lists in Lark

    I encountered an interesting challenge while building a Lark parser for my domain-specific language, which I thought was worth a quick write-up.

  33. I’m building a domain-specific language called Arpeggio that compiles code into music.

  34. Building Arpeggio Pt. 1: Language Design

    I’ve tinkered with parsers for a few small side projects like building a language server and parsing blog post metadata, but I wanted to tackle a bigger parsing project.

  35. Writing a Parser for Blog Posts

    In an effort to simplify and speed up my blog, I’m migrating from my custom-made NextJS SPA to Hugo, which means reformatting the frontmatter header of every blog post from this: --- title: My Blog Post category: Blog tags: blog, post, blog-post date: "20…

  36. Type Safety and Non-Empty Tuples in Python

    Say you’re writing a typed Python package with a function head that takes a generic tuple and returns the first element.

  37. Introducing AudioJPEG

    As far as computers are concerned, images and audio are fundamentally just arrays of numbers: signals changing over time (audio) or space (imagery).

  38. Chasing Summer

    With summer winding down in the northern hemisphere and days getting shorter faster, I started wondering: How far would I need to travel today to get the same length of daylight tomorrow?

  39. Python on Punched Cards

    Before AI assistants, modern IDEs, syntax highlighting, and version control, software was written by making holes in pieces of paper called punched cards.

  40. Dask is a Python package that allows you to easily parallelize data analysis, whether you’re working with arrays, dataframes, or pretty much any other data format.

  41. Patch Metrics in Earth Engine

    Area isn’t everything.

  42. There are two ways to download image data from Earth Engine–exporting to Drive or downloading from URL.

  43. Guitars, Microchips, and Assembly

    My first attempts at programming were writing hacky embedded C++ to run Arduino microcontrollers, brute forcing my way through compiler errors to try to make LEDs blink and motors spin.

  44. Cellular Flood

    I recently built Conway’s Game of Life in Earth Engine.

  45. Terrain Algorithms from Scratch

    There are plenty of tools to calculate slope, aspect, and hillshading from elevation data, but if you’ve ever been curious about how they’re calculated, this post goes through the process of implementing those algorithms from scratch in Python using just…

  46. Cellular Automata in Earth Engine

    Cellular automata are a type of computer program that can create complex, emergent behavior by applying simple rules to determine the state of cells on a grid over time.

  47. Optimizing Module Structure in Earth Engine

    In a recent blog post, I found that shrinking an Earth Engine module’s size by 75% had almost no effect on import speed in the Code Editor because most of the time was spent waiting for Earth Engine to find it, not downloading its contents.

  48. In this post, we’ll go into the weeds on the Earth Engine module importing system to answer the question, does minifying source code speed up imports?

  49. Dithering in Earth Engine

    Ever wanted to use the power of distributed Earth Engine processing to make 16-bit multispectral imagery from a $130 million satellite platform look like it was taken by a 1989 Game Boy camera?