I have nothing but praise for the Harmony Remote, I touched one multiple times a day for 25 years , went through multiple models, and bought them for friends and family. They worked and worked well. There is a potted history on Wikipedia putting them under the Logitech badge. In those 25 years I've had TVs with CRT, plasma, LCD HD and 4K, multiple generations of game consoles, content coming from…
I've implemented full async support in APSW with documentation here . This is about the how of the implementation. The why is that I kept getting requests for it, and async programming has become very popular. Contents What is async? Consequences Async Python SQLite APSW async principles It begins Contextvars for the win Controller Calls Timeouts and cancellation Fine tuning Benchmarking insights…
I first watched the Babylon 5 TV show smeared over 5 years three decades ago! It was enjoyable, and notable for the visuals, references between episodes, and Internet communities. But you had to catch the episodes when they aired, either directly or on your VCR. Having digitized my DVDs, I have finally been able to binge watch the whole show again, while on the treadmill. Wow. It was so much…
I noticed that a fair bit of my home tech had changed recently. Each one is small, but they do add up. Here is a look at them, with a wave goodbye at the ones that served in the past, and what the new ones bring. Fortunately there have recently been lots of sales and promotions making it affordable to upgrade. "We tend to overestimate the effect of a technology in the short run and underestimate…
APSW is my Python SQLite wrapper that glues together the Python C API and the SQLite C API, so you can use SQLite from Python. It has now been 20 years since I first released APSW! That means time for a retrospective. Contents Genesis Storage Options SQLite pysqlite I'll write my own Naming things Coding BitPim Principles Dependencies Version Churn Tooling Source Code Control Documentation…
SQLite is really easy to compile into your application . However Linux and BSD maintainers prefer to have a single centralized shared library and have all platform provided programs use that. You can see a (very long) list of platforms and their SQLite version here . SQLite can be compiled with many options such as full text search which almost all seem to enable, even though it defaults off. That…
TLDR: APSW now has comprehensive support for SQLite Full Text Search . SQLite has a nice full text search search implementation named FTS5 . (Yes the older FTS3 and 4 also exist.) Full text search engines are in theory fairly simple - break content into terms (typically words), index where in the content the terms exist, reply to a query's terms by consulting that index. Add in a way of ranking…
I recently implemented Unicode Technical Report #29 which covers how to turn "text" into "letters", words, and sentences. I also ended up implementing Technical Report #14 which covers line breaking - good places to start text on the next line when the current line is getting too long. My guess is that less than 10 developers have fully implemented both of these, and I have now joined that very…
APSW is my Python wrapper for SQLite's C interface gluing it to Pythons C interface . Contents Looking back Opportunity Most important code Most important code, part 2 MVP tool: cvise CPython API Fastcall/Vectorcall Error handling It gets worse ... and worse My reaction How I test Python type annotations Looking back It has been two years since I ended Python 2 and early Python 3 support . While I…
I've been using XFCE for about a decade, after switching from Gnome. As a developer I have lots of windows scattered across multiple screens, and find a taskbar the most convenient way to manage them. Gnome 3 went a different way which didn't work for me. XFCE worked very well, getting out of the way and letting me be productive. The apps like file managers, window managers, image viewers, etc are…
It has been over a year since I stopped running my own email server for me and a few friends. I had been doing so for over two decades! Why run your own? Email was and remains a ubiquitous communications mechanism, both for people and automation. When I started running my own server there were very few providers, and they had very low limits. There would be restrictions on attachment sizes and…
This release of APSW (my Python wrapper for SQLite's C interface) is the last that will support Python 2, and earlier versions of Python 3 (before 3.7). If you currently use APSW with Python 2/early Python 3, then you will want to pin the APSW version to 3.37. You will still be able to use this version of APSW with future versions of SQLite ( supported till 2050 ). But new C level APIs won't be…
Does a physical photo you never look at really exist ? Our current devices and online services do a fantastic job of managing digital photos. There is face recognition, content recognition, maps, timelines etc. And it is all backed up in the cloud. Meanwhile the physical photos languish inside a box, itself inside another box. All it takes is a few house moves over the years. There is a local…
A while ago I was flying across the Atlantic in a half full $250 million Boeing 747, wondering how it all worked financially. Multiplying the few hundred paid (round trip!) by passengers and 20 years didn't seem like it would pay for the plane let alone crews, fuel, maintenance and everything else. I even visited an airline once on business, and asked an employee during lunch break how an airline…
It turns out the metric system has completely won, but some just haven't realised it yet! If you are in the US, and need a definitive ruling on distance, weight etc then you'd think that somewhere there is the golden definition of an inch, a gallon, a pound and so on. There is. They are defined in terms of the metric system. To quote at 8m45s in: The most ridiculous thing about all of this? Every…
I wrote a bunch of stuff over the last 10 years. Now that we know what happened, this is my look back. Followup is most recent posts first, and then getting older. History podcasts did well, and keep getting better. I liked the Casio Smartwatch , but WearOS and its apps aren't getting much development. (It was particularly frustrating when even Google didn't bother to keep their apps working, and…
Python 2 has come to an end . I ported the last of my personal scripts to Python 3 a few months ago. Perhaps the greatest feature of Python 2 was that after the first few releases, it stayed stable. Code ran and worked. New releases didn't break anything. It was predictable. And existing Python 2 code won't break for a long time. The end of Python 2 has led to the end of that stability, which…
I'm a fan of podcasts and especially longer form history podcasts. I've found that "History of" podcasts that cover various empires and locations seem to be rather good. The History of Rome podcast is a very good example, with many others following that format and principles. The format allows the shows to adapt over time, include listener feedback, and do experiments which often work well. If you…
Contents Summary Starting point Smartwatch? First Time User Experience (software) Charging Watch Display Thoughts Summary The manual (pdf) is comprehensive and describes the non-WearOS functionality well. r/WearOS covers the WearOS side - check the sidebar too. It is also worth noting that current watches tend to use identical hardware (same qualcomm chipset, same screen resolution, same RAM, same…
I've been wondering what best practise for handling defaults is. In software there are generally 3 values: zero, one, or many. As a consequence developers often pick a sensible number for "many", and allow configuration to change it. Eventually defaults permeate the code, settings, user interfaces, product documentation, user forums, and search engine results. It spreads not from a single source…