<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>MyTungsten</title><description>The personal web site of Mark Ahrens</description><link>https://www.mytungsten.net/</link><language>en-us</language><item><title>Puzzmo Project</title><link>https://www.mytungsten.net/blog/2026/puzzmo-project/</link><guid isPermaLink="true">https://www.mytungsten.net/blog/2026/puzzmo-project/</guid><description>Using Astro and the ATProtocol to make a &quot;live&quot; updating page</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It feels like a lot in technology is kind of weird right now with AI tools coming out every single day, one piece of technology that does excite me is the &lt;a href=&quot;https://atproto.com&quot;&gt;ATProtocol&lt;/a&gt;. The original scope of the ATProtocol was to be the basis of Bluesky, but it continues to expand into a space that could let it be the home to all of your social data without locking it into a specific service. I have been looking for something to tinker with it for awhile now, but finally something realitively easy came along.&lt;/p&gt;
&lt;p&gt;Before getting into the details about ATProtocol, I need to mention that MyTungsten has been running on the &lt;a href=&quot;https://astro.build&quot;&gt;Astro framework&lt;/a&gt; for awhile now. Astro is a great static site tool, but it also continues to expand and grow. One of the relatively new features is called &lt;a href=&quot;https://docs.astro.build/en/guides/content-collections/#live-content-collections&quot;&gt;Live Collections&lt;/a&gt;. With supported hosts, you can build your static site as normal, but then have one page be more dynamic. For MyTungsten, almost everything is fine being staticly generated, but for this project I needed to have it refresh in near realtime. Live Collections is a perfect fit.&lt;/p&gt;
&lt;p&gt;Last thing to mention, I started playing more games on &lt;a href=&quot;https://www.puzzmo.com/today/&quot;&gt;Puzzmo&lt;/a&gt;. Think of it as similar to NY Times Games, but done by independent creators with great design taste. With your account, there is a feature to sync your &lt;a href=&quot;https://blog.puzzmo.com/posts/2026/03/02/atproto/&quot;&gt;streak data to your Bluesky profile&lt;/a&gt;. You can also let them add badges to your account when syncing it. When syncing this data to my Bluesky account, it also becomes available to access in other applications.&lt;/p&gt;
&lt;p&gt;So, putting all of this together, I now have a Live Collection that reads Puzzmo streak data from my Bluesky profile and shows it in near realtime on my &lt;a href=&quot;/projects/puzzmo&quot;&gt;Puzzmo project page&lt;/a&gt;. The only real hangup with this was having to move from Cloudflare Pages to Cloudflare Workers, but with Astro now a project owned by Cloudflare, it wasn&apos;t too tricky to make the change.&lt;/p&gt;
</content:encoded></item><item><title>Flight Log</title><link>https://www.mytungsten.net/blog/2025/flight-log/</link><guid isPermaLink="true">https://www.mytungsten.net/blog/2025/flight-log/</guid><description>How I added the flight log to my site</description><pubDate>Wed, 17 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I enjoy keeping a list of things, whether it is favorite music for the year, best Simpsons episodes, or just something random. I have also gotten kind of hooked on &lt;a href=&quot;https://www.youtube.com/@noelphilips&quot;&gt;avgeek&lt;/a&gt; &lt;a href=&quot;https://www.youtube.com/@GreenerGrass&quot;&gt;videos&lt;/a&gt; the last couple of years, so it spurred in me the idea of keeping a history of flights I have taken in a log here on the site. I figured it would also be a good way to try out some new web tools and technology along the way. This week, I finally &lt;a href=&quot;/flights&quot;&gt;published the log&lt;/a&gt; and wanted to share how I got here since it was a bit of a process.&lt;/p&gt;
&lt;p&gt;This site is built using the &lt;a href=&quot;https://astro.build&quot;&gt;Astro framework&lt;/a&gt;. A couple of versions ago, a feature called &lt;a href=&quot;https://docs.astro.build/en/guides/content-collections/&quot;&gt;Content Collections&lt;/a&gt; was added allowing for a nicer developer experience integrating different ways to store data for the site. My initial work started with creating some JSON files, one for each flight and seeing where it would go. What I quickly discovered is any sort of data relationship gets a bit fragile because you either have to repeat the data for each flight or maintain entire other collections and try to keep them related. It is all doable with Content Collections, however, the editing experience becomes rather unpleasant quickly.&lt;/p&gt;
&lt;p&gt;I decided to take a break from how the data is stored and instead figuring out what data I could actually collect. I found that I could get flight numbers for every flight I have taken going back to 2013 pretty well. However, finding data for the flights older than a year or so presented a challenge. Doing some searching, &lt;a href=&quot;https://www.flightstats.com&quot;&gt;flightstats.com&lt;/a&gt; seemed like a decent option to get the data. I paid for a month subscription and was able to save out the data from each flight into a text file.&lt;/p&gt;
&lt;p&gt;At this point, I was still looking to get the data into JSON format. I decided to see if AI could help read the text files I had copy and pasted from a web page and make data out of them. After some back and forth, AI did manage to get most of the data organized for me. It made a few mistakes but still ended up being a time saver overall. However, I was back to solving the issue of whether JSON still made sense. I used the files to create the Content Collection and did a first draft of the log. After tinkering with it for a bit, I realized that it would get the bare bones done but doing any sort of reporting or more interesting displays of the data were going to be difficult. I needed a database.&lt;/p&gt;
&lt;p&gt;Rewinding a bit, while gathering all of the data, &lt;a href=&quot;https://docs.astro.build/en/guides/astro-db/&quot;&gt;AstroDB&lt;/a&gt; was announced. From some previous explorations, I looked at &lt;a href=&quot;https://supabase.com&quot;&gt;Supabase&lt;/a&gt; and other cloud databases but come away disappointed. They are fine tools, but I didn&apos;t want to build a full CRUD app to use them. I also didn&apos;t like that my data was living in another service, even if I could get it out relatively easily. I then came across an open source tool called &lt;a href=&quot;https://manifest.build&quot;&gt;Manifest&lt;/a&gt; that allowed you to define a schema and it generated a data store for you. It was an interesting concept, didn&apos;t truly solve the problem. In writing this, I found that they have pivoted away from that tool and now are doing something with AI (of course).&lt;/p&gt;
&lt;p&gt;Most of this work was focused around getting a data store that worked with Content Collections. After a bunch of time not finding a solution, I decided to expand my search and see what other options were available. I quickly found that using a SQLite database would solve a lot of my problems. First, it was a single file stored in the site repo. Second, it was a true database, so I could use a tool for entering data. Third, AI could help me generate insert statements from the previously created JSON files.&lt;/p&gt;
&lt;p&gt;With the data store solution in place and the data migrated in, the last part was sprucing up the actual display of the data. I willingly admit, I am not a designer. I can make something super basic and I still have opinions about design, but I don&apos;t have that creativity to make up something. This is a spot where AI could help out. I gave a general suggestion of what I wanted to &lt;a href=&quot;https://claude.ai&quot;&gt;Claude&lt;/a&gt; and it presented some options. After some back and forth, I settled a display of the data I liked. AI helped suggest code and styling to implement. I wouldn&apos;t quite call it vibe coding, more an assistant on the side to speed things up.&lt;/p&gt;
&lt;p&gt;All in all, I am happy with the final product. It feels more polished than previous attempts at a project like this. I still have some more features I want to add but feel they are doable. Also, with the SQLite solution, I can swing back around to have it solve some other for fun projects I have been thinking about for years.&lt;/p&gt;
</content:encoded></item><item><title>Mid-January Blog Revival Progress</title><link>https://www.mytungsten.net/blog/2024/mid-jan-blog-progress/</link><guid isPermaLink="true">https://www.mytungsten.net/blog/2024/mid-jan-blog-progress/</guid><description>Slowly but surely</description><pubDate>Wed, 17 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As mentioned in my previous post, I have been doing some work to get the blog archives restored from the before times on this site. Through various ways of accessing the old site URLs through archive.org, I have had some success. I have everything from 2003-04 and 2013 restored. Some of them even had comments, so I brought those over manually too. Recently I did find an archive that has every single post in it, so I am optimistic that I can get all of the blog posts brought back in time. It is just a time consuming process.&lt;/p&gt;
&lt;p&gt;While working on this, I have discovered some interesting things.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Delicious Library still exists&lt;/li&gt;
&lt;li&gt;The ESPN Page 2 archives still exist&lt;/li&gt;
&lt;li&gt;While I have no way of logging into it, &lt;a href=&quot;https://www.flickr.com/people/mizidymizark/&quot;&gt;my old Flickr account&lt;/a&gt; still exists and all of the links work&lt;/li&gt;
&lt;li&gt;The same goes with &lt;a href=&quot;https://www.last.fm/user/mizidymizark&quot;&gt;Last.FM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As part of the update, I have chosen to update some links to be more relevent. For example, when I linked to purchasing a CD on Amazon previously, now it would point to an Apple Music link.&lt;/p&gt;
&lt;p&gt;Overall, I am pretty pleased how the whole process is going. I also have enough content brought over that I am noticing things I want to tweak with the design of the site, like adding year headers in the full archive. It is fun though to be working on my personal site all over again.&lt;/p&gt;
</content:encoded></item><item><title>Reviving the Blog</title><link>https://www.mytungsten.net/blog/2024/reviving-the-blog/</link><guid isPermaLink="true">https://www.mytungsten.net/blog/2024/reviving-the-blog/</guid><description>Party like it&apos;s 2004!</description><pubDate>Mon, 01 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It is purely by chance that this is happening today, as I have been working on this for awhile. New Year&apos;s seems as good as any day to revive my blog officially. Who knows how much I will actually post, but having my own site where it is even possible makes it way more likely than not having that. The last year, I have seen a bit of a revival in the blogging world. Things like &amp;lt;strike&amp;gt;Twitter&amp;lt;/strike&amp;gt; X becoming a disaster, enjoying my time on &lt;a href=&quot;https://mastodon.world/@mytungsten&quot;&gt;Mastodon&lt;/a&gt;, and following quite a few more personal blogs started giving me the itch again. Honestly, I have been wanting to do this for awhile now, but two things mentally blocked me.&lt;/p&gt;
&lt;p&gt;First, finding the right tool for the blog. Being in web development, there are lot of different ways to create a web site. Spending all of my work time using Drupal, it could definitely do the job. The biggest challenge is finding a place to host the site. I don&apos;t want to pay for shared hosting that is terrible or manage my own VPS or anything like that. I love the ease of use with something like Netlify where I can push an update to a repo and be done with deployment.&lt;/p&gt;
&lt;p&gt;Over the last few years, I have tinkered with all sorts of static site generators (SSG),  &lt;a href=&quot;https://jekyllrb.com&quot;&gt;Jekyll&lt;/a&gt;, &lt;a href=&quot;https://gohugo.io&quot;&gt;Hugo&lt;/a&gt;, &lt;a href=&quot;https://www.gatsbyjs.com&quot;&gt;Gatsby&lt;/a&gt; and &lt;a href=&quot;https://www.11ty.dev&quot;&gt;Eleventy&lt;/a&gt;, but none of them fit me well. They are all great tools, but just didn&apos;t click with me. Gatsby was the closest, but I actually preferred it for something more data heavy like my Bowl Report site. The built-in GraphQL engine worked great for that, but seemed like overkill for a blog and some of my other one-off pages.&lt;/p&gt;
&lt;p&gt;In the last year, &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; grew in popularity and I decided to take it for a spin. Specifically, the Content Collections feature caught my eye. It fit in the sweet spot of not being too heavy but let me do the filtering easily that I wanted. Over the last couple of months, I have slowly been rebuilding my site using it and really enjoying the process.&lt;/p&gt;
&lt;p&gt;Finding the right tool was great, but I needed to get over the second issue. See, I have owned a domain for my personal web site since at least 2004. I started with mytungsten.net, then moved to marktopia.net, then back to mytungsten.net again. At one point in there, I even had the terrible pun domain dudeweek.com, which was pointing to a web server hosted in my partment. However, through all of these changes and transitions, content has gotten lost along the way. I didn&apos;t backup the right database from Wordpress one time. A couple of times I decided to start with a clean slate, but also didn&apos;t back up the HTML files. At the time, it seemed like the right move, but now, I feel guilty about it.&lt;/p&gt;
&lt;p&gt;While there is &lt;em&gt;a lot&lt;/em&gt; of cringy content from when I started my site, at the same time, it is a reflection of who I was then. Starting with a clean slate might have been my way of trying to ignore it, I don&apos;t know, but at this point, I felt like it was wrong to launch the site again and not having the archives there. So I started to do some digging on archive.org to see what I could find of my old sites. It isn&apos;t perfect, but there is enough there that I can slowly start bringing it back. It is going to be a lengthy process, but I will be happy having as much back as I can, even the cringy stuff.&lt;/p&gt;
&lt;p&gt;The goal isn&apos;t going to be to blog every day or anything like that, but to have a spot where I can write something if I want and try to bring back as much of my web history as I can. Oh, and also to enjoy the process along the way.&lt;/p&gt;
</content:encoded></item><item><title>The Swiftly Tangled Web</title><link>https://www.mytungsten.net/blog/2015/swiftly-tangled-web/</link><guid isPermaLink="true">https://www.mytungsten.net/blog/2015/swiftly-tangled-web/</guid><pubDate>Tue, 29 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I got around to reading the feature on &lt;a href=&quot;http://arstechnica.com/information-technology/2015/12/the-app-ocalypse-can-web-standards-make-mobile-apps-obsolete/&quot;&gt;ArsTechnica&lt;/a&gt; about how the web is going to beat native apps someday. While I feel like this is the same discussion about “next year is the year for Desktop Linux”, I am going to ignore that. I am instead going to discuss the idea “Apple doesn’t want apps to go away”.&lt;/p&gt;
&lt;p&gt;First, just because Apple hasn’t implemented those 3 “good examples of functions that programs need in order to give the full app experience on mobile”, doesn’t mean they won’t. It just seems like the author doesn’t like that Apple only announces major updates to Safari once a year at WWDC, something he chose to not mention at all.&lt;/p&gt;
&lt;p&gt;Now, I agree that for the next year or two, it is definitely in Apple’s best interest that native apps are stronger than mobile web apps. But after that, I think Apple will be well positioned to handle either scenario because of their open source release of Swift this last month.&lt;/p&gt;
&lt;p&gt;Apple has already released a Linux port for Swift so anyone can start running Swift their servers today. The Swift roadmap also has plans to incorporate Foundation into Swift 3. Within a year or so, developers will be able to share a decent amount of code between their server infrastructure and their app development.&lt;/p&gt;
&lt;p&gt;Apple isn’t run by a bunch of dummies who only care about the next 6 months. Apple knows that web browsers will get more powerful and that in some cases, the need for native apps will start to diminish. Apple is not ignoring this situation. Instead, it is developing the language and frameworks to lower the effort of switching.&lt;/p&gt;
&lt;p&gt;It is also a huge opportunity for developers. It is rare in a developer’s career to have the opportunity to have a fresh start with a programming language. This opportunity will allow developers to not have to choose between native and web if they don’t want. In a year or so, a developer could write an application that runs on a cloud server that enables users to manage content. They can then write code to generate feeds for that content in Swift.  These are then read either by server-side Swift or native app Swift and presented in a similar way.&lt;/p&gt;
&lt;p&gt;That doesn’t sound like Apple is ignoring the web to me. That sounds like Apple is 3 steps ahead of what the author is thinking about when he wrote the article.&lt;/p&gt;
</content:encoded></item><item><title>Blow It All Up</title><link>https://www.mytungsten.net/blog/2015/blow-it-all-up/</link><guid isPermaLink="true">https://www.mytungsten.net/blog/2015/blow-it-all-up/</guid><pubDate>Sun, 11 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last night I watched the majority of the CONCACAF Cup between Mexico and the US. After the Gold Cup this summer, the friendies and then last night, I am convinced it is time to blow the whole thing up with the National team. Last night I saw a combination of players past their prime who were playing their heart out but just couldn’t keep up, such as Beasley and Beckerman, and players who just didn’t seem interested in playing, like Dempsey and Jones.&lt;/p&gt;
&lt;p&gt;The only players that I saw giving any promise for the future were Yedlin and Zardes, which for some reason got subbed for one another. Klinsmann keeps toying with bringing in younger players, but he won’t stick with a consistent anything for them.&lt;/p&gt;
&lt;p&gt;We know now that the next major matches the US will have to play are the World Cup qualifiers next month. One of the two matches in November is against Saint Vincent and the Grenadines, so even if we have a young lineup there, we should win that. I think it is time to commit to a youth movement and start building the team we will need in 2018.&lt;/p&gt;
&lt;p&gt;And whether Klinsmann is coaching or not, I really don’t care.&lt;/p&gt;
&lt;p&gt;Here are some (not all) of the players I would like to see playing:&lt;/p&gt;
&lt;p&gt;GK: Hamid, Horvath, Cropper&lt;br /&gt;
DF: Brooks, Shea, Chandler, Besler, Garza, O’Neill&lt;br /&gt;
MF: Yedlin, Trapp, Gil, Ibarra, Mix, Corona, Nagbe, Zelalem&lt;br /&gt;
FW: Jóhannsson, Morris, Green, Zardes, Wood&lt;/p&gt;
</content:encoded></item><item><title>Ghana Journal Updated</title><link>https://www.mytungsten.net/blog/2015/ghana-journal-updated/</link><guid isPermaLink="true">https://www.mytungsten.net/blog/2015/ghana-journal-updated/</guid><pubDate>Sun, 10 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In about two weeks I am headed back to Ghana for another mission trip. I figured before then, it would be good to really finish up my travel journal from the last trip. It took awhile, but everyone who went on the trip shared all of their photos with everyone else. When I initially wrote the journal, I just had mine, so now it is updated with many more photos and is being setup to host this year’s trip journal as well. You can check it out at &amp;lt;strike&amp;gt;ghana.markahrens.co&amp;lt;/strike&amp;gt; &lt;a href=&quot;/trips&quot;&gt;/trips&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Airport Codes</title><link>https://www.mytungsten.net/blog/2015/airport-codes/</link><guid isPermaLink="true">https://www.mytungsten.net/blog/2015/airport-codes/</guid><pubDate>Thu, 09 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;http://airportcod.es&quot;&gt;Airport Codes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I saw this featured by Typekit today and it was something that was right up my alley. Not only is it a really well designed, cool web site, it is also hosted on Github and folks can add additional airports through pull requests. This evening I added ACC to my fork and got the pull request in, so hopefully it will be added to the site soon.&lt;/p&gt;
</content:encoded></item><item><title>Game of Hyrule</title><link>https://www.mytungsten.net/blog/2015/game-of-hyrule/</link><guid isPermaLink="true">https://www.mytungsten.net/blog/2015/game-of-hyrule/</guid><pubDate>Thu, 09 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;iframe width=&quot;660&quot; height=&quot;371&quot; src=&quot;https://www.youtube.com/embed/QGxy1SpZYPQ?feature=oembed&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;Finally.&lt;/p&gt;
</content:encoded></item><item><title>Ghana Mission Trip</title><link>https://www.mytungsten.net/blog/2015/ghana-mission-trip/</link><guid isPermaLink="true">https://www.mytungsten.net/blog/2015/ghana-mission-trip/</guid><pubDate>Mon, 16 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Just about two years ago, I was privileged to go on a mission trip to Ghana that deeply affected my life. This year I am lucky enough to get to go back to Ghana again at the end of May for 2 weeks. This trip is going to be focused in the Kumasi region of Ghana at the Tetrefu Integrated Community Center for Employable Skills (ICCES). The goal of this school is to educate both men and women in a trade skill that they can use to make a living.&lt;/p&gt;
&lt;p&gt;The biggest challenge the school faces is lack of desks and tools. Our group is going to bring funding for supplies to create new desks, then help at the school to build the desks while we are there. The Tetrefu ICCES also is looking to have a new water pump and store installed to help at the school. Our group is looking to help raise money for the trip, including the supplies and the water pump. You can find more information about the fund raising at http://www.youcaring.com/project-fundraiser/fumc-ghana-mission-trip/318478.&lt;/p&gt;
&lt;p&gt;I am super excited for the trip and to experience a different area of the country. As with last time, I will be journaling the entire trip to share when I get back, as well as doing some presentations, so if you have questions, feel free to send them along in the comments.&lt;/p&gt;
</content:encoded></item></channel></rss>