lqdev🦃

I NEED ONE!

Ayaneo Slide Promo Video

This gives me Sidekick / Sony Mylo vibes. The only reason I wouldn't get it is battery life. I don't care for the gaming capabilities.

Throw in an ARM-based processor like the Snapdragon X Elite for all-day battery life, give me USB-C ports to attach a dongle to, and I'm sold.


Send me a webmention
lqdev🦃

Obligatory yearly website update post. When I built this website, I started on .NET 5. 3 years later and although my code has changed to add new features, I haven't had to make any code changes to account for a new version of .NET. I love that I can get all the benefits of the new version without having to do any rewrites.

GitHub PR showing upgrade to .NET 8


Send me a webmention
lqdev🦃

Following up on the theme of cycles and looking back at things from yesteryear explored in my post AI abundance after scarcity cycles, I came across another example.

While looking through some of my old books, I came across Stephen Covey's "7 Habits of Highly Effective People". I remember reading it over ten years ago. At the time, the habits and themes explored in the book had an impact on me. However, since that time I haven't looked at the book again. Today, I cracked it open and skimmed through the foreword. In it, Stephen talks about common human challenges such as:

  • Fear and insecurity - This could mean a fear of the future, like losing your job.
  • Lack of life balance - Put in the context of being always online, our lives continue to get more complex and demanding.

Given recent talking points of AI coming for our jobs and the accelerated rate of technological innovation, you could pluck these challenges from the time they were written and they'd still be relevant today. You could also place them 500 or 1000 years ago and they'd also be relevant which made me think of the Lindy Effect. In short, it states that the longer a technology or idea continues to live, the higher the likelihood it will continue to exist into the future.

I found it funny though that while flipping through the book and reading about these timeless challenges and principles, I came across the opposite of that. One of my bookmarks was a Borders membership card. If you don't know or remember what Borders was, in a gist, it was one of the large bookstores which succumbed to disruption from e-commerce (i.e. Amazon)

An image of a Borders member card


Send me a webmention
lqdev🦃

While writing the post RSS for new event notifications I mentioned how the flow of getting new event notifications through RSS might work:

When a new event is added to the calendar, the RSS feed can be updated. The channelproperty has the link to the shared calendar you can subscribe to and the individual events have .ics files embedded in the enclosure.

I actually didn't know if that was possible until I looked at the RSS enclosure syntax. Based on that page, as long as you provide the URL to the .ics file, length of the file, and the MIME type (text/calendar), you can link to your events inside enclosures. So it is possible.

That's not the point of this post though. When I was looking at the references, I came across this post talking about the use case for RSS enclosures. I don't know when this post was published but given the problems mentioned with accessing high quality video, I assume it was in the days when the internet was on dial-up or DSL speeds. At that time, downloading webpages or e-mail was slow. Forget about downloading multimedia. As that post mentions, with enclosures, you could schedule your RSS client to download content like videos during off-peak hours so any content you'd want to access would download overnight and be available to you in the morning. About 30 years later, in many places, even with a connection that has 1MB download speeds, downloading a podcast that's 100MB or a video that's 2GB is relatively fast. It might take a while, but compared to 30 years ago, it's "instant". So at this point, it's not really technical challenge as much as it is an access challenge.

Low bandwith speeds forced people to get creative in how they utilized their resources. The internet was not the only time this happened. About 30 years ago or so when cell phones were just becoming mainstream they too suffered from scarcity. Cell phones and plans were very expensive. You had limited minutes and when SMS became a thing, those too were limited. If you wanted to have hour long conversations with friends and loved ones, you'd have to wait until off-peak hours so you could use your "free" minutes. Fast-forward 30 years later, cell phones and cell phone plans are relatively affordable. When you purchase these plans, you get access to unlimited minutes, messages, and data. So again, the technical limitations aren't as prevalent. It's mainly a matter of access and whether your cell phone provider offers good coverage in your area.

This brings me to my point. We're seeing this cycle again with AI. Large Language Models today are expensive to run and I'm not overindexing on the financial perspective. You pay per call, access to these models can be throttled at times, there's only so many GPUs you can get access to in a data center to run them, you pay the latency penalty by going through the network as well as the cost of inferencing, and you also have token limits. About a year into the release of ChatGPT, access to these models has been expanded, the models have gotten more capable (GPT-4V and GPT4 with 128k tokens), it's become cheaper to run these models. At the same time, computing is becoming more efficient and smaller "open-source" models are becoming more capable. Today, we have to be creative with how we utilize our resources, but we're only a year in. If we extrapolate how these cycles play out though, in 30 years we'll forget how challenging it was to use and access early AI technologies and AI will become more abundant like the internet, cell phones, and other technologies before it.


Send me a webmention
lqdev🦃

After my post on Shared calendars and RSS I kept thinking about what else you can get out of sharing a calendar using RSS. What I didn't see immediately is the main use case of RSS, though I did mention it as a drawback.

The main drawbacks I see are that I can't get notifications or see it in my calendar.

Actually, with RSS, I can get notifications when a new event has been added to the calendar. With iCal for example, when a new event is added to the calendar, it'll automatically be populated in my calendar client. However, I won't get a notification that a new event has been added. Conversely, with RSS, I won't see it in my calendar client but I will get a notification in my RSS reader.

When paired together though you could use RSS to get notified when a new event is added to the calendar and also be able to view it in your calendar client since it'll automatically be populated (assuming you're already subscribed to the shared calendar). That means managing two feeds, but the more I think about it, the RSS format makes some sense. The shared calendar could be the source of truth. When a new event is added to the calendar, the RSS feed can be updated. The channelproperty has the link to the shared calendar you can subscribe to and the individual events have .ics files embedded in the enclosure. As a consumer, the new event notification will then appear in my RSS reader.


Send me a webmention
lqdev🦃

I just came across a new use for RSS - shared calendars. Well, not exactly sharing calendars in RSS format. While I have seen calendars in RSS format as I'll mention later in this post, I think there's enough downsides that make this impractical. However, for discoverability, there's some RSS patterns that shared calendars could benefit from.

While reading a recent post on Doc Searls' blog it got me thinking about using public calendars for sharing community events. By leveraging iCal or CalDav, this could be a good alternative to current solutions like Facebook Events or Meetup. It could also be a great way to foster interoperability. There's still the discoverability problem, but platforms like Meetup and Facebook Events could enable subscribing to shared public calendars.

This sent me down a search to see whether others were using shared calendars, similar to The Big Calendar. It was nice to see that Penn State has shared calendars for their various sports. That shouldn't be surprising. As a university, they already share their academic calendars. The part that I found surprising though was that RSS was one of the options.

Penn State Subscription Calendar Subscriptions

Source: gopsusports.com

Downloading the RSS feed enabled me to import it into my feed reader and view it there. I'd prefer if instead of downloading the RSS feed as a file, they just provided the link so I could copy and paste it into my feed reader. However, it's still nice that just like podcasts and YouTube feeds, I can now also see Penn State athletic events in my feed.

I'm not sure what the benefit of subscribing to this feed via RSS as opposed to the calendar itself has. The main drawbacks I see are that I can't get notifications or see it in my calendar. I also don't know if changes and updates to events also propagate to the RSS feed. That's why I'd prefer to just subscribe to the calendar directly.

Going back to the broader topic of shared calendars and discoverability mentioned in the DataPress proposal for community calendars, you could imagine a solution similar to how websites can make their RSS feeds discoverable. As a calendar and community maintainer, you could post the link to your shared calendars on your website. As a community member, you'd just need to point your calendar client to the respective website's domain (i.e. gopsusports.com) and your client would automatically import the shared calendars. This is how shared calendars work today. The difference is, you don't need the exact link to the calendar, you just need the website domain. The calendar client is what handles the discovery and import process.

One important thing to highlight, doing something like this isn't exclusive to communities. You could imagine businesses being able to implement similar practices to communicate their business hours and availability. Platforms like Yelp or Google could then just import the public calendar for that business and display the business hours on their platform. To schedule your next oil change, imagine looking at your auto service shop's shared calendar and sending a calendar invite for one of their open slots. This is no different to solutions like Microsoft Bookings. The difference is, instead of using these platforms, you would do it from your preferred calendar client of choice.

You could also see this working for individuals as well. If you need to coordinate something with other people, instead of the constant back and forth to find availability, you can just share your public calendar and they can find a time that works for them.

Anyway, the point of this longish post is that by building on simple components like calendars, iCal, CalDAV, and RSS, communities, businesses, and individuals could communicate and collaborate more effectively without being constrained to any single platform.


Send me a webmention
lqdev🦃

Apple unveiled their M3 family of chips and new devices.

First off, The Verge always does a great job covering and condensing these events into a short video.

Apple Scary Fast Event - The Verge

My initial impressions of the anouncement, this is why Apple wins.

I'm excited by the Snapdragon announcement last week. However, as I mentioned in my post, "the biggest miss from Qualcomm and Windows partners today was not having a lineup of devices ready for purchase".

That wasn't the case for Apple. Not only did they announce their new chips but they also announced devices which will be available as late as the end of November.

I understand Apple owns the entire process so they can align their chip and device announcements. However, Qualcomm brought out many partners on stage. Unless I missed it, I don't remember seeing any PC announcements that would be ready for purchase within the next 2-3 months.


Send me a webmention
lqdev🦃

Yesterday I wrote a post with some quick thoughts on why I'm excited for the new Snapdragon X Elite set of chips.

There's something I missed which came to mind this morning.

If your Snapdragon X Elite powered computer is running Windows, and it also has calling and messaging capabilities like a phone, does that mean that you're now the proud owner of a "Windows Phone"? As a fan of Windows Phone, that sounds interesting.

Now you might say, "Windows doesn't have all my apps". Fair point but with Windows Subsystem for Android (WSA), maybe the app gap isn't much of a concern. More importantly, as I mentioned in the post, if the apps no longer become the main mode of interaction and instead are relegated to serve as background services to the AI interface, does it even matter?

In the post, I also mentioned how I'd prefer my mobile computer runs Linux (and no, I don't mean AOSP). Even that is not a strict limitation, since I can run Windows Subsystem for Linux (WSL) inside Windows. So technically I can still have Linux on my mobile computer even if it's running Windows.

Let's see if 2024 becomes the Year of the Windows (or Linux) Phone.


Send me a webmention
lqdev🦃

Good thing I'd upgraded to 4.1.7 just a few weeks ago, so getting to 4.2.0 was relatively easy. The wiki where I'm tracking updates makes it easy to quickly remember the general process. I haven't tried all of the new features, but it's nice to see there's a new onboarding flow to the Web UI which should make it easier to get started for new folks.


Send me a webmention
lqdev🦃

I didn't inspect the changelog between 4.1.0 and 4.1.7 in great detail, but the latest stable version feels snappy.


Send me a webmention
lqdev🦃

College football is back!

Penn State had a great win. Looking back at a post from last year, some of my thoughts around the upcoming class were right. Looking at the upcoming schedule it looks well spaced out and if they can stay healthy, they'll have a great season.

Tough losses for LSU and Clemson.

This year I'm trying a new way to experience games: blogs + audio streams.

This past week, although I tuned into the games, I didn't watch any of them on TV. Instead, I tuned into the live audio streams on The Varsity Network and for live discusson, I tuned into the various team blogs / communities provided by SBNation (fun fact: I learned SB stands for Sports Blogs). For example, Black Shoe Diaries, the Penn State blog, had a live thread for each of the quarters where site writers and fans got to interact in real-time. Other team blogs had similar threads.

Overall, I thought it was a fun experience, and I'm most likely going to do it again this week.

Games I'm most looking forward to Week 2:

  • Stanford vs USC
  • Temple vs Rutgers
  • Texas vs Alabama

Send me a webmention
lqdev🦃

Profile header image with alien emoji

I really need to automate my website updates. I had forgotten to update the "checkmark" (for lack of better words) for the month of July. Usually, I try to have an icon show up as my "blue check" (Twitter inspired) that is relevant for each month. July is Roswell month mostly because I think I already used the sun emoji for one of the other summer months. I guess being in the US, the US flag would've made sense here, but somehow aliens seemed more fun. Anyway, I need to find a good way to automate this so it's not one of those things that happen when I remember. Since I just changed to the alien emoji, it means I probably will only have it up for a week. August is Tux month because of Linux (again, sun and aliens were already taken). Recommendations are appreciated. Though I'm excited for spooky season in September & October.


Send me a webmention
lqdev🦃

Time to distro hop. Maybe. For the past two years I've been happily using Manjaro as my main distribution. During that time I've also kept an eye on the immutable distributions. One of the main ones I've been paying attention to is NixOS. Like Arch, it's taken me some time to wrap my head around it. Now that it's gotten easier to set up through a graphical installer, I'll start out with a live install to see how I like it.


Send me a webmention
lqdev🦃

I've been thinking about shifting at least some of my communications from e-mails to blogs especially in the context of business communications.

Blogs are pull rather than push, so I'm not innundating other's inboxes. People who are interested in the projects or topics I'm working on can subscribe and consume the content as they wish. Also it's a way to be more expressive since it's a medium where ideas can be connected to provide more relevant context. That doesn't mean chats and even e-mail couldn't be used for urgent communication. For async non-urgent communciation though, blogs might be a good alternative to e-mail.

These two articles provide a good introduction into how individuals and companies have implemented similar practices:


Send me a webmention
lqdev🦃

Spent the day playing sysadmin and removed about 50GB worth of data from my Matrix Synapse instance. Like Mastodon, most of that data wasn't even mine. Most of it comes is remote data from other users in large rooms. I really like Matrix and the ability to host my own messaging server that provides end-to-end encryption as well as federation with other instances. However, not having a straight-forward way of managing my server and cleaning up resources is painful.

Anyway, if anyone is interested, here are some resources that have helped me in this process.

Matrix Synapse Server Administration


Send me a webmention
lqdev🦃

I'm really liking my new phone wallpaper. Courtesy of DALL-E.

pug in the utah desert on mushrooms opening his third eye and being beamed up by aliens

Source:Bing Image Creator (DALL-E)

In case anyone is interested in the prompt - "pug in the utah desert on mushrooms opening his third eye and being beamed up by aliens"


Send me a webmention
lqdev🦃

I'm now on Bluesky. Follow me at @lqdev.me

Bluesky web app showing lqdev.me profile


Send me a webmention
lqdev🦃

While flipping through a local (physical) newspaper, I came across an ad for a sale happening at a nearby record store.

Newpaper ad for a memorial day CD and vinyl sale

Having nothing planned, I decided to check it out and ended up with a nice haul of about 15 CDs and 2 DVDs.

3 CDs on a wooden table with an portable MP3 player

I fired up my portable CD/DVD drive to transfer my new purchases to my portable MP3 player.

Once finished, I popped one of the DVDs into the drive, made popcorn, and settled in. If I didn't know any better, this could easily be a scene from 2006.


Send me a webmention
lqdev🦃

Although titles are optional for RSS feed items and it's a common practice for microblog platforms like Mastodon to exclude them, it unfortunately means some clients like Elfeed don't know how to render those posts.

Screenshot of elfeed displaying RSS items from Mastodon


Send me a webmention
lqdev🦃

Mastodon v4.1.0 was released yesterday. This was a highly anticipated release for me since it introduced the option to remove old cached profile media which was taking up a significant portion of my disk space.

After upgrading, I was able to cut my used disk space in half.

If you're running your own instance or have the ability to contact your instance admin, I can't recommend upgrading to this version enough.


Send me a webmention
lqdev🦃

Testing untagged notes which is the same as notes with less than three tags


Send me a webmention
lqdev🦃

Testing whether notes appear with title


Send me a webmention
lqdev🦃

As the feedback post suggests, Skype offers the option to have encrypted conversations (chat & calls) using the Signal protocol. However, it's not the detault. If you're using Skype and this is something you'd like added, feel free to upvote the feedback request.

https://feedbackportal.microsoft.com/feedback/idea/0b770e9e-bca0-ed11-a81b-002248519701


Send me a webmention
lqdev🦃

Testing whether my site can handle embedding Microsoft Forms. Useful for polls across a variety of channels.


Send me a webmention
lqdev🦃

Screenshot of i3-gaps

Source: i3

Nice! i3-gaps was recently merged into the main i3 codebase some time ago and with the 4.22 release a few weeks ago, you can now use it with your existing i3 configuration. I've started tinkering with it and I like the way it makes my desktop look.


Send me a webmention
lqdev🦃

Just created a new .NET page on the IndieWeb Wiki. If your personal website or blog is using .NET, feel free to add it there. Also, if you're building any services or libraries for the IndieWeb, add them as well.

Looking to learn more about IndieWeb? https://indiewebify.me/ or the IndieWeb Wiki are great places to get started.


Send me a webmention
lqdev🦃

The next version of Mastodon can't come soon enough.

About 20GB of disk space on my instance are being taken up by media from remote users. And this is for a single user instance! I can't imagine how it must be on other instances with multiple accounts.

Command line displaying disk space used by Mastodon for media

A recent PR should make things much better though by allowing you to remove these files.

The only thing you need to do is pass the --prune-profiles flag to the media remove CLI command.

The PR is already merged so hopefully that means it's coming the next release.


Send me a webmention
lqdev🦃

Upgrading my server to 4.0.2 wasn't bad, especially considering I was coming from a 3.x version. Also posting this to make sure that there have been no changes to the API and my website can still post to Mastodon on my behalf.


Send me a webmention
lqdev🦃

I wasn't really planning on this, but here we are. I've been using Neofetch on my PC to display system information whenever the terminal opens. However, in some cases, that would hang and it would take a while before I was able to use my terminal.

I then ran into Nitch which is simple and fast. However, it was missing the local and public IP information Neofetch provides out of the box. Nitch is written using the Nim programming language. Originally, I had planned on extending Nitch and I figured out the code I needed to write to support IP information. However, my program wouldn't build and I was unable to find any information online to unblock myself.

That's when I looked at the existing components in Nitch and found that it was basically just reading files from the /proc and /etc system directories. At that point, I decided to see if I could build my own utility using F#. A couple of hours later and the result was Fitch. This works well enough for my needs and in the future, I might publish it as a dotnet global tool to make it easy for others to use.

Screeenshot of command line running Fitch F# System Utility


Send me a webmention
lqdev🦃

Well, that's time that I'm never going to get back.

Imagine that you wanted to redirect a URL,

From: https://mydomain/github/repo-name
To: https://github.com/username/repo-name

You could use regular expressions to parse out the repo-name part of the URL path from the source URL to the destination URL. This is what it might look like using something like NGINX.

location ~ ^/github/(.*) {
     return 307 https://github.com/yourGHusername/$1;
}

Unless I wasn't looking at the right documentation, it's not obvious that the rules engine for most Azure CDN plans don't support this feature, except for the Verizon Premium. While the standard rules engine supports wildcards for source URLs, lack of regular expresssions support means there's no way to parameterize the values of the destination URL. If this is something you need, make sure to use the Verizon Premium plan.


Send me a webmention
lqdev🦃

It took me a while to get all the pieces working but I'm excited that my website now accepts webmentions!

A few months ago I implemented sending webmentions.

Accepting them was a bit tricky because there were a few design decisions I was optimizing for.

In the meantime, you can check out WebmentionFs, an F# library I built for validating and receiving webmentions along with the WebmentionService Azure Functions backend that I'm using to process webmentions for my website.

Also, feel free to send me a webmention. Here's my endpoint for now https://lqdevwebmentions.azurewebsites.net/api/inbox. Check out this blog post where I show how you can send webmentions using F#. You can use any HTTP Client of your choosing to send an HTTP POST request to that endpoint with the body containing a link to one of my articles (target) and the link to your post (source).

Stay tuned for a more detailed post coming on December 21st!


Send me a webmention
lqdev🦃

Today I learned about Firefox Task Manager. Typing about:performance into the address bar brings up the task manager which lets you inspect the tabs and extensions consuming the most energy and resources.

Firefox Task Manager


Send me a webmention
lqdev🦃

I've never had a blue checkmark on Twitter so I can't say what that process is like. Looking at it from the outside though it seems the process isn't simple or straightforward. My experience with verification has been with other applications such as Mastodon and IndieAuth. In both of these cases, the main verification techniques use your domain and/or the rel=me link type. Although with Mastodon you can add multiple verified links to your profile, verification on those external domains pose challenges which include but are not limited to:

  • You can't edit the HTML directly so you can't add a rel=me link.
  • You can only add one link, so you're forced to choose between your website and Mastodon.
  • In scenarios where multiple links (i.e. e-mail, webpage, Twitter) are supported, Mastodon isn't one of the options

So how do you overcome these challenges? By using your domain.

A few months ago I wrote about owning your links. The general concept of owning your links is, using your domain to redirect to other properties and profiles you own. For example, instead of telling people to visit my Twitter profile at twitter.com/ljquintanilla, I can instead point them to lqdev.me/twitter. Not only does my domain become the source of truth, but in general it's easier to remember compared to usernames and proprietary domains. Since my site is statically generated, I own my links by using http-equiv meta tags. Although the only job for these pages is to redirect to the specified site, in the end they are still HTML pages. This means, I can embed any other HTML I want, including rel=me links. By including the rel=me link in the redirect page, you satisfy the requirements of applications like Mastodon because that's the page they'll land on before being redirected to the target site. As a result, I can verify my GitHub, Twitter, or any other online property I want with Mastodon using my own domain without having to make any changes or overcome any of the challenges imposed by those other platforms. What you end up with is something like this:

Screenshot of lqdev profile verified links

Before signing off, I'll note that this isn't a perfect solution and technically anyone could do the same thing on their own domain in an attempt to impersonate you, so just be aware of that.


Send me a webmention
lqdev🦃

Soon after .NET 7 was released, I upgraded the static site generator I use as well as the GitHub Actions that build and publish my website. Having upgraded last year from .NET 6, the process was as smooth as I had expected with no code refactoring required.

When it comes to development environments, for quick status updates like the ones on my feed or minor edits, I've been using github.dev. However, there's been times where I've needed to run and debug code to confirm that my changes work. This is where I hit some of the limitation of github.dev which means unless I set up a Codespace, I have to save my work and move offline to my PC. Codespaces are great, but given that Codespaces are nice to haves not a requirement for my workflow at this time, it didn't make sense for me to pay for them. That's why I was excited to learn that GitHub is providing up to 60 hours per month of free Codespace usage to all developers. That's more than enough for me.

Blog post authored in GitHub Codespaces with integrated terminal open

By default, Codespace images come preinstalled with the .NET 6 SDK which makes sense considering it's the latest LTS. However, since my static site generator targets .NET 7, I had to configure my Codespace to use .NET 7. This was just as easy as upgrading to .NET 7. All I had to do was provide the .NET 7 SDK Docker image as part of my devcontainer.json configuration file. From there, Codespaces takes care of the rest. As a result, I can now run and debug my code all in one place without interrupting my workflow.

PS: This post was authored in GitHub Codespaces πŸ™‚


Send me a webmention
lqdev🦃

It's been great to see many old and new friends joining Mastodon and considering alternatives to online communities over the past few weeks. Selfishly my feed had been quiet since I started using it and self-hosting back in 2018 so it's nice to see more activity. As folks have started to settle in and get a better understanding of Mastodon, I'd like to point out that Mastodon is only one of many apps and services on the Fediverse. Now I won't try to explain the Fediverse but in general, it's the collection of applications and services that interoperate in a federated manner, Mastodon being one of them. If in general you like Mastodon and are looking for alternatives to services like Instagram, YouTube, SoundCloud, the Fediverse has a few options:

You can create an account for each of these services using different instances, just like Mastodon. You also have the option of self-hosting which I find amazing. However, because for the most part these services implement the ActivityPub protocol, it means federation extends beyond Mastodon. You can follow people on PixelFed, PeerTube, and many of these other services using your Mastodon account which means you don't have to create accounts for those services just to follow people. While I don't have experience with all of these services, I recommend checking them out. I especially like what Pixelfed, PeerTube and Owncast are doing but those are the main ones I have experience with.


Send me a webmention
lqdev🦃

Last year, I posted about upgrading this website to .NET 6 and how easy that process was. I just had a chance to upgrade to .NET 7 and the experience was just as smooth. All I had to do was change the version in two places:

GitHub Actions *.yml file

dotnet-version: '7.0.x'

*.fsproj file

<TargetFramework>net7.0</TargetFramework>

I'm happy that with such a simple change, I can get all the benefits of .NET 7 without doing a lot of work.


Send me a webmention
lqdev🦃

Slow start but good bounce back by Penn State after two straight losses. This game also gave a good glimpse of the future class and it looks promising especially at the QB and RB spots. If they can stay healthy, they may be playoff contenders in a couple of years.


Send me a webmention
lqdev🦃

11:58

Hoping for a good game.

Michael Scott ready to get hurt again GIF


12:22

Defense is clutch. As always in big games, they'll have to work overtime just to keep the offense in the game.


12:42

Progress...at least there was no turnover on the last series.


12:59

Undetaker rising from dead GIF


13:16

Football player they had us in first half GIF


14:53

Sweating GIF


15:09

Going for it on 4th & 2 feels like that 4th & 5 from a few years ago.


15:30

Defense showed up today. Can't expect to win a game with 3 turnovers.

Spongebob head out GIF


15:33

This is hard to watch.

DJ Khaled Another One GIF


Send me a webmention
lqdev🦃

I can probably count the number of times I've used the Azure Cloud Shell inside the Azure Portal with one hand. However, I recently had a need to use it and was impressed by the experience.

I wanted to create an Azure Function app but didn't want to install all the tools required. Currently I'm running Manjaro on an ASUS L210MA. That's my daily driver and although the specs are incredibly low I like the portability. The Azure set of tools run on Linux but are easier to install on Debian distributions. The low specs plus the Arch distro didn't make me want to go through the process of installing the Azure tools locally for a throwaway app.

That's when I thought about using Azure Cloud Shell. Setup was relatively quick and easy. It was also great to see the latest version of .NET, Azure Functions Core Tools, and Azure CLI were already installed. Even Git was already there. After creating the function app, I was able to make some light edits using the built-in Monaco editor. When I was ready to test the app, I was able to open up a port, create a proxy, and test the function locally. It's not a high-end machine so I won't be training machine learning models on it anytime soon. However, for experimentation and working with my Azure account it's more than I need.


Send me a webmention
lqdev🦃

Last I heard of Tumblr, they were owned by Verizon. While readying the book Indie Microblogging by Manton Reece, I learned (and later confirmed) they were owned by Automaticc, the company behind WordPress. Out of the the different homes it's had, I can't think of a better place for it.


Send me a webmention
lqdev🦃

Terrifier 2 did not disappoint. 100/10. Can't wait for Terrifier 3.

Leo DiCaprio clapping


Send me a webmention
lqdev🦃

Finally got a working prototype. A few days ago I added the request and webmention verification components.

I just finished creating the web API and Azure Table Storage components. Now I just need to run some additional tests and deploy it πŸ™‚

Chriss Pratt Rubbing Hands GIF


Send me a webmention
lqdev🦃

It's been a year since I created this feed and started posting mainly on my website. Since then, I've:

  • Used a shorter domain to redirect to my website domain.
  • Created VS Code snippets to simplify metadata tagging.
  • Used github.dev as the main interface for authoring and editing posts. For longer posts, I use VS Code locally but for these smaller microblog-style posts, github.dev makes it really easy.
  • Syndicated posts to Twitter and Mastodon.
  • Created a response feed for interactions like replies, reshares (repost), and likes (favorites) with support for sending Webmentions.
  • Created RSS feeds for each of my feeds.

It hasn't happened overnight. Instead, it's been the result of small incremental efforts over time.

Overall, I don't think I've posted any more or less than I do on other platforms.

What I have enjoyed the most though has been:

  • Learning.
  • Building the tools and processes to author and share content.
  • Owning my content. My website acts as the single source of truth.
  • Not requiring others to have or create accounts on individual platforms to access content.
  • Choosing how I author content. I'm sure this post is way over the 280 character limit and if there's a typo, I can just edit the post and republish the website πŸ™‚

Going forward, I plan to:

  • Update RSS feeds to include post content, not just link to the post.
  • Accept Webmentions. I'm about halfway done with the main parts of my implementation.
  • Implement tags for easier discoverability / search.
  • Consolidate metadata for posts (articles, microblogs, responses).

Send me a webmention
lqdev🦃

Success! I just partially implemented Webmentions for my website. Although I haven't figured out a good way to receive Webmentions yet, I'm able to send them. Fortunately most of the work was done, as detailed in the post Sending Webmentions with F#. The rest was mainly a matter of adapting it to my static site generator.

Below is an example of a post on my website being displayed in the Webmention test suite website.

Source

Webmention on lqdev.me

Target

Webmention displayed in webmention test suite

What does this mean? It means I can comment on any website I want, regardless of whether they allow comments or not. As if that weren't enough, I have full ownership of my content as my website is the single source of truth. As a bonus, if the website I comment on supports receiving Webmentions, my post will be displayed on their website / articles as a comment. The next step is to handle deleted comments, but so far I'm happy with the progress.


Send me a webmention
lqdev🦃

Very cool!

New (LTE) Rotary Phone


Send me a webmention
lqdev🦃

Same... πŸ™

Praying on Ohio State's downfall

β€” Barstool Penn State (@PSUBarstool) September 3, 2022

Source: https://twitter.com/PSUBarstool/status/1566230451378950144


Send me a webmention
lqdev🦃

Today I Learned about the VS Code Live Preview extension. While reading the release notes for the latest version of VS Code, I noticed a note on the Live Preview extension. Usually to preview static content, I use Python's HTTP server with the python -m http.server command. This extension simplifies the process because it's built into Visual Studio Code. If you do any kind of web development, it's definitely worth a look.


Send me a webmention
lqdev🦃

College football is definitely back. I don't miss those 4th quarter heart attacks, but a win is a win.


Send me a webmention
lqdev🦃

Very cool! QRZ just announced the New Ham Jumpstart Program, a new program to make it easier for new ham radio operators to quickly get on the air.


Send me a webmention
lqdev🦃

Things are heating up in the AI generative model space. OpenAI just announced Outpainting. A few days ago, Stability.ai released Stable Diffusion and recently a painting generated using Midjourney won first place in the digital category of the Colorado State Fair fine art competition.


Send me a webmention
lqdev🦃

I know what I'm doing October 6th.

Terrifier 2


Send me a webmention
lqdev🦃

Cries in Lumia 1020 😒

Thumbnail Marques Brownlee World's Largest Smartphone Camera

Source: World's Largest Smartphone Camera | Marques Brownlee


Send me a webmention
lqdev🦃

Can't believe I hadn't heard about these podcasts before:

Love the horror anthology vibes like Tales From The Crypt and Freakshow for Radio Rental. For Dark Air, I really like the Space Ghost Coast to Coast and actual Coast to Coast feel. Best of all, the host Terry Carnation is Rainn Wilson. Even Terry's website has a great 90's web feel to it. Looks like Dark Air has been off the air for some time, but hopefully Radio Rental keeps publishing content.


Send me a webmention
lqdev🦃

Apple just announced they're discontinuing the iPod Touch. I'm surprised it hadn't happened earlier! Still, it's sad to see the end of an era for these devices which are effectively smartphones without the phone / cellular data connectivity. I still have my iPod Touch from 2014 that I use occasionally for FaceTime which aside from poor battery life and being stuck on an older version of iOS, it still works smoothly.

For the past two years, my audio solution has been a dedicated MP3 device. Since most of the content I consume I download and listen to offline, a dedicated MP3 device doesn't drain my phone's battery or take up storage space.

I started with the FiiO M5, which is like an iPod Shuffle. The device was great, but all it took was one drop for the screen to crack at which point I upgraded to the FiiO M6. The nice thing about the M6 is that the OS is a stripped down version of Android meaning you can side-load applications such as Spotify. The bad thing, the hardware can't handle (even heavily optimized versions) of these applications making the user experience frustrating. The touchscreen interface is great for navigation especially when you have large collections. However, since I only use the device for podcasts and audiobooks and don't get the benefits of installing streaming music apps, I'd be better off with a more affordable device like those from SanDisk.


Send me a webmention
lqdev🦃

It's been a little over a year since I started hosting my website on Azure. The resources I use include:

  • Azure Storage: Where all my site assets are stored.
  • Azure CDN: Content delivery
  • Azure Logic Apps: Event-based jobs to syndicate new posts on Twitter and Mastodon.

I haven't tracked traffic for the entire year but since October of last year the site has gotten roughly 5,000 visitors.

Taking all that into account, I've only had to pay $2.06 most of it being the storage I use for the site. In comparison, I was previously hosting my website through my domain provider in a shared server where it cost about $60!

Azure portal billing cost

If you're interested in how this site is built, check out the colophon.


Send me a webmention
lqdev🦃

Chips for chipmaking machines are affected by chip shortage, says TSMC and Intel - via 9to5Mac

Spiderman meme pointing at each other


Send me a webmention
lqdev🦃

Twitter is testing a new feature called Twitter Circles where you can restrict the reach of your tweets to up to 150 people. I remember the days of MySpace where many relationships were made / broken as a result of being in someone's Top 8 Friends list πŸ˜†


Send me a webmention
lqdev🦃

Hello Mastodon from lqdev.me. Got POSSE (Publish (on your) Own Site, Syndicate Elsewhere) working for Mastodon! I already had an Azure Logic App which took the latest post from my RSS feed and published to Twitter. Now it's also enabled for Mastodon. Might do a writeup later in the blog on how to do it.


Send me a webmention
lqdev🦃

Yesterday I ran into more feed goodness. When going to a website to get the weather forecast, weather alerts are displayed (if there are any).

I thought, wouldn't it be great to be able to subscribe to those alerts without having to go to the website?

A quick search revealed the National Weather Service provides these alerts in ATOM format for each of the states in the U.S. You have the option of tracking updates at the national, state, zone, and county level.

Subscribing is as easy as adding the link for the respective feed to your favorite feed reader. If you're interested, you can find the list of feeds at https://alerts.weather.gov/


Send me a webmention
lqdev🦃

In light of recent developments on Twitter, I see more people looking for alternative platforms. Personally, I don't think anything beats the level of customization and control you get from using your own website and RSS for sharing ideas and publishing content. However, it's great to see so many new friends in the Fediverse on platforms like Mastodon. I won't go into what the Fediverse is but you can check out the Fediverse wiki for more info. In many ways the Fediverse will feel familiar, yet foreign. Many people have shared tips on getting started, but I'll share some of the ones I've personally used to organically curate my feed.

  • Use hashtags. Similar to Twitter, hashtags are a good way of finding people and content related to the topic of interest.
  • Follow feditips and FediFollows. As the names suggest, they provide good tips and suggest interesting accounts to follow in the Fediverse.

As an alternative if you're not ready to create an account, you can use RSS. I'm a big fan of RSS. Appending .rss to any account on platforms like Mastodon (for example https://mastodon.online/@FediFollows.rss) provides you with the RSS feed of an account's posts letting you subscribe to their content through your favorite RSS feed reader.

Feel free to say hi at toot.lqdev.tech/@lqdev. See you in the Fediverse!


Send me a webmention
lqdev🦃

Here's a few links I found in the interwebs today that I thought were worth sharing.

Ubuntu 22.04 LTS Released

For my personal computing needs, Manjaro has been my default Linux distro. However, for hosting and cloud VMs I go back and forth between Debian and Ubuntu depending on which better supports the software I'm running. Canonical announced the release of the latest Ubuntu LTS version 22.04. Check out their blog post for more details on what's new.

Self-hosting Bitwarden on DigitalOcean

When it comes to password managers, other than KeePass, my favorite it Bitwarden. It's open-source, built on .NET, has excellent features that get even better with the low-cost paid version, but most importantly provides you the option of self-hosting. If you're looking to self-host Bitwarden on DigitalOcean, make sure to check out the guide they just published.

How DALLE-2 Actually Works

A few weeks ago, OpenAI announced the release of DALLE-2. Open AI describes DALLE-2 as, "...a new AI system that can create realistic images and art from a description in natural language." If you want to understand the details of how it works, you could read the 27 page research paper Hierarchical Text-Conditional Image Generation with CLIP Latents. AssemblyAI just published an approachable guide into the inner workings of DALLE-2. If you're interested in that, check out their blog post on the topic.

Emacs Configuration Generator

In my early days of using Emacs, I often found it difficult to customize it to my needs. Not only did I not know what was possible, but it also caused some anxiety because I didn't feel confident enough making major tweaks. If you're getting started with Emacs and aren't sure how to configure it, this neat utility helps you generate a config file for Emacs.

PostgresML

If you're building machine learning applications, one of the main things you'll need is data. This data can reside in databases such as MySQL, SQL Server, and Postgres. Algorithms are applied to this data downstream using libraries written in languages like Python, R, and .NET. This not only means potentially moving the data from the database to another process but also using another library to train models. According to the project description on GitHub, "PostgresML is an end-to-end machine learning system. It enables you to train models and make online predictions using only SQL, without your data ever leaving your favorite database." If that's something you're interested in, check out the project on GitHub.


Send me a webmention
lqdev🦃

About 2 episodes into the show Archive 81 on Netflix and so far so good. I listened to a few episodes of the podcast (by the same name) it's based on a few years ago. Now it makes me want to go back and listen to it again. It also makes me think about what the Black Tapes could've been had it gotten a TV or movie adaptation. If you're into the found footage, cult horror type of stories (think Blair Witch + Midsommar + Rosemary's Baby), definitely check it out.


Send me a webmention
lqdev🦃

Vertigo is one of my all time favorite movies, so I was excited to learn about Vertigo AI. Vertigo AI is an experiment that trained a model on footage from the film Vertigo to produce its own original short film. There aren't many details on the AI aspects of it, but I suspect there's a Generative Adversarial Network (GAN) similar to Norman behind it. Check out the generated movie.

Vertigo AI


Send me a webmention
lqdev🦃

That was easy. Site's been updated to .NET 6 and all it took was a one-line change.

GitHub PR diff .NET 6 update


Send me a webmention
lqdev🦃

I got a reminder on the importance of backups last night. New Jami username is lqdev1. Fortunately I wasn't as active on there so not a big deal to lose my original username.


Send me a webmention
lqdev🦃

I recently came accross the Terms of Service, Didn't Read (TOSDR) website. Like most people, I'm guilty of clicking "I have read and agree to the terms of service" without actually doing so. TOSDR simplifies terms of service documents by highlighting the main points for many popular services. I'm not sure how maintenance and the frequency of that maintenance work. There's a rating systems which I also am not sure how it works. However, you are provided with the documents that were used to come up with the ratings and summaries, so you can look into it yourself. Overall, I think it's an incredibly useful tool to make sense of how your data is managed across these platforms.

Duck Duck Go and YouTube TOSDR service comparisons


Send me a webmention
lqdev🦃

Found these while cleaning out some drawers 😒. Good times.

Two Nokia Lumia Windows Phones


Send me a webmention
lqdev🦃

I've written before about how versatile the RSS protocol is for publishing and consuming content. Podcasts are one of the many media types that largely rely on RSS, making it easy to subscribe and manage using an RSS client of your choice. Like RSS, VLC is versatile in the type of media it can play. When you combine the two, you're able to stay updated on the latest episodes from your favorite podcasts using the RSS reader of your choice and use the episode's URL to stream the audio in VLC.

.NET Rocks podcast RSS feed and VLC playing


Send me a webmention
lqdev🦃

Lately I've been using github.dev to author posts and make light edits on this site. One use case where it's come extremely handy has been authoring content, specifically these microblog-like posts from my Surface Duo. Instead of opening the laptop, I can open up my Surface Duo and visit my site's repo through github.dev. When I orient the device in landscape mode I have one screen display the VS Code-like web environment while the other screen displays the keyboard. Snippets, version control, extensions, and themes all carry over making the experience consistent. Committing changes through the version control utilities immediately kicks off the GitHub Action to build and publish the site with the latest changes. Pairing the GitHub online editor environment with the Duo's dual-screen form factor showcases the productivity and convenience both of these products provide.

Microblogging on Surface Duo in github.dev


Send me a webmention
lqdev🦃

I've been looking at different alternatives to Google Analytics for website stats. I don't need anything fancy, just basic page counts. Eventually I settled on GoatCounter because it's lightweight, open-source, and privacy-friendly. You can either use their managed service or self-host. Deployment with Docker felt a bit much so I did a standalone deployment to a VM. The Linode StackScript is probably the easiest way to do it.


Send me a webmention
lqdev🦃

While browsing the interwebs, I ran into the site United States Early Radio History which contains events spanning different time periods. As an operator it's fascinating to learn about the history and see how radio continues to play a large role in our day-to-day.


Send me a webmention
lqdev🦃

While browsing the interwebs I came across the Web Neural Network API spec from the W3C Web Machine Learning Working Group. The abstract defines it as "a dedicated low-level API for neural network inference hardware acceleration.". Although there are already a few frameworks like ONNX & TensorFlow.js that allow you to inference in the browser, this spec looks interesting because it provides an abstraction that allows you to take advantage of hardware acceleration using the framework of your choice. As the explainer document mentions, "this architecture allows JavaScript frameworks to tap into cutting-edge machine learning innovations in the operating system and the hardware platform underneath it without being tied to platform-specific capabilities, bridging the gap between software and hardware through a hardware-agnostic abstraction layer.". It's just a working draft for now but I'm looking forward to how this develops.


Send me a webmention
lqdev🦃

The other day I was going down a Wikipedia rabbit hole and learned those click-baity "Top 10 ..." or "Worst 10 ..." articles apparently have a name, listicles. The more you know...


Send me a webmention
lqdev🦃

That was easier than I thought. Visiting lqdev.me now redirects to this site. Redirect isn't limited to the main page though. You can also access any other resources as well. For example, visiting lqdev.me/feed would redirect you to the main feed on this site.


Send me a webmention
lqdev🦃

Today I learned about canonical URLs. While looking into how I can syndicate content from this site, specifically longer form blog posts on other sites like dev.to, I came across canonical tags.

Basically they're a way of telling the internet, specifically search engines, what version of your content is the main copy or single-source of truth.

Currently I've configured my site so it's not indexed or crawled. However, for sites I don't own I don't have the same level of control. Check out the canonicalization and SEO best practices for canonical URLs articles from Moz if you're interested in learning more.


Send me a webmention
lqdev🦃

I have almost zero artistic skills, so when I came across NVIDIA Canvas I was extremely excited!

Essentially it's an application that takes simple brushstrokes as input and uses a Generative Adversarial Network (GAN) to turn them into realistic landscape photos.

I had known about GANs being used to generate faces (see This Person Does Not Exist) but it's one of the first times I've seen them used to enhance drawings.

Time to take my stick figures to the next level!


Send me a webmention
lqdev🦃

Came accross this event series via Chris Aldrich's microblog.

Here's Chris' original post

Every Monday, I sit down with a cup of coffee and learn something interesting about history through old manuscripts. Join our friends Dot Porter (@leoba) and the Schoenberg Institute for Manuscript Studies (@sims_mss) at Coffee with a Codex.

Basically it's a virtual meeting where experts go over manuscripts on a variety of topics. I'll probably check out next week's event.


Send me a webmention
lqdev🦃

It only took 6 hours but I was able to get it done with a little help.

Bender from Futurama happy dance


Send me a webmention
lqdev🦃

No Windows 11 upgrade for me. πŸ˜₯

PC doesn't meet windows 11 upgrade requirements message

Just because I can't doesn't mean you can't though. Go and check if you're eligible at Windows Update

Start > Settings > Update & Security > Windows Update.

See Manage updates in Windows for more details.

For alternative install options, check out the Download Windows 11 page.


Send me a webmention
lqdev🦃

Just jumping on the bandwagon. A few online services are down at the moment 😬

Web service outages on downdetector.com

Not to worry...the personal site is still chugging along 😌


Send me a webmention
lqdev🦃

Just read an interesting article publised in Technology Review called Digital gardens let you cultivate your own little bit of the internet.

In a sense, some of the updates to this site like the addition of the different feeds can be thought of as "cultivating" my own digital garden.


Send me a webmention
lqdev🦃

I would've been okay with The Many Saints of Newark being a 4 hour movie. I didn't want it to end. Now I have to rewatch The Sopranos.


Send me a webmention
lqdev🦃

For personal use, I tend to default to Skype for my video / audio call needs.

Great to see there are some long-term plans for the app and it'll be around for a while more.

The future of Skype: Fast, playful, delightful and buttery smooth​


Send me a webmention
lqdev🦃

Found this interesting video by Chackram & Riley Thompson. My favorite part starts around the 7:15 mark.

When Planets Mate Video by Chakram & Riley Thompson


Send me a webmention
lqdev🦃

Hello World! First post in the personal feed.


Send me a webmention