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 ...)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 ...)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 ...)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 ...)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 ...)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: ');
}