An Update on my 'Jots' Process 2022-07-11 A couple weeks ago I started experimenting with “jotting” here on my blog. The idea was to create an easy way from the command line to write little quips I would put up on social media but have them be persistent on my blog. (More ...)
Mozilla Firefox Networkless Translation 2022-07-08

On the fediverse (gratuitous personal profile link) I follow lots of international people. As a consequency I see lots of posts in other languages. I always hated dumping it into Google Translate to get an English representation. Fortunately in June Mozilla announced the result of their partnership with Project Bergamot to create a Firefox browser extension . The project is creating open source trained datasets for translation between many European languages. Because the model is pre-trained all of the translation is done on the local machine, thus with no network interactions whatsoever!

(More ...)
Linux X86 Builds on Apple Silicon Are Impractical 2022-07-06

In Jupiter Broadcasting’s Matrix General Chat room we all got into a bit of a conversation spiral about running Intel x86/x64 VMs and code under emulation. Will the hypothetical new Rosetta for Linux make it possible to use Intel x86/x64 Linux on their platforms at reasonable speeds, or at least x64 only apps as needed within ARM64-based VMs? The conversation ended with the point that for most of my needs all I really need is to be able to build x64 Linux apps on my machine. Is that possible even with the performance hit of running emulation? Yes it is very possible. Is it practical though? Sadly, no it is not.

(More ...)
Open Source Contribution Quandary 2022-06-30

I recently rediscovered an open source project in an area I am interested in and like to contribute to. The presentation layer aspect looks good. The installation procedure and language about streamlining looks good as well. It would solve a lot of the problems that I’m having with software I’m using in a similar area. Yet the more I looked into it the more I felt, for lack of a better term, icky at the notion of being associated with such a project for reasons beyond the software itself.

(More ...)
Jukeboxing Into Modern Music 2022-06-17

At some point in adulthood, for me it started in my third decade of life, you start to notice that you know less and less about modern music, television, movies, et cetera. Some of us start early in our over-embrace of nostalgic media. Others it’s all looking forward until they die. Most of us though, me included, start indulging more in the past than the present. I’ve tried various times to break that by listening to nothing but Top 40 stations on streaming services. I end up getting pretty tired of it quickly though so after a day or so the whole experiment is over.

(More ...)
Blog Transitioned from Jekyll to Hugo 2022-06-13

Back in the end of 2018 I wrote this first post in Jekyll after converting from WordPress . WordPress had started feeling too clunky for me and I always wanted to have something simpler. I looked at Jekyll and Hugo at the time. Back then the big bonus for Hugo was compilation speeds and it was supposedly a bit easier to get started with. The advantage of Jekyll flexibility and it being more seasoned, not that either were new. Because I was doing Ruby development at the time and Jekyll is written in Ruby I decided to go with it instead of Hugo. It served me pretty well for the past several years but with increasing compilation times and trouble getting Ruby Gems configured on my Mac I decided to take the plunge and try to convert to Hugo. I was not disappointed, which is why this article is the first post to the Hugo-built site.

(More ...)
Twitter Account Shredder 1.0 2022-06-09 After all the machinations around the inconsistencies in the Twitter API and updates needed to support reading from an archive, storing history of processed IDs, proper rate limiting, and allowing individual Tweet/Like deletes, version 1. (More ...)
Dart's Lazy Stream Evaluation Bites Me Again 2022-06-08

Don’t you hate when the computer does exactly what you told it do versus what you think you told it to? I’ve been burned in the past with lazy collection/stream/iterator operator evaluations in the past. Specifically I am burned by the fact that Dart doesn’t force you to explicitly ask for a new iterator. It is a common thing to be careful about but it burned me in the refactoring of my Twitter Account Shredder just now. Even though it only burned up a couple minutes of time I figured I’d re-document for posterity here for others. I had another more detailed post on the topic is here earlier this year.

(More ...)
Twitter's Very Inconsistent Data Consistency 2022-06-07

As a part of leaving Twitter I decided to write a script that would delete all of my Tweets, Retweets, Likes, and Follows. The idea was that when it was done I would again have a bare profile. First I downloaded my archive. In it were over 1500 follows, 20,000 tweets, and 95,000 likes. Due to rate limits placed on the Twitter API by Twitter it is only possible to go through 200 delete operations per hour. Therefore deleting all that data would take over three weeks. That is why I was shocked to see that the operation completed in about two days. The more I dug into what was happening the more I saw how amiss things were with Twitter’s data consistency.

(More ...)
Dart Tip: Default Constructor Parameters With Collections 2022-05-26

In dart one can have optional named parameters instead of positional parameters. This not only allows one to allow named arguments when calling methods but also default values:

void writeCount({int count = 5, String prefix = ''}) {
  List.generate(count, (i) => i + 1).forEach((e) => print('$prefix$e'));
}

void main(List<String> arguments) {
  writeCount();
  writeCount(count: 3);
  writeCount(count: 3, prefix: 'Last one: ');
}
(More ...)