Casual Shadertoy Path Tracing 1: Basic Camera, Diffuse, Emissive
Posts in this series: Basic Camera, Diffuse, Emissive Image Improvement and Glossy Reflections Fresnel, Rough Refraction & Absorption, Orbit Camera Below is a screenshot of the shadertoy that g…
Clojure – Fascinated, Disappointed, Astonished (2016)
I’ve had a pleasure to work with Piotrek Jagielski for about two weeks on Clojure project. I’ve learned a lot, but there is still a lot to know about Clojure for me. In this post I’ll write what fasci
Calculating Pi: My Attempt at Breaking the Pi World Record
Before I go into the specifics of my record attempt, it is important for you to have some background information. Over the past few years I have been steadily acquiring server hardware to increase my knowledge of system administration and cyber security. This is not only for personal growth: it has also helped me…
How to list all the targets on a Makefile
A tip on how to add a target on your Makefile to list all available targets
Clojure as a dependency
I have a shameful confession to make: I have long neglected an open-source library that I maintain, clj-tagsoup .
Getting started with shaders: signed distance functions
Getting started with shaders: signed distance functions!
Null Values in SQL Queries
*If you’re the owner of this website and have questions, reach out to Bluehost. We’re happy to help.
The social side of science seen in the research on programming language quality
I love science. Not the “space is beautiful” faux-science, but the process of doing science. Hours spent calibrating equipment, cross-checking cites of cites of cites, tedious arguments about p-values and prediction intervals, all the stuff that makes science Go. And, when it does happen, the drama. I also want us to…
Fibers, Oh My
Fibers, Oh My! # Written by Dale Weiler, last updated Oct 5th, 2020 Twitter GitHub It’s been brought to the attention of many people in the game development industry that you can use fibers to parallelize your engines and games. This one presentation in particular: Parallelizing the Naughty Dog engine using fibers has…
Finding unique items: hash vs. sort
A while back, I was trying to speed up some code which finds unique items in a collection. For example, transforming "AABBADCAB" => "ABDC" . There are two ways to do this efficiently - one is based on sorting, the other based on hashing. So, which is faster? I couldn't find the answer, so I ran some experiments and…
Persisting React State in LocalStorage
A common thing in React development is that we want to store a bit of React state in localStorage, and re-initialize from that value on the next page-load. This quick tutorial shows you how we can build a custom hook that does exactly this!
Building a simple neural net in Java
Building a simple neural net in Java.
Streaming: a skill gap?
It's not just for big data
In Defense of XML
When I started my career, XML was ubiquitous. The meta-information in a Java JAR file - the manifest - follows a proprietary format. But Java EE designers built it from the ground up on XML: meta-information of all artifacts is in XML format e.g. web.xml, ejb-jar.xml, application.xml, etc. Java EE is one example I…
Maybe visual programming is the answer, maybe not
Whenever discussing problems with programming today and potential solutions, invariably someone will pop up and declare that the problem is ...
WebAssembly without the browser
Most WebAssembly tutorials and examples you will find online focus on using it inside the browser in order to accelerate various functionality of a website or web app. However, there is an area where WebAssembly is really powerful but not talked too much about: outside the browser usage scenarios. That is what we’ll…
Optimizing 128-bit Division
When it comes to hashing, sometimes 64 bit is not enough, for example, because of birthday paradox — the hacker can iterate through random $latex 2^{32}$ entities and it can be proven that wi…
Simulating RAM in Clojure
“Computers are all made out of logic gates”. We’ve heard that saying before. We also have a sense that logic gates are very simple machines, analogous to light switches even. This raises the question: how exactly do kind-of-light-switches come together to form computers ? How does “storing a variable” or “calling a…
Attempts to make Python fast
Posted on Hacker News there was an Implementation Plan for making CPython (the official Python implementation) faster. The author claims a 5x speedup is possible for the low cost of $2 million USD.
What Happened to XPath?
After being revolutionary in 2007 to unleash CSS selectors that never existed, the specification got abandoned who knows why.
Is parallel programming hard, and, if so, what can you do about it?
There is a new release of Is Parallel Programming Hard, And, If So, What Can You Do About It? . This release features a number of formatting and build-system improvements by the indefatigible Akira Yokosawa. On the formatting side, we have listings automatically generated from source code, clever…
Building a high performance JSON parser
JSON is important, damn near everything that we do as programmers or operators involves JSON at some point. JSON decoding is expensive, if your product talks JSON then performance of marshalling data in and out of JSON is important. This is a talk about designing an efficient replacement for encoding/json.Decoder .
On the Beauty of Python's ExitStack (2015)
I believe Python's ExitStack feature does not get the recognition it deserves. I think part of the reason for this is that its documentation is somewhere deep down in the (already obscure) contextlib module because formally ExitStack is just one of many available context managers for Python's with statement . But…
Text layout is a loose hierarchy of segmentation
I love text layout, and have been working with it in one form or other for over 35 years. Yet, knowledge about it is quite arcane. I don’t believe there is a single place where it’s all properly written down. I have some explanation for that: while basic text layout is very important for UI, games, and other contexts…