In Defense of C++
I really like C++. It's not the right tool for every job, but it's what I reach for when I need to do any kind of systems programming. Unfortunately, C++ has often been cited as a "bad" language, and I feel like that reputation has worsened over time. Recent languages like Go and Rust have taken over a lot of mind…
What Happens to OO When Processors Are Free? (2015)
A while ago, I presented as a crazy thought experiment the idea of using Montecito's transistor budget for creating a chip with tens of tho...
Can a Human See a Single Photon? (1996)
The human eye is very sensitive; but can we see a single photon? The answer is yes: sensors in the retina can respond to a single photon. But neural filters only allow a signal to pass to the brain to trigger a conscious response when at least about five to nine arrive within less than 100 ms. If we could consciously…
On Programming Languages: Why My Dad Went from Programming to Driving a Bus
I discuss, with stories, why programming language choice matters and provide guidelines, along with an infographic of popular 2017 languages.
Why I'm not a React Native developer
Many people are currently assessing React Native as a platform to develop their next mobile app on. This is no trivial matter. Switching your software development platform involves a high setup cost and will profoundly impact your daily programming workflow. It is also one of the costliest decisions to reverse after…
The Internet of Things – A Disaster
It's bullshit, no question, let's get past that part. How did Nest screw up this finished product?
Short intro to C++ for Rust developers: Ownership and Borrowing
Articles and tutorials about Rust, Embedded development and Computer Graphics.
All about java.util.Date
This post is an attempt to reduce the number of times I need to explain things in Stack Overflow comments. You may well be reading it via a link from Stack Overflow – I intend to refer to thi…
The origins of XXX as FIXME
In which I go digging into source archives from 40-50 years ago, to figure out why we use XXX to mark dodgy code.
Green Threads Explained
A short and self contained explanation that will guide you through an implementation of user threads.
Using Tesseract OCR with Python
In this tutorial you will learn how to apply Optical Character Recognition (OCR) to images using PyTesseract, Python, and OpenCV.
The Wonderful WiFi232: BBSing Has Never Been Easier
Over the past year or so, I’ve been loading up SyncTerm and logging in to various telnet-accessible BBSs here and there — nothing too consistent. But, thanks to a piece of kit released by Paul Rickards, over the past month … Continue reading →
Things I learned creating my own Messenger chatbot
The modern messaging tools that chatbots run on offer much more ways to interact compared to what previous incarnations of chatbots had, such as those used on IRC or AIM. Much advise on building chatbots that’s out there quietly assumes that all chatbots are just text-in-text-out, which doesn’t match with the…
Oracle’s Cloud Licensing Change
Over the last couple of years I've been doing talks about running Oracle databases in the cloud. In both my talks and articles I refer to the Licensing Oracle Software in the Cloud Computing Environment document. This morning I was reading a post on a mailing list and someone mentioned the document had been updated on…
Go and Dogma
[ Cross-posting from last year’s Go contributors AMA on Reddit, because it’s still important to remember. ]
Selling Bitcoins in Canada
In 2013, I bought a few Bitcoins from a dude in a coffee shop, paying with hundred-dollar bills. Later that year I sold enough to get my money back . Then I forgot about them, Bitcoin’s price gyrations occasionally registering in a corner of my mind. But earlier this month I decided to find out if the remainder could…
Better than Free (2008)
[I’ve revised and condensed this short essay into an updated version, which you can read on my Substack here: https://kevinkelly.substack.com/p/better-than-free] The internet is a copy machine. At its most foundational level, it copies every action, every character, every thought we … Continue reading →
Software compatibility and our own “User-Agent” problem
Sometimes you have to write code to do some ad-hoc things in order to make programs run in a variety of environments, but as time goes by, it could result in a tragicomical situation where ad-hoc features are built on other ad-hoc features. It is easy to identify that kind of problem, but in many cases, nobody can fix…