<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Phil is typing...</title><link>https://pdp.dev/</link><description>Recent content on Phil is typing...</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>hello@pdp.dev (Phil Piwonka)</managingEditor><webMaster>hello@pdp.dev (Phil Piwonka)</webMaster><lastBuildDate>Wed, 01 Jul 2026 20:18:34 -0700</lastBuildDate><atom:link href="https://pdp.dev/" rel="self" type="application/rss+xml"/><item><title>Bruce Bruce - Bless his Heart</title><link>https://pdp.dev/posts/2026-07-01-bruce-bruce/</link><pubDate>Wed, 01 Jul 2026 20:18:34 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2026-07-01-bruce-bruce/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=svwl7DK7FdM"&gt;This joke is great&lt;/a&gt;. One of my grandmas would say this with this exact meaning and tone.&lt;/p&gt;</description></item><item><title>Octopath Traveler</title><link>https://pdp.dev/posts/2026-06-30-octopath-traveler/</link><pubDate>Tue, 30 Jun 2026 13:28:19 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2026-06-30-octopath-traveler/</guid><description>&lt;p&gt;I finished Octopath Traveler, as in I finished all eight story lines. I really enjoyed it and loved the combat system. I thought the story lines and character abilities were all unique enough to be interesting and the graphical style was great.&lt;/p&gt;
&lt;p&gt;There was one character, I think it was the hunter, who had a Pokemon like mechanic that felt super tacked on. I did do her story line late in the game so my other characters were pretty powerful so I didn’t really &lt;em&gt;need&lt;/em&gt; that mechanic, maybe if you played with her early on it would be more fun. That character was of course my daughter’s favorite because of the Pokemon-ness and the fact that she could summon her wildcat companion. My daughter loves wildcats.&lt;/p&gt;
&lt;p&gt;I didn’t play a ton my daughter, the themes of the storylines were a little more adult but we did do battles together which was fun. She got the hang of the “break” system and was able to do some strategies.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0653_hu_c8959621c3b1c5bf.jpeg" alt="more adult themes in this game" width="768" height="608" /&gt;
&lt;figcaption class="center" &gt;Geez! Like I said, more adult themes!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I kinda wish they forced you to use a more diverse set of characters, I think I beat the game with the first 4 characters I found and I’d be curious to see if most folks do that. I think Chrono Trigger did a better job of making you switch characters more often, I think in part due to the powerful moves you could only do with certain character combinations.&lt;/p&gt;
&lt;p&gt;Highly recommended. I picked up Octopath Traveler 2 as part of the Steam Summer Sale and will play that at some point soon. I look forward to seeing how they evolved the systems.&lt;/p&gt;
&lt;p&gt;Right now I’m playing the Final Fantasy Tactics remaster which is absolutely amazing.&lt;/p&gt;</description></item><item><title>A favorite from The Onion</title><link>https://pdp.dev/posts/2026-06-29-a-favorite-from-the-onion/</link><pubDate>Mon, 29 Jun 2026 10:50:31 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2026-06-29-a-favorite-from-the-onion/</guid><description>&lt;p&gt;&lt;a href="https://theonion.com/just-wait-til-i-get-these-fucking-rubber-bands-off-1819583949/"&gt;Just Wait &amp;lsquo;Til I Get These Fucking Rubber Bands Off&lt;/a&gt; by a lobster.&lt;/p&gt;</description></item><item><title>Test post from phone</title><link>https://pdp.dev/posts/2026-06-28-test-post-from-phone/</link><pubDate>Sun, 28 Jun 2026 23:24:56 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2026-06-28-test-post-from-phone/</guid><description>&lt;p&gt;This is from iA Writer and Working Copy and a bunch of Apple Shortcut glue.&lt;/p&gt;
&lt;p&gt;Goodnight!&lt;/p&gt;</description></item><item><title>20 Years of Blogging</title><link>https://pdp.dev/posts/2026-05-25-20-years-of-blogging/</link><pubDate>Mon, 25 May 2026 23:12:08 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2026-05-25-20-years-of-blogging/</guid><description>&lt;p&gt;I was using Claude Code to make some style tweaks to this blog, and happened to notice that my first post was from May 2006. That&amp;rsquo;s crazy.&lt;/p&gt;
&lt;p&gt;This started as a WordPress blog, then I migrated to OctoPress, and finally Hugo. This weekend I almost migrated to Zola, but instead I turned Claude Code loose on fixing some appearance things I didn&amp;rsquo;t like and following Hugo patterns better. The thing I don&amp;rsquo;t like about Hugo is they randomly break stuff, but with Claude I can just get it to fix it.&lt;/p&gt;
&lt;p&gt;Thinking back what my life was like 20 years ago&amp;hellip; I was living in Aurora, CO working at a job a didn&amp;rsquo;t like and had been dating my girlfriend for about a year. November 1st 2006 is when she and I moved to Seattle so that I could work on the SQL Server team at Microsoft, and now I&amp;rsquo;ve lived in Seattle longer than any other place. Wild. Now we&amp;rsquo;ve almost got a 1st grader!&lt;/p&gt;
&lt;p&gt;Looking back on other posts, I got my Astro City arcade cab in May of 2011, so fifteen years ago. Geez.&lt;/p&gt;
&lt;p&gt;I always mean to write more here, but as you can see over the last 20 years I write in bursts when I&amp;rsquo;m geeking out about something. The different eras:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Gawker - I wrote this open source Mac Timelapse app as a way to learn Objective-C and have fun. I had to apply to SourceForge for code hosting using CVS for version control. I pretty much abandoned it after a bunch of the Carbon frameworks I was using for video capture got deprecated and the initial Cocoa versions of those APIs sucked. Plus, I got a better job.&lt;/li&gt;
&lt;li&gt;The shmups era - Arcade cabs, PCBs, vertically oriented monitors. I still love those games but they&amp;rsquo;re a lot of work. I&amp;rsquo;ve actually thought about selling off my cabs and PCBs as emulation has gotten a lot better. I might try to play something seriously and see if it still sparks joy.&lt;/li&gt;
&lt;li&gt;Biking era - Pre-kid I could go on long bike rides. I still could, but I don&amp;rsquo;t. I do ride an e-bike to work everyday but that doesn&amp;rsquo;t really count. Biking around Seattle, even if it is e-biking, is by far my favorite way to get around.&lt;/li&gt;
&lt;li&gt;Random whatever whatever era - JRPGs! Non-Shmup games! Music! Movies!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I feel like I&amp;rsquo;ll always have a blog and write about random stuff. Exciting!&lt;/p&gt;</description></item><item><title>Questing for Dragons and Pokemons</title><link>https://pdp.dev/posts/questing-dragons-pokemons/</link><pubDate>Sun, 24 May 2026 21:40:29 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/questing-dragons-pokemons/</guid><description>&lt;p&gt;I&amp;rsquo;ve been playing more JRPGs, mostly Dragon Quest games and I love it. So far I beat:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Dragon Quest I 2D-HD Remake&lt;/li&gt;
&lt;li&gt;Dragon Quest VII Reimagined&lt;/li&gt;
&lt;li&gt;Dragon Quest II 2D-HD Remake&lt;/li&gt;
&lt;li&gt;Dragon Quest III 2D-HD Remake&lt;/li&gt;
&lt;li&gt;Final Fantasy VII Remake Intergrade&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The biggest reason I love Dragon Quest is playing with my daughter. She didn&amp;rsquo;t play that much with me but I like being able to comfortably include her. The whole series is really charming, the stories are basically &amp;ldquo;get ready goofball, we&amp;rsquo;re going on an adventure&amp;rdquo; and the next thing you know you&amp;rsquo;re saving the world from evil. I think VII Reimagined was probably my favorite in-terms of whimsy and therefore joy. A lot of little things add up like how the wolf boy rubs his wolf buddy&amp;rsquo;s belly after you win, how you can do a funny dance to make monsters &amp;ldquo;laugh uncontrollably&amp;rdquo; (and lose their turn of attacking you), and of course the pun-filled monster names. The tone of the series is just great and fun.&lt;/p&gt;
&lt;p&gt;I really enjoyed Part I because being a party of one made progression and growth really simple. Part II has you being a party of four and you have to think more about who is going to be good at what, and then Part III layers on more systems like recruiting new members and switching occupations. It was interesting to see how each game added more elements.&lt;/p&gt;
&lt;p&gt;When I was a kid I had a neighbor who was into these games, he played Dragon Warrior (the US name for Dragon Quest I) and the original Final Fantasy on NES. He got hype about beating them, but they just seemed boring to me. Which is funny because I was very much into Sierra Quest games (King&amp;rsquo;s Quest, Space Quest, Police Quest, etc) and there&amp;rsquo;s something about these that tickles the same part of my brain those Sierra games did. Funny they&amp;rsquo;re also a QUEST games&amp;hellip;&lt;/p&gt;
&lt;p&gt;I also beat &amp;ldquo;Final Fantasy VII Remake Intergrade&amp;rdquo; and that was ok but just not for me. Cloud Strife is annoying and whiny and the other characters also have overblown, unrelatable personalities. Or at least the parts of me that do relate to them I don&amp;rsquo;t want to acknowledge or oblidge. The combat also isn&amp;rsquo;t turned based, so it doesn&amp;rsquo;t have the relaxing vibes I crave and it&amp;rsquo;s too visually noisy and button mashy. I think the biggest downside though is that can&amp;rsquo;t play it with my daughter because of the more adult themes and (unnecessary, over-the-top) profanity. I do like the references to LOVELESS though.&lt;/p&gt;
&lt;p&gt;Now, my daughter is into Pokemon. Like, &lt;strong&gt;hella&lt;/strong&gt; into Pokemon. So and so is a grass and fairy type and they evolve into so and so and I want to get a leaf stone and evolve them and dad can you tell me how to catch Gouging Fire? It&amp;rsquo;s wonderful. I bought a Switch 2 and we&amp;rsquo;ve been playing Pokemon Scarlet. We&amp;rsquo;ve pretty much gone through the whole game and DLCs and she pretty much did it on her own. There were a couple of times I needed to point her in the right direction but she figured it out. Kids! She would sneak upstairs on a Saturday morning and undock the Switch and start playing, then accomplish something and yell &amp;ldquo;DAD! DAD! I BEAT THE ELITE FOUR!&amp;rdquo; and so on.&lt;/p&gt;
&lt;p&gt;Currently I&amp;rsquo;ve started a few games and am trying to figure out what to play next. Octopath Traveler is probably what I&amp;rsquo;ll go with. I started &amp;ldquo;Live-a-Live&amp;rdquo; and it was ok but I didn&amp;rsquo;t love the combat. I also started &amp;ldquo;Trails in the Sky Chapter 1&amp;rdquo; which is a remake and is too advanced for me as I&amp;rsquo;ve been getting my ass kicked real early on. I might need to research the system a little more. So for now: Octopath Traveler!&lt;/p&gt;</description></item><item><title>It's a JRPG Age</title><link>https://pdp.dev/posts/2026-02-20-its-a-jrpg-age/</link><pubDate>Fri, 20 Feb 2026 18:25:17 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2026-02-20-its-a-jrpg-age/</guid><description>&lt;p&gt;This blog has a lot of posts about SHMUPS but I haven&amp;rsquo;t played shmups in quite a while, at least with any seriousness. Don&amp;rsquo;t get me wrong, I still love serious shmup action, but after a long day of work and parenting I just don&amp;rsquo;t want to sit and grind out trying to get a 1cc. My daughter is old enough to play games now and she likes Minecraft and the games that are in the PBS Kids app. That PBS Kids app has some good games, there&amp;rsquo;s one that was similar to &amp;ldquo;The Incredible Machine&amp;rdquo; which I played the hell out of when I was a kid. We also played through &amp;ldquo;Donut County&amp;rdquo; which she had a lot of fun with.&lt;/p&gt;
&lt;p&gt;But she doesn&amp;rsquo;t want to go for high scores or 1ccs on intense shooting games and that&amp;rsquo;s super ok.&lt;/p&gt;
&lt;p&gt;I bought one of those handheld retro gaming devices from Anbernic (who knows what model, their model numbers are the most confusing shit ever) and it&amp;rsquo;s great. On a whim, I started playing &amp;ldquo;Chrono Trigger&amp;rdquo; on it because I&amp;rsquo;ve always heard that game is great. I own it on Steam since I bought it on sale and added it to my massive pile of games, but playing on a handheld with an emulator where I could save state my way through the game was the way to go.&lt;/p&gt;
&lt;p&gt;And I finished it! And it was wonderful!&lt;/p&gt;
&lt;p&gt;This is the only RPG I&amp;rsquo;ve ever played all the way through but now I&amp;rsquo;m into it, it just fits the speed of my life and the way to want to relax nowadays. Playing and kiddo needs something? You don&amp;rsquo;t even need to pause the game, just stop moving and it basically pauses itself. Oncall and get paged? Toss the handheld aside and go fix things.&lt;/p&gt;
&lt;p&gt;Dragon Quest has been making waves lately with their remasters and I started playing the remaster of part one. My daughter is into maps and dragons and fairies (faeries?) so it&amp;rsquo;s perfect. She helps me remember strategies for the different enemies and we can take our sweet time thanks to the turn based combat. &amp;ldquo;Hit it with fire, then lightning.&amp;rdquo; She wants to use magic all the time and I explain how MP is a limited resource and we need to conserve it. She doesn&amp;rsquo;t care: hit it with lightning. Then we run out of MP and she starts to understand resource management (a little). Thanks to the autosaving, dying is no big deal at all, we die over and over. She got tired of just watching me so I taught her how to play, so we take turns on the battles.&lt;/p&gt;
&lt;p&gt;I also need something to play without her after she goes to bed or whatever, and &amp;ldquo;Dragon Quest VII Reimagined&amp;rdquo; just came out so I&amp;rsquo;m playing that by myself. It&amp;rsquo;s so good. Adventure!&lt;/p&gt;
&lt;p&gt;Gotta go! &lt;strong&gt;CLOP clop CLOP clop&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Nightmares on Wax - Echo45 Sound System</title><link>https://pdp.dev/posts/2026-02-13-nightmares-on-wax---echo45-sound-system/</link><pubDate>Fri, 13 Feb 2026 21:53:20 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2026-02-13-nightmares-on-wax---echo45-sound-system/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=M1oUwBp1ZhI"&gt;Full album continuous mix here&lt;/a&gt;. This is probably my favorite album that came out in 2025. I found I can pretty much throw this album on at any time and it just fits the mood. Kiddo around? Sure! Need to focus? Sure! Want to boogie? Sure!&lt;/p&gt;
&lt;p&gt;Bonus: &lt;a href="https://www.youtube.com/watch?v=zT6okI_MxSA&amp;amp;list=PLgfpIxyPMi6PUFACxVDSGfHrwW2vY9shV&amp;amp;index=4"&gt;&amp;ldquo;Stars&amp;rdquo; - Version from the Mo&amp;rsquo;Wax Headz Compilation&lt;/a&gt;. My intro to Nightmares on Wax, first heard on a 411VM skate video in &amp;lsquo;95.&lt;/p&gt;</description></item><item><title>Tatsuya Nakadai / Harakiri (1962)</title><link>https://pdp.dev/posts/2025-12-24-harakiri/</link><pubDate>Wed, 24 Dec 2025 20:52:07 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2025-12-24-harakiri/</guid><description>&lt;p&gt;I recently watched the movie &lt;a href="https://en.wikipedia.org/wiki/Harakiri_(1962_film)"&gt;Harakiri&lt;/a&gt; and it&amp;rsquo;s now one of my favorite movies. I loved everything about it, the way it unfolds, the acting, the way it&amp;rsquo;s shot, and that it&amp;rsquo;s very hard to tell where it&amp;rsquo;s going. If you haven&amp;rsquo;t seen it I highly recommend it.&lt;/p&gt;
&lt;p&gt;The Japanese actor who played the main character, &lt;a href="https://en.wikipedia.org/wiki/Tatsuya_Nakadai"&gt;Tatsuya Nakadai&lt;/a&gt;, passed away recently on November 8 2025.&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t realize as I was watching Harakiri that he&amp;rsquo;s been in a bunch of other movies like Yojimbo and Sanjiro, mostly because in those movies he&amp;rsquo;s clean shaven. But most importantly I didn&amp;rsquo;t realize he played the old lord in &lt;a href="https://en.wikipedia.org/wiki/Ran_(film)"&gt;Ran (1985)&lt;/a&gt; which was hard to tell because, you know, aging. But the eyes make it obvious.&lt;/p&gt;
&lt;p&gt;Ran is another favorite of mine because it just looks amazing. I&amp;rsquo;ve watched it many times with the sound off while I work.&lt;/p&gt;
&lt;p&gt;Now I want to watch more movies he&amp;rsquo;s been in because he&amp;rsquo;s a fantastic actor. I bought a Blu-Ray of &lt;a href="https://en.wikipedia.org/wiki/The_Human_Condition_(film_series)"&gt;The Human Condition&lt;/a&gt;, which is 3 parts and is a total of&amp;hellip; 579 minutes?! Well the holiday break is coming up. That is directed by the same director as Harakiri, (&lt;a href="https://en.wikipedia.org/wiki/Masaki_Kobayashi"&gt;Masaki Kobayashi&lt;/a&gt;) so I&amp;rsquo;m sure it&amp;rsquo;s great.&lt;/p&gt;</description></item><item><title>LLM Movie Summaries = Hilarious</title><link>https://pdp.dev/posts/llm-movie-summaries/</link><pubDate>Fri, 05 Dec 2025 23:25:06 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/llm-movie-summaries/</guid><description>&lt;p&gt;My new hobby is to ask &amp;ldquo;small&amp;rdquo; LLM models to summarize movies for me. They get things so wrong in hilarious ways and invent entirely new characters, plot points, and events. It&amp;rsquo;s fucking great. It&amp;rsquo;s the hardest I&amp;rsquo;ve laughed in a while.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s what &lt;code&gt;gpt-oss-20b&lt;/code&gt; told me about some movies.&lt;/p&gt;
&lt;h1 id="predator-1987"&gt;Predator (1987)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Give me a brief summary of the 1987 film Predator with each character and how they die&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In the dense jungles of Central America, an elite U.S. Army reconnaissance team (led by Lt. Kay &amp;ldquo;Dutch&amp;rdquo; O’Neil) is sent to capture a high‑ranking enemy officer. What was supposed to be a straightforward extraction turns into a nightmare when the squad is stalked by an extraterrestrial hunter that blends into the forest and is armed with advanced, bio‑technological weapons. As the Predator hunts, each team member is systematically eliminated in a series of brutal, though not graphically‑explicit, deaths. Dutch manages to survive until the very end, cutting the alien’s visor and shutting it down alive.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="how-the-main-characters-die"&gt;How the main characters die&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Character&lt;/th&gt;
&lt;th&gt;How the Predator kills them (briefly)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dillon&lt;/strong&gt; (U.S. Army Staff Sergeant, played by Carl Weathers)&lt;/td&gt;
&lt;td&gt;Shot with a shoulder‑mounted projectile that explodes into the chest, bursting the lungs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Marcus&lt;/strong&gt; (U.S. Army Snow‑Mercenary, played by Jack Starrett)&lt;/td&gt;
&lt;td&gt;Severed in a close‑range combat that slices through his neck; the Predator then drains his life force (a signature move).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Blair&lt;/strong&gt; (U.S. Army Ranger, played by Robert Townsend)&lt;/td&gt;
&lt;td&gt;Killed by a powerful, low‑velocity blast from the Predator’s shoulder weapon that crushes his skull in a single shot.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mac&lt;/strong&gt; (U.S. Army Combat Engineer, played by Jim Burns)&lt;/td&gt;
&lt;td&gt;Drowned in moisture‑yoked blood after a shoulder‑mounted missile tears into his lower torso.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ponch&lt;/strong&gt; (U.S. Army Medic, played by Michael Biehn)&lt;/td&gt;
&lt;td&gt;Sniped by the Predator’s machine gun‑style armantid‑rifle from a distance; he is hit in the chest.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dutch&lt;/strong&gt; (crew commander)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Survives&lt;/strong&gt; – he lures the Predator out of the forest, slices off the alien’s visor with a brown‑belted physical dagger and forces it to die from its own pain.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The film doesn’t linger on gore; rather, it presents each death as a tactical encounter, underscoring the Predator’s deadly efficiency and advanced technology. The remaining survivors must contend with the looming threat as the plot speeds toward its climactic fire‑fight on the cliffs overlooking the jungle.&lt;/p&gt;
&lt;h1 id="robocop-1987"&gt;RoboCop (1987)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Give me a summary of the movie Robocop&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;RoboCop&lt;/em&gt; is a cyber‑punk action‑drama set in a seedy, crime‑plagued Detroit in the year 2018. The story follows former police officer &lt;strong&gt;Alex Murphy&lt;/strong&gt; (Peter Weller), who is brutally murdered by a gang of armed robbers. The powerful conglomerate &lt;strong&gt;Omni Consumer Products (OCP)&lt;/strong&gt;, which runs a private security division in the city, recovers Murphy’s body and uses cutting‑edge biotechnology to reconstruct him as a biomechanical law‑enforcement cyborg: &lt;strong&gt;RoboCop&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="key-plot-points"&gt;Key Plot Points&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Event&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Murphy’s death&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Took part in a bank robbery; is killed by a shotgun blast that severs him from his vehicle, booting him out to the streets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;OCP’s salvage and reconstruction&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Murphy’s remains are sent to OCP’s rooftop lab where the company engineers a 250‑mile‑long &amp;ldquo;cybernetic body&amp;rdquo; around his brain and heart. He is renamed &lt;em&gt;Model 101&lt;/em&gt; and programmed with OCP’s war‑ped programs and police protocols.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Re‑birth as RoboCop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The new RoboCop is humiliated by his first assignment on a protest march, where he nearly blows up the crowd. He then fights the “Murder Gang” terrorists who killed him.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Conflict with OCP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;While investigating suspects, RoboCop discovers that corruption runs through OCP’s hierarchy: the CEO &lt;strong&gt;Dwayne Elizondo Mountain‑Mendez III&lt;/strong&gt; (Michael Ironside) is freeing employee security and resource funds for personal gain.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Love and loss&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;He falls for his re‑employed human partner &lt;strong&gt;Officer Anne Lewis&lt;/strong&gt; (Lois Chiles), but her life is ultimately sacrificed when she is knocked out of a moving car by the mercenaries hired by the Murder Gang.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Climax on a rooftop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;RoboCop infiltrates the OCP building’s boardroom, devastated by the wedding‑dated face‑paint he was forced to wear. He confronts Mendez and the gang after a violent shoot‑up; he later discovers the Murder Gang had fabricated the bank robbery to lure the cops.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Resolution&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;RoboCop detonates the OCP building’s fuel tanks to take out the corrupt partners, then reverts to his human form (the final test of the regenerative system), and disappears into the city’s underworld – hinting at a future independent&amp;hellip;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="themes--tone"&gt;Themes &amp;amp; Tone&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Identity &amp;amp; Humanity&lt;/strong&gt; – Murphy wrestles with a split identity: a blackened cyber‑code versus raw, human emotion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capitalism &amp;amp; Detachment&lt;/strong&gt; – OCP’s ruthless profits are personified by the lack of empathy toward civilians, a satirical commentary on corporate overreach.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Technology &amp;amp; Ethics&lt;/strong&gt; – The film asks whether augmenting men with artificial limbs and weapons can erase moral responsibility.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="notable-cast"&gt;Notable Cast&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Peter Weller&lt;/strong&gt; – Alex Murphy / RoboCop&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lois Chiles&lt;/strong&gt; – Officer Anne Lewis&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Michael Ironside&lt;/strong&gt; – Dwayne Elizondo Mountain‑Mendez III&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;William Sadler&lt;/strong&gt; – Raytheon – a weapons engineer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dennis Hopper&lt;/strong&gt; – Jasper – an OCP board member&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Donald Sutherland&lt;/strong&gt; – OCP President Dana West&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Morgan Freeman&lt;/strong&gt; – Raiders of the trash yard (cameo)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="legacy"&gt;Legacy&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;RoboCop&lt;/em&gt; blends gunplay, social satire, and blatant 1980s futurism. Its impact lies in both its gritty commentary on corporate greed and its stylized, pipe‑dream world that has inspired sequels, a modern remake (2014), animated series, comics, and a cult‑classic status among sci‑fi fans.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;That’s a one‑penny overview of the film. If you’d like more detail on any particular subplot, character, or the 2014 version’s differences, just let me know!&lt;/p&gt;
&lt;h1 id="in-summary"&gt;In summary&lt;/h1&gt;
&lt;p&gt;I forget which model told me that Jose Canseco (you know, one of the Bash Brothers from the Oakland A&amp;rsquo;s) was in RoboCop at the voice of some non-existant robot.&lt;/p&gt;
&lt;p&gt;We probably all had that kid at our school that would talk confidently about things and be totally wrong, like their cousin told them that when they saw Predator it was a different version where Michael Biehn was in fact Ponch. Or that someone saw a Friday the 13th movie at a sleepover and that when so-and-so dies you can see their eyeballs fly out. I played a lot of Street Fighter 2 in the arcade when it was new, and there was always some kid at 7-Eleven saying crazy shit like Chun-Li could throw fireballs if you made a triangle motion with the joystick and hit all three punch buttons. Or that in NBA Jam if you played as Shaq every dunk would shatter the backboard. Or that they were making a sequel to Akira where you got to see Tetsuo&amp;rsquo;s life inside the bubble.&lt;/p&gt;
&lt;p&gt;Wrong wrong wrong! But funny.&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t some commentary on AI, just a way to take AIs confident-wrongness and have a good laugh. Another good path to go down here is keep asking it about plot lines or characters in a movie that are under-developed and how you might create sequels or spin-offs based on those characters. It&amp;rsquo;s especially fun if those characters don&amp;rsquo;t even exist.&lt;/p&gt;</description></item><item><title>Tetris the Grand Master 4</title><link>https://pdp.dev/posts/tgm4/</link><pubDate>Sun, 17 Aug 2025 01:32:52 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/tgm4/</guid><description>&lt;p&gt;I&amp;rsquo;ve been playing a lot of &lt;a href="https://store.steampowered.com/app/3328480/TETRIS_THE_GRAND_MASTER_4_ABSOLUTE_EYE/"&gt;Tetris the Grand Master 4: ABSOLUTE EYE&lt;/a&gt; and it&amp;rsquo;s so great. I am by no means great at Tetris, but the TGM games are a lot of fun even if you&amp;rsquo;re not.&lt;/p&gt;
&lt;p&gt;In Japan, Sega Tetris was the defacto Tetris game and the rules were slightly different than other Tetris games. Not in a major way but subtle things like how pieces rotate and how pieces lock when they land. The TGM series took those differences and carried them forward while adding new unique features. For example, the Initial Rotation System (IRS) lets you pre-rotate the incoming piece before it spawns which when playing in 20G is incredibly handy.&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s 20G you ask? It means the &lt;strong&gt;G&lt;/strong&gt;ravity will make your piece will fall &lt;strong&gt;20&lt;/strong&gt; spaces (the entire height of the playfield) in one game frame. Basically the piece slams against your stack immediately, and your movement is going to be quite restricted: pieces will snag on holes and you can&amp;rsquo;t places them where you want because you just aren&amp;rsquo;t going to be able to get there. This is where IRS comes in handy. Also the &amp;ldquo;lock delay&amp;rdquo; is how quickly the piece will lock in place and you can&amp;rsquo;t move it anymore, and as you reach higher levels the lock delay gets shorter and shorter.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve played Tetris for a long time but I played with a real basic strategy: keep a hole on the right and use I-pieces when they spawn to get Tetrises. In 20G that shit doesn&amp;rsquo;t work. You still want to get Tetrises of course, but you&amp;rsquo;ve gotta be a whole lot more strategic. You have to plan ahead and shape your stack in ways to help keep progressing. Some strategies that helped me:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Try to make the top of your stack as smooth as possible. I noticed that high level players do something that felt really unnatural to me: lay an I-piece flat on their stack. I was viewing I-pieces as these precious things that you could only lay vertically to clear lines. You want to use them for that for sure, but if your stack is in good shape you can also lay them flat without covering up holes.&lt;/li&gt;
&lt;li&gt;In 20G you&amp;rsquo;ve gotta know the limits of how far pieces can move. The thing that kept causing bad drops was I&amp;rsquo;d have a piece I either wanted to slam all the way to the left or the right but it wouldn&amp;rsquo;t make it due to snagging on a hole. Even an I-piece that&amp;rsquo;s going to get you that sweet sweet Tetris might will get stuck in a hole if there&amp;rsquo;s one next to the edge. Now you&amp;rsquo;re in a real pickle. Developing some instinct on whether or not a piece will make it is what helped me, or IRS-ing it so that it won&amp;rsquo;t get stuck and will hit your stack on a flatter side so you can move it across holes. This is again why you want a smooth stack. You basically don&amp;rsquo;t want any local minimums in the way of your global minimum. Yea, I said it.&lt;/li&gt;
&lt;li&gt;If you can&amp;rsquo;t get your stack smooth, make it tall in the middle so pieces can smack into that and then you can move them downhill before they lock into position.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*****&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0123456789&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You want that I-piece to land in column 9. So you thought this was gonna happen and you&amp;rsquo;d get a nice Tetris:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*****&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;&lt;span class="nx"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;&lt;span class="nx"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;&lt;span class="nx"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;&lt;span class="nx"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0123456789&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But at 20G, you can&amp;rsquo;t do that. It&amp;rsquo;ll snag on column 7. This is what&amp;rsquo;ll happen:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*****&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;X&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;*********&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0123456789&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now you&amp;rsquo;re in a real pickle since the hole you made for clearing lines in column 9 is blocked. You&amp;rsquo;re going to need to build up the middle of the stack to recover.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been playing TGM-Normal which took me about about 20 hours to clear (according to Steam playtime). Once you clear Normal mode (which means reach level 999) you get a credit roll where your stack gradually starts disappearing. I&amp;rsquo;ve managed to not top out during this pretty consistently, which I thought I&amp;rsquo;d never be able to do. TGM is famous for these credit rolls where your stack is invisible, and this is like easy mode of those.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m pretty happy with how I&amp;rsquo;ve progressed, and I&amp;rsquo;ve started playing the next mode, which I forget the name of off the top of my head, but you start in 20G and the lock delay is pretty short. In order to progress to the next 100 level (so 99 -&amp;gt; 100, or 199 -&amp;gt; 200) you have to clear a Tetris. Which at this speed is tough, otherwise you just sit at level 99 and don&amp;rsquo;t progress. I&amp;rsquo;ve gotten into a 300s a few times and I&amp;rsquo;m going to keep at it.&lt;/p&gt;
&lt;h2 id="some-personal-history-with-the-tgm-series"&gt;Some personal history with the TGM series&lt;/h2&gt;
&lt;p&gt;If you look at my &lt;a href="https://pdp.dev/pcb"&gt;arcade PCB list&lt;/a&gt; you&amp;rsquo;ll notice that I own a Tetris the Grand Master 3 arcade board. I bought this off KevinDDR, who was deep into trying to get a TGM3 Classic Grand Master (GM) ranking. He got close, but then got burned out and wanted to sell his board. I bought it off him, not thinking that I&amp;rsquo;d become crazy good but I liked Tetris and this was when I was buying arcade boards like crazy so what the heck. I never got very good, but then he got back into the series and wanted to go again for the GM in TGM3. So I let him borrow the game for a long long time, and in that time he showcased the game at ADGQ 2015, grinded real hard, and finally got the GM. Goddamn that was 10 years ago?! He was the 6th person in the world to do that and first person outside of Japan. I have that board still, it&amp;rsquo;s got his GM on it and all his scores and records. I should find a way to dump that hard drive (TGM3 arcade hardware is basically a PC) and preserve it. So yea, &amp;ldquo;my&amp;rdquo; arcade board what was used at AGDQ and what he got that GM on. It&amp;rsquo;ll always be his though. I lost touch with that guy, he moved to Japan and I had a kid. Maybe I should get back in touch with him&amp;hellip; I think he played TGM4 some.&lt;/p&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://tetris.wiki/List_of_Terror-Instinct_Grand_Masters"&gt;List of TGM3 Grand Masters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/qaMjbnvZMck?si=DZqIVCkr2_Q36JJW"&gt;KevinDDR at AGDQ 2015 blowing minds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://harddrop.com/"&gt;Hard Drop Tetris Community&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Pangolin</title><link>https://pdp.dev/posts/pangolin/</link><pubDate>Sat, 16 Aug 2025 11:12:17 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/pangolin/</guid><description>&lt;p&gt;For a long time, I&amp;rsquo;ve used VPN solutions like WireGuard and Tailscale to get into my home network when not at home. They work really well, but recently I&amp;rsquo;ve been using &lt;a href="https://github.com/fosrl/pangolin"&gt;Pangolin&lt;/a&gt; to easily access services I run at home from a web-browser.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a reverse proxy that also does authentication, so these sites running on my home network are protected with two-factor auth. It also handles getting SSL certs has handy plugins for geoblock to block traffic from another country (I&amp;rsquo;m in the US) and crowdsec for automatically blocking IPs that do suspicious things. You can also send timelimited links to friends if there&amp;rsquo;s something you want share with them.&lt;/p&gt;
&lt;p&gt;Things that I expose from my home network:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Navidrome&lt;/strong&gt; - My main motivation here was that my work laptop (rightfully) doesn&amp;rsquo;t let me use my own VPN, so if I want to listen to my music using Navidrome at work I need a different solution. I&amp;rsquo;ve been buying mp3s to better support artists so getting access to my own server from anywhere is real handy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open WebUI&lt;/strong&gt; - I&amp;rsquo;ve been playing around with running small LLM models on my gaming PC (RTX 4070) and being able to access them easily from my phone/laptop is handy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zellij Web&lt;/strong&gt; - Zellij is a terminal multiplexer (like &lt;code&gt;screen&lt;/code&gt; and &lt;code&gt;tmux&lt;/code&gt;) that recently added the ability to share terminals over the web. This makes getting a terminal on my home Mac Mini easy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jellyfin&lt;/strong&gt; - Share movies and shows with people, nice for watch parties. My wife digitized a bunch of old home movies and this made it easy to share those with folks. I&amp;rsquo;m not telling her grandpa to use Tailscale!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;code-server&lt;/strong&gt; - This is basically self-hosted VSCode running on my gaming PC, which makes doing development from my iPad a breeze. Plus my gaming PC is pretty fast, so easy on battery life. I&amp;rsquo;m actually writing this blog post using this using the FrontMatter plugin which integrates nice with Hugo and gives live preview.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It&amp;rsquo;s a great piece of software!&lt;/p&gt;</description></item><item><title>411VM</title><link>https://pdp.dev/posts/411vm/</link><pubDate>Sat, 26 Jul 2025 15:28:44 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/411vm/</guid><description>&lt;p&gt;Usually in my life &amp;ldquo;VM&amp;rdquo; means &amp;ldquo;Virtual Machine&amp;rdquo; but not this time. 411VM was a skateboarding &amp;ldquo;video magazine&amp;rdquo; that ran from 1993 to 2005. Some wonderful and amazing person put all the &amp;ldquo;issues&amp;rdquo; on &lt;a href="https://archive.org/details/411-vm-best-of-411-vol.-7-2001"&gt;archive.org in a playlist that is available here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Skate videos are what I was under the influence of in the 90s. I owned 411VM Volume 11 (1995) on VHS and I watched that thing over and over and over. I&amp;rsquo;d watch it before I went skating and get all hyped up and then try tricks and hurt myself.&lt;/p&gt;
&lt;p&gt;The pinnacle of my skateboarding ability was doing frontside half cab kickflips. We built some grind rails with PVC pipe and those were fun. The first one we built my dad helped, and when it was done I tried to boardslide it but the new PVC was so slippery I just completely ate shit. My dad stood there as I was on the ground and sarcastically said &amp;ldquo;Welp, I&amp;rsquo;m really glad we built this.&amp;rdquo; It just took some getting used to man!&lt;/p&gt;
&lt;p&gt;I stopped skating around the time I started college, but it was fun while it lasted. Nowadays I&amp;rsquo;m old and creaky and any skateboarding I do is in video games.&lt;/p&gt;</description></item><item><title>Cleaning up old items in Things</title><link>https://pdp.dev/posts/clean-up-things/</link><pubDate>Fri, 11 Apr 2025 10:18:48 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/clean-up-things/</guid><description>&lt;p&gt;In the past I wrote about having &lt;a href="https://pdp.dev/posts/leaky-todo/"&gt;a leaky TODO list&lt;/a&gt; and how I implemented that in org-mode. I moved to using &lt;a href="https://culturedcode.com/things/"&gt;Things&lt;/a&gt; for tracking my TODO list and wanted to be able to keep cleaning up things that had been sitting in my list for too long.&lt;/p&gt;
&lt;p&gt;Thankfully Things is scriptable using AppleScript, which is confusing as shit and doesn&amp;rsquo;t have great documentation but I was able to get it working. Here&amp;rsquo;s the script:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;things&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;com.culturedcode.ThingsMac&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;todos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;things&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toDos&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;todo&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;notes&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;notes&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;tags&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tagNames&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;creationDate&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;creationDate&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;dueDate&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dueDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dueDate&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;toISOString&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;activationDate&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;activationDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;activationDate&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;toISOString&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;originalItem&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Clean up things more than 7 days old
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;targetDate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;setDate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;getDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;expired&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;todos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;open&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;project&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;activationDate&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;creationDate&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;targetDate&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;expired&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// console.log(&amp;#34;Archiving: &amp;#34; + t.name);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;originalItem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;completed&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;})()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will only act against your inbox folder for things that don&amp;rsquo;t have a project or due date. Items in folders won&amp;rsquo;t get touched. Put this in a &lt;code&gt;.jxa&lt;/code&gt; file, like &lt;code&gt;things-cleanup.jxa&lt;/code&gt; and then you can run it like so from the terminal:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;osascript -l JavaScript things-cleanup.jxa
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I run this every morning as part of a larger script that starts my workday. It does this, pulls stuff from Git, gets my temporary creds, stuff like that.&lt;/p&gt;</description></item><item><title>Kool Keith - 98 Year Old Refrigerator</title><link>https://pdp.dev/posts/kool-keith-refrigerator/</link><pubDate>Sun, 23 Mar 2025 11:50:42 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/kool-keith-refrigerator/</guid><description>&lt;p&gt;Kool Keith is a genius and &lt;a href="https://www.youtube.com/watch?v=66OQ-GPYfCE"&gt;here he talks about buying boring food so that your friends don&amp;rsquo;t eat it all&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I like seltzer water&amp;hellip; I mean I really don&amp;rsquo;t like it myself, but I like it, because people don&amp;rsquo;t like it.&lt;/p&gt;
&lt;p&gt;-Kool Keith&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My favorite Kool Keith album is &lt;a href="https://en.wikipedia.org/wiki/First_Come,_First_Served"&gt;Dr. Dooom - First Come First Served&lt;/a&gt; because everything about it is so absurd. If people can make gangsta rap albums where the stories are obviously not real, why not go completely over the top and be a cannibalistic serial killer who pushes body parts in shopping carts?&lt;/p&gt;
&lt;p&gt;I bought that album on vinyl when it was new in 1999, recently there was a &lt;a href="https://www.turntablelab.com/products/dr-dooom-first-come-first-served-25th-anniversary-colored-vinyl-vinyl-2lp"&gt;25th anniversary reissue&lt;/a&gt; that came out and it made me feel so old. Also, $70?! Get outta here.&lt;/p&gt;</description></item><item><title>No More Emacs</title><link>https://pdp.dev/posts/no-more-emacs/</link><pubDate>Fri, 21 Mar 2025 20:21:35 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/no-more-emacs/</guid><description>&lt;p&gt;I&amp;rsquo;ve been an Emacs user since I was in college, which was a long time ago and happened on Sun SPARC machines that had keyboards with &lt;code&gt;Ctrl&lt;/code&gt; in the correct spot. It&amp;rsquo;s just what I learned first and it stuck.&lt;/p&gt;
&lt;p&gt;I primarily use VSCode for writing code these days, because that&amp;rsquo;s what most folks use, and it&amp;rsquo;s pretty good. Emacs has mostly been used for Org-Mode for TODOs, Org-Roam for note taking, Magit for Git stuff, and writing little scripts.&lt;/p&gt;
&lt;p&gt;I decided to try and get off it. Why? I don&amp;rsquo;t know, just try something new. Turns out there are other tools that are good too! It&amp;rsquo;s been a few months and I don&amp;rsquo;t use Emacs anymore. Is my life better? No! Is my life worse? No! It&amp;rsquo;s just different. My daughter still loves me.&lt;/p&gt;
&lt;p&gt;Here are the tools that I&amp;rsquo;m using now for the things I used to use Emacs for.&lt;/p&gt;
&lt;h2 id="helix"&gt;Helix&lt;/h2&gt;
&lt;p&gt;For editing random files, Markdown, this blog, scripts, etc I&amp;rsquo;ve been using Helix. Why? Mostly because it&amp;rsquo;s insanely fast and the configuration tweaks I had to apply are minimal. My Emacs configuration was decades (literally) of cruft and customizations and sat on top of Doom Emacs, and it was big, it broke a lot when updating shit, and made Emacs slow to start. My Helix config is really short because it has pretty sane defaults, integrates really well with LSP, and doesn&amp;rsquo;t try and be all things like Emacs.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/wnka/piwonka-flakes/blob/main/modules/home-manager/files/helix/config.toml"&gt;This&lt;/a&gt; is the entirety of my config. Real simple!&lt;/p&gt;
&lt;h2 id="lazygit"&gt;LazyGit&lt;/h2&gt;
&lt;p&gt;Instead of Magit for Git stuff I&amp;rsquo;m now using LazyGit and have found it to be good enough for my workflows. It&amp;rsquo;s super fast, and while yes it&amp;rsquo;s not integrated into the editor, I can easily &lt;code&gt;Ctrl-Z&lt;/code&gt; my way out of Helix and do what I want, then &lt;code&gt;fg&lt;/code&gt; back into Helix. No need to make Helix be this captive environment for everything.&lt;/p&gt;
&lt;p&gt;Custom config: None!&lt;/p&gt;
&lt;h2 id="obsidian"&gt;Obsidian&lt;/h2&gt;
&lt;p&gt;I use this instead of Org-Roam and find it to work really well. Lots of nice plugins for doing things like Excalidraw diagrams and it&amp;rsquo;s easy to add pictures/screenshots to your notes which I like. I do like Org-Mode syntax better than Markdown, but Markdown is everywhere and I already have to know it (i.e. I&amp;rsquo;m writing it now for this blog) so it&amp;rsquo;s not a big deal. I really only need headings, code blocks, and links.&lt;/p&gt;
&lt;h2 id="things"&gt;Things&lt;/h2&gt;
&lt;p&gt;For TODOs I use the Things app, which lets me capture stuff on my iPhone and what not. I wrote in the past the big thing I loved about Org-Mode was that I could script cleaning up stale items, but I found a way to do that on Things. I&amp;rsquo;ll share that in another post.&lt;/p&gt;
&lt;h2 id="in-closing"&gt;In Closing&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s fun to learn some new tools and to teach this old dog some new tricks. Maybe I&amp;rsquo;ll move back to Emacs someday, but I think the biggest thing I like about these more modern tools is that they have reasonable defaults and so my configs are really minimal, which makes them really portable across Linux, Mac, and Windows/WSL. I&amp;rsquo;m writing this sitting on my couch on my iPad SSH&amp;rsquo;d into my Windows/WSL box running Helix. It just works.&lt;/p&gt;
&lt;p&gt;But as always, use what works for you and what you like!&lt;/p&gt;</description></item><item><title>Lord Finesse - The SP 1200 Project: Sounds &amp; Frequencies in Technicolor</title><link>https://pdp.dev/posts/lord-finesse/</link><pubDate>Tue, 11 Mar 2025 19:01:26 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/lord-finesse/</guid><description>&lt;p&gt;There&amp;rsquo;s a new &lt;a href="https://en.wikipedia.org/wiki/Lord_Finesse"&gt;Lord Finesse&lt;/a&gt; album out: &lt;a href="https://lordfinesse.bandcamp.com/album/the-sp-1200-project-sounds-frequencies-in-technicolor"&gt;The SP 1200 Project: Sounds &amp;amp; Frequencies in Technicolor&lt;/a&gt;. It&amp;rsquo;s instrumental hip-hop and it&amp;rsquo;s real good. It&amp;rsquo;s the sequel to &lt;a href="https://lordfinesse.bandcamp.com/album/the-sp-1200-project-a-re-awakening"&gt;The SP 1200 Project: A Re-Awakening&lt;/a&gt; from 2015 which I really loved so when I saw this was out I bought it no questions asked. Yes, I buy digital music.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://en.wikipedia.org/wiki/E-mu_SP-1200"&gt;SP 1200&lt;/a&gt; is a drum machine that was used in a lot of 90&amp;rsquo;s hip-hop and has a unique sound due to it&amp;rsquo;s limitations. These albums pay homage to that machine and era.&lt;/p&gt;
&lt;p&gt;Lord Finesse is great, he&amp;rsquo;s been involved in so much good music dating all the way back to &lt;a href="https://en.wikipedia.org/wiki/Funky_Technician"&gt;Funky Technician&lt;/a&gt; in 1990. What a fella.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE March 21 2025:&lt;/strong&gt; &lt;a href="https://youtu.be/oQ_hw_sUBek?si=TswOQiiBsbQLg2tM"&gt;There was talk about the album&lt;/a&gt; which included a chat between Lord Finesse and Dave Rossum, one of the inventors of the SP-1200. This starts at around 51 mins in to the video and is really great. Lots of mutual respect and admiration between the two.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE March 22 2025:&lt;/strong&gt; I forgot to mention that every Saturday at 9am PST, Lord Finesse &lt;a href="https://twitch.tv/lordfinesseditc"&gt;live streams DJ sets on Twitch&lt;/a&gt;. They&amp;rsquo;re great and family friendly, at least I&amp;rsquo;ve found them to be while I&amp;rsquo;m enjoying them with my daughter.&lt;/p&gt;</description></item><item><title>Seattle Waterfront Bike Lanes</title><link>https://pdp.dev/posts/seattle-waterfront-bike-lanes/</link><pubDate>Sun, 09 Mar 2025 18:44:30 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/seattle-waterfront-bike-lanes/</guid><description>&lt;p&gt;Yesterday a friend and I biked down to check out the new bike lanes that opened on the Seattle Waterfront. They&amp;rsquo;re real nice and it&amp;rsquo;s great to have more bike infrastructure connecting different parts of the city.&lt;/p&gt;
&lt;p&gt;We hung out at Pier 62 for a little bit and had coffee, there was a ceremony at 11am and we could see the ribbon they were gonna cut but we didn&amp;rsquo;t stick around for that. Instead we biked north by the Sculpture Garden, through the railyard that runs between Queen Anne and Magnolia, across the Ballard Locks, then on the Burke Gilman trail back to my house.&lt;/p&gt;
&lt;p&gt;All in all it was 18.5 miles which is the longest bike ride I&amp;rsquo;ve done in a while. We weren&amp;rsquo;t planning on going this far, but we kept extending it since the weather was nice and we were feeling alright. It felt really good to get back on the bike (a non-e-bike that is).&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_5776_hu_575320829e5a4d35.jpeg" alt="Two dudes biking" width="768" height="576" /&gt;
&lt;figcaption class="center" &gt;My wife and daughter left at about the same time in the car to go get rainbow bagels and happened to catch up to us.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_4849_hu_7b7237989fbd803e.jpeg" alt="Me happy for more bike lanes" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;These new bike lanes are nice!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_5925_hu_abe69f883af8d2f9.jpeg" alt="Q waiting for coffee." width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;Q waiting for coffee. Pier 62 is really nice!&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Schooly D - PSK (What does it mean?)</title><link>https://pdp.dev/posts/schooly-d---psk-what-does-it-mean/</link><pubDate>Sat, 01 Mar 2025 18:37:33 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/schooly-d---psk-what-does-it-mean/</guid><description>&lt;p&gt;I was in a meeting at work the other day reading a document (it’s AWS, we have meetings where the first X minutes are spent in silence reading a doc) and the term “PSK” was used with no definition so my brain had to think about it for a second.&lt;/p&gt;
&lt;p&gt;The answer was “Pre Shared Key” which made sense it the context of the doc.&lt;/p&gt;
&lt;p&gt;But the other option in my brain was the classic &lt;a href="https://youtu.be/m1mn9m_1h5U?si=eNjEZ1dZgyvUjlDC"&gt;Schooly D song “P.S.K. (What does it mean?)”&lt;/a&gt;. That song rules and if you don’t know it you should. It’s also great for testing the bass capabilities of your audio system.&lt;/p&gt;</description></item><item><title>First Try Mushihimesama Original Mode 1cc</title><link>https://pdp.dev/posts/first-try-mushi-1cc/</link><pubDate>Mon, 24 Feb 2025 18:09:44 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/first-try-mushi-1cc/</guid><description>&lt;p&gt;Still got it.&lt;/p&gt;
&lt;p&gt;I haven&amp;rsquo;t touched my arcade cabs much recently, I&amp;rsquo;ve been a modern gamer and modern games are great!&lt;/p&gt;
&lt;p&gt;The new joystick hotness seems to be the &lt;a href="https://focusattack.com/sanwa-jlx-tpml-8yt-sk-adjustable-silent-leaf-microswitch-joystick/"&gt;&amp;ldquo;SANWA JLX-TPML-8YT-SK Adjustable Silent Leaf Microswitch Joystick&amp;rdquo;&lt;/a&gt; and I wanted to check it out, so I got one for the arcade stick I use with my PC and one for my vertical arcade cab I use for hardcore shmup action. I ordered some other parts like the larger actuators and different gate inserts and messed around with them. I didn&amp;rsquo;t know what these different restrictor gates did, but they&amp;rsquo;re like $3 so I ordered a few to see what the latest in joystick tech is. For shmups I like a &amp;ldquo;short throw&amp;rdquo;, meaning you don&amp;rsquo;t have to push the joystick far for it to register movement. I messed around a little but landed on the biggest actuator, the microswitches to their most sensitive, and the &lt;a href="https://focusattack.com/sanwa-gtn-r-square-mod-type-i-restrictor-gate-insert/"&gt;GTN-R Square Mod Type I&lt;/a&gt; restrictor gate. This sounds like some Import Tuner car guy stuff.&lt;/p&gt;
&lt;p&gt;I mounted the new joystick in the cabinet and tested it. Mushihimesama is what just happened to be in the cab so I start playing Original mode, the easiest mode&amp;hellip; and hey, this joystick feels really nice, the GTN-R restrictor gate has little bumps to help you not accidentally slip and hit diagonals. I dig it!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m messing around but I make it all the way to stage 4 with only 1 death, so then I start playing a little more seriously and BAM, I clear it on one credit (aka no continues). Pretty rad! I even had one life to spare&amp;hellip;&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/mushi-new-joystick_hu_10eb25e7ed8dbef3.jpeg" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;CONTINUE = 0&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This felt really good, it&amp;rsquo;s always such a rush to 1cc a game. I don&amp;rsquo;t know if it was the joystick, or playing on an arcade cab, or playing on an arcade monitor/CRT, or all of the above, but the game just felt super responsive and good. No input lag and navigating the bullet patterns felt awesome.&lt;/p&gt;
&lt;p&gt;My final score was 19,784,044 which isn&amp;rsquo;t great, I think &lt;a href="https://pdp.dev/posts/mushihimesama-1ccs-at-full-tilt/"&gt;this&lt;/a&gt; is my best at 29,313,539. The biggest contributor to your score is the number of lives you have left after you clear so to get the best score you need to beat the game without dying. Trying to do that sounds like no fun, so I think I&amp;rsquo;ll move on and play something else.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been slowly making my way through that new Indiana Jones game, it&amp;rsquo;s fun but more like how a movie is fun. With the dust blown off the cab, I played a quick game of &lt;a href="https://en.wikipedia.org/wiki/ESP_Ra.De."&gt;ESP Ra.De.&lt;/a&gt; using my &lt;a href="https://misteraddons.com/products/mistercade-v2-kit-mister-fpga-jamma-arcade-kit"&gt;MiSTercade&lt;/a&gt; and got to the last stage on 1 credit, which then proceeded to whoop up on me and it took me 4 credits to clear. I&amp;rsquo;ve never 1cc&amp;rsquo;d that game, so I&amp;rsquo;ll give it a shot next.&lt;/p&gt;</description></item><item><title>Frank Stokes</title><link>https://pdp.dev/posts/frank-stokes/</link><pubDate>Sat, 22 Feb 2025 23:03:22 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/frank-stokes/</guid><description>&lt;p&gt;Go listen to Frank Stokes. That’s all.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtube.com/playlist?list=PLfJndz0utgOMD5TMpdvilpP68ij0eDTHf&amp;amp;si=wQNKCTQnWEEgfk0h"&gt;YouTube playlist&lt;br&gt;
&lt;/a&gt;&lt;a href="https://music.apple.com/us/album/the-best-of-frank-stokes/73731767"&gt;Apple Music&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Speedy's E-Bike Rescue</title><link>https://pdp.dev/posts/speedys-e-bike-rescue/</link><pubDate>Sun, 05 Jan 2025 01:11:52 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/speedys-e-bike-rescue/</guid><description>&lt;p&gt;I joined &lt;a href="https://joinspeedys.com/"&gt;Speedy&amp;rsquo;s E-Bike Rescue&lt;/a&gt;, which is like AAA for e-bikes. If you break down or have issues in the Seattle area, they&amp;rsquo;ll come save you and take your bike to your favorite local bike shop. I cruise around a lot with our kiddo on our RadWagon (we recently passed 2,000 miles!) and getting a flat or having some issue would suck so I&amp;rsquo;m really glad this service exists and am happy to pay for it. The RadWagon is a real beast, it weighs about 100 pounds and changing a flat on it is not trivial since you have to deal with all the e-bike bits to get the wheel off.&lt;/p&gt;
&lt;p&gt;If I ever use it I&amp;rsquo;ll write about my experience. I learned about this service from &lt;a href="https://www.youtube.com/watch?v=jNV75P3QyB8"&gt;Best Side Cycling&lt;/a&gt;, a YouTube channel that&amp;rsquo;s a great resource for Seattle cyclists.&lt;/p&gt;
&lt;p&gt;Happy cycling!&lt;/p&gt;</description></item><item><title>Cho Ren Sha 68k v1.10</title><link>https://pdp.dev/posts/cho-ren-sha-1dot10/</link><pubDate>Fri, 03 Jan 2025 17:44:47 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/cho-ren-sha-1dot10/</guid><description>&lt;p&gt;Happy New Year! Surprise shmup release! &lt;a href="https://en.wikipedia.org/wiki/Cho_Ren_Sha_68K"&gt;Cho Ren Sha 68k&lt;/a&gt;, a game originally released in 1995 for the Sharp X68000 Computer, has been updated to version 1.10. 30th anniversary update?!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://yosshin4004.github.io/x68k/crs68k/official/index.html"&gt;It&amp;rsquo;s FREE and available here&lt;/a&gt; for both Windows and X68000.&lt;/p&gt;
&lt;p&gt;I took it for a spin and was able to reach stage 2-0 on my first attempt. I made it all the way to 1-6 without dying but then my run fell apart. Such a fun game! I&amp;rsquo;m not sure what all is different, but the graphics and backgrounds have been updated. The &lt;em&gt;fantastic&lt;/em&gt; music remains the same. &lt;a href="https://pdp.dev/posts/cho-ren-sha-1all/"&gt;I wrote more about the game when I cleared the first loop back in 2022.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Absolutely worth a download and a play!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_5763_hu_ec0b7b631b6a02a1.jpeg" alt="Score" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;Not bad for the first time playing in a long time!&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Devil Blade Reboot</title><link>https://pdp.dev/posts/devil-blade-reboot/</link><pubDate>Tue, 31 Dec 2024 19:05:12 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/devil-blade-reboot/</guid><description>&lt;p&gt;This game is really amazing, my favorite shmup released in 2024. I was able to 1cc Easy and Normal modes fairly easily since those modes give you a lot of resources, and bombing gives you a shield. I started working on Hard mode a little bit but it’s a pretty big jump in difficulty.&lt;/p&gt;
&lt;p&gt;The graphics are excellent, the scoring system is fun, and things explode in a very satisfying manner. A+ all day all the way.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://store.steampowered.com/app/2882440/DEVIL_BLADE_REBOOT/"&gt;Steam Store page. Buy it, play it!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Pretty Eight Machine</title><link>https://pdp.dev/posts/pretty-eight-machine/</link><pubDate>Mon, 30 Dec 2024 03:04:19 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/pretty-eight-machine/</guid><description>&lt;p&gt;&lt;a href="https://inversephase.bandcamp.com/album/pretty-eight-machine-se"&gt;This album remakes Pretty Hate Machine using 8-bit computers and consoles.&lt;/a&gt; “Head Like I/O”? That’s rad!&lt;/p&gt;
&lt;p&gt;Pretty Hate Machine was a little before my time. When I was a depressed teenager in high school I did listen to a lot of Downward Spiral though.&lt;/p&gt;</description></item><item><title>Rickey Henderson</title><link>https://pdp.dev/posts/rickey-henderson/</link><pubDate>Mon, 23 Dec 2024 03:48:31 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/rickey-henderson/</guid><description>&lt;p&gt;Rickey Henderson passed away a few days ago and it hit me hard. I&amp;rsquo;m not a big sports fan but as a kid growing up in Fremont, CA I was a huge Oakland A&amp;rsquo;s fan and I &lt;em&gt;totally idolized&lt;/em&gt; Rickey Henderson. I played one year of little league but even then I just had to have a green Mizuno batting glove just like Rickey. I can&amp;rsquo;t really tell you why I idolized him so much, sliding head first and stealing bases just seemed like the coolest thing ever and he just seemed like the coolest guy ever. He came back to the A&amp;rsquo;s in 1989 and helped get them to the &lt;a href="https://en.wikipedia.org/wiki/1989_World_Series"&gt;World Series that year&lt;/a&gt;. All us East Bay A&amp;rsquo;s fans were happy that they swept the Giants.&lt;/p&gt;
&lt;p&gt;The Dollop podcast did a two-part series on Rickey last year, &lt;a href="https://omny.fm/shows/the-dollop-with-dave-anthony-and-gareth-reynolds/574-rickey-henderson-part-one"&gt;Part One is here&lt;/a&gt; and &lt;a href="https://omny.fm/shows/the-dollop-with-dave-anthony-and-gareth-reynolds/575-rickey-henderson-part-two"&gt;Part Two is here&lt;/a&gt;. His story is really interesting and he&amp;rsquo;s definitely quite the character, but seemed like a good guy.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/rickey_hu_54d76fc27b451d8c.jpg" alt="Rickey stealing a base" width="768" height="512" /&gt;
&lt;figcaption class="center" &gt;Rickey Henderson and his batting gloves&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Game Streaming</title><link>https://pdp.dev/posts/moonlight-streaming/</link><pubDate>Sat, 21 Dec 2024 17:53:38 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/moonlight-streaming/</guid><description>&lt;p&gt;I&amp;rsquo;m sitting in a hotel in Grand Junction, CO using my iPad Pro to remotely play games on my gaming PC sitting my house in Seattle, WA and it works pretty damn well. I just played some &lt;a href="https://en.wikipedia.org/wiki/Mushihimesama_Futari"&gt;Mushihimesama Futari&lt;/a&gt;, which is a really hard shmup where any input lag is &lt;em&gt;very&lt;/em&gt; noticable. Was it noticable with this setup? Yes absolutely, but it was playable. I made it to the middle of stage 3 on Original mode while being incredibly rusty.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_5672_hu_1a8888c2c9979e6f.jpeg" alt="An iPad vertically oriented with a gamepad" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;The iPad is great for playing vertically oriented shmups!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;It&amp;rsquo;s pretty amazing stuff. I use it &lt;strong&gt;a lot&lt;/strong&gt; at home since we only have one TV and I can&amp;rsquo;t be playing super violent games like &lt;a href="https://pdp.dev/posts/doom-eternal/"&gt;Doom Eternal&lt;/a&gt; with my daughter around. I stream to my iPad and use a &lt;a href="https://www.amazon.com/PC-Multi-Platform-NS-TV-Android-Laptop/dp/B0D7ZRXBY4"&gt;nice bluetooth controller&lt;/a&gt; and AirPods Pro for sound. My PC is on a wired ethernet connection and my iPad is on WiFi and the lag is virtually unnoticable. At home I can stream at 120hz since my iPad Pro supports it! Right now though since I&amp;rsquo;m geographically far away at the moment I&amp;rsquo;m limiting myself to 1080p and 60hz.&lt;/p&gt;
&lt;p&gt;On the server I use the &lt;a href="https://github.com/ClassicOldSong/Apollo"&gt;Apollo&lt;/a&gt; fork of &lt;a href="https://app.lizardbyte.dev/Sunshine/?lng=en"&gt;Sunshine&lt;/a&gt; which has some nice add-ons like Virtual Display support. The Virtual Display makes handling unique client resolutions easy since connecting a client is like plugging in another monitor with that resolution and refresh rate. This helps with actually filling the iPad display edge-to-edge instead of trying to cram/scale the existing physical display and leaving borders. The client is &lt;a href="https://moonlight-stream.org/"&gt;Moonlight&lt;/a&gt; which is available for a bunch of platforms. I use it on iOS, macOS, and Steam Deck with great success. For getting into my home network I use &lt;a href="https://tailscale.com/"&gt;Tailscale&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s really handy for taking full-on big PC gaming on the go. The lag can be an issue, but not all games need zero lag. Relax and play some &lt;a href="https://store.steampowered.com/app/2198150/Tiny_Glade/"&gt;Tiny Glade!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;🤔 If you&amp;rsquo;re a shmup nerd, you might be thinking &amp;ldquo;wait a second, how is he playing Futari on PC!?!&amp;rdquo; The &lt;a href="https://github.com/xenia-canary/xenia-canary"&gt;Xenia XBox 360 emulator&lt;/a&gt; runs the game incredibly well! The slowdown is even pretty accurate! I own a legit copy that I imported when it came out in 2009. Wow, that&amp;rsquo;s 15 years ago&amp;hellip; still a favorite!&lt;/p&gt;</description></item><item><title>What’s this blog even for?</title><link>https://pdp.dev/posts/whats-this-blog-even-for/</link><pubDate>Sat, 21 Dec 2024 14:57:26 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/whats-this-blog-even-for/</guid><description>&lt;p&gt;Whatever I want it to be for!&lt;/p&gt;
&lt;p&gt;But more seriously, I want to write random stuff and tinker with web technologies. I’ve learned a lot about CSS and how folks deploy web apps by tinkering with this site. I’m someone who learns best by doing, so a lot of this site is that.&lt;/p&gt;
&lt;p&gt;Writing about things is a good way to focus my thoughts, so in 2025 I want to write more on here about technical topics and little projects I work on. I also want to just share stuff that I think is cool and fun.&lt;/p&gt;</description></item><item><title>MicroTimes archive</title><link>https://pdp.dev/posts/microtimes-archive/</link><pubDate>Fri, 20 Dec 2024 23:02:42 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/microtimes-archive/</guid><description>&lt;p&gt;Someone put a bunch of issues of &lt;a href="https://oldbytes.space/@PlayHistory/112995235116115586"&gt;MicroTimes on archive.org&lt;/a&gt; which is super cool. I used to get this free magazine when going to Fry’s Electronics in the SF Bay Area when I was a kid. Looking through an old issue brought back a lot of memories. We bought a 386DX-25 from Hi-Q in Sunnyvale in probably ‘89, years later I used to salivate over 486DX2-66 machines in all those ads…&lt;/p&gt;</description></item><item><title>Using TinaCMS to Post</title><link>https://pdp.dev/posts/using-tinacms-to-post/</link><pubDate>Fri, 20 Dec 2024 17:24:41 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/using-tinacms-to-post/</guid><description>&lt;p&gt;I use &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt; for this blog and I like it. It&amp;rsquo;s static and fast and simple. I want to post more but there&amp;rsquo;s friction since I need to check in and push some Markdown to GitHub, which is hard to do from a phone. I was looking at &lt;a href="https://cassidoo.co/"&gt;Cassidy Williams&amp;rsquo; blog&lt;/a&gt; and her &lt;a href="https://github.com/cassidoo/blahg"&gt;template&lt;/a&gt; which mentioned this thing called &lt;a href="https://tina.io/"&gt;TinaCMS&lt;/a&gt; that gives a nice web interface for writing posts and will handle the pushing to GitHub for you, all while keeping your site&amp;rsquo;s staticness. Cool! I&amp;rsquo;m in!&lt;/p&gt;
&lt;p&gt;BTW you should follow Cassidy Williams.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re currently in Grand Junction, Colorado for the holidays/my wife&amp;rsquo;s sister&amp;rsquo;s wedding, and last night it was my wife&amp;rsquo;s turn to get the kiddo down to bed. While she did that, I poked at getting Tina set up. It was pretty easy and the Tina site has good tutorials.&lt;/p&gt;
&lt;p&gt;The GitHub commit where I set all this up is &lt;a href="https://github.com/wnka/pdp80-blog/commit/d160d1d64563754bff01241063d57208f075bb44"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I use AWS Amplify for hosting and things were pretty straightforward on that side too. I had to update my build environment to be Amazon Linux 2023 (which is now the default, I was still using the ancient Amazon Linux 2) so that I could use a modern version of&amp;hellip; well anything, and then add Node.js 22 to my build packages in addition to Hugo. My build settings &lt;code&gt;amplify.yml&lt;/code&gt; became:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;frontend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;phases&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;preBuild&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;commands&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;npm ci&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;build&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;commands&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;npm run build&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;artifacts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;baseDirectory&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;public&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;files&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;**/*&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;paths&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;All I had to change was the &lt;code&gt;preBuild: commands:&lt;/code&gt; and &lt;code&gt;build: commands:&lt;/code&gt;, which used to just be &lt;code&gt;- hugo --minify&lt;/code&gt;. If you look in the &lt;code&gt;package.json&lt;/code&gt; in the linked GitHub commit, &lt;code&gt;npm run build&lt;/code&gt; now runs: &lt;code&gt;tinacms build &amp;amp;&amp;amp; hugo --minify&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I signed up for a free account on &lt;a href="https://app.tina.io/signin"&gt;TinaCloud&lt;/a&gt;, got the access tokens and stuff, then added the environment variables needed by &lt;code&gt;tina/config.ts&lt;/code&gt; to the Environment Variables on AWS Amplify.&lt;/p&gt;
&lt;p&gt;There were a few missteps, but overall it was easy!&lt;/p&gt;
&lt;p&gt;Now it&amp;rsquo;s all set up, I&amp;rsquo;m writing this post in Tina, and now I can write posts more easily. I&amp;rsquo;m wondering if I should migrate to Astro or something more &amp;ldquo;modern&amp;rdquo;, but that&amp;rsquo;s another task for another day.&lt;/p&gt;</description></item><item><title>Doom Eternal</title><link>https://pdp.dev/posts/doom-eternal/</link><pubDate>Sat, 07 Dec 2024 19:59:43 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/doom-eternal/</guid><description>&lt;p&gt;I recently beat Doom Eternal and have been making my way through the DLC and goddamn I love this game. It doesn&amp;rsquo;t give two shits about story but focuses on being a fun and challenging video game, kinda like shmups/arcade games. There are even 1ups!&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s hard but it&amp;rsquo;s fair and it does such a great job of giving you all the tools you need to get through the battles. If you&amp;rsquo;re low on health then glory kill some dudes. If you&amp;rsquo;re low on ammo then chainsaw something and neon ammo will fly out. If you want armor then use your flamethrower thing and the bad guys on fire will drop armor bits. These things make no sense in the real world, but we&amp;rsquo;re fighting demons here so why be tethered to game mechanics that are realistic. Of course chainsawing a demon in half gives you a ton of ammo, duh. There&amp;rsquo;s that one enemy where you have to wait until it&amp;rsquo;s eyes flash green to hurt it, but when you do it gets stunned and there are literal cartoon stars above it&amp;rsquo;s head and a silly sound effect. That enemy is a pain in the ass but when you defeat one it&amp;rsquo;s glorious.&lt;/p&gt;
&lt;p&gt;Too many games don&amp;rsquo;t have fun with their rules like this so you&amp;rsquo;re running around an abandoned town but there&amp;rsquo;s ample ammo laying around. Even in something like The Evil Within where you&amp;rsquo;re in some sort of fake dream world there aren&amp;rsquo;t fun rules, you&amp;rsquo;re still reloading your gun. Not in Doom Eternal! In Doom Eternal your double barrel shotgun has a hook that shoots out and pulls you towards enemies so you can punch them super hard when you get close, and if you have this one power up the hook causes them to catch fire so they spew armor bits when you deal damage. So satisfying.&lt;/p&gt;
&lt;p&gt;I watched the preview for the next Doom game, Doom: The Dark Ages and I&amp;rsquo;ll be buying it day one. The style seems a little weird but I&amp;rsquo;m sure that it will all combine into fun.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; This is one of my favorite stories from The Onion: &lt;a href="https://theonion.com/e3-organizers-cancel-convention-after-discovering-immer-1826771462/"&gt;E3 Organizers Cancel Convention After Discovering Immersive Power Of Literature&lt;/a&gt;&lt;/p&gt;</description></item><item><title>WSL2 and Nix Flakes</title><link>https://pdp.dev/posts/wsl-and-nix/</link><pubDate>Sat, 07 Dec 2024 16:58:28 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/wsl-and-nix/</guid><description>&lt;p&gt;I&amp;rsquo;ve been using Nix for a while now to manage my dotfiles and all that, which I wrote about &lt;a href="https://pdp.dev/posts/on-nix/"&gt;here previously&lt;/a&gt;. I continue to use it and I continue to like it.&lt;/p&gt;
&lt;p&gt;I recently got an M3 MacBook Air 15&amp;quot; and Nix made getting things set up really easy. I recently upgraded my development EC2 instance I use for work to a newer generation instance and, again, Nix made this real easy.&lt;/p&gt;
&lt;p&gt;At home I recently upgraded my gaming PC by transplanting a new motherboard and CPU into the existing case. I&amp;rsquo;m now running an Intel Core i9-14900K, up from an i7-8700K. It&amp;rsquo;s running great and I&amp;rsquo;m doing BIG GAMING on it.&lt;/p&gt;
&lt;p&gt;I was wondering what development on this fancy gaming PC would be like and was curious if my Nix setup would work. Well thanks to WSL2, it seriously &lt;strong&gt;just worked.&lt;/strong&gt; I was able to use my existing &lt;a href="https://github.com/wnka/piwonka-flakes/blob/26b258e226784b90605728bbe5070364fd3fbb52/flake.nix#L103"&gt;ec2 home-manager&lt;/a&gt; config with zero changes. Mind. Blown!&lt;/p&gt;
&lt;p&gt;Not surpisingly, this machine is pretty fast. I got SSH running on it and I can connect to it remotely, which definitely didn&amp;rsquo;t &amp;ldquo;just work&amp;rdquo; but wasn&amp;rsquo;t too bad.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not sure if I&amp;rsquo;ll actually use it, but it was pretty neat to get it working so easily.&lt;/p&gt;</description></item><item><title>Disneyland for Thanksgiving</title><link>https://pdp.dev/posts/disneyland-thanksgiving/</link><pubDate>Tue, 03 Dec 2024 18:41:51 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/disneyland-thanksgiving/</guid><description>&lt;p&gt;We spent Thanksgiving day at Disneyland and it was magical! We loved watching our daughter getting her mind blown over and over and seeing the joy on her face.&lt;/p&gt;
&lt;p&gt;We got to have a nice Thanksgiving meal of churros, cotton candy, and popcorn. There was a nice holiday parade and we got to see Elsa and Anna in person! Rides ridden:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Peter Pan&lt;/li&gt;
&lt;li&gt;Alice in Wonderland&lt;/li&gt;
&lt;li&gt;Jungle Cruise&lt;/li&gt;
&lt;li&gt;Chip and Dale Rollercoaster&lt;/li&gt;
&lt;li&gt;The Matterhorn&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We pressed our luck with the Matterhorn and it was a little scary for the kiddo. We didn&amp;rsquo;t know the beginning of the ride was pitch black which she didn&amp;rsquo;t like and the yeti with the red eyes scared her a little, but she liked splashing through the water at the end.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not sure this is a family tradition yet but we&amp;rsquo;ll definitely be going back!&lt;/p&gt;</description></item><item><title>AWS Lambda Turns 10</title><link>https://pdp.dev/posts/lambda-turns-10/</link><pubDate>Sat, 16 Nov 2024 09:56:36 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/lambda-turns-10/</guid><description>&lt;p&gt;AWS Lambda has turned 10 years old!&lt;/p&gt;
&lt;p&gt;There was a 10 year celebration livestream that I participated with a great panel of folks. It was a lot of fun and is &lt;a href="https://www.youtube.com/watch?v=AJaJk9I94Kk"&gt;available here on YouTube&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I joined Lambda in 2016 about 2 years after it launched and got to work on interesting things like migrating the compute platform onto &lt;a href="https://www.usenix.org/conference/nsdi20/presentation/agache"&gt;Firecracker&lt;/a&gt;, delivering a good customer experience around using the &lt;a href="https://www.usenix.org/conference/atc23/presentation/brooker"&gt;OCI Container Packaging format&lt;/a&gt;, and improving cold-start times with &lt;a href="https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html"&gt;SnapStart&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve always liked focusing on what I call &amp;ldquo;lifestyle problems&amp;rdquo;, meaning these are things that are always going to need improving and work. Customers are always going to want lower cold-start times and better availability. We as a business are always going to want to drive better efficiency and scale. These aren&amp;rsquo;t the only things I work on, but it&amp;rsquo;s what I enjoy the most because it causes you to deeply understand your systems.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m proud of the work I&amp;rsquo;ve done and the impact Lambda has had on cloud computing. My 8 years on Lambda have been the most satisfying of my career and I&amp;rsquo;m excited about the things we&amp;rsquo;re working on next!&lt;/p&gt;</description></item><item><title>Silent Hill 2 Remake</title><link>https://pdp.dev/posts/silent-hill-2/</link><pubDate>Sun, 03 Nov 2024 08:21:16 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/silent-hill-2/</guid><description>&lt;p&gt;I really liked this game and found it to be good and spooky. I beat it last night and got the &amp;ldquo;In Water&amp;rdquo; ending.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve never played a Silent Hill game, but I &lt;em&gt;have&lt;/em&gt; seen the two Silent Hill movies thanks to my love of goofy movies. Thankfully those movies didn&amp;rsquo;t give the plot of the game away.&lt;/p&gt;
&lt;p&gt;I loved the atmosphere and the simplicity of the action. Comparisons in my head to the Resident Evil games and their modern remakes, and &lt;a href="https://pdp.dev/posts/evil-within-2"&gt;Evil Within 2&lt;/a&gt; is included in that bucket, is inevitable. They are just different games though, SH2 being much more puzzle focused and having a more interesting story. The RE remakes are basically action games with jump scares, which I dig and those games do that really well. In SH2 there&amp;rsquo;s no &amp;ldquo;use these coins to buy yourself more health capacity&amp;rdquo; or &amp;ldquo;spend this resource to make it so your gun reloads faster&amp;rdquo; which I liked. There are 3 guns and they never change, you find ammo and don&amp;rsquo;t need to craft it, and there aren&amp;rsquo;t that many enemy types. It&amp;rsquo;s more about exploring spooky environments and solving puzzles. And when I say &amp;ldquo;solving puzzles&amp;rdquo; it&amp;rsquo;s mostly of the variety of &amp;ldquo;I found this object but it&amp;rsquo;s missing pieces, I gotta find those pieces and then arrange them in the right way, then a door opens and there&amp;rsquo;s a key inside, now I can go somewhere new.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I really liked how the main character doesn&amp;rsquo;t really react to the weirdness around him, he treats it as normal mostly and when weird things happen there&amp;rsquo;s no dialog telling you that it&amp;rsquo;s weird. James doesn&amp;rsquo;t go &amp;ldquo;holy shit! what the fuck is that?!&amp;rdquo; When you meet Pyramid Head for the first time, he&amp;rsquo;s just standing on the other side of some bars bathed in red light. There&amp;rsquo;s no cutscene, there&amp;rsquo;s no reaction from James, you just get to see it and be creeped out by it. Compare that to &lt;a href="https://pdp.dev/posts/until-down"&gt;Until Dawn&lt;/a&gt; where characters I didn&amp;rsquo;t like are basically narrating what&amp;rsquo;s happening and freaking out. I got really annoyed by that in Until Dawn, and I didn&amp;rsquo;t really realize that until playing this and seeing the contrast. Until Dawn is basically listening to music with a narrator telling you that was a sweet drum solo. Let me have my own feelings dammit!&lt;/p&gt;
&lt;p&gt;The atmosphere, environments, and &amp;ldquo;music&amp;rdquo; are amazing. I put &amp;ldquo;music&amp;rdquo; in quotes because it&amp;rsquo;s very ambient, not pulse pounding action stuff. Jump scares are fairly rare because of the radio mechanic that tells you weirdos are near.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m curious how it compares to the original, but I&amp;rsquo;ll probably just go watch some YouTube videos and get an idea. Maybe I&amp;rsquo;ll play another game in the series&amp;hellip; although honestly I&amp;rsquo;m going to guess they&amp;rsquo;re remake more and I&amp;rsquo;ll just play those.&lt;/p&gt;
&lt;p&gt;So do I like it more/less than RE? Who cares, they&amp;rsquo;re different games trying to do different things. I like both. In RE it&amp;rsquo;s super satisfying to shoot a rocket launcher into a cluster of zombies or whatever. They&amp;rsquo;re both great.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SPOILERS AHEAD&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My one beef with the game, which I have to say got me audibly irritated, is that after the big plot reveal that James murdered Mary they should have just ended the game. What annoyed me is that after that you&amp;rsquo;re walking around, there&amp;rsquo;s some voice over and some things unfolding, but then you come across &lt;strong&gt;some ammo&lt;/strong&gt; or &lt;strong&gt;a health item&lt;/strong&gt; which totally telegraphs that there&amp;rsquo;s going to be more action. &lt;strong&gt;WHY?!?!?!?&lt;/strong&gt; You have this emotionally powerful moment and then you walk around and start finding ammo. Just end it! But noooo, this is a video game and you need to have a final battle with a big guts monster. Even worse they could have avoided telegraphing those battles by not having random ammo laying around because in those battles there are tons of item drops in the room! ARRRRGHHHH!&lt;/p&gt;
&lt;p&gt;Despite this, or even because of this, I really liked the game. I don&amp;rsquo;t usually get this kind of emotional reaction about &lt;em&gt;the plot of a video game&lt;/em&gt; which to me is a sign the game did it&amp;rsquo;s job.&lt;/p&gt;</description></item><item><title>Scared by a Video Game: Dino Eggs</title><link>https://pdp.dev/posts/scared-by-video-game/</link><pubDate>Wed, 30 Oct 2024 18:14:30 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/scared-by-video-game/</guid><description>&lt;p&gt;In honor of Halloween and spooky things, I was thinking about the first time I was scared by a video game. This would have been &lt;a href="https://www.lemon64.com/review/dino-eggs/965"&gt;Dino Eggs on the Commodore 64.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DINO MOM COMING&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When the Dino mom came to protect her eggs, a giant leg would come out of the sky and try to step on you. If it crushed you, a loud crazy sound effect played and your dead body laid there smoking. I don&amp;rsquo;t know why it was smoking, or whatever those wavy lines were supposed to represent, but that terrified me the most. Well that and the idea of a giant leg coming out of the sky and crushing you.&lt;/p&gt;
&lt;p&gt;I got to the point where I couldn&amp;rsquo;t play it, and if someone else was playing it I couldn&amp;rsquo;t watch.&lt;/p&gt;
&lt;video autoplay loop muted playsinline width="320" &gt;
&lt;source src="https://pdp.dev/videos/dinoeggs.mp4" type="video/mp4"&gt;
&lt;p&gt;Your browser doesn't support this embedded video.&lt;/p&gt;
&lt;/video&gt;
&lt;p&gt;Happy Halloween!&lt;/p&gt;</description></item><item><title>Searing Back Pain Land</title><link>https://pdp.dev/posts/searing-back-pain-land/</link><pubDate>Tue, 29 Oct 2024 19:05:49 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/searing-back-pain-land/</guid><description>&lt;p&gt;I’ve dealt with lower back pain for probably 15 years. It sucks! I’m recovering from of the worst flare up I’ve ever had, which landed me in the ER unable to move. If I tried to lift my heel off the bed I would get insane pain as my back would completely clench up and spasm. They gave me a bunch of drugs but nothing really helped until they gave me an IV drip of Valium. That caused my back to stop spasming and I was able to slowly walk out of there.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=4qOeuzeNfQ8"&gt;Here’s a nice song about Valium&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I’m now taking it easy at home and balancing between lying down to rest and “ambulating.” I wish there was a cool story behind what started this but there isn’t. It just kinda started which is the crappiest part. I’m doing PT and getting back on my feet, essentially I have a weak core and glutes (aka weak gut and weak butt) which causes my back to get overloaded.&lt;/p&gt;
&lt;p&gt;It’s pretty miserable and depressing to get into such a state. I gotta get my shit together on this one.&lt;/p&gt;</description></item><item><title>The Plucky Squire</title><link>https://pdp.dev/posts/plucky-squire/</link><pubDate>Sun, 13 Oct 2024 12:12:36 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/plucky-squire/</guid><description>&lt;p&gt;10 out of 10! This game is amazing!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://thepluckysquire.com"&gt;Get it here!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I played this with my daughter (~5) and she loved it, I did all the playing but I read all the dialog to her and asked for her help with the puzzles. I&amp;rsquo;ve been trying to play games a little more with her and this was a really wonderful choice.&lt;/p&gt;
&lt;p&gt;We read a lot of books, so the format of the story being part of a book was really cute and well executed. When you learn new abilities you get taken to a training area to help you learn the ropes which was great for my daughter, she could practice over and over.&lt;/p&gt;
&lt;p&gt;It was just the right length and mixed up the gameplay elements enough to keep it interesting, our favorite part was where you had to sneak past the guards as the mouse Pip and use rhythm to time when to move. My daughter is really into spy stuff and being sneaky so this was great. In fact, she told me the other day that &lt;em&gt;she is a spy&lt;/em&gt; and so is our cat Tilly. Cool!&lt;/p&gt;
&lt;p&gt;This game was very similar to a 2D Zelda game, so the next thing we&amp;rsquo;re going to play together is the new 2D Zelda game &lt;a href="https://www.nintendo.com/us/store/products/the-legend-of-zelda-echoes-of-wisdom-switch/"&gt;Legend of Zelda: Echoes of Wisdom&lt;/a&gt;. I&amp;rsquo;m really glad they made a Zelda game where you actually play &lt;em&gt;as Zelda&lt;/em&gt; and go on your own epic adventure. We started playing it last night and she&amp;rsquo;s already understanding the puzzles. I&amp;rsquo;m guessing that game is longer and it&amp;rsquo;ll take us some more time, hopefully it&amp;rsquo;ll hold her interest.&lt;/p&gt;</description></item><item><title>Until Dawn</title><link>https://pdp.dev/posts/until-down/</link><pubDate>Sun, 06 Oct 2024 19:19:32 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/until-down/</guid><description>&lt;p&gt;Do you like holding up on your controller for extended periods of time?&lt;/p&gt;
&lt;p&gt;This game is slow, you walk slow, things happen slowly, and the characters are mentally slow. It&amp;rsquo;s a horror movie where you help the participants make bad decisions, so my main goal was to make them all die. Why would you watch a horror movie if no one dies?&lt;/p&gt;
&lt;p&gt;My favorite part was the doctor/psychiatrist guy played by &lt;a href="https://en.wikipedia.org/wiki/Peter_Stormare"&gt;Peter Stormare&lt;/a&gt;, you know him from the Coen Brothers movies like Fargo where he puts Steve Bucemi in a wood chipper or The Big Lebowski where he shouts &amp;ldquo;&lt;strong&gt;WE CUT OFF YOUR JOHNSON!&lt;/strong&gt;&amp;rdquo; in Jeff Bridges&amp;rsquo; face. The scenes with him where he&amp;rsquo;s interviewing you were neat, but it felt like that time on the Simpsons when the kids are taking a test about their job interests and the questions are:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I prefer the smell of:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Gasoline&lt;/li&gt;
&lt;li&gt;French fries&lt;/li&gt;
&lt;li&gt;Bank customers&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;I really made sure to tell the good Doctor that I&amp;rsquo;m afraid of crows.&lt;/p&gt;
&lt;p&gt;So yea, the characters are cringy and all crazy stereotypes. Over time, I had to really stop thinking that I was playing a game and then I started enjoying it a little bit more. Basically you walk forward, there&amp;rsquo;s a jump scare, and then when you have to actually do something it turns into Dragon&amp;rsquo;s Lair where you do quick time events.&lt;/p&gt;
&lt;p&gt;Speaking of Dragon&amp;rsquo;s Lair, I&amp;rsquo;ve been borrowing the Amiga version from an old neighbor for 35 years. The disks are in my basement. We&amp;rsquo;re still friends and I asked him if he wanted them back and he laughed and said I could continue to hang onto them.&lt;/p&gt;
&lt;p&gt;Back to Until Dawn. I beat it and it didn&amp;rsquo;t take too long, and I saved way more people than I was anticipating. I think only Ashley, Jessica, and Sam died, and Sam only died in the last scene when I couldn&amp;rsquo;t stay still enough. I wouldn&amp;rsquo;t say I liked it, it&amp;rsquo;s barely a game. I looked at some videos online to see if it was worth replaying again, and there are a different endings and stuff but it turns out that most of your decisions don&amp;rsquo;t really matter. All that talk of me fearing crows didn&amp;rsquo;t result in any crow scares. Also if you fail the quick time events it mostly doesn&amp;rsquo;t matter. So that isn&amp;rsquo;t very satisfying. Mike loses some fingers if you fall for a trap but it doesn&amp;rsquo;t matter. There&amp;rsquo;s no like &amp;ldquo;oh I could climb out of this if only I had all my fingers!&amp;rdquo;&lt;/p&gt;
&lt;p&gt;It would be interesting if at the end of the game they looked at your decisions and told you something about yourself, like &amp;ldquo;you&amp;rsquo;re a wuss&amp;rdquo; or &amp;ldquo;interesting&amp;hellip; only women died in your playthough, an alpha male wouldn&amp;rsquo;t have let that happen&amp;rdquo; or anything.&lt;/p&gt;
&lt;p&gt;So not for me and I won&amp;rsquo;t play through it again. Up next: Silent Hill 2 Remake!&lt;/p&gt;</description></item><item><title>Cop Movies</title><link>https://pdp.dev/posts/cop-movies/</link><pubDate>Sun, 06 Oct 2024 18:08:21 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/cop-movies/</guid><description>&lt;p&gt;A quick review of some movies that either have &amp;lsquo;cop&amp;rsquo; in the title or where the main characters are cops.&lt;/p&gt;
&lt;h2 id="judge-dredd-1995"&gt;Judge Dredd (1995)&lt;/h2&gt;
&lt;p&gt;This movie is real bad and not enjoyable. Stallone is trying to act &lt;em&gt;so&lt;/em&gt; hard and does a lot of having a hair trigger temper where he&amp;rsquo;s calm one millisecond and the next millisecond he&amp;rsquo;s super pissed and screaming at someone. I call this &amp;ldquo;&lt;a href="https://en.wikipedia.org/wiki/Al_Pacino"&gt;Pacino&lt;/a&gt;-ing.&amp;rdquo; He tries. I had to rewind a few times just to confirm that &lt;em&gt;yes&lt;/em&gt; it appears that Sly is wearing blue contact lenses. So puzzling.&lt;/p&gt;
&lt;h2 id="demolition-man-1993"&gt;Demolition Man (1993)&lt;/h2&gt;
&lt;p&gt;This movie and Judge Dredd are very similar and I get them confused in my head all the time, but this movie is enjoyable. Don&amp;rsquo;t get me wrong, it&amp;rsquo;s not good, but it&amp;rsquo;s enjoyable. Wesley Snipes totally crushes it. Did you know that in some countries they changed dubbed over Taco Bell and made it Pizza Hut? &lt;a href="https://www.youtube.com/watch?v=dSOq-UEYda8"&gt;Please refer to this YouTube video&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Also, both Judge Dredd and Demolition Man have Rob Schneider in them, which I guess he and Stallone were buddies or something. He sucks in both movies, and he sucks in real life too since he&amp;rsquo;s now a anti-vax right-wing dingdong.&lt;/p&gt;
&lt;h2 id="dredd-2012"&gt;Dredd (2012)&lt;/h2&gt;
&lt;p&gt;This movie rules. It doesn&amp;rsquo;t fuck around, it&amp;rsquo;s right into the action and doesn&amp;rsquo;t stop. Everything is explained super economically, there&amp;rsquo;s no exposition goofiness where someone is like &amp;ldquo;Hey Dredd why&amp;rsquo;d you become a judge?&amp;rdquo; and then there&amp;rsquo;s a long flashback or explanation. There&amp;rsquo;s no time for that crap in this movie, everyone is too busy trying to stay alive and ducking for cover.&lt;/p&gt;
&lt;h2 id="violent-cop-1989"&gt;Violent Cop (1989)&lt;/h2&gt;
&lt;p&gt;Usually when a movie&amp;rsquo;s title is of the form &amp;lsquo;&amp;lt;Adjective&amp;gt; Cop&amp;rsquo; it&amp;rsquo;s bad, but this movie is really good. &lt;a href="https://en.wikipedia.org/wiki/Takeshi_Kitano"&gt;Takeshi Kitano&lt;/a&gt;, who you might recognize as Vic Romano from &lt;a href="https://en.wikipedia.org/wiki/Most_Extreme_Elimination_Challenge"&gt;MXC / Most Extreme Challenge&lt;/a&gt;, both acts in and directs this and he&amp;rsquo;s made a lot of great movies in Japan. The final showdown with the sliding door opening and letting more light in to reveal the bad guy is really cool.&lt;/p&gt;
&lt;h2 id="hana-bi--fireworks-1997"&gt;Hana-bi / Fireworks (1997)&lt;/h2&gt;
&lt;p&gt;Another Takeshi Kitano movie, I actually saw this movie in the theater when it came out (shoutout to &lt;a href="https://en.wikipedia.org/wiki/Mayan_Theater_(Denver)"&gt;The Mayan Theater in Denver&lt;/a&gt;). I was in high school, it definitely left an impression on me then and did again when I rewatched it recently. It&amp;rsquo;s very touching but also has moments of intense violence and comedy. A great movie.&lt;/p&gt;
&lt;h2 id="samurai-cop-1991"&gt;Samurai Cop (1991)&lt;/h2&gt;
&lt;p&gt;Ok back to goofiness. This movie is great, great in the sense that it&amp;rsquo;s low budget and awkward and corny but super fun. Very quotable. Look out for that wig!&lt;/p&gt;
&lt;h2 id="the-raid-2011--the-raid-2-2014"&gt;The Raid (2011) / The Raid 2 (2014)&lt;/h2&gt;
&lt;p&gt;These movies are both fantastic, just watch them and get your mind blown with amazing martial arts and hard boiled action.&lt;/p&gt;
&lt;h2 id="robocop-2-1990"&gt;RoboCop 2 (1990)&lt;/h2&gt;
&lt;p&gt;First RoboCop is a classic, this one isn&amp;rsquo;t too bad. I actually saw this in the theater when it came out. I would have been only 10 but having an older brother and older neighborhood friends helped me see a lot of R-rated movies in the theater. Not gonna lie, I freeze-framed when they were fighting in the arcade to try and recognize games. Data East made 2 RoboCop arcade games, so they were mostly Data East games like Midnight Resistance. There seemed to be a Dragon&amp;rsquo;s Lair cab at one point with the logo spray painted over. Oh right, the movie. The stop motion effects on RoboCop 2 (so funny that the machine in the movie is named like the movie) are really amazing. Having a little kid be evil and get murdered is pretty weird looking back on it. I definitely didn&amp;rsquo;t sit in the theater when I was 10 going &amp;ldquo;oh wow Hob is so cool!&amp;rdquo;&lt;/p&gt;
&lt;h2 id="cobra-1985"&gt;Cobra (1985)&lt;/h2&gt;
&lt;p&gt;Goddamn this movie is silly. Peak 80s Stallone though, not stupid 90s Stallone like the above. Still pretty stupid though&amp;hellip; this lady maybe sees the bad guy, and the bad guy doesn&amp;rsquo;t want her to tell on him, so he starts killing tons of people and going after the cops and makes things way worse. I like to imagine him being like &amp;ldquo;oh no oh no oh geez now we&amp;rsquo;ve got to try and cover this up too!&amp;rdquo; That random music video that shows up with all the robots is the &lt;em&gt;best&lt;/em&gt;. I also love that what the bad guy gang is trying to accomplish is never made clear. The movie just shows them meeting up and clanging axes together and acts like that is supposed to be enough. It was the 80s so it&amp;rsquo;s just some satanic panic shit probably.&lt;/p&gt;
&lt;h2 id="cure-1997"&gt;Cure (1997)&lt;/h2&gt;
&lt;p&gt;Great movie, hard to explain. If someone you know randomly draws a big X on the wall, bad times are coming.&lt;/p&gt;
&lt;h2 id="stone-cold-1991"&gt;Stone Cold (1991)&lt;/h2&gt;
&lt;p&gt;The opening scene of this movie is some bad guys robbing a grocery store. Roughly the 3rd shot of the movie is one of the bad guys unloading an assault rifle into a display of Ritz crackers and there are Ritz flying everywhere. They cut to the head bad guy and he&amp;rsquo;s screaming at the top of his lungs &amp;ldquo;I LOVE IT&amp;rdquo; and then they cut back to the other guy but now he&amp;rsquo;s unloading into a different display of chips. I don&amp;rsquo;t know if this is a continuity error or on purpose, he wants to spend all his ammo on snacks, but just like the head bad guy &lt;em&gt;I LOVE IT&lt;/em&gt;. This movie is so absurd but it&amp;rsquo;s so fun. Brian &amp;ldquo;The Boz&amp;rdquo; Bosworth is a cop who plays by his own rules, most notably the rule of having the most amazing mullet. I won&amp;rsquo;t waste your bandwidth, but if you want to see this mullet just image search &amp;ldquo;Stone Cold Boz Mullet&amp;rdquo; and buckle up.&lt;/p&gt;</description></item><item><title>The Evil Within 2</title><link>https://pdp.dev/posts/evil-within-2/</link><pubDate>Sun, 06 Oct 2024 15:03:07 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/evil-within-2/</guid><description>&lt;p&gt;I finished this game last night and liked it.&lt;/p&gt;
&lt;p&gt;I thought it did a good job of combining Resident Evil 4 style combat with stealth elements. I also liked that ammo was scarce which forced you to be stealthy and do sneaky kills.&lt;/p&gt;
&lt;p&gt;I couldn&amp;rsquo;t tell you what the plot is. I&amp;rsquo;m in a dream world where my daughter is really important for some reason, &amp;ldquo;the core&amp;rdquo; of the world.&lt;/p&gt;
&lt;p&gt;Why? Who knows, who cares. Video game plots have one direction: shoot your way forward. Big bad guy talking mad shit? Shoot &amp;rsquo;em bunch. Do they laugh at how bullets will do nothing to them? Shoot &amp;rsquo;em more, eventually it&amp;rsquo;ll start working. Does your wife seems evil with white stuff coming out of her eye sockets? Shoot her until she melts into a big puddle of goo. She&amp;rsquo;ll be ok and emerge from the puddle totally in tact and cured. Her sweater and earrings will be in tact even!&lt;/p&gt;
&lt;p&gt;My one complaint is that the end of the game got too easy. I beat the last boss on the first try.&lt;/p&gt;
&lt;p&gt;I thought the evil photographer bad guy was pretty neat, but after you defeat him the enemies become pretty standard.&lt;/p&gt;
&lt;p&gt;I might play it again on &amp;rsquo;new game plus.&amp;rsquo; There were lots of times when I cleared an area of bad guys only to find there were environmental things like exploding barrels I could have taken advantage of. That kind of stuff is always so satisfying.&lt;/p&gt;
&lt;p&gt;Up next: the Until Dawn remaster on PC. I never played the original. It&amp;rsquo;s October, so more spooky games. The Silent Hill 2 remake is coming out soon too, I&amp;rsquo;m gonna play that too. I haven&amp;rsquo;t played the original of that either.&lt;/p&gt;</description></item><item><title>The Octagon - Chuck Norris Whispers</title><link>https://pdp.dev/posts/the-octogon/</link><pubDate>Wed, 03 Jul 2024 14:18:42 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/the-octogon/</guid><description>&lt;p&gt;Have you ever seen &lt;a href="https://en.wikipedia.org/wiki/The_Octagon_(film)"&gt;&amp;ldquo;The Octagon&amp;rdquo; from 1980 starring Chuck Norris&lt;/a&gt;? You haven&amp;rsquo;t? Well, it&amp;rsquo;s a silly movie, but the silliest aspect of it is Chuck Norris whispering his inner thoughts about ninjas. His whispers have a real cool echo/reverb effect too. My favorite is when he whispers outloud &amp;ldquo;oh my god&amp;rdquo; and then whispers internally &amp;ldquo;ninja!&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=WM5lOk2JHI8"&gt;Thankfully someone compiled a video of just the whisper scenes of the movie. Enjoy!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Steve Albini &amp; Ian Mackaye Interview (2015)</title><link>https://pdp.dev/posts/steve-albini-ian-mackaye-interview/</link><pubDate>Fri, 10 May 2024 13:28:06 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/steve-albini-ian-mackaye-interview/</guid><description>&lt;p&gt;I&amp;rsquo;m real sad that Steve Albini has passed away. I love a lot of music that guy made or was somehow involved with.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=fPMNY3roo_Y"&gt;Here&amp;rsquo;s an interview&lt;/a&gt; with Steve and Ian MacKaye (from Minor Threat/Fugazi) that&amp;rsquo;s a great listen. I don&amp;rsquo;t even know who the interviewer is because they don&amp;rsquo;t really get involved and it&amp;rsquo;s basically just a conversation between Ian and Steve. Highly recommended.&lt;/p&gt;</description></item><item><title>King's Quest 1 Speedruns are wild!</title><link>https://pdp.dev/posts/kings-quest-1-speedruns/</link><pubDate>Wed, 01 May 2024 19:33:01 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/kings-quest-1-speedruns/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=KPlKetNSAtE"&gt;This video&lt;/a&gt; shows the progression of speedruns for &lt;a href="https://en.wikipedia.org/wiki/King%27s_Quest_I"&gt;King&amp;rsquo;s Quest 1&lt;/a&gt;. The amount of optimization and reverse engineering done to get this time down so low is impressive, things like figuring out how the hitboxes work and how you can walk across water.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s also a prequel to this new video, &lt;a href="https://www.youtube.com/watch?v=Sbb2GNDVqFc"&gt;King&amp;rsquo;s Quest Speedrunning World Record History&lt;/a&gt; if you want more lore.&lt;/p&gt;
&lt;p&gt;I never really played KQ1, the first one I ever played was KQ2. &lt;a href="https://www.youtube.com/watch?v=eFnpxPW6wAc"&gt;Speedruns for it&lt;/a&gt; are crazy too!&lt;/p&gt;</description></item><item><title>Geinoh Yamashirogumi</title><link>https://pdp.dev/posts/geinoh-yamashirogumi/</link><pubDate>Sat, 20 Apr 2024 19:49:50 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/geinoh-yamashirogumi/</guid><description>&lt;p&gt;Speaking of the Akira anime, the soundtrack to it is pretty amazing. The group that made it is &lt;a href="https://en.wikipedia.org/wiki/Geinoh_Yamashirogumi"&gt;Geinoh Yamashirogumi&lt;/a&gt;, and the album they made before the Akira soundtrack is &amp;lsquo;Ecophony Rinne&amp;rsquo; and it&amp;rsquo;s good. The &lt;a href="https://www.youtube.com/watch?v=Yvm2PUgP9_s"&gt;whole album&lt;/a&gt; is worth a listen, but the last track &lt;a href="https://www.youtube.com/watch?v=AnloUO6r9bs"&gt;&amp;lsquo;Reincarnation&amp;rsquo;&lt;/a&gt; is incredible.&lt;/p&gt;</description></item><item><title>Akira: Quick Action Recorder</title><link>https://pdp.dev/posts/akira-quick-action/</link><pubDate>Sat, 20 Apr 2024 19:27:56 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/akira-quick-action/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Uxt0TygJdwI"&gt;This is some rough animation footage from the Akira anime movie&lt;/a&gt;. From &lt;a href="https://exploringakira.wordpress.com/tag/katsuhiro-otomo/"&gt;here&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One of the most notable tools used in the production of the film was the use of the Quick Action Recorder. The quick action recorder allowed the animators to take pictures of individual frames (like a down-shooter) and replay the frames at 24fps (frames per second). This technique was extremely helpful in correction and timing for the film, giving the staff a way to observe their work before moving onto cells.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Even though it&amp;rsquo;s black and white and rough, it gives such a striking impression of how much &lt;em&gt;work&lt;/em&gt; went into the animation.&lt;/p&gt;</description></item><item><title>Super Mario 64’s Invisible Walls Explained Once and for All</title><link>https://pdp.dev/posts/mario64-invis-walls/</link><pubDate>Sun, 14 Apr 2024 11:50:50 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mario64-invis-walls/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=YsXCVsDFiXA"&gt;This video is fascinating&lt;/a&gt; and incredibly well made. It&amp;rsquo;s quite long at 3h45m, but a lot of it you can skip as it goes through every example of where invisible walls occur in the game.&lt;/p&gt;
&lt;p&gt;I &lt;em&gt;really&lt;/em&gt; enjoyed it! How these early 3D engines work and the kinds of tradeoffs they had to make is always interesting to me, all kinds of simplifications have to be made to maintain performance which then leads to side effects like these.&lt;/p&gt;</description></item><item><title>Brainfreeze</title><link>https://pdp.dev/posts/brainfreeze/</link><pubDate>Sun, 17 Mar 2024 12:46:01 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/brainfreeze/</guid><description>&lt;p&gt;I hadn&amp;rsquo;t listened to this live DJ set that DJ Shadow and Cut Chemist did in ~1999 in a long time, but it&amp;rsquo;s still real good. It&amp;rsquo;s all done using 45s (that&amp;rsquo;s 7-inch 45 RPM records) and has a nice mix of weirdo and funky tracks. &lt;a href="https://www.youtube.com/watch?v=m4-iYnZtJcI"&gt;Here it is on Youtube&lt;/a&gt;. What I &lt;em&gt;didn&amp;rsquo;t&lt;/em&gt; know was that there was a video version as well, which is from a different live performance and that&amp;rsquo;s &lt;a href="https://www.youtube.com/watch?v=2HlOo0wwGQo"&gt;also on Youtube&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I bought a CD of this when it was new at Wax Trax in Colorado and it was a CD-R bootleg. You could see the inkjet lines on the cover, and the CD had one of those inkjetted circular stickers on it. This is the old timey equivalent of the above Youtube links!&lt;/p&gt;</description></item><item><title>Folk Implosion - Nothing Gonna Stop</title><link>https://pdp.dev/posts/folk-implosion-flow/</link><pubDate>Fri, 08 Mar 2024 15:49:13 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/folk-implosion-flow/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=2NAjScz4yok"&gt;This song rules&lt;/a&gt;. From the Kids Soundtrack, 1995. There&amp;rsquo;s also an &lt;a href="https://www.youtube.com/watch?v=MaDSIZVHlxc"&gt;in-studio/live version from 2023 that also rules&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Peach Kelli Pop III</title><link>https://pdp.dev/posts/peach-kelli-pop-iii/</link><pubDate>Fri, 23 Feb 2024 19:46:32 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/peach-kelli-pop-iii/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=BgpHZopJh5g&amp;amp;list=OLAK5uy_nhtH0ZZuPcRx4gCgqV7zHXpckbwCWNhUc"&gt;I&amp;rsquo;ve been listening to this album a lot lately and I really like it&lt;/a&gt;. &amp;ldquo;Peach Kelli Pop&amp;rdquo; is the artist and the album is &amp;ldquo;III&amp;rdquo;. It&amp;rsquo;s poppy and punky and the songs are super catchy.&lt;/p&gt;
&lt;p&gt;Favorite songs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shampoo&lt;/li&gt;
&lt;li&gt;Plastic Love&lt;/li&gt;
&lt;li&gt;Bat Wing&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Cog Music Player</title><link>https://pdp.dev/posts/cog-music-player/</link><pubDate>Sun, 11 Feb 2024 15:35:46 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/cog-music-player/</guid><description>&lt;p&gt;&lt;a href="https://pdp.dev/posts/video-game-music/"&gt;I wrote before&lt;/a&gt; how I like to listen to video game music. I found a great app called &lt;a href="https://apps.apple.com/us/app/cog-kode54/id1630499622?mt=12"&gt;Cog in the Mac App Store&lt;/a&gt; that handles that really well.&lt;/p&gt;
&lt;p&gt;The main thing I didn&amp;rsquo;t like about the command-line tool I was using was that if I changed outputs (from headphones to speakers or whatever) it wouldn&amp;rsquo;t honor it and would keep playing through the output used when you started the app. Cog handles that perfectly.&lt;/p&gt;
&lt;p&gt;Plus it&amp;rsquo;s free!&lt;/p&gt;</description></item><item><title>The Origins of 'Hella'</title><link>https://pdp.dev/posts/origins-of-hella/</link><pubDate>Sat, 10 Feb 2024 17:57:09 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/origins-of-hella/</guid><description>&lt;p&gt;Hella. I hella use this word. &lt;a href="https://www.kqed.org/news/10649552/the-origins-of-hella"&gt;This article explains its origins&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Hella emerged somewhere in Northern California around the late 1970s, and although it spread to other places, it’s still associated with this region,” says Nunberg.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I grew up in the Bay Area in the 80s and early 90s and everyone said &amp;lsquo;hella&amp;rsquo; all the time. I thought everyone did. I moved to Colorado in the 8th grade and no one did. Kids were like &amp;lsquo;hella? what are you talking about?&amp;rsquo;&lt;/p&gt;
&lt;p&gt;This goes both ways though. In Colorado folks called soda &amp;lsquo;pop&amp;rsquo; which I thought was weird, and I had never before heard someone pronounce &amp;lsquo;wash&amp;rsquo; as &amp;lsquo;warsh.&amp;rsquo;&lt;/p&gt;
&lt;p&gt;Hella weird.&lt;/p&gt;</description></item><item><title>Burning Spear</title><link>https://pdp.dev/posts/burning-spear/</link><pubDate>Sat, 10 Feb 2024 15:57:00 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/burning-spear/</guid><description>&lt;p&gt;I looked at a list of Grammy Award 2024 winners and saw that Burning Spear was nominated for &amp;lsquo;Best Reggae Album&amp;rsquo; which blew my mind.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Burning Spear is still alive!?!?!?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Burning_Spear"&gt;Thanks to his Wikipedia page&lt;/a&gt; I&amp;rsquo;ve now learned that he&amp;rsquo;s 78 years old. I don&amp;rsquo;t know a ton of his music, but I have a bootleg/reissue of his first album which is &lt;em&gt;insanely good&lt;/em&gt;. That first album is from 1973 and he&amp;rsquo;s only 28! That voice is coming out of a 28 year old?! It sounds like he was 78 back in 1973, which if true would make him 129 in 2024. Hence my surprise.&lt;/p&gt;
&lt;p&gt;That album is not on streaming services, &lt;a href="https://www.youtube.com/watch?v=arvwRBPaQes"&gt;but thankfully someone put it on YouTube.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have strong memories of buying that album, because I went to the &lt;a href="https://blackandread.com"&gt;record store&lt;/a&gt; to kill time before meeting my new girlfriend&amp;rsquo;s family for the first time. This was in 2005 and that girlfriend is now my wife.&lt;/p&gt;
&lt;p&gt;I can remember the other records I bought on that trip:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=gXR7Rpo6rNI&amp;amp;list=PL0LeaI4W7Oc_PgX4msr3FYqCxrT_4wuHs&amp;amp;index=4"&gt;Ray Barretto - Acid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=TMLHsJjAQHc"&gt;Horace Andy - Dance Hall Style&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/jg_4Yz-wV70?t=962"&gt;The Electric Prunes - S/T&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I often remember what albums I bought with other albums, which is not a very valuable skill.&lt;/p&gt;</description></item><item><title>ESG - UFO</title><link>https://pdp.dev/posts/esg/</link><pubDate>Sun, 04 Feb 2024 16:30:38 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/esg/</guid><description>&lt;p&gt;You&amp;rsquo;ve likely heard this song, it&amp;rsquo;s been sampled by a lot of hip-hop tracks. The group is &lt;a href="https://en.wikipedia.org/wiki/ESG_(band)"&gt;ESG&lt;/a&gt;, and the song is &lt;a href="https://en.wikipedia.org/wiki/ESG_(EP)"&gt;UFO from their first EP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=iAH9yD4Sxqo"&gt;The original song&lt;/a&gt; - you listen to it and it doesn&amp;rsquo;t sound like anything that exceptional.&lt;/p&gt;
&lt;p&gt;Now, that EP was originally issued on a 45 RPM vinyl record. If you take that song and play it at 33 RPM, which will &lt;em&gt;slow it down&lt;/em&gt;, you get something that sounds craaaaazy!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=cFF0AKMhrxw"&gt;Slowed down to 33 RPM&lt;/a&gt; - This is what has been sampled a ton. Wikipedia says over 500 songs.&lt;/p&gt;
&lt;p&gt;Some favorites that sample it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=IVCxbzPmOQQ"&gt;Big Daddy Kane - Ain&amp;rsquo;t no Half Steppin&amp;rsquo;&lt;/a&gt; - I mean, this song is amazing. One of my favorite rap songs of all time.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=YKuK45t-sEY"&gt;Stezo - It&amp;rsquo;s my turn&lt;/a&gt; - I think this dude was a dancer for EPMD or something? Another classic, also samples &lt;a href="https://www.youtube.com/watch?v=LuyS9M8T03A"&gt;Atomic Dog - George Clinton&lt;/a&gt; and I also think this was the first use of the famous &lt;a href="https://www.youtube.com/watch?v=IiqO3fB4I78"&gt;Skull Snaps - It&amp;rsquo;s a New Day&lt;/a&gt; drum break.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=U8GbDYeKVZA"&gt;Public Enemy - Night of the Living Baseheads&lt;/a&gt; - A short use at about 2:10.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=70SwRaTFgHM"&gt;J Dilla - Geek Down&lt;/a&gt; - It&amp;rsquo;s JD so of course he chops it up and makes it unique.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Another fun fact: The producer of the EP is &lt;a href="https://en.wikipedia.org/wiki/Martin_Hannett"&gt;Martin Hannett&lt;/a&gt; who you might know from producing Joy Division and New Order albums.&lt;/p&gt;
&lt;p&gt;As far as other ESG songs go, &lt;a href="https://www.youtube.com/watch?v=w6VKgfwqnOY"&gt;Moody&lt;/a&gt; is my favorite. The trailer for Sofia Coppola&amp;rsquo;s &lt;a href="https://www.youtube.com/watch?v=DBWk6BohVXk"&gt;Priscilla&lt;/a&gt; used ESG&amp;rsquo;s &lt;a href="https://www.youtube.com/watch?v=ocLiOg5lvJQ"&gt;My Love for You&lt;/a&gt; which is also a pretty rad song.&lt;/p&gt;</description></item><item><title>How I use Org-Roam for Notes</title><link>https://pdp.dev/posts/org-roam/</link><pubDate>Sun, 04 Feb 2024 10:02:14 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/org-roam/</guid><description>&lt;p&gt;&lt;a href="https://www.orgroam.com"&gt;Org-Roam&lt;/a&gt; is &amp;lsquo;a plain-text personal knowledge management system&amp;rsquo; that I&amp;rsquo;ve been using since 2020. It&amp;rsquo;s a layer on top of &lt;a href="https://orgmode.org"&gt;Org-Mode&lt;/a&gt; files, so you can do all the cool stuff like have code snippets and TODOs and all that. If you&amp;rsquo;re not familiar with Org-Mode, it&amp;rsquo;s very similar to Markdown. I&amp;rsquo;m a long-time Emacs user and this is primarily what I use Emacs for these days.&lt;/p&gt;
&lt;p&gt;You create pages and link them together, that&amp;rsquo;s it! What pages you create and how you link them together is up to you, so here&amp;rsquo;s what I do.&lt;/p&gt;
&lt;h2 id="people"&gt;People&lt;/h2&gt;
&lt;p&gt;I create a page for any person I interact with. If I have one-on-ones with someone those notes go on the page for that person, or if I&amp;rsquo;m in meetings or doc reviews with someone then I can create links to them. One thing I really &lt;strong&gt;love&lt;/strong&gt; about Org-Roam is that you can &lt;strong&gt;alias&lt;/strong&gt; pages. I sometimes can&amp;rsquo;t remember someone&amp;rsquo;s name, but I can remember their e-mail alias, or I remember what team they&amp;rsquo;re on but not their name. I can take &amp;ldquo;Frank Beef&amp;rdquo; and alias them to &amp;ldquo;@fbeef&amp;rdquo; and also alias them to &amp;ldquo;S4 Storage Contact&amp;rdquo;. If I go to open a page, any of those 3 names/aliases will take me to the same page, so if I can&amp;rsquo;t remember Frank&amp;rsquo;s name but I remember they work in &amp;ldquo;S4 Storage&amp;rdquo;, I can look them up that way.&lt;/p&gt;
&lt;p&gt;I use a &lt;code&gt;person&lt;/code&gt; capture template where the file name is their alias. The template automatically asks for their full name and adds it under &lt;code&gt;ROAM_ALIASES&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;setq&lt;/span&gt; &lt;span class="nv"&gt;org-roam-capture-templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;d&amp;#34;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;default&amp;#34;&lt;/span&gt; &lt;span class="nv"&gt;plain&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;%?&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;:target&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;file+head&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;%&amp;lt;%Y%m%d%H%M%S&amp;gt;-${slug}.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;#+title: ${title}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;:unnarrowed&lt;/span&gt; &lt;span class="no"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;p&amp;#34;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;person&amp;#34;&lt;/span&gt; &lt;span class="nv"&gt;plain&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;%?&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;:target&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;file+head&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;%&amp;lt;%Y%m%d%H%M%S&amp;gt;-${slug}.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;; I name these files after the persons work alias,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;; then put their full name under &amp;#34;ROAM_ALIASES&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;:PROPERTIES:\n:ROAM_ALIASES: \&amp;#34;${fullname}\&amp;#34;\n:END:\n#+title: ${title}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;:unnarrowed&lt;/span&gt; &lt;span class="no"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="document-reviews"&gt;Document reviews&lt;/h2&gt;
&lt;p&gt;I review a lot of docs at work so it&amp;rsquo;s helpful to have an Org-Roam page for these docs, a link to the doc, and a backlink to the person(s) that wrote it. I take light notes on the discussion and if someone brings up an interesting point I&amp;rsquo;ll backlink to them too. This helps me keep track of contributions by people, which is useful for feedback.&lt;/p&gt;
&lt;p&gt;When I start writing my own documents I start with an Org-Roam page and jot down some ideas or a TODO list of things to cover, then I can keep notes around the conversations or reviews with folks I&amp;rsquo;ve had on the topic.&lt;/p&gt;
&lt;h2 id="put-a-date-on-everything"&gt;Put a date on everything&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve got the &lt;strong&gt;who&lt;/strong&gt; and the &lt;strong&gt;what&lt;/strong&gt;, but it&amp;rsquo;s really helpful to also have the &lt;strong&gt;when&lt;/strong&gt;. My workflow is often open a page and then insert an Org header at the bottom with today&amp;rsquo;s date. I wrote some elisp to make that easy:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt; &lt;span class="nv"&gt;pdp-org-roam-insert&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;interactive&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;goto-char&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;point-max&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;; go to the bottom of the page&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;insert&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;format-time-string&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;* %m/%d/%Y&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;; key bindings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;; I bind both of these so I can be sloppy with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;; how I hold down CTRL.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-set-key&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;\C-c\C-np&amp;#34;&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;pdp-org-roam-insert&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-set-key&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;\C-c\C-n\C-p&amp;#34;&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;pdp-org-roam-insert&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="brag-documents"&gt;Brag Documents&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://jvns.ca/blog/brag-documents/"&gt;Julia Evans wrote a wonderful article about keeping a brag document&lt;/a&gt;. Sometimes you&amp;rsquo;ve got to write about some accomplishments at work or you just need to remind yourself of some cool/helpful things you&amp;rsquo;ve done. I am someone who suffers from &lt;a href="https://en.wikipedia.org/wiki/Impostor_syndrome"&gt;impostor syndrome&lt;/a&gt; so it&amp;rsquo;s helpful to remind myself of positives to shutdown that negative self talk.&lt;/p&gt;
&lt;p&gt;Every year, I create a new Org-Roam document, for example &lt;code&gt;brag2024&lt;/code&gt;, and if I do something neato or am helpful I create a link to &lt;code&gt;brag2024&lt;/code&gt; in those notes. Helped someone think more clearly about something in a 1-on-1? In the notes for that 1-on-1 write a quick blurb and create a link to &lt;code&gt;brag2024&lt;/code&gt;. Then, I can open &lt;code&gt;brag2024&lt;/code&gt; and look at the backlinks. This will tell me all the things I&amp;rsquo;ve done that I feel are brag worthy for that year!&lt;/p&gt;
&lt;p&gt;This is so handy!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also experimented with an &amp;ldquo;anti-brag&amp;rdquo; document I can link to, where maybe things don&amp;rsquo;t go as well as I hoped or there&amp;rsquo;s something I need to work on. This again comes back to combating that negative self talk, I can pull these up and see that things aren&amp;rsquo;t actually as catastrophic as I feel they are in my head.&lt;/p&gt;
&lt;h2 id="keep-it-safe"&gt;Keep it safe&lt;/h2&gt;
&lt;p&gt;I keep all this in a Git repository encrypted with &lt;a href="https://github.com/AGWA/git-crypt"&gt;git-crypt&lt;/a&gt;. Here&amp;rsquo;s my &lt;code&gt;.gitattributes&lt;/code&gt; file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*.org filter=git-crypt diff=git-crypt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*.org_archive filter=git-crypt diff=git-crypt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;roam/** filter=git-crypt diff=git-crypt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.gitattributes !filter !diff
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="in-closing"&gt;In closing&lt;/h2&gt;
&lt;p&gt;For me it&amp;rsquo;s about &lt;strong&gt;who&lt;/strong&gt;, &lt;strong&gt;what&lt;/strong&gt;, &lt;strong&gt;when&lt;/strong&gt;, and tracking my contributions.&lt;/p&gt;
&lt;p&gt;Org-Roam is all just plain-text, it does use a database to index your pages for fast lookup by page/alias. You can also tag things to categorize them but I don&amp;rsquo;t really do that. There&amp;rsquo;s a cool web-based UI that will give you a graphical representation of your nodes and how they&amp;rsquo;re linked together. It&amp;rsquo;s neat to look at but I don&amp;rsquo;t really use it.&lt;/p&gt;
&lt;p&gt;As always, there&amp;rsquo;s more than one way to do it. There are other tools in this space too like &lt;a href="https://www.notion.so"&gt;Notion&lt;/a&gt; or &lt;a href="https://obsidian.md"&gt;Obsidian&lt;/a&gt; that will also help with notes. This is my style and I&amp;rsquo;ve found keeping these notes really helpful. Find what works for you!&lt;/p&gt;</description></item><item><title>Tekken 8 - "Story So Far" with Brian Cox</title><link>https://pdp.dev/posts/tekken-8/</link><pubDate>Sat, 20 Jan 2024 10:31:01 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/tekken-8/</guid><description>&lt;p&gt;This is so great and fun. &lt;a href="https://www.youtube.com/watch?v=wRIOVeirAa0"&gt;Brian Cox breaks down the storyline of Tekken&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I had no idea the story was so over the top! I had no interest in Tekken 8 but now I might buy it. &lt;a href="https://www.youtube.com/watch?v=kvaB8XK-89w"&gt;The endings for Tekken 1 are hilarious&lt;/a&gt;, and now I know why that one guy threw that other guy off a cliff, and that throwing people off cliffs is a thing.&lt;/p&gt;</description></item><item><title>3rd Grade Journal Entry</title><link>https://pdp.dev/posts/3rd-grade-eazy-e/</link><pubDate>Fri, 19 Jan 2024 20:03:10 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/3rd-grade-eazy-e/</guid><description>&lt;p&gt;In the 3rd grade, our teacher had us write a journal. My mom recently found it and I made a PDF out of it. This entry is now 35 years old:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/eazye_hu_bfc1b6fb1a4e1d7.png" alt="See below" width="768" height="384" /&gt;
&lt;figcaption class="center" &gt;My 3rd grade teacher probably wasn't familiar with Eazy-E.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;blockquote&gt;
&lt;p&gt;Janurary 18, 1989&lt;/p&gt;
&lt;p&gt;I felt bad this morning because I tried to record some music called Eazy-E but I ended up recording nothing. The rest of my day I felt fine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Having an older brother and older neighbor kids meant I got exposed to a lot of &amp;ldquo;age inappropriate&amp;rdquo; music. We had borrowed a neighbor&amp;rsquo;s vinyl copy of Eazy-E&amp;rsquo;s &lt;a href="https://en.wikipedia.org/wiki/Eazy-Duz-It"&gt;Eazy Duz It&lt;/a&gt; and I was trying to tape it but I messed up. We eventually did tape it successfully.&lt;/p&gt;
&lt;p&gt;My parents had very different views of that music. My mom didn&amp;rsquo;t like it for very obvious reasons and we had to hide our tapes, but my dad thought it was absolutely hilarious. His favorite line was &amp;ldquo;So let me tell you motherfuckers who you&amp;rsquo;re fucking with&amp;rdquo; from &lt;a href="https://genius.com/24976146/Nwa-gangsta-gangsta/So-let-me-tell-ya-muthafuckaz-who-you-fuckin-with"&gt;Gangsta Gangsta&lt;/a&gt;. &lt;a href="https://youtu.be/aCAkHFavEdw?t=282"&gt;YouTube link at the right timestamp&lt;/a&gt;. That always made him laugh so hard.&lt;/p&gt;</description></item><item><title>Paul Rodriguez Crazy Trick</title><link>https://pdp.dev/posts/p-rod-lateflip/</link><pubDate>Sat, 13 Jan 2024 11:36:57 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/p-rod-lateflip/</guid><description>&lt;p&gt;What would you even call this? Nollie Lateflip Nosegrind? Or maybe it&amp;rsquo;s fakie? Whatever you call it, I call it &lt;strong&gt;fucking amazing!&lt;/strong&gt;&lt;/p&gt;
&lt;video autoplay loop muted playsinline width="512" &gt;
&lt;source src="https://pdp.dev/videos/p-rod-lateflip.mp4" type="video/mp4"&gt;
&lt;p&gt;Your browser doesn't support this embedded video.&lt;/p&gt;
&lt;/video&gt;
&lt;p&gt;From &lt;a href="https://www.youtube.com/watch?v=ZGCujOAR-bQ"&gt;Me Myself and I&lt;/a&gt;, a 2010 skate video from Plan B Skateboards.&lt;/p&gt;</description></item><item><title>The Jesus and Mary Chain - Peel Session 1984</title><link>https://pdp.dev/posts/jamc-peel/</link><pubDate>Sat, 13 Jan 2024 11:11:55 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/jamc-peel/</guid><description>&lt;p&gt;As someone who loves Psychocandy, &lt;a href="https://www.youtube.com/watch?v=lMrvfr7DDyU"&gt;this is fantastic&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Happy 2024</title><link>https://pdp.dev/posts/happy-2024/</link><pubDate>Fri, 05 Jan 2024 18:42:32 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/happy-2024/</guid><description>
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/momas2023_hu_eb0ac03f29190a2.jpg" alt="Family" width="768" height="384" /&gt;
&lt;figcaption class="center" &gt;Holiday Photo&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;2023 was a decent year. The biggest thing that happened was that I took a 2.5 month leave of absence from work since I was pretty burnt out and needed a break. This was the longest break away from work I&amp;rsquo;ve ever had since I think my junior year of high school. In college I always either worked or went to summer school in the summer.&lt;/p&gt;
&lt;p&gt;Being able to do this is very much a position of privilege, but my advice is if you have the ability to do this, &lt;strong&gt;do it&lt;/strong&gt;. Nothing really significant happened during this time off and that was by design. I am great at overwhelming myself with plans or feelings that I &amp;lsquo;should&amp;rsquo; be doing more, so I didn&amp;rsquo;t make plans and just went with the flow. I did a &lt;strong&gt;lot&lt;/strong&gt; of e-bike rides with my daughter all around the Seattle area and put about 800 miles on our RadWagon.&lt;/p&gt;
&lt;p&gt;The one thing I wanted to do that I didn&amp;rsquo;t get to was doing a bikepacking trip, where I biked somewhere and camped overnight. This is something I hope to do in 2024.&lt;/p&gt;
&lt;p&gt;My other goal in 2024 is to be less of a fat slob. My eating habits are terrible. I bike to work every day I go in, but 99% of the time that&amp;rsquo;s e-biking. There&amp;rsquo;s nothing wrong with that but I always plan to acoustic bike in (thanks to &lt;a href="https://www.youtube.com/@bobco85"&gt;bobco85&lt;/a&gt; for that term) but I get lazy at the last minute. I just need to start somewhere and not think about it too much.&lt;/p&gt;
&lt;p&gt;Happy 2024 to all y&amp;rsquo;all!&lt;/p&gt;</description></item><item><title>Space Quest 3 Glasses</title><link>https://pdp.dev/posts/space-quest-3/</link><pubDate>Sat, 30 Dec 2023 11:50:48 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/space-quest-3/</guid><description>&lt;p&gt;I played a lot of Sierra &amp;lsquo;Quest&amp;rsquo; games when I was a kid. To prove this statement, here&amp;rsquo;s a picture of me wearing the glasses that came with &lt;a href="https://www.spacequest.net/sq3/"&gt;Space Quest 3&lt;/a&gt;.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spacequest3_hu_6bd886fd1d0b7a54.jpeg" alt="Me wearing glasses from Space Quest 3" width="768" height="541" /&gt;
&lt;figcaption class="center" &gt;1989. T&amp;C Surf and Sport shirt, mini mullet, let's go!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Good news! You can download the template for these from &lt;a href="https://www.spacequest.net/misc/goodies/snout2.pdf"&gt;SpaceQuest.net&lt;/a&gt;. I might have to make some for my daughter&amp;hellip;&lt;/p&gt;</description></item><item><title>Dad Please! Buy me Hot Rod</title><link>https://pdp.dev/posts/dad-please-buy-me-hot-rod/</link><pubDate>Mon, 27 Nov 2023 12:03:46 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/dad-please-buy-me-hot-rod/</guid><description>
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0111_hu_ea8c2058a836997f.jpg" alt="Dad Please! Buy me Hot Rod a TRANSFormer that turns into a Hot Rod Car. Note: Buy Hot Rod in San Francisco And give it To me on my Birthday" width="768" height="602" /&gt;
&lt;/figure&gt;
&lt;p&gt;Discovering stuff you wrote as a kid is fun. I was super into Transformers and I saw the (animated) movie in theaters, so of course I thought Hot Rod was the coolest and I wanted the toy. My dad worked in San Francisco so in my mind he would walk over to a toy store on his lunch break and buy it.&lt;/p&gt;
&lt;p&gt;This never happened and I never got the toy, but that&amp;rsquo;s ok. My brother and I had lots of other Transformers. I recently found an old one of mine, &amp;ldquo;Inferno&amp;rdquo; the fire truck. I had to look up online how to transform it into a robot because it wasn&amp;rsquo;t obvious and I didn&amp;rsquo;t want to break anything. There&amp;rsquo;s a &lt;strong&gt;lot&lt;/strong&gt; of information about Transformers on the internet&amp;hellip; I had no idea but it makes sense. A lot of it is very Web 1.0 which adds to the charm.&lt;/p&gt;
&lt;p&gt;I showed my daughter (~4 years old) the fire engine and told her how it can transform into a robot. This &lt;strong&gt;blew her mind&lt;/strong&gt; as I was going through the instructions and she was bouncing up and down, saying &amp;ldquo;I can&amp;rsquo;t wait to meet the robot!&amp;rdquo; I finished transforming it and then she had a nice conversation with it while I provided the robot voice. So wonderful! There&amp;rsquo;s a box of old stuff in our garage that might have other Transformers in it, I&amp;rsquo;ll have to share those with her too.&lt;/p&gt;
&lt;p&gt;Now, you might notice the paper I wrote that on has tractor feed holes on it. My dad worked for the Southern Pacific railroad as a fleet manager, meaning he tracked utilization and space of a fleet of railcars along certain routes. He used to bring home &lt;strong&gt;tons&lt;/strong&gt; of printouts of old reports, and I drew on the blank side or made paper airplanes. You can see with this page I not only wrote this note but I also made it into a paper airplane. Maybe I threw it at him to deliver it or something?&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s what&amp;rsquo;s on the other side. I have no idea what it all means, but it looks cool!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0112_hu_5ec058293416ad31.jpg" alt="Southern Pacific Weekly Detail Report" width="768" height="611" /&gt;
&lt;/figure&gt;</description></item><item><title>A leaky TODO list</title><link>https://pdp.dev/posts/leaky-todo/</link><pubDate>Tue, 15 Aug 2023 10:13:08 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/leaky-todo/</guid><description>&lt;p&gt;I&amp;rsquo;ve been an &lt;a href="https://orgmode.org/"&gt;org-mode&lt;/a&gt; user off and on since around 2007. I&amp;rsquo;ve tried other different tools that are excellent (&lt;a href="https://www.omnigroup.com/omnifocus"&gt;OmniFocus&lt;/a&gt;, &lt;a href="https://culturedcode.com/things/"&gt;Things&lt;/a&gt;), but I always drift back to org-mode due to it&amp;rsquo;s flexibility and the ease of dealing with plain text. Over time I&amp;rsquo;ve tried all these different strategies for keeping todo lists, like dumping everything thought I have into the list, breaking things down by project, urgency and all that. My big problem with this is that it leads to long lists, and long lists make me feel sad. I am a master of feeling &amp;ldquo;I should be doing more&amp;rdquo; so when I see a long todo list it causes me much anxiety.&lt;/p&gt;
&lt;p&gt;My strategy is now this: My entire todo list is one file, &lt;code&gt;inbox.org&lt;/code&gt;, and anything that isn&amp;rsquo;t flagged as important or has a due date gets automatically archived after 7 days.&lt;/p&gt;
&lt;p&gt;I come across lots of stuff where I think &amp;ldquo;oh! I should learn about this!&amp;rdquo; and add it to my todo list. Many of these things don&amp;rsquo;t actually need to be looked into, so having them just fall off of my todo list after 7 days is fine. If I&amp;rsquo;m really supposed to learn about it, I&amp;rsquo;ll go find it again. If I can&amp;rsquo;t find it again, oh well. This keeps my list nice and short without me even having to think about it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hold on is what they say&lt;/p&gt;
&lt;p&gt;But I say open up your hands and let it fly away&lt;/p&gt;
&lt;p&gt;Until the day it comes back and it was meant to be&lt;/p&gt;
&lt;p&gt;Take a look at the lovely gift the world has sent to me&lt;/p&gt;
&lt;p&gt;&amp;ndash; &lt;a href="https://www.youtube.com/watch?v=JpnEdUBczvk"&gt;Aceyalone - The Hold&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here&amp;rsquo;s my elisp function that will do this pruning:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt; &lt;span class="nv"&gt;pdp-org-archive-done-tasks&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;interactive&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;; take all entries that are over 7 days old and archive them&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;; I just want to end the endless build up.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;; Mark items as DONE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-ql-select&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;concat&lt;/span&gt; &lt;span class="nv"&gt;org-directory&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;inbox.org&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;and&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;todo&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;TODO&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;not&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;ts&lt;/span&gt; &lt;span class="nb"&gt;:from&lt;/span&gt; &lt;span class="mi"&gt;-7&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;; older than 7 days&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;not&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;priority&lt;/span&gt; &lt;span class="nf"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;C&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;; has no priority&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;not&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;scheduled&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;; isn&amp;#39;t scheduled&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;not&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;deadline&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;; doesn&amp;#39;t have a deadline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;:action&lt;/span&gt; &lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-todo&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;DONE&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;; mark it as done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;; Archive DONE items&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;; I was using org-ql-select but you had to run it multiple times to&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;; archive everything because the shifting of items in the file as things&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;; got archived confused it. From: https://stackoverflow.com/a/27043756&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-map-entries&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;lambda&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-archive-subtree&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;setq&lt;/span&gt; &lt;span class="nv"&gt;org-map-continue-from&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-element-property&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;:begin&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-element-at-point&lt;/span&gt;&lt;span class="p"&gt;))))&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;/DONE&amp;#34;&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I run this automatically on every save of &lt;code&gt;inbox.org&lt;/code&gt;. I only want this to run on &lt;code&gt;inbox.org&lt;/code&gt;, so my save hook looks like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt; &lt;span class="nv"&gt;pdp-org-autoarchive&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;when&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;derived-mode-p&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;org-mode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;save-excursion&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;goto-char&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;string-equal&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;car&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;cdr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;car&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-collect-keywords&lt;/span&gt; &lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;AUTOARCHIVE&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;t&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;progn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;pdp-org-archive-done-tasks&lt;/span&gt;&lt;span class="p"&gt;))))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;add-hook&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;before-save-hook&lt;/span&gt; &lt;span class="nf"&gt;#&amp;#39;&lt;/span&gt;&lt;span class="nv"&gt;pdp-org-autoarchive&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will only run when saving a file that has &lt;code&gt;#+AUTOARCHIVE t&lt;/code&gt; at the top. I am a heavy user of &lt;a href="https://www.orgroam.com/"&gt;org-roam&lt;/a&gt; so I don&amp;rsquo;t want this running on the ~2,000 &lt;code&gt;.org&lt;/code&gt; files I have in there. More on my org-roam usage in the future.&lt;/p&gt;
&lt;p&gt;My &lt;code&gt;inbox.org&lt;/code&gt; looks like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-org" data-lang="org"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cs"&gt;#+TITLE&lt;/span&gt;&lt;span class="c"&gt;: Inbox&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cs"&gt;#+AUTOARCHIVE&lt;/span&gt;&lt;span class="c"&gt;: t&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;*&lt;/span&gt;&lt;span class="err"&gt; TODO&lt;/span&gt;&lt;span class="gs"&gt; Something I need to do in the future. It&amp;#39;s scheduled, so it won&amp;#39;t get deleted.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;SCHEDULED: &lt;/span&gt;&lt;span class="cs"&gt;&amp;lt;2023-10-23 Mon&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[2023-04-03 Mon]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;*&lt;/span&gt;&lt;span class="err"&gt; TODO&lt;/span&gt;&lt;span class="gs"&gt; [#A] This has a priority flag, so it won&amp;#39;t get deleted.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[2023-04-01 Sat]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;*&lt;/span&gt;&lt;span class="err"&gt; TODO&lt;/span&gt;&lt;span class="gs"&gt; This doesn&amp;#39;t have a due date or a priority, so it&amp;#39;ll get deleted in the future.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[2023-08-14 Mon]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The important thing here is that everything I capture has a timestamp associated with it. My capture template looks like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;setq&lt;/span&gt; &lt;span class="nv"&gt;org-capture-templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;t&amp;#34;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Todo&amp;#34;&lt;/span&gt; &lt;span class="nv"&gt;entry&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;file&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;lambda&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;concat&lt;/span&gt; &lt;span class="nv"&gt;org-directory&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;inbox.org&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;* TODO %?\n%u\n%i\n&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is just what I do and it works well for me.&lt;/p&gt;</description></item><item><title>Movies July 2023</title><link>https://pdp.dev/posts/movies-july-2023/</link><pubDate>Sun, 30 Jul 2023 06:21:48 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/movies-july-2023/</guid><description>&lt;p&gt;&lt;strong&gt;The Skin I Live In&lt;/strong&gt; - What a movie. It&amp;rsquo;s like a really fucked up weirdo fairy tale. Totally recommended.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It Follows&lt;/strong&gt; - You read the premise of this movie and it sounds incredibly stupid. But the execution and atmosphere are great. Slow burn. Recommended.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Smile&lt;/strong&gt; - Very similar to ‘It Follows’ but worse. Take what made ‘It Follows’ different and interesting and replace it with typical horror tropes. Also, the way people treat mental illness in this movie is gross, if someone says something you don&amp;rsquo;t believe just shout &amp;ldquo;YOU&amp;rsquo;RE CRAZY!&amp;rdquo; at them and run away.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Significant Other&lt;/strong&gt; - Corny. The male character was so bad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Room&lt;/strong&gt; - The Tommy Wiseau movie. I made it like 5 minutes in and had to turn it off. I like shitty movies and all but this was too much for even me. Thanks for helping me understand my own boundaries.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Neon Genesis Evangelion&lt;/strong&gt; - It had been many years since I watched this. I don&amp;rsquo;t really know how I feel about it, and I certainly don&amp;rsquo;t get it. Why have mechs that need really long power cords? I liked the original ending the best, the one where everyone says &amp;ldquo;Congratulations&amp;rdquo; because at least Shinji gained some understanding of himself. Also, the typography and design of big things that flash &amp;ldquo;WARNING&amp;rdquo; was top notch.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rebuild of Evangelion&lt;/strong&gt; - I watched all 4 parts. I totally don&amp;rsquo;t get it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Money Plane&lt;/strong&gt; - Shit Plane.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Zappa&lt;/strong&gt; - Documentary about Frank Zappa. I&amp;rsquo;m not super into his music but it was an interesting doc. I came away from it not really liking him as a person. He cheated on his wife a lot and she knew about it but the policy was &amp;ldquo;hey we don&amp;rsquo;t talk about that.&amp;rdquo; I do like the Mother&amp;rsquo;s album &amp;ldquo;we&amp;rsquo;re only in it for the money&amp;rdquo; because it makes fun of hippies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prometheus + Alien Covenant&lt;/strong&gt; - Both of these movies suck. I don&amp;rsquo;t need to know where the Alien eggs came from and what that ship was in the first Alien movie. Having it be mysterious is so much better than this nonsensical horseshit.&lt;/p&gt;</description></item><item><title>RIP Champion the Cat</title><link>https://pdp.dev/posts/rip-champion/</link><pubDate>Sat, 29 Jul 2023 12:04:48 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/rip-champion/</guid><description>&lt;p&gt;Our cat Champion passed away on July 20th 2023. She was 15 years old.&lt;/p&gt;
&lt;p&gt;In 2008 my girlfriend (now wife) and I wanted to get a cat. We went to &lt;a href="https://www.yelp.com/biz/emerald-city-kitty-harbor-seattle"&gt;Kitty Harbor in West Seattle&lt;/a&gt; and hung out with their kittens. I was sitting in a chair and this kitten came along, jumped on my shoulder, and crawled all over me. I proclaimed &amp;ldquo;This cat&amp;rsquo;s a fucking champion!&amp;rdquo; and that&amp;rsquo;s how Champion got her name. She had a sneezy nose when we got her and they said this was just a little &amp;lsquo;kitty cold&amp;rsquo; but that was LIES. She permanently had a cloudy right eye and would forever be sneezing on everything. We loved her just the same as she was just a great cuddler and buddy. 15 years is a long time and she&amp;rsquo;s been with us through so many life changes. She was very sweet with our daughter, who would sit on her and hug her very aggressively but Champs never minded.&lt;/p&gt;
&lt;p&gt;Champion, we love you and we miss you.&lt;/p&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/champ-1_hu_5f88f22c52be98a9.jpg" alt="We miss you Champers" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;We miss you Champers&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/champ-hand_hu_23d3a5a9451f6ea3.jpg" alt="Top shelf snuggler" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;Top shelf snuggler&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/champ-mo_hu_c15e6288a06ff22.jpg" alt="Champs and Mo were buddies" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;Champs and Mo were such buddies&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/champ-on_hu_2dd701ed7317873d.jpg" alt="POWER ON" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;POWER ON&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/champ-shmup_hu_cbef630a3fb72ac4.jpg" alt="Shmup co-pilot" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;Shmup co-pilot&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Best Paper Award at Usenix ATC '23!</title><link>https://pdp.dev/posts/best-paper-usenix-atc-23/</link><pubDate>Fri, 28 Jul 2023 20:58:24 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/best-paper-usenix-atc-23/</guid><description>&lt;p&gt;A paper that I wrote with some colleagues won a Best Paper Award at the USENIX ATC &amp;lsquo;23 conference! This is a huge honor!&lt;/p&gt;
&lt;p&gt;The paper, &lt;a href="https://www.usenix.org/conference/atc23/presentation/brooker"&gt;On-demand Container Loading in AWS Lambda&lt;/a&gt;, details the system we built to enable incremental loading of container images. I worked on many aspects of this system and designed the Garbage Collector.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AWS Lambda is a serverless event-driven compute service, part of a category of cloud compute offerings sometimes called Function-as-a-service (FaaS). When we first released AWS Lambda, functions were limited to 250MB of code and dependencies, packaged as a simple compressed archive. In 2020, we released support for deploying container images as large as 10GiB as Lambda functions, allowing customers to bring much larger code bases and sets of dependencies to Lambda. Supporting larger packages, while still meeting Lambda’s goals of rapid scale (adding up to 15,000 new containers per second for a single customer, and much more in aggregate), high request rate (millions of requests per second), high scale (millions of unique workloads), and low start-up times (as low as 50ms) presented a significant challenge.&lt;/p&gt;
&lt;p&gt;We describe the storage and caching system we built, optimized for delivering container images on-demand, and our experiences designing, building, and operating it at scale. We focus on challenges around security, efficiency, latency, and cost, and how we addressed these challenges in a system that combines caching, deduplication, convergent encryption, erasure coding, and block-level demand loading.&lt;/p&gt;
&lt;p&gt;Since building this system, it has reliably processed hundreds of trillions of Lambda invocations for over a million AWS customers, and has shown excellent resilience to load and infrastructure failures.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This On-Demand loading technology was first used for &lt;a href="https://aws.amazon.com/blogs/aws/new-for-aws-lambda-container-image-support/"&gt;Container Support in 2020&lt;/a&gt; then was later expanded to support &lt;a href="https://aws.amazon.com/blogs/aws/new-accelerate-your-lambda-functions-with-lambda-snapstart/"&gt;Lambda SnapStart which launched in 2022&lt;/a&gt;.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0026_hu_1d3de460ae0a82a4.jpg" alt="Presentation slide announcing the award" width="768" height="556" /&gt;
&lt;figcaption class="center" &gt;What an Honor!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/aplusgc_hu_954fa38d7f665d20.jpg" alt="Coffee mug that says &amp;#39;A&amp;#43; Garbage Collector&amp;#39;" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;A coworker got me this mug since I designed the Garbage Collector. It confuses non-computer science people.&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Using Nix for dotfiles and stuff</title><link>https://pdp.dev/posts/on-nix/</link><pubDate>Sat, 15 Jul 2023 10:58:27 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/on-nix/</guid><description>&lt;p&gt;The other day at work my Cloud Desktop got terminated for some reason. It&amp;rsquo;s an EC2 instance and these things are bound to happen so I&amp;rsquo;m super diligent about pushing any work onto a git share or working in a folder that is &lt;a href="https://syncthing.net"&gt;Syncthing&amp;rsquo;d&lt;/a&gt; with my work laptop. Our Cloud Desktops sit in an AutoScaling group, so there was already a new fresh instance sitting there for me to use.&lt;/p&gt;
&lt;p&gt;What I &lt;em&gt;did&lt;/em&gt; lose though was all my user configs, dotfiles, tools that were installed, editor slickness, etc. Setting all this back up &lt;em&gt;sucked&lt;/em&gt; and took a long time. It got me looking into a better way. I used a lot of dotfile management tools in the past like &lt;a href="https://www.gnu.org/software/stow/"&gt;GNU Stow&lt;/a&gt;, &lt;a href="https://www.chezmoi.io"&gt;Chezmoi&lt;/a&gt;, or just a git repo. Problem is, these things give you your dotfiles but not all the software that your dotfiles depend on. When I launch a new shell after grabbing these dotfiles it&amp;rsquo;ll fail because I don&amp;rsquo;t have &lt;code&gt;fzf&lt;/code&gt; or &lt;code&gt;exa&lt;/code&gt; or whatever other tool I&amp;rsquo;ve got aliased installed so things go &lt;strong&gt;boom&lt;/strong&gt; in weird ways.&lt;/p&gt;
&lt;p&gt;I started playing around with &lt;a href="https://nixos.org"&gt;Nix&lt;/a&gt;, which has a naming problem because there&amp;rsquo;s Nix the OS, Nix the package manager, and Nix the config format. It did appear to enable what I was looking for: a way to easily both manage packages &lt;em&gt;and&lt;/em&gt; config. It&amp;rsquo;ll install Fish Shell, my aliases, and the tools that those aliases depend on.&lt;/p&gt;
&lt;p&gt;Does it deliver? For the most part, yea! &lt;a href="https://nixos.wiki/wiki/Flakes"&gt;Nix Flakes&lt;/a&gt; are the way to go despite being marked as an &amp;rsquo;experimental&amp;rsquo; feature, it seems stable and widely used. I spent a lot of time though figuring out how to get it work right, but so far I&amp;rsquo;ve got it easily recreating my environment on:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;macOS&lt;/li&gt;
&lt;li&gt;A Raspberry Pi running Ubuntu&lt;/li&gt;
&lt;li&gt;An EC2 instance running Amazon Linux 2&lt;/li&gt;
&lt;li&gt;An EC2 instance running Ubuntu&lt;/li&gt;
&lt;li&gt;and more!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;On macOS you can use &lt;a href="https://github.com/LnL7/nix-darwin"&gt;Nix-Darwin&lt;/a&gt; to also do OS level stuff (most important for me as an Emacs user is to remap Caps Lock to Control) and handle managing Homebrew packages. That&amp;rsquo;s nice.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/wnka/piwonka-flakes"&gt;The repo that contains my configuration is here&lt;/a&gt;. It&amp;rsquo;ll be evolving over time.&lt;/p&gt;
&lt;p&gt;The best resources I found for getting going are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=LE5JR4JcvMg"&gt;YouTube video - Walkthrough of Nix Install and Setup on MacOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/heywoodlh/nix-darwin-flake"&gt;Boilerplate repo for nix-darwin flakes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/breuerfelix/dotfiles"&gt;Another repo for inspiration&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I just started playing around with &lt;a href="https://github.com/the-nix-way/dev-templates"&gt;dev-templates&lt;/a&gt; which are an easy way to have directory/workspace specific dev setups. Not sure how well that interacts with VSCode and whatnot, but seems pretty neat!&lt;/p&gt;</description></item><item><title>Book: Alien^3 - The Unproduced Screenplay by William Gibson</title><link>https://pdp.dev/posts/alien-3-alternate-script/</link><pubDate>Sat, 10 Jun 2023 12:52:54 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/alien-3-alternate-script/</guid><description>&lt;p&gt;Alien 3 (or Alien^3) had a long development process where many scripts were written and rejected and eventually what got made was being rewritten while shooting was happening. It was director David Fincher&amp;rsquo;s first movie and he pretty much disowned it and hated the process. &amp;ldquo;No one hated it more than me; to this day, no one hates it more than me.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Recently one of the first scripts, written by William Gibson, was expanded upon and &lt;a href="https://www.amazon.com/Alien-Unproduced-Screenplay-William-Gibson-ebook/dp/B08T19ZGHF"&gt;released in book form&lt;/a&gt; which I just finished reading. Review: 2 out of 5 chestbursters.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SPOILERS BELOW&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The basic premise is that the escape pod from the Sulaco (the big ship in Aliens) gets picked up by a spacestation, Ripley and Newt are sent home and Hicks deals with new Alien problems on the spacestation.&lt;/p&gt;
&lt;p&gt;Overall it was just bland, no characters other than Hicks were really fleshed out or interesting, and Hicks is only interesting because he survived Aliens. Also he somehow became this like super uber marine who could lead a group of non-marines to success.&lt;/p&gt;
&lt;p&gt;They introduced a new way for the Aliens to breed where you basically get an infection and then your skins flies off to reveal a full-on Giger alien underneath. This happens quickly, or not quickly, or whenever is convenient for the plot. They could have leveraged this into some real tension a la &lt;a href="https://en.wikipedia.org/wiki/The_Thing_(1982_film)"&gt;THE THING&lt;/a&gt; but they don’t. They just had to figure out a way to make a bunch of Aliens and fast since there was no incubation period like in Aliens.&lt;/p&gt;
&lt;p&gt;My biggest problem with it is that it basically just tried to be Aliens 2, same military focus, same “there’s a lot of them and we have pulse rifles and flamethrowers” problems. Say what you will about the Alien^3 that came out in theaters, it at least was different and interesting. It wasn’t great but it at least did something new, which I at least respect even if I don’t like the result. I like when bands do this too&amp;hellip; The Jesus and Mary Chain could have followed up &lt;a href="https://en.wikipedia.org/wiki/Psychocandy"&gt;Psychocandy&lt;/a&gt; with Psychocandy 2 and done more of the same. But they didn’t! The made Darklands instead, which is super different.&lt;/p&gt;
&lt;p&gt;My one complaint about the Alien franchise is that “the Company” is completely stupid and incompetent. I do not understand their motivations. It’s the future and you can travel through space and terraform planets, but you want this murderous species for your “bioweapons division” and for what? What are you going to do with them that you couldn’t do with say, a bomb or a tank or water balloons filled with acid? Why would you want something so unpredictable and uncontrollable to go kill on your behalf? Let’s say you deploy them to some planet and it’s successful with killing whatever you want to kill. Now you got a bunch of aliens running around. Good luck cleaning that up. You’re gonna have to nuke it from orbit anyway so you could have just started there silly.&lt;/p&gt;
&lt;p&gt;The first two movies are classic and insanely good. I’ll let the Company stuff slide for those two, but after two completely failed attempts you should probably reconsider your plan.&lt;/p&gt;
&lt;p&gt;They should make movies that tell the story of Alien or Aliens but from some Company command center. Like, they’re doing stand up each day with their sprint tasks and decide when to execute the change that makes Ash go crazy and start trying to murder people. Then the next day they come back and learn that it didn’t work. Or they have Burke call in to stand up so he can give updates and form the next steps in their plan. That’s where they come up with the “wait for Ripley to go to sleep then just dump some facehuggers in the room or something.” That I would watch.&lt;/p&gt;</description></item><item><title>Muchi Muchi Pork MAME Overlay</title><link>https://pdp.dev/posts/muchi-muchi-pork-mame-overlay/</link><pubDate>Sat, 20 May 2023 21:37:46 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/muchi-muchi-pork-mame-overlay/</guid><description>
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/mmpork-overlay_hu_c090e28b62df1e8b.jpg" alt="MAME overlay" width="768" height="462" /&gt;
&lt;figcaption class="center" &gt;Lots of helpful information!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Shmups are often oriented vertically, meaning their arcade cabinets have a monitor that&amp;rsquo;s rotated 90 degrees so that it&amp;rsquo;s taller than it is wide. It&amp;rsquo;s just a regular monitor on it&amp;rsquo;s side. Other arcade games are like this too: Donkey Kong, Pac-Man, etc. When you run these games in an emulator, you&amp;rsquo;ll have tons of excess screen space on the sides of the game that are just blank. The &lt;a href="http://m2stg.com/en/"&gt;M2 ShotTriggers series&lt;/a&gt;, which ports shmups to modern platforms like PS4 and Switch, started using that extra space to provide all kinds of extra game state that usually isn&amp;rsquo;t visible for the player, which has been a great innovation.&lt;/p&gt;
&lt;p&gt;Some folks in the shmup community were influenced by M2 and started making MAME Overlays for certain games. One game was &amp;lsquo;Pink Sweets&amp;rsquo; which is a game I totally don&amp;rsquo;t understand or like, BUT it runs on the same hardware and engine as one my favorites: Muchi Muchi Pork. So I took the &amp;lsquo;Pink Sweets&amp;rsquo; overlay tried to make it work for MMP. It&amp;rsquo;s the same hardware and engine but the memory locations of things are different, so I used the &lt;a href="https://pdp.dev/posts/mame-debugger-intro/"&gt;MAME Debugger&lt;/a&gt; to find where certain values like rank, lard meter, score, and medal value live. These were pretty easy to figure out since they&amp;rsquo;re just static values.&lt;/p&gt;
&lt;p&gt;These values are handy, but the &lt;em&gt;really&lt;/em&gt; handy stuff would have been to have the boss HP and timer so you know when to &lt;a href="https://pdp.dev/posts/gold-pork/"&gt;blow up a boss and get the most medals&lt;/a&gt;. These are significantly harder and I couldn&amp;rsquo;t figure them out on my own, so I got in touch with the &lt;a href="https://twitter.com/ReOlifante"&gt;folks&lt;/a&gt; who made some of these overlays and asked for help. They were super nice and set me up with some &lt;a href="https://ghidra-sre.org"&gt;Ghidra&lt;/a&gt; projects that they had used for other overlays and invited me to a reverse engineering Discord. Ghidra is a reverse engineering tool, and let me just say that I was waaaayyy out of my depths here. Staring at a bunch of SH3 assembly was hopeless, but I asked for help and they gave pointers which I used to somewhat disassemble the boss logic and find where different values, namely HP and the timers live for each phase of the boss. MMP is a little different than Pink Sweets in that the bosses are usually made up of different parts that you blow up per phase, so the boss logic was quite different. I was able to figure out most of the boss HPs and some of the timers. I might find more over time.&lt;/p&gt;
&lt;p&gt;I left the artwork unchanged from the Pink Sweets overlay, other than scribbling out the &amp;lsquo;Pink Sweets&amp;rsquo; logo and putting text over it and making a cheap lard meter. I got in touch with the person that made the Pink Sweets art and maybe there&amp;rsquo;ll be some better art sometime.&lt;/p&gt;
&lt;p&gt;The code lives in &lt;a href="https://github.com/wnka/muchi-muchi-pork-mame-overlay"&gt;this repo&lt;/a&gt;. To use it, go to &lt;a href="https://github.com/wnka/muchi-muchi-pork-mame-overlay/releases"&gt;releases&lt;/a&gt; and download the latest &lt;code&gt;mmpork.zip&lt;/code&gt; which you put in your &lt;code&gt;artwork&lt;/code&gt; directory for MAME. Then start MAME like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./mame mmpork -plugin layout
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and you should be good to go. It even works on a Steam Deck!&lt;/p&gt;
&lt;p&gt;I also created a repo for some &lt;a href="https://pdp.dev/posts/mame-lua/"&gt;LUA&lt;/a&gt; scripts that I wrote to help figure things out and dump out the enemy table. That&amp;rsquo;s available &lt;a href="https://github.com/wnka/mame-lua-scripts"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This post is part of a 3-part series:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://pdp.dev/posts/mame-debugger-intro"&gt;MAME Debugger Intro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pdp.dev/posts/mame-lua"&gt;MAME Lua Scripting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;You are here: Muchi Muchi Pork MAME Overlay&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="appendix-a-boss-logic"&gt;Appendix A: Boss logic&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s a comment from the &lt;a href="https://github.com/wnka/muchi-muchi-pork-mame-overlay/blob/main/default.lay"&gt;main file that contains the layout logic&lt;/a&gt; that explains a little about how the boss logic works.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Muchi Muchi Pork bosses can have multiple phases, and multiple parts that you have to destroy per phase.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- For example, the stage one BOSSES entry looks like this:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- [80] = {[0] = {4,160,{[1] = 3600}}, [&amp;#39;part_ids_for_phase&amp;#39;] = {[1] = {22, 0}} },&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Let&amp;#39;s break down what this means.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- The &amp;#34;key&amp;#34; of BOSSES is the enemy_type. Every enemy in MMP has an enemy_type, which for the stage one boss is &amp;#34;80&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- So for &amp;#34;80&amp;#34;, we want to pull some data off part_id &amp;#34;0&amp;#34;, which is why we&amp;#39;ve got this record:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- [0] = {4,160,{[1] = 3600}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- This is from where we&amp;#39;ll pull timer and phase data.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- TODO: Timer stuff is not figured out yet for MMP, these are just placeholders from Pink Sweets.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Then, &amp;#39;part_ids_for_phase&amp;#39; will tell you which part_ids to pull hitpoint information from:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- [&amp;#39;part_ids_for_phase&amp;#39;] = {[1] = {22, 0}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- This means for phase 1, we first want to pull hitpoint information off part_id &amp;#34;22&amp;#34;, which is&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- that big turret in the middle of the boss. Until that&amp;#39;s destroyed, the main part can&amp;#39;t take damage.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Once &amp;#34;22&amp;#34; is destroyed we want to pull hitpoints off part_id &amp;#34;0&amp;#34;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- NOTE: Phases tend to be odd numbers, which is why we see &amp;#34;[1]&amp;#34;, &amp;#34;[3]&amp;#34;, and &amp;#34;[5]&amp;#34; in &amp;#39;part_ids_for_phase&amp;#39;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>On Calculus</title><link>https://pdp.dev/posts/on-calculus/</link><pubDate>Sun, 14 May 2023 15:38:22 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/on-calculus/</guid><description>&lt;p&gt;Calculus!
I watched an MIT lecture on Calculus on YouTube, &lt;a href="https://www.youtube.com/watch?v=7K1sB05pE0A&amp;amp;list=PL590CCC2BC5AF3BC1"&gt;the full course is there&lt;/a&gt; and I watched the &lt;a href="https://youtu.be/7K1sB05pE0A"&gt;first lecture&lt;/a&gt;. I watched the whole thing uninterrupted.&lt;/p&gt;
&lt;p&gt;Uninterrupted?! I &lt;em&gt;never&lt;/em&gt; watch things uninterrupted, I’m always pausing, jumping around, checking what else is going on, checking my mail, and so on. What about this held my attention?&lt;/p&gt;
&lt;p&gt;Well, it was interesting for one, I took Calc 1-3 in college and really struggled with them but did extremely well. I spent so much time on those classes. Watching this took me back to that time&amp;hellip; the class was from 2007, so it was still a dude standing at a blackboard and writing, pulling blackboards up and down. There was something so&amp;hellip; comforting in that? That’s how it was when I took calculus.&lt;/p&gt;
&lt;p&gt;It also reminded me of a time in my life when I was fucking laser focused on learning. I’m not like that anymore, at least not to that degree. I feel like I spend the majority of my life trying to find the best way to spend my time. I start watching a movie and my mind starts drifting to “hmmm maybe there’s something better I could be watching” so I go hop around and waste time looking for this mythical “best thing to watch at this moment” which is a waste of time.&lt;/p&gt;
&lt;p&gt;Before all the internet streaming stuff I had constraints. I remember going to Blockbuster with friends and wondering around for a while trying to find something to watch. Sometimes it took a long time. But eventually we’d rent something and watch it. Making the decision of what to watch was a discrete event. It’s not like that anymore. I kind of miss it.&lt;/p&gt;
&lt;p&gt;I guess I could put constraints on myself but I find that reallllly hard to do. I’ve tried. The fact that everything is free and available fucks up my brain. I never walked into a Blockbuster and said “oh man look at all these movies I need to watch” because I had to pay to watch them so I was choosy. I’m not choosy anymore, the price barrier is gone and everything is up for grabs, so why commit to anything?&lt;/p&gt;
&lt;p&gt;It’s not just movies, it’s also technologies, music, etc. Everyday on Hacker News / lobste.rs there’s some new thing someone wrote that I feel the need to check out. I just spent some time looking at the Astro web framework and thought maybe I should move my blog to that from Hugo. I played with it for a little bit and then it dawned on me that maybe I should actually write content for my blog and not worry about these dumb distractions.&lt;/p&gt;
&lt;p&gt;I’ll probably keep watching that Calculus course. A lot of that stuff has totally fallen out of my head except some really basic derivative and integration techniques. Really though I just want to be less of a tumbleweed tumbling across the internet.&lt;/p&gt;
&lt;h2 id="more-personal-history-with-calculus"&gt;More personal history with Calculus&lt;/h2&gt;
&lt;p&gt;I was a mediocre student in high school, I didn’t do bad but I was just not interested in many topics at school. I went to high school in Golden Colorado, the home of Coors beer and Kip Winger. I was a computer nerd, I taught myself how to program in high school and worked a part time job. I used the money from that job to build a computer and geek out on the 28.8k baud internet. School just ate into that time.&lt;/p&gt;
&lt;p&gt;Math was my favorite subject, but even in that I wasn’t great. I didn’t take calculus, the farthest I got was pre-calc since I wasn’t on the fast track. When it came to college, I knew I wanted to study computer science. I applied to two colleges, both nearby: University of Colorado at Boulder and Colorado School of Mines. School of Mines rejected me, and University of Colorado at Boulder accepted me so I went there. There was a problem though: I got into the school but I didn’t get into the College of Engineering because my grades and prerequisites weren’t great. Without being in the College of Engineering, I couldn’t major in computer science. To get in, I needed to take Calc 1, Calc 2, Physics 1 and Chemistry 1 and get good grades. I forget how good, probably at least a B?&lt;/p&gt;
&lt;p&gt;Ok fine, I’ll do that. I treated college mostly like I treated high school, expecting to skate by and not have to work too hard. Then came my first Calc 1 exam. I got a 63, or a D. Definitely not good enough! This totally shook me. If I couldn’t study computer science I don’t know what the fuck I would have done, I probably would have studied Math since that was in the College of Arts and Sciences. I started spending crazy amounts of time studying. I lived at home with my parents while I was in college and commuted from Golden to Boulder up Highway 93. Not a fun drive in the snow, one of the reasons I hate snow.&lt;/p&gt;
&lt;p&gt;Since I lived at home, I had long breaks between classes so I would sit in the library and just study study study. It’s so weird to think about that now, I had no laptop, no phone, nothing, just a calculus book and paper. Oh and I had MY BRAIN. When I needed a break I either walked up to Wax Trax on “The Hill” to look at records, or I went to the arcade in the student center to play Galaga. I played a lot of Galaga, this is where my love of shmups was born.&lt;/p&gt;
&lt;p&gt;My grades got better, the second exam I got in the 80s which beat the curve, and on the third exam I got a 99 which crushed the curve. I probably should have argued with the graders to get a 100, they dinged me a point because I didn’t write the integral limits on a intermediate step, but I had them on subsequent steps and got the answer. I didn’t care about being perfect though, I was so insanely happy to do that well.&lt;/p&gt;
&lt;p&gt;I got an A in the class but more importantly I became a serious student and not a slacker goofball. I got into the College of Engineering, majored in Computer Science, minored in Applied Math, and got into the 5-year program to get a combined Bachelors and Masters degree. I’m proud of that. Calculus really drove that change in me.&lt;/p&gt;</description></item><item><title>Stuff! 2023 Week 17</title><link>https://pdp.dev/posts/stuff-2023-week17/</link><pubDate>Sun, 23 Apr 2023 15:56:51 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/stuff-2023-week17/</guid><description>&lt;h1 id="biking"&gt;Biking&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ciechanow.ski/bicycle/"&gt;Bartosz Ciechanowski - Bicycles&lt;/a&gt; - This is an amazing website. What a cool way to explain the physics of bicycling. I&amp;rsquo;m not going to lie, I did &lt;em&gt;not&lt;/em&gt; read the whole thing, but I played with the animations and read some spots and learned things. This whole page is ~3MB, which is pretty amazing given how much animation and interactivity there is. I randomly looked at CNN&amp;rsquo;s website (well not randomly, I knew it would be bloated) and it was 25MB.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="books"&gt;Books&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://readonlymemory.vg/shop/book/like-a-hurricane/"&gt;Like a Hurricane: An Unofficial Oral History of Street Fighter II&lt;/a&gt; - Read this in 2 days. Easy and fun read that covers a lot of ground, not just Street Fighter II as it also covers SFI, the Alpha series, Darkstalkers, SFEX, and SFIII. Growing up, I played a LOT of SFII at my local 7-11 and liquor store, but I lost interest after Champion Edition. They talk about &lt;a href="https://en.wikipedia.org/wiki/Street_Fighter_II:_Rainbow_Edition"&gt;&amp;ldquo;Rainbow Edition&amp;rdquo;&lt;/a&gt; a bit, which is kind of a blanket term for weirdo illegal romhacks that allowed crazy things like Ryu throwing fireballs in the air and made the game a lot faster. My 7-11 had one of these at one point. A guy from Capcom went and played one and dismissed it as totally broken from a balance perspective and that the novelty would wear off. However, once they went back to playing Champion Edition after playing the sped up hack and the Champion Edition felt super slow and boring. So they took that concept from those romhacks of faster speed but rebalanced the game and some of the moves which led to Hyper Fighting and Super Turbo. I loved how they went from &amp;ldquo;there&amp;rsquo;s nothing here, it&amp;rsquo;s junk&amp;rdquo; to &amp;ldquo;wait&amp;hellip; the speed it awesome&amp;rdquo; and it influenced the legit versions of the game.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="movies"&gt;Movies&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=XZvKEl_5bWE"&gt;Touching Sound: The Technika Documentary&lt;/a&gt; - I never played Technika but some folks I knew from the shmup scene were into it. This did a good job of capturing the fun of meetups and how people build communities around arcade games. Here in Seattle we used to have shmupmeets at people&amp;rsquo;s houses or weekly meetups at Full Tilt Ice Cream where we knew the arcade operator and could bring PCBs. It was always a good time, but sadly it slowed down and we stopped doing them. This made me miss those.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="gaming"&gt;Gaming&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=nz9oYjWX0GY"&gt;Special Demonstrations #17: Muchi Muchi Pork! ver1.01 (Harahara Mode - Aquas, 248.7mil ALL, Momo)&lt;/a&gt; - High level Muchi Muchi Pork play. &lt;a href="https://www.twitch.tv/aquas"&gt;Aquas&lt;/a&gt; is one of the best MMP players out there, so it&amp;rsquo;s great to see one of his runs get the Special Demonstrations treatment. Special Demonstrations is a &lt;a href="https://www.youtube.com/playlist?list=PLflZE1h4nYnDLF_GUT9JgmXDzjCCVCevu"&gt;series&lt;/a&gt; of shmup &amp;ldquo;superplays&amp;rdquo; by &lt;a href="https://twitter.com/IcarusFW"&gt;IcarusFW&lt;/a&gt; that have great production values and commentary on how different patterns and sections are approached. Lots of interesting tradeoffs discussed in the commentary, like when to take intentional deaths to get back resources, when to bomb, etc. This is one of the reasons why I love MMP as a shmup: to do well you don&amp;rsquo;t have to target perfection. Other shmups like Dodonpachi and Ikaruga demand that you play the game perfectly to score well, which is why those games have never really resonated with me. Muchi Muchi Pork leaves a lot of room for the player to make mistakes and form strategies on the fly given the resources they have.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="music"&gt;Music&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=AEMBE9SdT0g&amp;amp;list=OLAK5uy_lRv4T_pPHnmQHi6OwcCzU72GSusxha2_w"&gt;Brandee Younger - Brand New Life&lt;/a&gt; - Jazz Harp! I didn&amp;rsquo;t know I liked jazz harp!&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Stuff! 2023 Week 12</title><link>https://pdp.dev/posts/stuff-week12-2023/</link><pubDate>Mon, 27 Mar 2023 18:17:37 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/stuff-week12-2023/</guid><description>&lt;p&gt;Calling this &amp;ldquo;Stuff!&amp;rdquo; now instead of &amp;ldquo;Links!&amp;rdquo; since maybe I&amp;rsquo;ll put more than just links.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been sick for the last few days, not COVID but pretty crappy regardless. Lots of sleeping and taking it easy.&lt;/p&gt;
&lt;h1 id="gaming"&gt;Gaming&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.twitch.tv/retrolongplay"&gt;RetroLongplay on Twitch&lt;/a&gt; - While I was sick and fading in and out of napping, I had this running in the background. It&amp;rsquo;s a channel that just shows playthroughs of games on an endless loop. What I caught was of the TAS (tool assisted speedrun) variety, which use glitches and exploits to beat games as quickly as possible. Occasionally I&amp;rsquo;d wake up to something I cared about like Contra games but mostly it just served as background noise.&lt;/li&gt;
&lt;li&gt;Resident Evil 4 remake came out and I blew the dust off my gaming PC, got all the updates it needed which took like 4 reboots, downloaded the game and started playing it. All that updating ate into my play time, then I got sick. Looking forward to spending more time with it. When the original came out on GameCube in 2005 I had just gotten dumped and I spent a lot of time playing it. Soon after I beat it I met my wife, so RE4 will always hold a special spot in my heart.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="biking"&gt;Biking&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=elRP7Nccc-E"&gt;Chilly Hilly 2023&lt;/a&gt; - Someday I want to bike something like this. A long time ago, pre-COVID and pre-parenting I &lt;a href="https://pdp.dev/posts/bike-vashon/"&gt;biked to the Vashon ferry&lt;/a&gt; and rode around, but I need to put in some work to get back to that level. &lt;a href="https://www.youtube.com/@bobco85"&gt;Bob&amp;rsquo;s channel&lt;/a&gt; is a great resource for Seattle bikers as he shows different routes and key junction points.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;ve had my Vanmoof S3 e-Bike for almost 2 years and it&amp;rsquo;s been fantastic. I&amp;rsquo;ve been going into the office at least 3 days a week lately and I ride it everyday. It&amp;rsquo;s a great way to commute, I can get to the office in about 20 minutes and not be sweaty! I really think e-Bikes are a game changer for city commuting.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="music"&gt;Music&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=HyLvOjpP-Aw"&gt;Wipers - Taking Too Long&lt;/a&gt; - this song rules.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=LTAWpU8npX8"&gt;Spacemen 3 - It&amp;rsquo;s Allright&lt;/a&gt; - Cover of a &lt;a href="https://www.youtube.com/watch?v=gjTra-2OF08"&gt;Bo Diddley song&lt;/a&gt; and Spacemen 3 are how I learned that Bo Diddley rules, before I just thought he was some old rock guy. So wrong! &amp;ldquo;Taking Drugs to Make Music to Take Drugs to&amp;rdquo; is a genius album title, the Spacemen apparently like drugs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="podcasts"&gt;Podcasts&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;The Dollop - Rickey Henderson &lt;a href="https://omny.fm/shows/the-dollop-with-dave-anthony-and-gareth-reynolds/574-rickey-henderson-part-one"&gt;Part One&lt;/a&gt; and &lt;a href="https://omny.fm/shows/the-dollop-with-dave-anthony-and-gareth-reynolds/575-rickey-henderson-part-two"&gt;Part Two&lt;/a&gt; - I was SO excited when I saw The Dollop was covering Rickey Henderson. Growing up, I &lt;em&gt;idolized&lt;/em&gt; Rickey big time. When I played little league I had those same Mizuno batting gloves he wore. A friend of mine tried to copy him by sliding head first into a base and ended up breaking his arm. I didn&amp;rsquo;t know anything about his backstory or how much the league screwed with him so this was a great listen.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/rickey_hu_54d76fc27b451d8c.jpg" alt="Rickey Henderson" width="768" height="512" /&gt;
&lt;figcaption class="center" &gt;Rickey Henderson and his batting gloves&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Links! 2023 Week 11</title><link>https://pdp.dev/posts/links-week11-2023/</link><pubDate>Mon, 20 Mar 2023 12:10:56 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/links-week11-2023/</guid><description>&lt;h1 id="music"&gt;Music&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EtapU5nI6G4"&gt;Nirvana&amp;rsquo;s Nevermind but with the Super Mario 64 soundfont&lt;/a&gt; - Genius for the cover art alone. My favorites are &amp;ldquo;Breed&amp;rdquo; and &amp;ldquo;Drain You&amp;rdquo;. The Mario scream at the end of the &amp;ldquo;Drain You&amp;rdquo; noise section is fabulous.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://davestrickson.blogspot.com/2020/05/john-peel-sessions.html"&gt;John Peel Sessions&lt;/a&gt; - Great resource for a lot of great music. Oddly it&amp;rsquo;s missing this &lt;a href="https://www.youtube.com/watch?v=kPAiOLd-0f0"&gt;1983 Session from The Fall&lt;/a&gt; which is top shelf. Two drummers! The version of &lt;a href="https://www.youtube.com/watch?v=kPAiOLd-0f0&amp;amp;t=1462s"&gt;Eat Y&amp;rsquo;self Fitter&lt;/a&gt; is great: &amp;ldquo;John Peel picked this song as one of his Desert Island Discs; when Peel had first heard the track – in a session the band recorded in March 1983 – he stated on air that he had fainted and his producer, John Walters, had had to resuscitate him.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=yE-6xoh1khg"&gt;The Fall - Live on the Tube 1983&lt;/a&gt; - Might as well throw this in too.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=VeoeSCNx-fA"&gt;Hildur Guðnadóttir - What&amp;rsquo;s In My Bag?&lt;/a&gt; - I don&amp;rsquo;t know her work but she discusses a lot of interesting music!&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="gaming"&gt;Gaming&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;I&amp;rsquo;m super hyped for the Resident Evil 4 remake to come out this Friday. Preordered on Steam!&lt;/li&gt;
&lt;li&gt;I kinda want a &lt;a href="https://www.redbubble.com/shop/psygnosis+t-shirts"&gt;Psygnosis T-shirt&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="misc"&gt;Misc&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://podbay.fm/p/knowledge-fight/e/1504242710"&gt;Knowledge Fight - Meet Captain Mark Richards&lt;/a&gt; - A continuation of the goofball that was discussed on &lt;a href="https://www.youtube.com/watch?v=G-Ape0zUnT4&amp;amp;t=455s"&gt;the episode of The Dollop&lt;/a&gt; I mentioned last week. So that guy, while being in jail for murder, got married and is, again while being in jail for murder, is claiming to be a captain in the Secret Space Program. Learn about space raptors and how they&amp;rsquo;re at war with space reptilians.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Good Shmup Timing</title><link>https://pdp.dev/posts/gold-pork/</link><pubDate>Sat, 18 Mar 2023 18:43:01 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gold-pork/</guid><description>&lt;p&gt;When you blow up bosses in Muchi Muchi Pork with lard shot, all their bullets turn into medals that you can vacuum up. The more bullets on the screen the better, so you&amp;rsquo;ve got to make things hard for yourself to get those big points. You don&amp;rsquo;t know how much health a boss has left so it can be hard to get the timing right because you might run out of lard before you&amp;rsquo;ve damaged the boss enough. Resource management! When you get it right and you&amp;rsquo;re showered with medals, its &lt;em&gt;soooo satisfying&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This is the midboss of stage 2. Getting the timing right on this one is pretty easy, you can just attack it and use music cues to time when to switch over to lard.&lt;/p&gt;
&lt;video autoplay loop muted playsinline width="512" &gt;
&lt;source src="https://pdp.dev/videos/medals.mp4" type="video/mp4"&gt;
&lt;p&gt;Your browser doesn't support this embedded video.&lt;/p&gt;
&lt;/video&gt;
&lt;p&gt;This is from the stage 4 boss. I don&amp;rsquo;t know how to time this right every time, but here a video of me getting lucky.&lt;/p&gt;
&lt;video autoplay loop muted playsinline width="512" &gt;
&lt;source src="https://pdp.dev/videos/st4gold.mp4" type="video/mp4"&gt;
&lt;p&gt;Your browser doesn't support this embedded video.&lt;/p&gt;
&lt;/video&gt;
&lt;p&gt;The main point of this post was so I could play with looping videos on here.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# -an removes audio&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ffmpeg -i ~/Desktop/st4gold.mp4 -movflags faststart -pix_fmt yuv420p -vf &lt;span class="s2"&gt;&amp;#34;scale=240:320&amp;#34;&lt;/span&gt; -an st4gold.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then the HTML comes out to be:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;video&lt;/span&gt; &lt;span class="na"&gt;autoplay&lt;/span&gt; &lt;span class="na"&gt;loop&lt;/span&gt; &lt;span class="na"&gt;muted&lt;/span&gt; &lt;span class="na"&gt;playsinline&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;512&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;source&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/videos/medals.mp4&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;video/mp4&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Your browser doesn&amp;#39;t support this embedded video.&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;video&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Links! 2023 Week 10</title><link>https://pdp.dev/posts/links-week10-2023/</link><pubDate>Sun, 12 Mar 2023 20:04:59 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/links-week10-2023/</guid><description>&lt;h1 id="music"&gt;Music&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=V46EiHI-TdU"&gt;DE LA SOUL Paying Homage To David &amp;lsquo;Trugoy&amp;rsquo; Jolicoeur &amp;amp; Speaks on Their Catalogue Finally Streaming&lt;/a&gt; - Classic De La Soul albums are finally on streaming platforms. This is a rare proper use of &amp;ldquo;FINALLY&amp;rdquo;. One of their members passed away recently, Dave aka Plug Two aka Trugoy the Dove which is sad. This interview with the two remaining members is great, and the part 14 minutes in where they both remember and perform one of Dave&amp;rsquo;s early rhymes was really touching and sweet.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="computer-stuff"&gt;Computer Stuff&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6W-qb_jHRhA"&gt;Evans &amp;amp; Sutherland CT5 Flight Simulator (1981)&lt;/a&gt; - Early 1981 professional level flight sim. For 1981 that&amp;rsquo;s amazing. Some details about the system are &lt;a href="https://forum.beyond3d.com/threads/ct5-evans-sutherland-simulator-how-did-it-work.57664/"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="misc"&gt;Misc&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=G-Ape0zUnT4&amp;amp;t=455s"&gt;The Dollop #9 - The Pendragon of Marin&lt;/a&gt; - &amp;hellip; or how I learned to stop worrying and love a laser on top of Mt. Tam.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>MAME Lua Scripting</title><link>https://pdp.dev/posts/mame-lua/</link><pubDate>Fri, 10 Mar 2023 15:29:16 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mame-lua/</guid><description>&lt;p&gt;I previously wrote a post about the &lt;a href="https://pdp.dev/posts/mame-debugger-intro/"&gt;MAME Debugger&lt;/a&gt; which showed how to find where certain values are stored in a game&amp;rsquo;s memory.&lt;/p&gt;
&lt;p&gt;MAME also has a &lt;a href="https://docs.mamedev.org/techspecs/luaengine.html"&gt;Lua Scripting Engine&lt;/a&gt; that you can use to display memory values onscreen and do all kinds of cool stuff. I&amp;rsquo;ll again use Muchi Muchi Pork as an example.&lt;/p&gt;
&lt;p&gt;In Muchi Muchi Pork, you build up your &lt;em&gt;medal value&lt;/em&gt; by blowing up enemies with your lard shot. Each time you collect medals of a certain value, the value increases. It starts at &lt;code&gt;100&lt;/code&gt; and increases by hundreds up to &lt;code&gt;1000&lt;/code&gt;, then it increases by thousands up to a maximum of &lt;code&gt;10000&lt;/code&gt;. So the progression is: &lt;code&gt;100&lt;/code&gt;, &lt;code&gt;200&lt;/code&gt;, &amp;hellip;, &lt;code&gt;900&lt;/code&gt;, &lt;code&gt;1000&lt;/code&gt;, &lt;code&gt;2000&lt;/code&gt;, &amp;hellip;, &lt;code&gt;10000&lt;/code&gt;. Building up your medal value is critical to scoring well in the game. If you let medals drop off the screen without collecting them, your medal value goes down by a factor of &lt;code&gt;10&lt;/code&gt;. Medal value of &lt;code&gt;10000&lt;/code&gt; and you drop, medals are now worth &lt;code&gt;1000&lt;/code&gt;. Drop again and you&amp;rsquo;re all the way back to &lt;code&gt;100&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The medal values are shown on the medals themselves, but if there aren&amp;rsquo;t any on-screen then you don&amp;rsquo;t know what your medal value is. There are many cases where I&amp;rsquo;ve thought &amp;lsquo;oh shit I dropped medals&amp;rsquo; and it turns out I didn&amp;rsquo;t, or I did drop and didn&amp;rsquo;t know it. What if we could always show the value on screen?&lt;/p&gt;
&lt;p&gt;Well&amp;hellip; you can! Using the &lt;a href="https://pdp.dev/posts/mame-debugger-intro/"&gt;debugger&lt;/a&gt; I found the medal value to live in a byte at &lt;code&gt;0xC53F4A7&lt;/code&gt;. Here&amp;rsquo;s a LUA script that will always show the value on screen:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cpu&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;manager.machine&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;devices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;:maincpu&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;mem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cpu.spaces&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;program&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;manager.machine&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;screens&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;:screen&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;draw_hud&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- medal_val ranges from 0 - 18&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- 0 = 100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- 1 = 200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- 9 = 1,000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- 10 = 2,000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- 18 = 10,000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;medal_val&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mem&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;read_u8&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0xC53F4A7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;medal_display&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;medal_val&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;if&lt;/span&gt; &lt;span class="n"&gt;medal_val&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="kr"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;medal_display&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;medal_val&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;medal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;string.format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;NEXT MEDAL : %d&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;medal_display&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Draw the text RED (0xffff0000) on BLACK (0xff000000)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Format: 0xaarrggbb where a = alpha,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;draw_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;medal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mh"&gt;0xffff0000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mh"&gt;0xff000000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;emu.register_frame_done&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;draw_hud&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;frame&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save that to a file, for example &lt;code&gt;mmpork.medals.lua&lt;/code&gt; and then start MAME like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./mame mmpork -autoboot_script mmpork.medals.lua
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now you&amp;rsquo;ve got your medal values on-screen all the time!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/mmpork.medals_hu_ffd99a97154ae614.jpg" alt="Medal Value is now shown in the upper left!" width="768" height="1007" /&gt;
&lt;figcaption class="center" &gt;Medal Value is now shown in the upper left!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This is helpful, but kinda ugly. There&amp;rsquo;s also a bunch of other data that would be helpful, like boss HP. Well&amp;hellip; stay tuned!&lt;/p&gt;
&lt;p&gt;This post is part of a 3-part series:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://pdp.dev/posts/mame-debugger-intro"&gt;MAME Debugger Intro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;You are here: MAME Lua Scripting&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pdp.dev/posts/muchi-muchi-pork-mame-overlay"&gt;Muchi Muchi Pork MAME Overlay&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Links! 2023 Week 9</title><link>https://pdp.dev/posts/links-week9-2023/</link><pubDate>Sun, 05 Mar 2023 12:29:45 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/links-week9-2023/</guid><description>&lt;h2 id="music"&gt;Music&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=f-YaxdTKR1w"&gt;MC Hammer Was Uncomfortably Bricked Up In “Pumps and a Bump” | The Danny Brown Show Highlight&lt;/a&gt; - One of the funniest things I&amp;rsquo;ve seen in a while. First off, anyone who tries to say they didn&amp;rsquo;t like MC Hammer as a kid is lying. I saw that video of you performing &amp;lsquo;2 Legit 2 Quit&amp;rsquo; at your 5th grade talent show. But this&amp;hellip; this is late-era Hammer. I had no idea. Also, it looks like this video was filmed at his &lt;a href="https://virtualglobetrotting.com/map/m-c-hammers-house-former/view/google/"&gt;Fremont, CA mansion&lt;/a&gt;. &lt;strong&gt;MY HOMETOWN!!!&lt;/strong&gt; 🦓 🦓 🦓 🦓&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=GYbcjk0uZWU"&gt;So Wassup? Episode 51 | Gang Starr - &amp;ldquo;Brainstorm&amp;rdquo;&lt;/a&gt; - Brainstorm is one of my favorite Gang Starr songs so it&amp;rsquo;s great to see it covered on &lt;a href="https://www.youtube.com/playlist?list=PLWDrXC9_8Kmgwu2zeWdDU1n6fPqIh98Xr"&gt;So Wassup?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="gaming"&gt;Gaming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.timeextension.com/news/2023/03/iconic-all-your-base-meme-gets-added-to-the-arcade-version-of-zero-wing"&gt;Iconic &amp;lsquo;All Your Base&amp;rsquo; Meme Gets Added To The Arcade Version Of Zero Wing&lt;/a&gt; - Strange that they fixed some of the grammatical weirdness. My favorite in that was always &amp;ldquo;somebody set up us the bomb&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=FOkGnNujLfo"&gt;Donald Trump and Joe Biden get into heated argument about Shmups&lt;/a&gt; - This is pretty much how all shmup discussions go. But really Joe, &lt;a href="https://focusattack.com/controls/joysticks/joystick-accessories/battop-handles/"&gt;battop&lt;/a&gt;?!&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links! 2023 Week 8</title><link>https://pdp.dev/posts/links-week8-2023/</link><pubDate>Sun, 26 Feb 2023 10:40:52 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/links-week8-2023/</guid><description>&lt;p&gt;I missed week 7 since I was visiting family.&lt;/p&gt;
&lt;h2 id="music"&gt;Music&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=s17NVJ_IHfo&amp;amp;list=OLAK5uy_kd1LFhe9oU1my0P9ODouNuJLmQ7Kx9FdM"&gt;Tony Allen and Hugh Masekela - Rejoice&lt;/a&gt; - Wow, this is good. I don&amp;rsquo;t know anything about &amp;ldquo;afrobeat&amp;rdquo;, I know who Fela Kuti &lt;em&gt;is&lt;/em&gt; but I know zero of his music or that genre. I&amp;rsquo;m going to have to learn more! I found out about this from the &lt;a href="https://www.youtube.com/watch?v=dmaNvzBClUc"&gt;Makaya McCraven episode of &amp;ldquo;What&amp;rsquo;s in my Bag&amp;rdquo;&lt;/a&gt;&amp;hellip; I don&amp;rsquo;t know that artist either but I always find good music from that channel.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="movies"&gt;Movies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Lupin_III:_The_First"&gt;Lupin III: The First&lt;/a&gt; - This was fun, I learned about it from the &lt;a href="https://www.youtube.com/@AccentedCinema"&gt;Accented Cinema&lt;/a&gt; channel on Youtube.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=Ske8WQB_jHw"&gt;Nicolae Ceaușescu: The Dracula of Being A Dick&lt;/a&gt; - Four part series from &lt;a href="https://www.youtube.com/@BehindTheBastards"&gt;Behind the Bastards&lt;/a&gt; podcast. Ceaușescu was a Romanian dictator until he was overthrown and shot on Christmas Day 1989. I&amp;rsquo;ve only made it through part one so far but it&amp;rsquo;s great so far.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links! 2023 Week 6</title><link>https://pdp.dev/posts/links-2023-week-6/</link><pubDate>Fri, 17 Feb 2023 09:40:20 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/links-2023-week-6/</guid><description>&lt;p&gt;Better late than never. Short one.&lt;/p&gt;
&lt;h1 id="music"&gt;Music&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=hVjMgFP1hB8"&gt;So Wassup? Episode 49 | Gang Starr - &amp;ldquo;You Know My Steez&amp;rdquo;&lt;/a&gt; - This series from DJ Premier is excellent. He covers and breaks down songs he produced and adds background and stories. For example, I didn&amp;rsquo;t know he and Guru were so close with &lt;a href="https://www.youtube.com/watch?v=Zy8JE8xVwVc"&gt;Branford Marsalis&lt;/a&gt;, or that I completely missed out on &lt;a href="https://www.youtube.com/watch?v=nLsu7hpB8IY"&gt;Group Home&lt;/a&gt;. The video for &amp;ldquo;You Know My Steez&amp;rdquo; is inspired by THX 1138? Wild!&lt;/li&gt;
&lt;li&gt;RIP to Trugoy the Dove from De La Soul. &amp;ldquo;Trugoy&amp;rdquo; is &amp;ldquo;yogurt&amp;rdquo; spelled backwards&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="arcadeshmups"&gt;Arcade/Shmups&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://buffis.com/research/more-cv1000-research-now-featuring-clipping/"&gt;More CV1000 Research (now featuring clipping!)&lt;/a&gt; - Buffi continues to iterate on CV1000 MAME emulation improvements. &lt;a href="https://github.com/mamedev/mame/commit/5944c4dce9169097c33d05141223e44adb659f28"&gt;His branch of MAME&lt;/a&gt; has more improvements based on these new findings, and these are getting closer to &lt;a href="https://github.com/mamedev/mame/pull/10849"&gt;getting upstreamed&lt;/a&gt;. I built his changes and played some Muchi Muchi Pork, before there was basically no slowdown most of the time but now there is at least some in the expected places. Great to see progress on this!&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links! 2023 Week 5</title><link>https://pdp.dev/posts/links-week5-2023/</link><pubDate>Sun, 05 Feb 2023 09:01:43 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/links-week5-2023/</guid><description>&lt;h2 id="music"&gt;Music&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=BqWpIHbNqx0"&gt;Hank Shocklee talk&lt;/a&gt; - Hank Shocklee is a genius, he&amp;rsquo;s part of &lt;a href="https://en.wikipedia.org/wiki/The_Bomb_Squad"&gt;The Bomb Squad&lt;/a&gt; who did a lot of production for Public Enemy, the first Ice Cube solo album, etc. &amp;ldquo;I want shit that when you&amp;rsquo;re walking down the street you feel like you&amp;rsquo;re the most baddest motherfucker on the planet.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=Bh3JjAgA_Os"&gt;Bo Diddley - You Can&amp;rsquo;t Judge a Book by the Cover - Live 1962&lt;/a&gt; - Bo Diddley rules.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pbs.org/video/pavement-eceupd/"&gt;Pavement on Austin City Limits&lt;/a&gt; - We&amp;rsquo;re all getting old.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="movies"&gt;Movies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=Z1PCtIaM_GQ"&gt;Jackie Chan - How to do Action Comedy&lt;/a&gt; - &amp;ldquo;That scene took 120 takes and people say &amp;lsquo;Wow, Jackies good&amp;rsquo; &amp;hellip; it&amp;rsquo;s not good, you can do it! Except, do you have the patience or not?&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=v_suy7gARps"&gt;&amp;ldquo;2001: A Space Odyssey&amp;rdquo; directed by George Lucas?&lt;/a&gt; - pretty funny and silly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.dosgameclub.com"&gt;DOS Game Club&lt;/a&gt; - Monthly podcast where they pick a game, play it, and then talk about it. Lots of memories in these games, if you played DOS games I&amp;rsquo;m sure they discuss something you know.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://restofworld.org/2023/foxconn-iphone-factory-china/"&gt;&amp;ldquo;iPhones are made in hell&amp;rdquo;&lt;/a&gt; - Goddamn: “Factories might not give you a great life,” Chen said. “But at least you won’t starve.”&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>JAMMA Input Display in Rust</title><link>https://pdp.dev/posts/arcade-buttons-rust/</link><pubDate>Sat, 04 Feb 2023 12:09:43 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/arcade-buttons-rust/</guid><description>&lt;p&gt;I like Rust, the programming language. I&amp;rsquo;ve been lucky enough to use it at work but I am by no means a master. To get a little more comfy cozy, I decided to re-write my &lt;a href="https://pdp.dev/posts/jamma-input-display/"&gt;JAMMA Input Display&lt;/a&gt; in Rust.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/wnka/arcadebuttons-rust"&gt;You can find the code here on GitHub.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It was really easy thanks to a few Rust crates:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://docs.rs/tokio-gpiod/latest/tokio_gpiod/"&gt;tokio_gpiod&lt;/a&gt; - Uses the &lt;a href="https://tokio.rs"&gt;Tokio async runtime&lt;/a&gt; to provide an easy way to listen to the GPIO pins on a Raspberry Pi.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.rs/warp/latest/warp/"&gt;warp&lt;/a&gt; - A web server framework that supports WebSockets for sending the inputs received over GPIO to the webpage display.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I wrote the &lt;a href="https://github.com/wnka/arcadebuttons-node-pi"&gt;original Node.js version&lt;/a&gt; back in 2014, crazy that it&amp;rsquo;s almost been 10 years!&lt;/p&gt;
&lt;h2 id="what-it-looks-like"&gt;What it looks like&lt;/h2&gt;
&lt;video autoplay loop muted playsinline width="440" height="234"&gt;
&lt;source src="https://pdp.dev/videos/input_display_rust.mp4" type="video/mp4"&gt;
&lt;p&gt;Your browser doesn't support this embedded video.&lt;/p&gt;
&lt;/video&gt;
&lt;p&gt;I didn&amp;rsquo;t change the appearance from the Node.js version, but I did add the ability to label the buttons using query parameters to the webpage. Just open the webpage like so to label the buttons:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http://localhost:6528/?b1label=SHOT&amp;amp;b2label=FOCUS&amp;amp;b3label=BOMB&amp;amp;b4label=AUTO
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here&amp;rsquo;s what it looks like in the physical world:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0939_hu_b266bf95decdcd71.jpg" alt="The Raspberry Pi sitting under the control panel of my Astro City cabinet." width="768" height="576" /&gt;
&lt;figcaption class="center" &gt;The Raspberry Pi sitting under the control panel of my Astro City cabinet.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="interesting-code-bits"&gt;Interesting code bits&lt;/h2&gt;
&lt;p&gt;This is what the listener of the GPIO pins does. When it reads a GPIO event, it pushes a two-character message over a channel that then sends to all the attached websocket clients.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-rust" data-lang="rust"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Broadcast updates from GPIO to the thing that sends to clients
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tokio&lt;/span&gt;::&lt;span class="n"&gt;task&lt;/span&gt;::&lt;span class="n"&gt;spawn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;move&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// open chip. why gpiochip0? not sure! but it works!
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// at least it works on an RPi4b
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Chip&lt;/span&gt;::&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;gpiochip0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unwrap&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;opts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Options&lt;/span&gt;::&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// configure lines offsets
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;edge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;EdgeDetect&lt;/span&gt;::&lt;span class="n"&gt;Both&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// We want events for both button up and button down
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;mut&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chip&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request_lines&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opts&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unwrap&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;Ok&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_event&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// the &amp;#39;line&amp;#39; matches the index of the Options::input
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// array above. So, pin 16, which is up, is index 0.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;match&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;u&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// up
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;d&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// down
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;l&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// left
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;r&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// right
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// button 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// button 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// button 3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;4&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// button 4
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="fm"&gt;panic!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Unknown line&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;match&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;edge&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tokio_gpiod&lt;/span&gt;::&lt;span class="n"&gt;Edge&lt;/span&gt;::&lt;span class="n"&gt;Falling&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;d&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// pressed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tokio_gpiod&lt;/span&gt;::&lt;span class="n"&gt;Edge&lt;/span&gt;::&lt;span class="n"&gt;Rising&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;u&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// not pressed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// We send a 2 character message over the websocket, with the input
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// (i.e. &amp;#39;l&amp;#39; for left on the joystick) and its state (i.e. &amp;#39;d&amp;#39; for
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// pressed).
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;//
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// So, push the joystick to the left = &amp;#34;ld&amp;#34;, let go = &amp;#34;lu&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gpio_tx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="fm"&gt;format!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;{}{}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="n"&gt;unwrap_or_else&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="fm"&gt;eprintln!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;websocket send error: &lt;/span&gt;&lt;span class="si"&gt;{}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The JavaScript on the other side that receives that data over the websocket is also pretty simple. Based on the message that comes over the wire, we manipulate the &lt;code&gt;class&lt;/code&gt; attributes on the joystick or button elements.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;updateJoystick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;switchName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;d&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;joystickPosition&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;switchName&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;joystickPosition&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;switchName&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;classNames&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;joystick&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;joystickPosition&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;joystickPosition&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="nx"&gt;classNames&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;joystick&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;className&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;classNames&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;updateButton&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;d&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;className&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;button pressed&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;className&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;button&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onmessage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;updateButton&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;button1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;2&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;updateButton&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;button2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;updateButton&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;button3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;4&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;updateButton&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;button4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;updateJoystick&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="in-closing"&gt;In closing&lt;/h2&gt;
&lt;p&gt;The Rust version has a smaller memory footprint and lower CPU usage than the Node.js version, but that really doesn&amp;rsquo;t matter. We&amp;rsquo;re talking about processing inputs at a human speed so either one is able to keep up just fine. However, it was a fun and easy project to port this over to Rust.&lt;/p&gt;
&lt;p&gt;One of the things I love most about Rust is &lt;a href="https://www.rust-lang.org/community"&gt;the community&lt;/a&gt; and the &lt;a href="https://crates.io"&gt;crates ecosystem&lt;/a&gt;. There&amp;rsquo;s a lot of help out there!&lt;/p&gt;</description></item><item><title>Links! 2023 Week 4</title><link>https://pdp.dev/posts/links-for-week4-of-2023/</link><pubDate>Sun, 29 Jan 2023 08:27:18 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/links-for-week4-of-2023/</guid><description>&lt;p&gt;Every week (I mean&amp;hellip; maybe every week) I&amp;rsquo;m going to share links that I like.&lt;/p&gt;
&lt;h2 id="music"&gt;Music&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=OLAK5uy_kf9MQhrgrGUwLg2f2eU9mhxg3PJRvr5w8"&gt;Folk Implosion - Take a Look Inside (Album)&lt;/a&gt; - I listened to this a lot in high school, revisiting it and it is still super good. 14 songs in 22 minutes.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=fe-felI_tew"&gt;my bloody valentine - thorn (live)&lt;/a&gt; - What a teeny venue, that must have been something. This is before &amp;ldquo;Isn&amp;rsquo;t Anything&amp;rdquo; came out, this song is from the &lt;a href="https://en.wikipedia.org/wiki/You_Made_Me_Realise"&gt;You Made Me Realize EP&lt;/a&gt;. I saw mbv in 2008 (I think) and it was one of the loudest things I had ever heard, the loudest being a Top Fuel Drag Race.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=oeb5LdAyLC8"&gt;Smells Like Teen Spirit by a shovel&lt;/a&gt; - Astonishing!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=0lk4npaHMV4"&gt;Arabian Dub&lt;/a&gt; - So damn good, great for testing your bass capabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="arcadevideo-games"&gt;Arcade/Video Games&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://buffis.com/research/cv1000-cpu-slowdown-investigated/"&gt;CV1000 CPU Slowdown investigated&lt;/a&gt; - The CV1000 is the arcade board that Cave shmups run on. One of the things of importance when emulating those games is accurate slowdown. Those games push tons of bullets onto the screen, and the game naturally slows down due to the CPU not being able to handle everything in the time it takes to draw a frame. The slowdown helps you dodge the more difficult bullet patterns. &lt;em&gt;This is totally by design.&lt;/em&gt; MAME can emulate these games, but the slowdown is all wrong which makes the games suuuuper hard. Part of the thrill is when things get so nuts the game can&amp;rsquo;t handle it, which helps &lt;em&gt;you&lt;/em&gt; handle it and feel like a goddamn champion. Buffi is doing a bunch of research into figuring out how to make things more accurate. He submitted a &lt;a href="https://github.com/buffis/mamefork/commit/83a6f1397e4638b001df42df42cbabb247a622eb"&gt;patch set to MAME&lt;/a&gt; which I tried out and it definitely improves things.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=zpPwpNPPQmc&amp;amp;t=175s"&gt;Microsoft Clippy in a Shmup&lt;/a&gt; - From &lt;a href="https://team-xf.itch.io/xeno-fighters-r"&gt;Xeno Fighters R&lt;/a&gt;, a freeware game. &amp;ldquo;It looks like you are trying to die a painful death, would you like help?&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://omny.fm/shows/the-dollop-with-dave-anthony-and-gareth-reynolds/567-the-first-presidents-slave-ona-judge"&gt;The Dollop - The First President&amp;rsquo;s Slave: Ona Judge&lt;/a&gt; - What an amazing story. George Washington, the first President of the United States, was very concerned about keeping this slave. Gross.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>MAME Debugger Intro</title><link>https://pdp.dev/posts/mame-debugger-intro/</link><pubDate>Tue, 17 Jan 2023 19:48:30 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mame-debugger-intro/</guid><description>&lt;p&gt;&lt;a href="https://www.mamedev.org"&gt;MAME&lt;/a&gt;, the arcade machine emulator, has a debugger that allows you to poke around memory and manipulate values. I&amp;rsquo;ve always wanted to play around with it but didn&amp;rsquo;t really know what to do or how to do it.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m going to take a toy problem and try to solve it with the MAME debugger. I&amp;rsquo;ll use Muchi Muchi Pork since it&amp;rsquo;s one of my favorite shmups. You can see me clear the game in one credit &lt;a href="https://pdp.dev/posts/mmp-pb-135-mil/"&gt;here&lt;/a&gt; and I write more about it in general &lt;a href="https://pdp.dev/posts/muchi-muchi-pork-pcb/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="cheats"&gt;Cheats&lt;/h2&gt;
&lt;p&gt;MAME has a cheat system, which basically is an XML file that tells the emulator &amp;ldquo;hey for every loop in the game logic, set these memory locations in this way.&amp;rdquo; If you want infinite lives, find where the counter for lives is stored and always set it to something &amp;gt; 0. The counter won&amp;rsquo;t decrement when you die and game will never think you have reached zero lives. Here&amp;rsquo;s an example for infinite lives in Muchi Muchi Pork, which I found online:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;mamecheat&lt;/span&gt; &lt;span class="na"&gt;version=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;cheat&lt;/span&gt; &lt;span class="na"&gt;desc=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;P1 Infinite Lives&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;script&lt;/span&gt; &lt;span class="na"&gt;state=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;run&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;action&amp;gt;&lt;/span&gt;maincpu.pb@C510D2B=05&lt;span class="nt"&gt;&amp;lt;/action&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/cheat&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/mamecheat&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is saying &amp;ldquo;set memory location &lt;code&gt;0x0C510D2B&lt;/code&gt; to &lt;code&gt;5&lt;/code&gt; every frame&amp;rdquo;. If you put this in a file at &lt;code&gt;&amp;lt;mame dir&amp;gt;/cheat/mmpork.xml&lt;/code&gt; and then run MAME with cheats enabled (&lt;code&gt;./mame mmpork -cheat&lt;/code&gt;), you can pull up the cheat menu (hit TAB) and turn this on and you&amp;rsquo;ve got infinite lives. Nice job destroying any fun you might have with the game.&lt;/p&gt;
&lt;p&gt;You find these memory locations using the MAME debugger. I&amp;rsquo;m going to walk through the tools that I found the most helpful.&lt;/p&gt;
&lt;h2 id="toy-problem"&gt;Toy problem&lt;/h2&gt;
&lt;p&gt;When you insert a coin in Muchi Muchi Pork, there&amp;rsquo;s timer that ticks down from 20 seconds that will automatically start your game. These timers are to prevent screen burn in since the image displayed on &amp;ldquo;press start&amp;rdquo; screen is static. Arcade operators also want any credits left in the machine to drain off so people will have to pay when they walk up.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start MAME with the debugger. This is super easy, just run &lt;code&gt;./mame mmpork -debug&lt;/code&gt;. You&amp;rsquo;ll be greeted with a console where you can run commands. You can also open windows to examine memory (on Mac this is ⌘-D). The game will start with an initial breakpoint, so type &lt;code&gt;go&lt;/code&gt; in the console to run the game. You&amp;rsquo;ll see different machine register states, the program counter, etc.&lt;/p&gt;
&lt;p&gt;Let the game boot up and insert a coin to get to the countdown screen.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/mmpork-debug_hu_c8a77079f7070966.jpg" alt="The MAME Debugger" width="768" height="500" /&gt;
&lt;figcaption class="center" &gt;The Muchi Muchi Pork title screen in the MAME debugger. Note the timer under 'PRESS START' says 19:29.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Then in the debugger:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;cheatinit uw&lt;/code&gt; which initializes the cheat search to look for &lt;strong&gt;u&lt;/strong&gt;nsigned &lt;strong&gt;w&lt;/strong&gt;ords (that&amp;rsquo;s the &lt;code&gt;uw&lt;/code&gt;) because I assume that timer is stored in a word, or 16-bits. Since that timer ticks hundredths of a second, it wouldn&amp;rsquo;t fit in a byte.&lt;/li&gt;
&lt;li&gt;Advance the game a frame using &lt;code&gt;gvblank&lt;/code&gt;, which can be shortened the just &lt;code&gt;gv&lt;/code&gt;. This runs the game for a VBLANK, which is the &lt;a href="https://en.wikipedia.org/wiki/Vertical_blanking_interval"&gt;vertical blanking interval&lt;/a&gt;, and then breaks. Think of it as a frame advance.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;cheatnext de,1&lt;/code&gt; to tell the cheat search to narrow down all the memory locations you started with to something that &lt;em&gt;decremented&lt;/em&gt; by 1. I&amp;rsquo;m just assuming that this timer ticks down by a value of 1. You can also use &lt;code&gt;cheatnext de&lt;/code&gt; which will narrow down by locations that got decremented by any amount.&lt;/li&gt;
&lt;li&gt;Repeat, &lt;code&gt;gv&lt;/code&gt; and &lt;code&gt;cheatnext de,1&lt;/code&gt; until the locations narrow down to something manageable.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Below is from the debugger console in MAME, the &lt;code&gt;#&lt;/code&gt; are comments added by me:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MAME debugger version 0.246 (mame0246)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Currently targeting mmpork (Muchi Muchi Pork! (2007/ 4/17 MASTER VER.))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;go # start the game, let it boot, insert a coin.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;gv # get the debugger to stop.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Stopped at VBLANK
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;cheatinit uw # Initialize the cheat search.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;12582912 cheat locations initialized for Hitachi SH-3 (big) &amp;#39;:maincpu&amp;#39; program space
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;gv # frame advance
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Stopped at VBLANK
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;cheatnext de,1 # narrow things down
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address=0C4841A2 Start=1032 Current=1031
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address=0C4857C6 Start=0493 Current=0492
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address=0C4C12DE Start=0015 Current=0014
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address=0C72F0FE Start=00CA Current=00C9
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address=0C72FC4E Start=0001 Current=0000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5 cheats found # wow narrowed to 5 in one frame! let see if it keeps narrowing
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;gv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Stopped at VBLANK
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;cheatnext de,1 # narrow again
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address=0C4841A2 Start=1032 Current=1030
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address=0C4857C6 Start=0493 Current=0491
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Address=0C4C12DE Start=0015 Current=0013
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3 cheats found # De La Soul told us that 3 is the magic number, so we can stop here
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;cheatlist candidates.xml # write these locations to a file candidates.xml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The output file &lt;code&gt;candidates.xml&lt;/code&gt; looks like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;cheat&lt;/span&gt; &lt;span class="na"&gt;desc=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Possibility 1: 0C4841A2 (1030)&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;script&lt;/span&gt; &lt;span class="na"&gt;state=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;run&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;action&amp;gt;&lt;/span&gt;:maincpu.pw@0x0C4841A2=0x1032&lt;span class="nt"&gt;&amp;lt;/action&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/cheat&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;cheat&lt;/span&gt; &lt;span class="na"&gt;desc=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Possibility 2: 0C4857C6 (0491)&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;script&lt;/span&gt; &lt;span class="na"&gt;state=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;run&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;action&amp;gt;&lt;/span&gt;:maincpu.pw@0x0C4857C6=0x0493&lt;span class="nt"&gt;&amp;lt;/action&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/cheat&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;cheat&lt;/span&gt; &lt;span class="na"&gt;desc=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Possibility 3: 0C4C12DE (0013)&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;script&lt;/span&gt; &lt;span class="na"&gt;state=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;run&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;action&amp;gt;&lt;/span&gt;:maincpu.pw@0x0C4C12DE=0x0015&lt;span class="nt"&gt;&amp;lt;/action&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/cheat&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This isn&amp;rsquo;t a fully valid cheat file, for that you need to create a file of this form:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;mamecheat&lt;/span&gt; &lt;span class="na"&gt;version=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;lt;!-- Contents of candidates.xml--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/mamecheat&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Save the above in &lt;code&gt;&amp;lt;mame dir&amp;gt;/cheat/mmpork.xml&lt;/code&gt;. How do we find which of these candidates is what we&amp;rsquo;re looking for?&lt;/p&gt;
&lt;p&gt;Launch MAME with cheats enabled, &lt;code&gt;./mame mmpork -cheat&lt;/code&gt;, then open the cheat menu. You&amp;rsquo;ll see the possibilities from the &lt;code&gt;mmpork.xml&lt;/code&gt; file you created. Insert a coin, and try each one. When the timer stops, you found the right one. &lt;strong&gt;Spoiler:&lt;/strong&gt; The correct location is &lt;code&gt;0x0C4857C6&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s it! Congratulations! You can now leave the title screen up indefinitely and burn it into your CRT! More importantly, you know a teeny little bit about a MAME debugger.&lt;/p&gt;
&lt;h2 id="fun-with-that-memory-location"&gt;Fun with that memory location&lt;/h2&gt;
&lt;p&gt;So what else can we learn about that memory location? Well, the timer is a 20 second timer, and each second has 60 ticks, so the max value should be &lt;code&gt;20 * 60 = 1200 = 0x04B0&lt;/code&gt;. You can change your cheat file to always set the value of that location to &lt;code&gt;0x04B0&lt;/code&gt;, but every time you tick into a whole second a sound effect plays, so the game will try to play that sound effect every frame, which it can do but it sounds goofy.&lt;/p&gt;
&lt;p&gt;But strangely, this value being stuck to whatever the cheat pinned it to causes weird effects in the game. Depending on the value, you can&amp;rsquo;t pick up certain items, or if you set the value low to like &lt;code&gt;0x0002&lt;/code&gt; then you can&amp;rsquo;t get past the character select screen because the inputs don&amp;rsquo;t work anymore. Weird!&lt;/p&gt;
&lt;p&gt;So what does this value do during the game if you don&amp;rsquo;t manipulate it? Well let&amp;rsquo;s find out!&lt;/p&gt;
&lt;p&gt;Fire up the game with the debugger again, and open a memory viewer window (on Mac that&amp;rsquo;s ⌘-D). You can search for location &lt;code&gt;0x0C4857C6&lt;/code&gt; and see what the value is as the game boots. It&amp;rsquo;s &lt;code&gt;0x0000&lt;/code&gt;. When does it first get set? We can find that out by setting a watchpoint! In the console type &lt;code&gt;wp 0x0C4857C6:maincpu,1,w&lt;/code&gt;. So, watch that location in the &lt;code&gt;maincpu&lt;/code&gt; memory space, watch only that address (width &lt;code&gt;1&lt;/code&gt;), and tell me when it&amp;rsquo;s written to (that&amp;rsquo;s the last &lt;code&gt;w&lt;/code&gt;, you can also do &lt;code&gt;r&lt;/code&gt; and &lt;code&gt;rw&lt;/code&gt;).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MAME debugger version 0.246 (mame0246)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Currently targeting mmpork (Muchi Muchi Pork! (2007/ 4/17 MASTER VER.))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;go
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;wp 0x0C4857C6:maincpu,16,w
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Watchpoint 1 set
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Stopped at watchpoint 1 writing 000004B0 to 0C4857C4 (PC=0C06CE14) # I inserted a coin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ok! So I inserted a coin and the timer gets initialized to &lt;code&gt;0x04B0&lt;/code&gt;, since again it&amp;rsquo;s a 20 second timer. Then what? Well it frame advances and then it ticks down by 1. We kinda knew that. I&amp;rsquo;ll disable the watchpoint (⌘-B to bring up a window where you can toggle them on and off) and get to the character select screen.&lt;/p&gt;
&lt;p&gt;Well well well, now it&amp;rsquo;s counting UP for every frame. Probably some sort of in-game frame counter? What if I game over and get to the continue screen? It stops ticking! If I continue, it continues ticking. If I don&amp;rsquo;t continue, it doesn&amp;rsquo;t reset until a coin gets inserted again or if you let the demo start playing..&lt;/p&gt;
&lt;p&gt;But wait a minute, if it&amp;rsquo;s an in-game frame counter, and it&amp;rsquo;s 16-bit, it can only count up to 65,536 frames? That can&amp;rsquo;t be right. Game runs at 60FPS, that&amp;rsquo;s about 18 minutes. My 1cc run through the game takes about 30 minutes, and if you get into the second loop a full run would take about an hour, so this value has to be bigger than 16-bit. Looking at the watchpoint output, this becomes obvious! &lt;code&gt;Stopped at watchpoint 1 writing 000004B0 to 0C4857C4&lt;/code&gt; means it&amp;rsquo;s writing a 32-bit value to &lt;code&gt;0xC4857C4&lt;/code&gt;. Since I assumed it was a 16-bit value, I ran &lt;code&gt;cheatinit uw&lt;/code&gt; which only caught the changes made to the lower 16-bit half of the 32-bit value.&lt;/p&gt;
&lt;p&gt;If you want to learn more about the MAME debugger, the manual is &lt;a href="https://docs.mamedev.org/debugger/index.html"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s all for this post. This will be part of a series, because there&amp;rsquo;s a project that caused me to start down this rabbit hole&amp;hellip;&lt;/p&gt;
&lt;p&gt;This post is part of a 3-part series:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You are here: MAME Debugger Intro&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pdp.dev/posts/mame-lua"&gt;MAME Lua Scripting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pdp.dev/posts/muchi-muchi-pork-mame-overlay"&gt;Muchi Muchi Pork MAME Overlay&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Happy 2023</title><link>https://pdp.dev/posts/happy-2023/</link><pubDate>Fri, 13 Jan 2023 21:14:36 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/happy-2023/</guid><description>&lt;p&gt;The end of 2022 was rough. We all had COVID which meant no daycare for our daughter, my wife had a fever for like a week, I had a bad cough and am still feeling pretty exhausted. We’re all recovered and I’m back at work.&lt;/p&gt;
&lt;p&gt;Resolutions? Yea sure! I’d like to start biking to work again, in 2022 I went into the office quite a bit (I’d say average 3 days a week) and every time I rode my e-bike which was fantastic. My non-e-bike didn’t have a bag rack or fenders which made me not want to ride it work, so I fixed that problem and installed that stuff. I did this right before I got COVID, so now I’m all ready to go.&lt;/p&gt;
&lt;p&gt;I’d also like to watch less garbage movies and TV. I like, love shitty movies. Cheesy action movies where there’s a shootout in a grocery store and someone gets kicked into a pyramid display of canned goods? Let’s go! This is how I relax and zone out, and it’s highly entertaining. What’s wrong with that? Well there’s nothing really wrong with it but I need to balance it out with some “films”. Since I’m an old man and watch everything with subtitles anyway why not watch some classy stuff? I might try the Criterion Channel and see if that can be a good influence on me. I stumbled across the YouTube channel where people go into the “Criterion Closet” and pick out movies and talk about them. I love stuff like that where people that create things talk about what they love. The music equivalent of this is the “What’s in my Bag?” channel from Amoeba Music.&lt;/p&gt;
&lt;p&gt;While I had COVID I watched all the Twilight movies. I had them playing in the background while I slept, so every once in a while I’d wake up and be catapulted into a new part of the saga. That scene in the first movie where they play baseball? That is some of the funniest shit I’ve ever seen. Edward is supposed to be 120 years old or something and he’s hanging out with high schoolers, what a creep. Could you imagine being 120 years old and having to mingle with high schoolers? Fuck that.&lt;/p&gt;
&lt;p&gt;I’d also like to start writing on this blog more. Why not. In 2022 I got off most social media, in the middle of the year I suspended my Facebook and Instagram accounts. I kept my Twitter account because it was what I liked the most. Well we all know what happened with Twitter so I stopped going there too. That Elon guy is just a cruel liar. I got on Mastodon and followed some nice folks there, but ultimately I don’t really feel like posting much on these platforms. I could post a picture of our cats or drop a witty observation, get a few likes or replies, and then just feel empty inside. It’s not worth it to me. This long form rambling is more satisfying to me, so I think I’ll just do that.&lt;/p&gt;</description></item><item><title>2022 Favorites</title><link>https://pdp.dev/posts/2022-over/</link><pubDate>Sat, 31 Dec 2022 04:00:37 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2022-over/</guid><description>&lt;p&gt;It&amp;rsquo;s the end of 2022, so let&amp;rsquo;s make some lists. Note that these are in no particular order and I don&amp;rsquo;t restrict myself to things that were released this year, just that I discovered this year.&lt;/p&gt;
&lt;h2 id="favorite-music"&gt;Favorite Music&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automatic&lt;/strong&gt; - Excess. An album that actually came out in 2022! &amp;ldquo;Skyscraper&amp;rdquo; is a dope song, &amp;ldquo;NRG&amp;rdquo; is another favorite.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carla dal Forno&lt;/strong&gt; - You Know What it&amp;rsquo;s Like. Not the album of hers that came out this year (that would be &amp;ldquo;Come Around&amp;rdquo; which is also great) but this is the first album of hers I heard and that was this year. I suck at classifying music, but it&amp;rsquo;s clever but not self indulgent. &amp;ldquo;Fast Moving Cars&amp;rdquo; and &amp;ldquo;What You Gonna Do Now?&amp;rdquo; are faves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weldon Irvine&lt;/strong&gt; - I Celebrate His Entire Catalog. I&amp;rsquo;ve heard about this dude for a long time but never checked him out. I think Madlib did some tribute album under one of his many many aliases? Anyway, lots of great stuff that many hip-hop songs have sampled. &amp;ldquo;We Gettin&amp;rsquo; Down&amp;rdquo; == A Tribe Called Quest &amp;ldquo;Award Tour&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Electric Wizard&lt;/strong&gt; - Dopethrone. I tend to hate metal because they always sing in that growly wannabe-satan voice. These dudes don&amp;rsquo;t do that, they&amp;rsquo;re also pretty slow and don&amp;rsquo;t have a lot of solo wankery. Who knows what they&amp;rsquo;re singing about, probably drugs or satan or both but it sounds alright.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Helado Negro&lt;/strong&gt; - Far In. Catchy stuff, very much &amp;ldquo;it&amp;rsquo;s a sunny day but I&amp;rsquo;m lazy&amp;rdquo; vibes. I can turn this on and my wife won&amp;rsquo;t ask me to turn it off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slum Village&lt;/strong&gt; - Fantastic Vol.2: Instrumentals. First, I have to pat myself on the back a little bit because I&amp;rsquo;ve known about SV since 2001 when I bought J.Rocc&amp;rsquo;s &amp;ldquo;Sex Machine Today&amp;rdquo; mixtape which starts off with &amp;ldquo;Players&amp;rdquo;. My MOST PLAYED song of 2022 is the instrumental of &amp;ldquo;Players&amp;rdquo;. I would put that on repeat and write code, write docs, take a nap, scoop the litter box, whatever. All these tracks are great. &lt;a href="https://soundcloud.com/selectabwoy/jrocc-sex-machine-today-2001"&gt;BTW that J.Rocc mixtape is GRRREAT!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Broadcast&lt;/strong&gt; - Tender Buttons. Kinda has a Young Marble Giants + Amiga Cracktro vibe. Favorite tracks: &amp;ldquo;Corporeal&amp;rdquo; and &amp;ldquo;Goodbye Girls&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="favorite-movies"&gt;Favorite Movies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Under the Silver Lake&lt;/strong&gt; - The main character is so dopey and tumbles through these completely absurd and crazy situations. It&amp;rsquo;s hard to explain, but I found it to be super funny. Plus, David Yow is in it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Being There&lt;/strong&gt; - Brilliant. Peter Sellers is the best. I loved the idea of someone saying complete nonsense and everyone interpreting it as genius.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gymkata&lt;/strong&gt; - What a completely hilarious piece of shit. A gymnast learns martial arts so he can win &amp;ldquo;the game&amp;rdquo; in the country of Parmastan (lol). The winner of the game gets one wish. The US government needs him to win so he can wish to let the US install a satellite base there because it&amp;rsquo;s geographically adventageous or something? The thing that had me crying with laughter at the end is that along the way he meets a princess and reunites with his dad, so I&amp;rsquo;m thinking he&amp;rsquo;s going to pull a fast one on Uncle Sam and wish for something else. But NO! He wins the game, exchanges glances with the princess, then freeze frame, text overlay: &amp;ldquo;The US builds their satellite base successfully&amp;rdquo; and roll credits!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Throne of Blood&lt;/strong&gt; - The end scene with the arrow attack is incredible. Google it. Man, I can write a paragraph about a turd like Gymkata but a great Akira Kurosawa film gets a sentence. I mean what else do I need to say. &lt;a href="https://www.youtube.com/watch?v=W5MtUiYxBiY"&gt;This Criterion Collection video talks a little about how that scene was done&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duel&lt;/strong&gt; - I remember seeing this as a kid on one of those weirdo TV stations in the SF Bay Area (channel 36 or 44). A guy and a trucker road rage on each other and things just keep escalating. A friend and I went through a &amp;lsquo;car movies&amp;rsquo; kick and this was my favorite of that bunch. &amp;lsquo;Vanishing Point&amp;rsquo; was another decent one we watched that started off strong (guy on speed driving a white 1970 Dodge Challenger R/T from Denver to SF as fast as he can) but then devolved into stupid hippie bullshit.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="favorite-books"&gt;Favorite Books&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;High Rise&lt;/strong&gt; - J.G. Ballard. People live in a luxury apartment building that meets all their needs but things slowly devolve into chaos. Folks leave and go to work and participate in society, then they come home and go to literal war with their neighbors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Simple Plan&lt;/strong&gt; - Scott Smith. I&amp;rsquo;d seen the movie which is good but the book is so much more violent and crazy. Lies compound into big problems and normal people become completely evil.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="favorite-games"&gt;Favorite Games&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Session: Skate Sim&lt;/strong&gt; - PC - &lt;a href="https://www.youtube.com/watch?v=eJoYWfU9xzU"&gt;I agree with this guy&amp;rsquo;s review.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solitare&lt;/strong&gt; - iPhone - I played shittons of Solitare on my phone this year.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Good Sudoku&lt;/strong&gt; - iPhone - Wonderful app, great design and great tools to help you solve puzzles. I had a 100 day streak going at one point.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="favorite-podcasts"&gt;Favorite Podcasts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Knowledge Fight&lt;/strong&gt; - Did you know that Alex Jones is a piece of shit? I sure did, but then I listened to this podcast and I learned that he is an even bigger piece of shit than I thought! Wow! The hosts are great and funny&amp;hellip; good for being simultaneously entertained and horrified.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decoding the Gurus&lt;/strong&gt; - Examines a lot of online personality types that have opinions about everything. Turns out a lot of people are full of shit.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="favorite-job-stuff"&gt;Favorite Job Stuff&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Lambda SnapStart launching at re:Invent 2022. This was a long time in the making, turns out to have some pretty gnarly problems to solve but that&amp;rsquo;s the beauty of Lambda: we worry about this stuff so you don&amp;rsquo;t have to.&lt;/li&gt;
&lt;li&gt;Getting more into low level Linux stuff. Historically I&amp;rsquo;ve focused on more distributed systems type stuff like workload placement and routing in Lambda but I&amp;rsquo;ve started going deeper in the stack. This was partially due to SnapStart, but just in general I did a lot of digging around into performance problems and system behaviors. I really like this area and am starting to get a little more comfortable with it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="favorite-personal-stuff"&gt;Favorite Personal Stuff&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Going to Disneyland with our 3 year old daughter. Watching her joy was incredibly heartwarming.&lt;/li&gt;
&lt;li&gt;Going on a roadtrip and seeing good friends for the first time since before COVID.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>This site now uses AWS Amplify</title><link>https://pdp.dev/posts/aws-amplify/</link><pubDate>Sat, 26 Nov 2022 15:23:01 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/aws-amplify/</guid><description>&lt;p&gt;I work at AWS on the Lambda team, so it&amp;rsquo;s only natural that I would use Lambda to build this blog. &lt;a href="https://pdp.dev/posts/hugo-lambda/"&gt;This old post&lt;/a&gt; has all the details of how I did that. It was a fun experiment that has worked well, but I had to deal with things like upgrade the version of Hugo embedded in my Lambda function, set up API Gateway endpoints, and deal with S3 buckets and their permissions in relation to CloudFront. I was chatting with another person in AWS from the &lt;a href="https://aws.amazon.com/amplify/"&gt;Amplify&lt;/a&gt; team and learned how Amplify can handle Hugo blogs easily. I played around with it and found it super easy to use, so I migrated this site over to it.&lt;/p&gt;
&lt;p&gt;The migration process was really easy, I just had to set it up and then point the DNS records to the endpoint Amplify created. &lt;strong&gt;Very easy!&lt;/strong&gt; I got to go disable my old GitHub webhook, delete my API Gateway endpoints, delete my Lambda functions, delete the CloudFront distribution, and nuke the S3 bucket.&lt;/p&gt;
&lt;p&gt;My &amp;ldquo;workflow&amp;rdquo; is the same: Write a post in Markdown and then push to &lt;a href="https://github.com/wnka/pdp80-blog"&gt;the GitHub repository&lt;/a&gt;. It&amp;rsquo;s great to not have to think about my glued together stuff and simplify!&lt;/p&gt;</description></item><item><title>Uncle Dennis</title><link>https://pdp.dev/posts/uncle-dennis/</link><pubDate>Mon, 15 Aug 2022 12:29:55 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/uncle-dennis/</guid><description>&lt;p&gt;My uncle Dennis passed away unexpectedly in July. &lt;a href="https://callawayjones.com/obits/dennis-francis-piwonka/"&gt;His obituary&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Dennis Piwonka died at his home in College Station, from cardiac arrest, at the age of 70. A Celebration of Life for Dennis will be held Saturday, July 30, 2022 from 10:00 am to 12:00 pm with a time of sharing at 11:00 am at Callaway-Jones Funeral &amp;amp; Cremation Center in Bryan.&lt;/p&gt;
&lt;p&gt;Dennis grew up in Caldwell, Texas, living and working on the family farm. He graduated from Caldwell High School in 1970 then attended Texas A&amp;amp;M University earning two technical degrees during the 70’s. Circuits, computers, and electronics were his lifelong career. His professional career took him around the world, having worked for electronics firms in Caldwell, Dallas, Chicago, Taiwan, and College Station. While he enjoyed seeing the world, he ultimately came back to the Brazos Valley, spending the final 35 years working and living among his family, friends, and the comforting surroundings of home.&lt;/p&gt;
&lt;p&gt;He is preceded in death by his parents Joe and Elizabeth Piwonka and brother Robert. He is survived by siblings John (wife Georgia, and sons Craig and Kevin), David (wife Janet, and children Beth and Steven), Pat Drouilhet (husband Adrien, and son Jason), sister-in-law Debby (and sons Hal and Philip), Dianne Rister (husband Edward, and children Karl and Krista), Thomas (wife Wendy, and son Hayden), Mark (wife Sue, and sons Robert and Alex), Michael (wife Martha, and children Allie and Mason), and Jan Hartman (husband Sheldon, and children Neil and Leslie).&lt;/p&gt;
&lt;p&gt;Dennis lived life his way. He contemplated the big questions of life, or at least the big questions of the day. He focused on his hobbies, electronics, and sports, when not engaged in his ruminations. Forever a tinkerer, he was always looking for a better gizmo, a better mousetrap, animated by newly designed circuitry. His hands were as adept with a soldering iron as a softball bat. He was an artist with both.&lt;/p&gt;
&lt;p&gt;Dennis’ quiet and thoughtful demeanor belied his eagerness for conversation. He loved to engage in intellectual discussions, often at length. The conversations were always witty and insightful, probing for the unusual or obscure in politics, religion, relationships, or society. He was a conversationalist.&lt;/p&gt;
&lt;p&gt;He was beloved by all, especially his numerous nieces and nephews, who enjoyed spending time with the unmarried uncle, the one who showed them around the farm, or inside a computer, or how to play card games. They loved him because he was gentle, funny, intelligent, and always available. He loved them because they were the kids he never had.&lt;/p&gt;
&lt;p&gt;He was a calm soul and helped Mom in her declining years. While they disagreed on many topics, they were always there for each other. Mom held Dennis in high regard, and bestowed such wisdom and righteousness upon him, especially as her memory began to betray her, that his siblings were amazed and confounded, yet reassured by his presence.&lt;/p&gt;
&lt;p&gt;Now we are only left with memories. Thankfully we have many memories of Dennis. Many wonderful memories, and a few tears.&lt;/p&gt;
&lt;p&gt;In lieu of flowers, Dennis’ family requests that donations be made to DonorsChoose.org, in support of public education, or to a charity of your choosing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I flew to TX for his service and got to see a lot of family I hadn&amp;rsquo;t seen in many years. It was a sad occasion but it was nice to see everyone, catch up and chat, and remember Dennis.&lt;/p&gt;
&lt;p&gt;Dennis was a lot of fun to be around. He&amp;rsquo;s the uncle I spent the most time with since he lived with my grandma for a while and when we&amp;rsquo;d go visit her I&amp;rsquo;d get to spend days with him. He taught me how to fart properly, which is by lifting one leg up and pumping your fist downward. We spent a lot of time playing &lt;a href="https://en.wikipedia.org/wiki/Dummy_rummy"&gt;rummy dummy&lt;/a&gt; with my grandma. He was also into computers, knew how to build and fix stuff, and I learned a lot from him. He was a calm, quiet guy, but funny as hell and would always punctuate someone&amp;rsquo;s long winded story with a one liner that would just crack everyone up. Last time I saw him was in May of 2019, right before Ramona was born. I&amp;rsquo;m sad that she&amp;rsquo;ll never get the opportunity to meet her great uncle Dennis. He was great indeed&amp;hellip;&lt;/p&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/dennis/senior_hu_cb04bacac86b4bcd.jpg" alt="Senior Photo" width="722" height="1024" /&gt;
&lt;figcaption class="center" &gt;Senior Photo&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/dennis/football_hu_3428c26ae552d1e5.jpg" alt="High School Football Team Photo" width="768" height="967" /&gt;
&lt;figcaption class="center" &gt;High School Football Team Photo&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/dennis/1_hu_f3429097f6e516eb.jpg" alt="Uncle Dennis and Grandma Elizabeth" width="472" height="315" /&gt;
&lt;figcaption class="center" &gt;Uncle Dennis and Grandma Elizabeth&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/dennis/dad_dennis_hu_6376b608ef64ead9.jpg" alt="My dad and Dennis" width="768" height="576" /&gt;
&lt;figcaption class="center" &gt;My dad and Dennis&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/dennis/europe_hu_a20fa2b1ba3a51cb.jpg" alt="On a trip in Europe about 2 weeks before he passed" width="768" height="1001" /&gt;
&lt;figcaption class="center" &gt;On a trip in Europe about 2 weeks before he passed&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/dennis/img_8501_hu_f539c980424bfe95.jpg" alt="Caldwell TX a long time ago, I&amp;#39;m the little kid in the front." width="768" height="576" /&gt;
&lt;figcaption class="center" &gt;Caldwell TX a long time ago, I'm the little kid in the front.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/dennis/me_dennis_hu_b871bb52bb4aaa1e.jpg" alt="Me and Dennis in 2019, the last time I saw him" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;Me and Dennis in 2019, the last time I saw him&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Joined the 512kb.club</title><link>https://pdp.dev/posts/512kb-club/</link><pubDate>Sun, 26 Jun 2022 12:51:04 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/512kb-club/</guid><description>&lt;p&gt;I added this website to the &lt;a href="https://512kb.club"&gt;512kb.club&lt;/a&gt;, a site that celebrates websites that aren&amp;rsquo;t a bloated mess. My homepage clocks in at 38kb, putting me in the &amp;ldquo;Green Team&amp;rdquo; which are sites that are 100kb or less. Nice to be part of the club!&lt;/p&gt;</description></item><item><title>Fail Open/Fail Closed</title><link>https://pdp.dev/posts/fail-open-fail-closed/</link><pubDate>Tue, 07 Jun 2022 10:53:49 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/fail-open-fail-closed/</guid><description>&lt;p&gt;In movies, shooting a computer always has the desired fail open/fail closed behavior. Door won&amp;rsquo;t open? Shoot the keypad, door opens. Getting away from bad guys? Shoot the keypad, door closes. How do they know?!&lt;/p&gt;</description></item><item><title>New Bike</title><link>https://pdp.dev/posts/new-bike/</link><pubDate>Wed, 11 May 2022 21:40:06 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/new-bike/</guid><description>&lt;p&gt;I&amp;rsquo;ve been really enjoying my &lt;a href="https://www.vanmoof.com/en-US/s3?color=dark"&gt;VanMoof S3&lt;/a&gt; for commuting and running errands, but I&amp;rsquo;ve really been missing doing longer rides where I have to exert myself. I bought a new manual bike and have been ramping up on doing rides and climbing hills. I&amp;rsquo;m so out of shape from where I was&amp;hellip; turns out 2 years of pandemic life has taken it&amp;rsquo;s toll and I&amp;rsquo;ve added some pounds.&lt;/p&gt;
&lt;p&gt;So! I&amp;rsquo;m going to start biking more. It&amp;rsquo;s going to be hard to go on super long rides with a toddler at home, but I&amp;rsquo;ve talked with my wife and we&amp;rsquo;re just going to plan ahead and set time aside for each other to do independent things. My wife has an e-bike too, and we&amp;rsquo;ve already done some rides together as a family which as the weather gets nicer here in Seattle is a lot of fun. Picnics at Green Lake, hanging out in the &lt;a href="https://botanicgardens.uw.edu/washington-park-arboretum/"&gt;Arboretum&lt;/a&gt;, riding over the the &lt;a href="https://botanicgardens.uw.edu/center-for-urban-horticulture/"&gt;UW Center for Urban Horticulture&lt;/a&gt;, etc.&lt;/p&gt;
&lt;p&gt;Follow me on &lt;a href="https://www.strava.com/athletes/6632067"&gt;Strava&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>One Page, One Request</title><link>https://pdp.dev/posts/one-page-one-request/</link><pubDate>Sat, 30 Apr 2022 09:25:15 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/one-page-one-request/</guid><description>&lt;p&gt;I have a weird obsession with my website: I want a page load to be a single HTTP request.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not even sure if this is a good thing, I&amp;rsquo;m sure there are benefits to be had by parallel downloads, caching, blah blah. But who cares, it doesn&amp;rsquo;t have to make sense, it&amp;rsquo;s my website and I&amp;rsquo;ll do what I want.&lt;/p&gt;
&lt;p&gt;BTW this doesn&amp;rsquo;t apply to pages that have images. Images are additional requests.&lt;/p&gt;
&lt;h2 id="inlined-favicon-using-an-emoji"&gt;Inlined Favicon using an Emoji&lt;/h2&gt;
&lt;p&gt;My &lt;code&gt;favicon.ico&lt;/code&gt; used to be a red square that was a &lt;code&gt;.png&lt;/code&gt; file. That&amp;rsquo;s additional request. Unacceptable!&lt;/p&gt;
&lt;p&gt;Even if your HTML doesn&amp;rsquo;t reference a favicon, browsers will still look for one at &lt;code&gt;favicon.ico&lt;/code&gt; and if there isn&amp;rsquo;t one at there it&amp;rsquo;s a wasted HTTP request that returns &lt;code&gt;404 Not Found&lt;/code&gt;. Unacceptable!&lt;/p&gt;
&lt;p&gt;The solution is to define one in the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; of your HTML. You can inline it by base64 encoding an image, but I found that you can just use an emoji.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;link&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;icon&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;data:image/svg+xml,%3Csvg%20xmlns=&amp;#39;http://www.w3.org/2000/svg&amp;#39;%20viewBox=&amp;#39;0%200%2016%2016&amp;#39;%3E%3Ctext%20x=&amp;#39;0&amp;#39;%20y=&amp;#39;14&amp;#39;%3E🍩%3C/text%3E%3C/svg%3E&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;image/svg+xml&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;href&lt;/code&gt; is just &amp;ldquo;data:image/svg+xml,&amp;rdquo; plus this URL encoded:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt; &lt;span class="na"&gt;xmlns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;http://www.w3.org/2000/svg&amp;#39;&lt;/span&gt; &lt;span class="na"&gt;viewBox&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;0 0 16 16&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;text&lt;/span&gt; &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;0&amp;#39;&lt;/span&gt; &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;14&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;🍩&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;text&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;svg&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It&amp;rsquo;s just a donut emoji! I don&amp;rsquo;t fully understand the &lt;code&gt;viewBox&lt;/code&gt; and &lt;code&gt;text&lt;/code&gt; offsets, but hey that&amp;rsquo;s what works. It doesn&amp;rsquo;t show in Safari, but at least it doesn&amp;rsquo;t make a request for &lt;code&gt;favicon.ico&lt;/code&gt; so mission roughly accomplished. &lt;a href="https://caniuse.com/?search=link-icon-svg"&gt;caniuse.com&lt;/a&gt; shows the full browser compatibility story.&lt;/p&gt;
&lt;h2 id="inlining-css"&gt;Inlining CSS&lt;/h2&gt;
&lt;p&gt;I still write CSS in a separate file as part of my site theme and use a feature of &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt; to inline it when the site is generated. In my theme&amp;rsquo;s &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; Hugo template:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;css&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resources&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Get&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/css/pdp.css&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;minify&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="err"&gt;$css.Content&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="err"&gt;safeCSS&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;css&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resources&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Get&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/css/code.css&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;minify&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="err"&gt;$css.Content&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="err"&gt;safeCSS&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Easy! Convenient! I use one &lt;code&gt;.css&lt;/code&gt; file for my site styling and one for code block styling. If I really wanted to go nuts, I could not include the code CSS unless there was code on the page.&lt;/p&gt;
&lt;h2 id="no-trackers"&gt;No trackers&lt;/h2&gt;
&lt;p&gt;No Google Analytics or anything like that. I try to block all those things, so why would I put them on my own site? No one reads this site anyway, or maybe I&amp;rsquo;m massively popular. The world will never know!&lt;/p&gt;
&lt;h2 id="output-page-size"&gt;Output Page Size&lt;/h2&gt;
&lt;p&gt;How large is the download for the home page of this site? We can use &lt;code&gt;curl&lt;/code&gt; to get the download size.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;❯ curl https://pdp.dev -w &lt;span class="s1"&gt;&amp;#39;%{size_download}&amp;#39;&lt;/span&gt; -so /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;38086&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;37kb. Not bad! Most browsers use &lt;code&gt;Accept-Encoding: gzip&lt;/code&gt; or equivalent to request compressed resources. How large is the download with compression?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl --compressed https://pdp.dev -w &lt;span class="s1"&gt;&amp;#39;%{size_download}&amp;#39;&lt;/span&gt; -so /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;6784&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;7kb. Even young me with a 28.8kb dialup connection would be happy with that.&lt;/p&gt;
&lt;p&gt;What about the longest post I&amp;rsquo;ve written (&lt;a href="https://pdp.dev/posts/japan-2018"&gt;Japan Trip 2018&lt;/a&gt;)? Raw: 38kb. Compressed: 14kb. Compression ratio went down considerably, probably because the home page is a list of links which is mostly HTML tags that compress better than my prose.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s fun doing weird stuff like this!&lt;/p&gt;</description></item><item><title>"How I Experience the Web Today"</title><link>https://pdp.dev/posts/how-i-experience-the-web/</link><pubDate>Sun, 24 Apr 2022 21:24:37 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/how-i-experience-the-web/</guid><description>&lt;p&gt;I love it: &lt;a href="https://how-i-experience-web-today.com/"&gt;https://how-i-experience-web-today.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So much web content is full of this stuff. I just want to read something on your site! I don&amp;rsquo;t want to you to e-mail me, I don&amp;rsquo;t want notifications from your site, I don&amp;rsquo;t want to sign up for your newsletter, I don&amp;rsquo;t want to know about your Patreon. This is like asking me to marry your site before even saying &amp;lsquo;hello&amp;rsquo;.&lt;/p&gt;</description></item><item><title>Let's Go by Train!</title><link>https://pdp.dev/posts/lets-go-by-train/</link><pubDate>Sat, 23 Apr 2022 12:38:56 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/lets-go-by-train/</guid><description>&lt;p&gt;I imported the new &lt;a href="https://en.wikipedia.org/wiki/Densha_de_Go!"&gt;Densha de GO!&lt;/a&gt; game for Switch. Translated, that&amp;rsquo;s &amp;ldquo;Let&amp;rsquo;s go by Train!&amp;rdquo; It’s also available for PS4. This is not a paid endorsement, but this is the most fun I’ve had playing a game in a while.&lt;/p&gt;
&lt;p&gt;It’s a train conductor game, you drive a subway train in Japan. You make the train go fast and slow. You have to accurately stop the train at each stop for the sake of the passengers. You have to honk your horn when needed and follow speed limits. It’s a game of following rules. It’s great. I’m not being sarcastic!&lt;/p&gt;
&lt;p&gt;I don’t even know all the rules yet. I can’t read a lick of Japanese but I think I absorbed most of the tutorial, however occasionally I’ll break the rules and get penalized and I don’t know why. For me this just adds to the fun.&lt;/p&gt;
&lt;p&gt;This is a long running series in Japan that originated in the arcade way back in 1996. &lt;a href="https://shmuplations.com/densha/"&gt;Here&amp;rsquo;s a great interview&lt;/a&gt; with the creators. Again on the surface, this sounds like an absurdly unfun game. Can’t steer a train! But it’s rad.&lt;/p&gt;
&lt;p&gt;Some folks I follow in the shmup community are also into this series which is how I found out about it, and also there was &lt;a href="https://archive.org/details/game-center-cx-season-12/Game+Center+CX+094+-+Go+by+Train!.avi"&gt;an excellent GameCenter CX episode featuring the first game on PS1&lt;/a&gt;. BTW &lt;a href="https://en.wikipedia.org/wiki/GameCenter_CX"&gt;GameCenter CX&lt;/a&gt; is one of my favorite shows that I love and could write a full blog post about it. A Japanese comedian has a fake job where he must beat games in one sitting. A community of fans translates them and &lt;a href="https://dannylujan.com/gccx-episode-guide/"&gt;here is a great list of episodes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A few of the early games are emulated in MAME, which run on weird early 3D hardware (a &lt;a href="https://en.wikipedia.org/wiki/Motorola_68040"&gt;68040&lt;/a&gt; with a &lt;a href="https://en.m.wikipedia.org/wiki/Texas_Instruments_TMS320"&gt;TMS320&lt;/a&gt; DSP). This stuff is hard to emulate at full speed, but amazingly my MacBook Air with an M1 processor can do it. My big gaming PC can’t even do that! Apple should incorporate this into their next keynote.&lt;/p&gt;
&lt;p&gt;The big thing in these games is stopping. You’ve got to enter the station and come to a stop at the right spot and the closer you get the better. Accelerating in the station is a big penalty, slamming on the breaks is a penalty as all those poor standing passengers are gonna get hurt.&lt;/p&gt;
&lt;p&gt;If I get the time I want to generate tables of breaking power and deceleration rates. It’s clearly non-linear. In MAME I played around with the debugger and found where the input values for throttle and brake are defined, but they’re analog and I couldn’t figure out how to set the inputs. Well, I could set the memory values where the inputs are stored, but I couldn’t set the inputs themselves so on the next frame the inputs would write over those values. It would be really cool to totally automate the perfect stop. It was a long time ago that I tried this, I think since then the MAME LUA scripting engine has been improved to allow scripting of analog controls.&lt;/p&gt;
&lt;p&gt;Go watch the GCCX episode and see how great these games are, then go play one!&lt;/p&gt;</description></item><item><title>MiSTer + MT32-pi</title><link>https://pdp.dev/posts/mister-mt32-pi/</link><pubDate>Sun, 27 Feb 2022 12:43:45 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mister-mt32-pi/</guid><description>&lt;p&gt;I continue to enjoy my &lt;a href="https://github.com/MiSTer-devel/Main_MiSTer/wiki"&gt;MiSTer&lt;/a&gt; as more and more folks are building cores for it. Things I played on it recently:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Castlevania:_Rondo_of_Blood"&gt;Castlevania: Rondo of Blood&lt;/a&gt; - A Turbografx-16/PC Engine CD game that only came out in Japan. I played it all the way through, pretty fun game. I was inspired by &lt;a href="https://en.wikipedia.org/wiki/GameCenter_CX"&gt;GameCenter CX&lt;/a&gt; (&lt;a href="https://archive.org/details/game-center-cx-297-castlevania-rondo-of-blood-part-1"&gt;ep1&lt;/a&gt;, &lt;a href="https://archive.org/details/game-center-cx-298-castlevania-rondo-of-blood-part-2"&gt;ep2&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Cho_Ren_Sha_68K"&gt;Cho Ren Sha 68k&lt;/a&gt; - &lt;a href="https://pdp.dev/posts/cho-ren-sha-1all/"&gt;My last post&lt;/a&gt; was about clearing this game, which is on the &lt;a href="https://en.wikipedia.org/wiki/X68000"&gt;Sharp X68000&lt;/a&gt; computer. The core for that machine continues to mature.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Castlevania:_Symphony_of_the_Night"&gt;Castlevania: Symphony of the Night&lt;/a&gt; - I never owned a PlayStation 1 but had friends that had them and this is a game a friend and I played a lot. I&amp;rsquo;ve never beat it but I&amp;rsquo;m currently slowly working my way through it. The &lt;a href="https://github.com/MiSTer-devel/PSX_MiSTer"&gt;PS1 core&lt;/a&gt; is really coming along and after playing Rondo of Blood I wanted to beat this.&lt;/li&gt;
&lt;li&gt;PC games! There&amp;rsquo;s a core that provides a 486SX (I&amp;rsquo;m guessing no DX because it would be hard to do a math copro in FPGA but I&amp;rsquo;m just guessing) which allows me to revisit a lot of games I used to play on my 386DX/25. King&amp;rsquo;s Quest! Police Quest! Syndicate! ETC! I haven&amp;rsquo;t really buckled down and played anything for real other than booting them up and going &amp;lsquo;oh yea memories&amp;rsquo; and moving on.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When I was a kid our 386DX had an original &lt;a href="https://en.wikipedia.org/wiki/Sound_Blaster"&gt;SoundBlaster card&lt;/a&gt; that we then upgraded to a &lt;a href="https://en.wikipedia.org/wiki/Media_Vision_Pro_AudioSpectrum"&gt;Pro Audio Spectrum 16&lt;/a&gt;. I always remember seeing that &lt;a href="https://en.wikipedia.org/wiki/Roland_MT-32"&gt;Roland MT-32&lt;/a&gt; option in all these games and seeing one of those crazy expensive setups at Fry&amp;rsquo;s Electronics. Well, that was ~30 years ago and that tech can now easily be replicated by a Raspberry Pi and a $40 MT-32 &amp;ldquo;hat&amp;rdquo; that can be used by a MiSTer thanks to the &lt;a href="https://github.com/dwhinham/mt32-pi"&gt;mt32-pi project&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I, like many nerds, happened to have a spare Raspberry Pi laying around so all I needed was the hat. &lt;a href="https://www.legacypixels.com/mister/index.html"&gt;LegacyPixels&lt;/a&gt; sells them from their &amp;lsquo;oh so web 1.0&amp;rsquo; website so I ordered one and it came super fast, great site, recommended, thanks Ken! The &lt;a href="https://github.com/dwhinham/mt32-pi/wiki/MiSTer-FPGA"&gt;setup is super easy&lt;/a&gt; and in no time I had it hooked up and recognized by my MiSTer. The Pi is even powered off the MiSTer and you just need one cable to provide power + I/O which is &lt;em&gt;really&lt;/em&gt; slick.&lt;/p&gt;
&lt;p&gt;I fired up a few games to hear some nice tunes and the old Sierra adventure games sound great, LucasArts adventure games sound great. It also works with the Sharp X68000 core and so far I&amp;rsquo;ve mainly used it to play &lt;a href="https://en.wikipedia.org/wiki/Gradius_II"&gt;Gradius II&lt;/a&gt;, which is a soundtrack I really dig and it sounds great on MT-32. X68000 is also known for great ports of Capcom CPS1 games, so I&amp;rsquo;m excited to checkout those soundtracks on the MT-32. The X68000 and CPS1 are basically the same hardware and I recall reading that X68000 workstations were was CPS1 games were developed on, which explains their high quality ports.&lt;/p&gt;
&lt;p&gt;If you want to hear what I&amp;rsquo;m talking about, there are plenty of videos on YouTube that folks have posted that demonstrate all this.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=lSDAXi7CJtU"&gt;Gradius II X68000 + MT32&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=fpAGnr6aSeg"&gt;MiSTer FPGA + MT32-pi: A Medley of PC Game Intros&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It&amp;rsquo;s great to see MiSTer continue to add more support for more cool stuff!&lt;/p&gt;
&lt;h2 id="links"&gt;Links&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/MiSTer-devel/Main_MiSTer/wiki"&gt;MiSTer Project wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/List_of_MT-32-compatible_computer_games"&gt;List of MT-32 compatible computer games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dwhinham/mt32-pi"&gt;mt32-pi project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dwhinham/mt32-pi/wiki/MiSTer-FPGA"&gt;mt32-pi MiSTer setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.legacypixels.com/mister/index.html"&gt;LegacyPixels MiSTer shop&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Karate Kid Part III</title><link>https://pdp.dev/posts/karate-kid-3/</link><pubDate>Tue, 22 Feb 2022 07:05:41 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/karate-kid-3/</guid><description>&lt;p&gt;What a pile of shit this movie is, so of course I&amp;rsquo;ve watched it more than any other Karate Kid movie. I&amp;rsquo;ve never even seen Part 2. Only the first one and this one.&lt;/p&gt;
&lt;p&gt;The karate tournament in the first movie was apparently the most monumental event in Southern California karate history. The Cobra Kai teacher lost his dojo and all his students, just because one of his students came in 2nd place. Or maybe because everyone watched Mr. Miyagi beat him up in the parking lot after the tournament. The first like 10 minutes of this movie is just a recap of part one, like yea, we remember, it&amp;rsquo;s not a super nuianced story or anything.&lt;/p&gt;
&lt;p&gt;Anyway the Cobra Kai guy is down on his luck, so he goes to see one of his old buddies from &amp;lsquo;Nam who is a super successful evil business man. He lives in a &lt;a href="https://en.wikipedia.org/wiki/Ennis_House"&gt;Frank Lloyd Wright house&lt;/a&gt;! He&amp;rsquo;s like a super-villain, when they introduce him his butler needs him to sign some forms or something to illegally dispose of nuclear waste. Probably burying it in the playground of an orphanage or something. So this guy, this successful evil business man, who is waaaay too young to have been in &amp;lsquo;Nam, decides to clear his schedule and spent all of his time helping Cobra Kai guy get revenge on a teenage Daniel-san for having the gall to win a karate tournament. Cobra Kai guy did &amp;lsquo;save his ass in Nam&amp;rsquo; numerous times apparently. Was the guy a baby that got caught in the crossfire?&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s the most ridiculous set up ever and the kind of thing a cartoonish super-villain in a movie would do. Their scheme is so complicated, but it boils down to that when Daniel-san defends his title in the next karate tournament they&amp;rsquo;re going to, get this, defeat him. But there&amp;rsquo;s a big wrench in their plan for revenge: Daniel-san doesn&amp;rsquo;t want to defend his title. He wants to move on with his life, so they chase him around and try to influence him to sign up for the tournament. I&amp;rsquo;d like to envision that they just rolled cameras while they chased Ralph Macchio around to try to get him to sign on to do this movie. Ralph probably wanted to move on with his life and do something else, much like Daniel-san.&lt;/p&gt;
&lt;p&gt;Anyway something happens to inspire him to sign up and he signs up and it looks like he&amp;rsquo;s going to lose but then he wins. The End.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s no crane kick or anything inspiring or cool like in the first movie. He just wins. The evil plan to embarrass him by having him lose his title at a karate tournament fails. That&amp;rsquo;s seriously their plan, they just want to embarass him in front of the &amp;rsquo;thousands&amp;rsquo; of people at the karate tournament. How uncreative are these people? You know what happens at karate tournaments? People lose. People are guaranteed to lose. It&amp;rsquo;s ok to lose. The rich evil guy couldn&amp;rsquo;t like take a full page ad in the newspaper and just print a bunch of lies about Daniel-san and Mr. Miyagi, or expose them to some of that nuclear waste? That&amp;rsquo;s what I&amp;rsquo;d do if I was a rich evil guy in this cinematic universe.&lt;/p&gt;
&lt;p&gt;From the &lt;a href="https://en.wikipedia.org/wiki/The_Karate_Kid_Part_III"&gt;Wikipedia page&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Robert Mark Kamen had originally wanted The Karate Kid Part III to be a prequel with the two main leads still involved. The original plot would have involved Daniel and Mr. Miyagi traveling to 16th century China in a dream and meeting Miyagi&amp;rsquo;s ancestors. Kamen envisioned the sequel to resemble a Hong Kong-style Wuxia film, and would also have a female protagonist. However, the producers balked at the idea and Kamen was reluctant on rehashing &amp;ldquo;the same story all over again&amp;rdquo;; he only returned after the studio agreed to pay him substantially more.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So there you have it. No one wanted to do this shit, but you know, money. I&amp;rsquo;d much prefer the time travelling dream movie.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;After Robyn Lively was cast as Jessica Andrews in The Karate Kid Part III in 1988, producers were forced to modify her role of protagonist Daniel LaRusso&amp;rsquo;s new love interest because Lively was only 16 at the time of filming and still a minor, while Ralph Macchio was 27 (although his character Daniel is 18). This situation caused romantic scenes between Jessica and Daniel to be rewritten so that the pair only developed a close friendship.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I can just imagine the edits to the script now, instead of &amp;ldquo;he leans in for a kiss&amp;rdquo; they scratched that out and wrote &amp;ldquo;he playfully punches her on the shoulder because he doesn&amp;rsquo;t want to go to jail.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Overall, 1 out of 5 crane kicks as a &amp;ldquo;film&amp;rdquo; but fun to watch for how bad it is.&lt;/p&gt;</description></item><item><title>Cho Ren Sha 68k 1-ALL</title><link>https://pdp.dev/posts/cho-ren-sha-1all/</link><pubDate>Sun, 20 Feb 2022 20:11:47 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/cho-ren-sha-1all/</guid><description>&lt;p&gt;I cleared the first loop of &lt;a href="https://en.wikipedia.org/wiki/Cho_Ren_Sha_68K"&gt;the game&lt;/a&gt;, which means I beat stages 1-6 + stage 0 on one credit. I game over&amp;rsquo;d on the first stage of the second loop (stage 2-1). I&amp;rsquo;ve been playing the game a little bit thanks to the new &lt;a href="https://en.wikipedia.org/wiki/X68000"&gt;Sharp X68000&lt;/a&gt; &lt;a href="https://github.com/MiSTer-devel/X68000_MiSTer"&gt;core for MiSTer&lt;/a&gt;. This just started off as a casual run, I wasn&amp;rsquo;t swinging for the fences or anything, but this led to me playing conservatively and bombing a lot. The real game changer was that I got better at the &amp;lsquo;collect all 3 powerups&amp;rsquo; trick, which really helps drive up your score, which then helps you get extra lives.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_6710_hu_2a745425afda4569.jpg" alt="1-all Score" width="768" height="526" /&gt;
&lt;figcaption class="center" &gt;2-1 means I made it to the second loop!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;It&amp;rsquo;s a great game! The soundtrack is fantastic, you can &lt;a href="https://loserkashiwagi.bandcamp.com/album/cho-ren-sha-68k-original-soundtracks-g-i-m-i-c-revival-edition"&gt;buy it&lt;/a&gt; or enjoy it &lt;a href="https://www.youtube.com/playlist?list=PLA7E90B6A7F3A3750"&gt;on YouTube&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you want to know all about this game, &lt;a href="https://www.youtube.com/watch?v=UcxdeBPebFw"&gt;watch the STG Weekly episode that covers it!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Happy 2022</title><link>https://pdp.dev/posts/happy-2022/</link><pubDate>Mon, 24 Jan 2022 20:17:39 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/happy-2022/</guid><description>&lt;p&gt;We took our time getting holiday cards out in 2021, so now it&amp;rsquo;s a Happy 2022 card!&lt;/p&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/happy2022-1_hu_594debd21539c5dc.jpeg" alt="Front" width="698" height="1024" /&gt;
&lt;figcaption class="center" &gt;Front&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/happy2022-2_hu_a748d9453f2206b9.jpeg" alt="Back" width="714" height="1024" /&gt;
&lt;figcaption class="center" &gt;Back&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Photos by &lt;a href="https://www.abbeymoore.net/"&gt;Abbey Moore&lt;/a&gt;, huge thanks to her for capturing our family.&lt;/p&gt;</description></item><item><title>Use Neko to watch stuff with friends</title><link>https://pdp.dev/posts/neko-cdk/</link><pubDate>Sun, 23 Jan 2022 08:37:47 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/neko-cdk/</guid><description>&lt;p&gt;&lt;a href="https://github.com/m1k1o/neko"&gt;Neko&lt;/a&gt; lets you spin up a server where you and friends can watch videos together. All you need to do is point your web browser to the server and login with the password you&amp;rsquo;ve shared. Inside Neko, you will see a web-browser for watching YouTube, Netflix, et al. You can also set it up to use VLC if you want to upload your own video files. A friend and I used it to watch the entire &lt;a href="https://en.wikipedia.org/wiki/Fast_%26_Furious"&gt;Fast and Furious&lt;/a&gt; series and it was a blast. I own the DVDs so I ripped them, launched a Neko instance with VLC, uploaded the files and opened them in VLC. We were able to chat on the phone and the video was really well synchronized for us, we could tell because when &lt;a href="https://youtu.be/jXwxLoEe-M0?t=177"&gt;absurd shit would happen&lt;/a&gt; we&amp;rsquo;d start laughing at the same time. There&amp;rsquo;s also a group chat on the Neko site, which was handy for us as we both have young kids and would often watch stuff together late at night when we needed to be quiet.&lt;/p&gt;
&lt;p&gt;This has been a huge help during the COVID-19 pandemic.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/neko.ff_hu_b563d5f12e5e5504.jpg" alt="I life my life a quarter mile at a time." width="768" height="471" /&gt;
&lt;figcaption class="center" &gt;lol&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I used AWS for my &amp;ldquo;temporary server on the internet needs&amp;rdquo;. &lt;strong&gt;Disclaimer:&lt;/strong&gt; I work for &lt;a href="https://aws.amazon.com/lambda/"&gt;AWS Lambda&lt;/a&gt;, so of course I used AWS! I don&amp;rsquo;t get free AWS or anything so it&amp;rsquo;s not a cost thing, it&amp;rsquo;s just that I&amp;rsquo;m familiar and comfortable with AWS. Neko is just a Docker container, so you could run it pretty much anywhere. Using AWS cost me under a dollar for an evening of movie watching which is a pretty great value. Your milage may vary&amp;hellip;&lt;/p&gt;
&lt;p&gt;I used &lt;a href="https://aws.amazon.com/cdk/"&gt;AWS CDK&lt;/a&gt; to make it super easy to deploy the infrastructure needed for Neko. &lt;a href="https://github.com/wnka/neko-cdk-infrastructure"&gt;The code for that is available here.&lt;/a&gt; The instructions should be pretty straightforward for anyone familiar with the CDK, but basically it creates some Launch Templates, some Auto Scaling Groups, and you just dial up the Auto Scaling Group from 0 instances to 1 instance. When you&amp;rsquo;re done, set it back to 0 instances. It also creates a user that has the absolute minimal permissions needed to fiddle with those Auto Scaling Groups and find the IP you should share with your friends.&lt;/p&gt;
&lt;p&gt;Give it a shot and have a movie night with friends, or just a night of watching goofy YouTube videos. If you find the CDK stuff helpful or want to make changes to it, go for it! Fork it, change it, send me a pull request or don&amp;rsquo;t, that&amp;rsquo;s all fine with me!&lt;/p&gt;
&lt;p&gt;Huge thanks to &lt;a href="https://github.com/nurdism/neko"&gt;nurdism&lt;/a&gt; for initially creating Neko and &lt;a href="https://github.com/m1k1o/neko"&gt;m1k1o&lt;/a&gt; for maintaining and continuing to improve it!&lt;/p&gt;</description></item><item><title>Big Biking Update 2021</title><link>https://pdp.dev/posts/big-biking-2021/</link><pubDate>Sun, 28 Nov 2021 12:52:00 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/big-biking-2021/</guid><description>&lt;p&gt;Biking updates used to be frequent and celebratory of new milestones reached. I&amp;rsquo;ve been biking in 2021, but not in the same way I used to.&lt;/p&gt;
&lt;p&gt;In March 2021, someone stole my bike, my trusty &lt;a href="http://www.cannondale.com/nam_en/2015/bikes/road/cyclocross/caadx/caadx-sram-rival-disc"&gt;Cannondale CAADX Rival&lt;/a&gt; that I had put lots of miles on. I got that bike in June 2015 and had been my combination commuter and long ride bike. It was in our detached garage and someone peeked in the window, said &amp;lsquo;hey nice unsecured bike&amp;rsquo;, picked the garage lock and rode away on it. I thought I had covered the window with a piece of cardboard to prevent someone from looking in, but it had slipped and left a crack. I have since added better defenses.&lt;/p&gt;
&lt;p&gt;I had the bike registered on &lt;a href="https://bikeindex.org/"&gt;Bike Index&lt;/a&gt; and posted that it had been stoled and also filed a police report, but it was gone gone gone. Regardless, Bike Index is a fantastic service and if you have bikes you should register them there!&lt;/p&gt;
&lt;p&gt;So now I needed a new bike, and ever since becoming a dad I haven&amp;rsquo;t really had time to go for long epic bike rides. I still wanted a bike for commuting and running errands, so I got a &lt;a href="https://www.vanmoof.com/en-US/s3?color=dark"&gt;Vanmoof S3&lt;/a&gt; which is an e-bike and has been working really well. I&amp;rsquo;m lucky in that Seattle is home to one of the few &lt;a href="https://www.vanmoof.com/en-US/stores/seattle"&gt;Vanmoof stores&lt;/a&gt; so I was able to test drive one. I cannot stress how &lt;em&gt;great&lt;/em&gt; having an e-bike is. Previously going somewhere on a bike was a bit of a chore but now it&amp;rsquo;s a no brainer. Want to run to the grocery store? No sweat, literally! Want to ride into the office? For me, biking is the best way to get there.&lt;/p&gt;
&lt;p&gt;I got a &lt;a href="https://www.amazon.com/Thule-Yepp-mount-child-seat-Orange/dp/B004PYEB0M"&gt;bike seat&lt;/a&gt; that so that I could take Ramona with me on rides. She &lt;strong&gt;loves&lt;/strong&gt; it!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_5071_hu_5f9c9feaed880b85.jpeg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;p&gt;I convinced my wife to get in on the action and she got a &lt;a href="https://www.radpowerbikes.com/products/radwagon-electric-cargo-bike"&gt;big cargo e-bike&lt;/a&gt; that she really likes. We&amp;rsquo;re doing family bike rides now!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_5600_hu_ac67efef222e1053.jpeg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;p&gt;Basically, I don&amp;rsquo;t use biking for fitness anymore. For fitness I use the Peloton which is a better workout anyway. I would like to eventually get back into biking long distances without electronic assistance, but that&amp;rsquo;s going to require buying (yet) another bike!&lt;/p&gt;</description></item><item><title>Tournament of Van Damme Tournament movies</title><link>https://pdp.dev/posts/van-damme-tournament/</link><pubDate>Mon, 06 Sep 2021 09:45:10 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/van-damme-tournament/</guid><description>&lt;p&gt;Recently I watched a bunch of Van Damme (henceforth VD) movies initiated by a co-worker letting me borrow their DVD of &lt;a href="https://www.imdb.com/title/tt0117420/?ref_=fn_al_tt_2"&gt;The Quest&lt;/a&gt;. I grew up with Bloodsport, Kickboxer and Lionheart, and the plots of these movies are all the same: There&amp;rsquo;s a tournament, VD enters the tournament, and then VD wins the tournament.&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s have a tournament of these tournament movies to determine the winner.&lt;/p&gt;
&lt;h1 id="the-contenders"&gt;The Contenders&lt;/h1&gt;
&lt;h2 id="bloodsport"&gt;Bloodsport&lt;/h2&gt;
&lt;p&gt;I saw this movie as a kid at a neighbors birthday party. First VD movie I ever saw. It&amp;rsquo;s great, the fights are cool, and VD does many spinkicks. It supposedly based on the real life story of Frank Dux, who is a supreme bullshitter. &lt;a href="https://en.wikipedia.org/wiki/Frank_Dux"&gt;His Wikipedia page is entertaining&lt;/a&gt;. FD, played by VD, runs from the military to fight in a Kumite, a secret tournament. Ogre from Revenge of the Nerds is there and they quickly become friends over a game of &lt;a href="https://en.wikipedia.org/wiki/Karate_Champ"&gt;Karate Champ&lt;/a&gt;. The big bad guy is Chong Li, played by Bolo Yeung which is awesome, and Chong Li beats up Ogre which angers VD and motivated VD even more than he was already motivated. This is a common theme, VD builds up a shallow relationship with someone and lets them into his heart, that someone gets hurt, and VD must fight to win even though that&amp;rsquo;s what he wanted all along. Chong Li fights dirty, but FD/VD uses his ancient technique of fighting blind to win anyway. The military guys who were trying to bring him back eventually relax their mission so they can watch the fight, and VD wins them over with his big heart.&lt;/p&gt;
&lt;h2 id="kickboxer"&gt;Kickboxer&lt;/h2&gt;
&lt;p&gt;Very very similar to Bloodsport, however VD&amp;rsquo;s brother is the one who gets hurt. VD is subjected to intense training montages so that he can avenge his brother. The training stuff is great and hilarous. He has to kick down a tree, and his master also takes him out and gets him drunk, makes him dance, and then fight dudes. The big bad guy is Tong Po, who only has one hilarious line in the whole movie. The final fight has them fighting with glass glued onto their hands, aka &amp;ldquo;the ancient way&amp;rdquo; which is a cool gimmick. VD avenges his brother and gets called &amp;ldquo;Mitt soo cow&amp;rdquo; or something which means &amp;ldquo;White Warrior&amp;rdquo;, as in he&amp;rsquo;s only just recently learned how to kickbox but now he&amp;rsquo;s the BEST.&lt;/p&gt;
&lt;h2 id="lionheart"&gt;Lionheart&lt;/h2&gt;
&lt;p&gt;VD&amp;rsquo;s brother is doused in gasoline and lit on fire. VD is in the military and must go AWOL to go see his brother in the hospital. So out of the gate, the military is on his tail exactly like in Bloodsport. In order to get money, he somehow ends up fighting in an underground fighting ring. The female &lt;a href="https://en.wikipedia.org/wiki/Patrick_Bateman"&gt;Patrick Bateman&lt;/a&gt; that runs the underground fighting ring takes a liking to VD. And why? VD literally asks her &amp;ldquo;why are you being nice to me&amp;rdquo; but before another line of dialog can be spoken they smash cut to a montage of her taking him clothes shopping to really shitty 80s music. The movie basically pulled a &amp;ldquo;that’s a good question&amp;hellip;. hey look over there!&amp;rdquo; Horrible rich people hang out and hold money while people fight. There’s a set of fighters that he gets to fight that have no background other than their nationality, which is another common theme in these movies. They call VD &amp;ldquo;Lionheart&amp;rdquo; and they say repeatedly corny lines like &amp;ldquo;You definitely got heart Lionheart&amp;rdquo; and &amp;ldquo;You’ve got a big heart Lionheart!&amp;rdquo; Geez we get it. He’s got heart. He fights the big final boss who looks like Gene Simmons and he fights with so much heart that other people develop hearts due to Lionheart’s heart. The guys who are supposed to haul him back to the military are like “you’ve got heart” and now they&amp;rsquo;ll just let him go and not to the thing they’ve been trying to so for the whole movie. Oh and his brother? Dead. Doesn&amp;rsquo;t really matter.&lt;/p&gt;
&lt;h2 id="the-quest"&gt;The Quest&lt;/h2&gt;
&lt;p&gt;By this point do I even need to say anything? VD enters tournament. Tournament is full of people that represent countries so the writers don&amp;rsquo;t have to take the time to think of names for them. There&amp;rsquo;s an announcer who just shouts &amp;ldquo;China vs. Brazil!&amp;rdquo; Again, VD shows heart. The other people who wanted to win and fight are overwhelmed by his heart and stop rooting for themselves and instead root for VD. VD wins. The movie starts with VD as an old man in a bar who beats up some thugs and then the bartender says &amp;ldquo;wow where&amp;rsquo;d you learn to do that?&amp;rdquo; and the rest of the movie the answer to that question. This framing is never addressed again, the movie doesn&amp;rsquo;t cut back at the end with VD saying &amp;ldquo;so there&amp;rsquo;s your answer&amp;rdquo; and I think VD just wanted some old man makeup. VD also dresses up as a clown and helps children or something? Again, he&amp;rsquo;s got heart.&lt;/p&gt;
&lt;h1 id="round-one-lionheart-vs-the-quest"&gt;Round one: Lionheart vs The Quest&lt;/h1&gt;
&lt;p&gt;Winner: Lionheart. It&amp;rsquo;s got more heart! The corny 80s commentary on greed pushes it over the top. Plus, Lionheart has cooler fight locations, like a drained swimming pool and a circle of luxury cars with their high beams on.&lt;/p&gt;
&lt;h1 id="round-two-lionheart-vs-bloodsport"&gt;Round two: Lionheart vs Bloodsport&lt;/h1&gt;
&lt;p&gt;Winner: Bloodsport. The fighters are more interesting, you&amp;rsquo;ve got the spider monkey guy, the kung fu guy, the brawler, etc.&lt;/p&gt;
&lt;h1 id="round-three-bloodsport-vs-kickboxer"&gt;Round three: Bloodsport vs Kickboxer&lt;/h1&gt;
&lt;p&gt;Winner: Kickboxer. It&amp;rsquo;s got drunken dancing VD, VD trying to act drunk, and more absurd training goals like kicking down a tree. But they&amp;rsquo;re almost the same movie.&lt;/p&gt;
&lt;h1 id="rankings"&gt;Rankings&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Kickboxer&lt;/li&gt;
&lt;li&gt;Bloodsport&lt;/li&gt;
&lt;li&gt;Lionheart&lt;/li&gt;
&lt;li&gt;The Quest&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;But they&amp;rsquo;ve all got heart! Watch &amp;rsquo;em all!&lt;/p&gt;</description></item><item><title>CPS-2 InfiniKey</title><link>https://pdp.dev/posts/cps2-infinikey/</link><pubDate>Sat, 24 Jul 2021 21:16:38 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/cps2-infinikey/</guid><description>&lt;p&gt;I posted about replacing the batteries on &lt;a href="https://pdp.dev/posts/cps-2-suicide-batteries"&gt;Capcom CPS2 boards in the past&lt;/a&gt;. New developments allow for completely removing the battery while maintaining the original encrypted code. The &lt;a href="https://paradisearcadeshop.com/products/undamned-infinikey-cps2-by-ud-game-tech"&gt;InfiniKey&lt;/a&gt; is a little board you solder onto the game board (or B-board), which at power on will inject the right decryption keys for that game. You can then remove the battery and not have to worry about changing batteries before they die and/or leak acid all over your precious precious game. If you want to read all about how the process of injecting the keys was reverse engineered, &lt;a href="http://arcadehacker.blogspot.com/2017/03/a-journey-into-capcoms-cps2-silicon.html"&gt;these&lt;/a&gt; &lt;a href="https://arcadehacker.blogspot.com/2018/01/a-journey-into-capcoms-cps2-silicon.html"&gt;articles&lt;/a&gt; &lt;a href="http://arcadehacker.blogspot.com/2018/05/a-journey-into-capcoms-cps2-silicon-part3.html"&gt;tell&lt;/a&gt; the story. Really cool stuff!&lt;/p&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/cps2/IMG_4619_hu_ec0a28e64ae72643.jpeg" alt="Games" width="768" height="576" /&gt;
&lt;figcaption class="center" &gt;Mars Matrix and Giga Wing, two great shmups&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/cps2/IMG_4671_hu_858afed7b2bb94ba.jpeg" alt="Super Turbo" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;Super Turbo&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;I did these games in order of what I think they&amp;rsquo;re worth, so I did Giga Wing first, then Mars Matrix, then finally Super Turbo. The process was super easy and I had zero problem or issues installing things. Real basic soldering. All my B-boards were Rev.6 so the install was the same across all three games.&lt;/p&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/cps2/IMG_4672_hu_ac628b9f715f5d1.jpeg" alt="Super Turbo with battery" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;Battery still installed in upper right of board&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/cps2/IMG_4616_hu_e88b3965b2d4b7c8.jpeg" alt="Battery Removed" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;Battery Removed!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/cps2/IMG_4673_hu_afab99a1f5ce9b84.jpeg" alt="InfiniKey installed" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;InfiniKey installed&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/cps2/IMG_4674_hu_ea8902dd81b1d80e.jpeg" alt="Super Turbo" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;Super Turbo is safe!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/cps2/IMG_4618_hu_744e99d7b9b21f07.jpeg" alt="Finished Mars Matrix" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;Best game is now safe!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;I got my InfiniKeys from &lt;a href="https://paradisearcadeshop.com/"&gt;Paradise Arcade Shop&lt;/a&gt;. I&amp;rsquo;ve ordered stuff from them in the past and have never had any problems.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=fZhu1_3AYHk"&gt;Installation video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cdn.shopify.com/s/files/1/0399/1689/6418/files/InfiniKeyCPS2_GameSelect.pdf?v=1592592684"&gt;Game Selection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://paradisearcadeshop.com/products/undamned-infinikey-cps2-by-ud-game-tech"&gt;Buy link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Shutting down nwstg.com</title><link>https://pdp.dev/posts/shutting-down-nwstg-com/</link><pubDate>Sun, 16 May 2021 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/shutting-down-nwstg-com/</guid><description>&lt;p&gt;Back in 2013, I started a website called Northwest STG where I would post videos from shmup players in the Seattle area. I did a few posts but the momentum and interest fizzled pretty fast, plus people would just post stuff to their Twitter or whatever.&lt;/p&gt;
&lt;p&gt;I paid the hosting bill and owned the domain and all that, but I haven&amp;rsquo;t posted anything since 2014 so I&amp;rsquo;m shutting it down.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://pdp.dev/categories/nwstg"&gt;I&amp;rsquo;m moving the content to this site and all the posts can be seen here&lt;/a&gt;. The original source code for nwstg.com can be found in &lt;a href="https://github.com/wnka/nwstg"&gt;this GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Things change, back then we had enough players to justify such a site. We also had weekly meetups at &lt;a href="http://www.yelp.com/biz/full-tilt-ice-cream-seattle-5"&gt;Full Tilt Ice Cream in Ballard&lt;/a&gt; as we were friends with the arcade operator and he set aside a single cabinet for us to rotate STGs on. These are the games we had on that cab (in chronological order):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Espgaluda II&lt;/li&gt;
&lt;li&gt;Ibara Kuro&lt;/li&gt;
&lt;li&gt;Progear&lt;/li&gt;
&lt;li&gt;Giga Wing&lt;/li&gt;
&lt;li&gt;Mushihimesama&lt;/li&gt;
&lt;li&gt;Gunbird 2&lt;/li&gt;
&lt;li&gt;Ketsui&lt;/li&gt;
&lt;li&gt;RayForce&lt;/li&gt;
&lt;li&gt;Tenkomori Shooting&lt;/li&gt;
&lt;li&gt;Raiden Fighters Jet&lt;/li&gt;
&lt;li&gt;Armed Police Batrider&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It was always to meetup, play some credits, and talk shop with fellow shmup fans. Folks from the &lt;a href="https://shmups.system11.org/"&gt;shmups forum&lt;/a&gt; who visited Seattle would come out and it was cool to meet folks in person. The core group got smaller and smaller over time and so the cab had to be used for non-shmups since as you would imagine a super-hard game that was in Japanese didn&amp;rsquo;t earn a lot of money. It was fun while it lasted though!&lt;/p&gt;</description></item><item><title>Route 53 DNS Updater</title><link>https://pdp.dev/posts/route-53-dns-updater/</link><pubDate>Wed, 05 May 2021 21:02:24 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/route-53-dns-updater/</guid><description>&lt;p&gt;I use &lt;a href="https://aws.amazon.com/route53/"&gt;Route 53&lt;/a&gt; for my DNS and have an A record that points to home for &lt;a href="https://www.wireguard.com/"&gt;Wireguard&lt;/a&gt; access. Here&amp;rsquo;s a handy script that I run in cron to keep that record updated.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Things you need to set&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;###&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# The record to update&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DNS_RECORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;blahblah.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# The AWS profile to use for creds, must exist in ~/.aws/credentials&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;PROFILE_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;yr-creds&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Your hosted zone ID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ZONE_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;yr-zone-id&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;###&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## END Things you need to set&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;IP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;curl -s http://checkip.amazonaws.com/&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;TMP_FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;mktemp&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat &amp;gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TMP_FILE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;&amp;lt; EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;#34;Comment&amp;#34;: &amp;#34;DDNS update&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;#34;Changes&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;#34;Action&amp;#34;: &amp;#34;UPSERT&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;#34;ResourceRecordSet&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;#34;ResourceRecords&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {&amp;#34;Value&amp;#34;: &amp;#34;${IP}&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; ],
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;#34;Name&amp;#34;: &amp;#34;${DNS_RECORD}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;#34;Type&amp;#34;: &amp;#34;A&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;#34;TTL&amp;#34;: 300
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws --profile &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PROFILE_NAME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; route53 change-resource-record-sets &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --hosted-zone-id &lt;span class="s2"&gt;&amp;#34;/hostedzone/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ZONE_NAME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --change-batch &lt;span class="s2"&gt;&amp;#34;file://&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TMP_FILE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then I run it in &lt;code&gt;cron&lt;/code&gt; every 20 minutes, which you set using &lt;code&gt;crontab -e&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# m h dom mon dow command&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*/20 * * * * bash /path/to/script/ddns.sh &amp;gt;&amp;gt; /path/to/output/ddns.out
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>The Heilmeier Catechism</title><link>https://pdp.dev/posts/the-heilmeier-catechism/</link><pubDate>Mon, 12 Apr 2021 20:45:56 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/the-heilmeier-catechism/</guid><description>&lt;p&gt;Someone I work with &lt;a href="https://www.darpa.mil/work-with-us/heilmeier-catechism"&gt;shared this&lt;/a&gt; with me and I&amp;rsquo;ve found it to be great at getting folks to think deeply about projects they&amp;rsquo;re proposing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;George H. Heilmeier, a former DARPA director (1975-1977), crafted a set of questions known as the &amp;ldquo;Heilmeier Catechism&amp;rdquo; to help Agency officials think through and evaluate proposed research programs.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What are you trying to do? Articulate your objectives using absolutely no jargon.&lt;/li&gt;
&lt;li&gt;How is it done today, and what are the limits of current practice?&lt;/li&gt;
&lt;li&gt;What is new in your approach and why do you think it will be successful?&lt;/li&gt;
&lt;li&gt;Who cares? If you are successful, what difference will it make?&lt;/li&gt;
&lt;li&gt;What are the risks?&lt;/li&gt;
&lt;li&gt;How much will it cost?&lt;/li&gt;
&lt;li&gt;How long will it take?&lt;/li&gt;
&lt;li&gt;What are the mid-term and final “exams” to check for success?&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;</description></item><item><title>Farewell Fry's Electronics</title><link>https://pdp.dev/posts/farewell-frys-electronics/</link><pubDate>Sat, 20 Mar 2021 10:34:40 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/farewell-frys-electronics/</guid><description>&lt;p&gt;Fry&amp;rsquo;s Electronics has closed and is no more.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/amiga-frys_hu_87839a892aec06af.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;p&gt;This is the receipt for our Amiga 2000, dated June 10 1989. My dad kept everything and when he passed away there was a lot of stuff to go through, but it was really cool to find this. Growing up in the Bay Area in the 80s/early 90s, I spent &lt;strong&gt;a lot&lt;/strong&gt; of time in Fry&amp;rsquo;s. It was a huge influence on my computer nerdery and my dad took me almost every weekend so I could go look at all the cool new things.&lt;/p&gt;
&lt;p&gt;Some Memories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Buying our first PC XT clone from the original Fry&amp;rsquo;s in Sunnyvale.&lt;/li&gt;
&lt;li&gt;Buying our NES from the original Fry&amp;rsquo;s.&lt;/li&gt;
&lt;li&gt;Grabbing a free copy of &lt;a href="https://blzimg.github.io/Microtimes/Microtimes.html"&gt;MicroTimes&lt;/a&gt; on the way out.&lt;/li&gt;
&lt;li&gt;Crystal Pepsi.&lt;/li&gt;
&lt;li&gt;Reading video game magazines like Electronic Gaming Monthly, GamePro, and GameFan there.&lt;/li&gt;
&lt;li&gt;Driving home with our Amiga 2000 with it between my brother and I in the backseat of my dad&amp;rsquo;s 1971 Dodge Challenger.&lt;/li&gt;
&lt;li&gt;Seeing Amiga demos like the &lt;a href="https://www.youtube.com/watch?v=eaMDyHc6438"&gt;Walker&lt;/a&gt; and &lt;a href="https://www.youtube.com/watch?v=-ar0hMGA5KM"&gt;Walker 2&lt;/a&gt; demos.&lt;/li&gt;
&lt;li&gt;Commodore CDTV and the &lt;a href="https://www.youtube.com/watch?v=-jlFe-VBK1M"&gt;Psygnosis Planetside demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://retro-gps.info/Sony/Sony-Pyxis-IPS-360/index.html"&gt;Some Sony GPS device&lt;/a&gt; that was like $900 and was huge and told you Lat, Lon and Alt.&lt;/li&gt;
&lt;li&gt;Wanting Sony portables like the &lt;a href="https://walkmancentral.com/products/d-z555"&gt;Discman D-555&lt;/a&gt;, the first &lt;a href="https://www.minidisc.org/part_Sony_MZ-1.html"&gt;MiniDisc player&lt;/a&gt;, the &lt;a href="https://www.radiomuseum.org/r/sony_video_walkman_video_tv_r.html"&gt;Video Walkman&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Buying Wing Commander 2 at the Sunnyvale store (the second Sunnyvale store) while having a really bad sore throat.&lt;/li&gt;
&lt;li&gt;Getting &lt;a href="https://en.wikipedia.org/wiki/Michael_Jordan_in_Flight"&gt;Michael Jordan In Flight&lt;/a&gt; and we had to upgrade the vram on our video card from 256k to 512k. We bought the loose vram chips at Fry&amp;rsquo;s and installed them on &lt;a href="http://www.vgamuseum.info/index.php/cards/item/498-video-seven-l1a4199"&gt;the card&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/RealMagic"&gt;ReelMagic card&lt;/a&gt; running Dragon&amp;rsquo;s Lair.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Macintosh_TV"&gt;Macintosh TV&lt;/a&gt;, what a weird machine.&lt;/li&gt;
&lt;li&gt;Seeing &lt;a href="https://www.youtube.com/watch?v=PNbXTKuObCQ"&gt;Space Quest 3 intro&lt;/a&gt; on a PC with a sound card and nice speakers.&lt;/li&gt;
&lt;li&gt;My brother needed a graphing calculator so he, a friend, and I drove to literally every Fry&amp;rsquo;s in the Bay Area to try and find an HP 48G (we were an RPN family). &lt;a href="https://en.wikipedia.org/wiki/In_Utero"&gt;In Utero&lt;/a&gt; had just come out and we were driving around blasting it. First time I heard that album.&lt;/li&gt;
&lt;li&gt;Using a bunch of money I had saved up to split the cost of an &lt;a href="https://en.wikipedia.org/wiki/HP_95LX"&gt;HP 95LX&lt;/a&gt; with my parents. My dad was stoked I would learn Lotus 1-2-3.&lt;/li&gt;
&lt;li&gt;Final Bay Area Fry&amp;rsquo;s memory from late 1993 before I moved to Colorado: going to the Fremont store and seeing Doom in person for the first time. Mind blowing.&lt;/li&gt;
&lt;li&gt;One summer when I was back visiting, I went to the new Fremont store. They outgrew the original one and it just wasn&amp;rsquo;t the same anymore. The original Fremont store was next to the &lt;a href="https://www.cultofmac.com/617676/a-brief-history-of-steve-jobs-automated-factory-at-next-cook-book-leftovers/"&gt;NeXT Computer factory&lt;/a&gt; and the &lt;a href="https://en.wikipedia.org/wiki/NUMMI"&gt;NUMMI car plant&lt;/a&gt;, which is now the &lt;a href="https://en.wikipedia.org/wiki/Tesla_Fremont_Factory"&gt;Tesla Factory&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>MiSTer FPGA First Impressions</title><link>https://pdp.dev/posts/mister-fpga/</link><pubDate>Sat, 13 Feb 2021 20:13:22 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mister-fpga/</guid><description>&lt;p&gt;From the &lt;a href="https://github.com/MiSTer-devel/Main_MiSTer/wiki"&gt;MiSTer wiki&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;MiSTer is an open project that aims to recreate various classic computers,
game consoles and arcade machines, using modern hardware. It allows software
and game images to run as they would on original hardware, using peripherals
such as mice, keyboards, joysticks and other game controllers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This thing is pretty neat!&lt;/p&gt;
&lt;p&gt;It uses an FPGA to recreate old game hardware. Supposedly this is more &amp;lsquo;accurate&amp;rsquo; than an emulator, which maybe is true, but emulators are great enough. I find a lot of retro folks talking about &amp;lsquo;accuracy&amp;rsquo; to be like audiophiles talking about the &amp;lsquo;warmth&amp;rsquo; of analog or whatever.&lt;/p&gt;
&lt;p&gt;Now here&amp;rsquo;s where I&amp;rsquo;ll contradict myself, because why did I buy one of these then? One word: &lt;em&gt;accuracy&lt;/em&gt;. More specifically though, video output accuracy.&lt;/p&gt;
&lt;h2 id="scanlines-resolutions-updown-scaling"&gt;Scanlines, Resolutions, Up/Down Scaling&lt;/h2&gt;
&lt;p&gt;I own two arcade cabinets and I like being able to play games on them. I&amp;rsquo;ve got &lt;a href="https://pdp.dev/pcb/"&gt;quite a few PCBs&lt;/a&gt;, but they take up space, require maintainence, and swapping games takes time. So, I&amp;rsquo;ve always liked running MAME or whatever in my arcade cabinet to be able to play lots of different stuff. However, getting the video to look right is a real pain.&lt;/p&gt;
&lt;p&gt;Arcade monitors take a 240p 15khz video signal. Some games will output 320x240, some games will output 384x224. Some games run at 60Hz refresh rate, some run at 57.2hz. So, how do you get MAME to deal with this? The answer is typically you don&amp;rsquo;t: you get MAME to output 640x480 as that&amp;rsquo;s as low as most modern PC graphics cards will go. Then you take that signal, and pump it into a downscaler that will scale that down to 320x240.&lt;/p&gt;
&lt;p&gt;How does it look? Well, if you do it just right, it looks great. The original game is outputting 320x240, which MAME then doubles to 640x480, which the downscaler then divides to get 320x240. If you line everything up right the output is a nice crisp image. If you don&amp;rsquo;t line everything up right it&amp;rsquo;s a big sloppy mess. If you&amp;rsquo;re off by a scanline, you&amp;rsquo;ll be undoubling two different scanlines which will average them together and it&amp;rsquo;ll look real blurry.&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t that hard when the arcade game originally was 320x240, but what about when it&amp;rsquo;s 384x224? Well, you gotta do some math. Vertically, you need to scale the game by a factor of 1.071428571 so that 224 becomes 240, which will then double to 480 and &amp;hellip;&lt;/p&gt;
&lt;p&gt;See, this all sucks. The refresh rates get all screwed up too: &amp;ldquo;Translating&amp;rdquo; 57.2hz to a 60hz signal means either running the game too fast or having it stutter.&lt;/p&gt;
&lt;h2 id="mister-analog-output"&gt;MiSTer Analog output&lt;/h2&gt;
&lt;p&gt;The best thing about the MiSTer is that it will just output the arcade native 240p signal which you can feed directly into an arcade monitor and it will be &lt;em&gt;accurate&lt;/em&gt;. It handles goofy resolutions like 384x224 and goofy refresh rates like 57.2hz. You don&amp;rsquo;t have to fiddle with &lt;em&gt;anything&lt;/em&gt;. It just works because the video output is dumb, I don&amp;rsquo;t think there&amp;rsquo;s even a framebuffer.&lt;/p&gt;
&lt;p&gt;It does consoles and old computers too, which also have goofy resolutions. An Atari 2600 outputs 160x192. A Super Nintendo outputs 256x224.&lt;/p&gt;
&lt;p&gt;There are devices for a Raspberry Pi that supposedly will handle some of this weirdness. I got a Pi2JAMMA but I never actually got it to work because if there&amp;rsquo;s one thing I hate it&amp;rsquo;s trial-and-erroring feeding weird video signals to a monitor.&lt;/p&gt;
&lt;h2 id="other-niceties"&gt;Other Niceties&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Scaled HDMI output for those that don&amp;rsquo;t want to mess with CRTs and stuff. The really cool thing is that it will output &lt;em&gt;simultaneously&lt;/em&gt; to analog and HDMI.&lt;/li&gt;
&lt;li&gt;It runs Linux and you can SSH into it. Great for copying files to/from it.&lt;/li&gt;
&lt;li&gt;Compatible with every USB controller I&amp;rsquo;ve tried with it.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="now-playing"&gt;Now Playing&lt;/h2&gt;
&lt;p&gt;Anyway, so what am I actually playing on this thing?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Dangun Feveron&lt;/strong&gt; (Arcade) - A (gasp) shmup from Cave. This game is fucking awesome, so awesome that it got a PS4 port in Japan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prince of Persia&lt;/strong&gt; (SNES) - This version is very different than the PC version. I got reminded of it from an &lt;a href="https://archive.org/details/dde355ba029f5570cb7bf61d820407e0"&gt;excellent episode&lt;/a&gt; of the excellent show &lt;a href="https://en.wikipedia.org/wiki/GameCenter_CX"&gt;GameCenter CX&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stampede&lt;/strong&gt; (Atari 2600) - I got this for my birthday when I was like 5 and when I opened it at my birthday party I walked away from all the other presents and the party because I was so stoked to play it. How rude!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gorf&lt;/strong&gt; (Arcade) - Loved this as a kid and played it a lot on C64, perhaps my first shmup? Playing it now though I see that it&amp;rsquo;s a pretty crappy game.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Earl Weaver Baseball&lt;/strong&gt; (Amiga) - Growing up my whole neighborhood played this game, we&amp;rsquo;d do tournaments and stuff. Still fun!&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="resources"&gt;Resources&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/theypsilon/Update_All_MiSTer"&gt;update-all script&lt;/a&gt; - Will update all the things to the latest things!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://misterfpga.org/"&gt;MiSTer FPGA Forum&lt;/a&gt; - It&amp;rsquo;s a forum!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.patreon.com/nullobject"&gt;nullobject Patreon&lt;/a&gt; - Working on the Cave core (big deal for us shmup fans).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.patreon.com/topapate"&gt;Jose Tejada Patreon&lt;/a&gt; - Creates many arcade cores, including Capcom CPS1 and many others.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://misteraddons.com/"&gt;MiSTer Addons&lt;/a&gt; - Shop where I bought mine.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Happy Holidays 2020</title><link>https://pdp.dev/posts/holiday-2020/</link><pubDate>Tue, 29 Dec 2020 14:45:03 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/holiday-2020/</guid><description>&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/holiday-2020-front_hu_7aeb1a1cc0b90186.jpeg" width="768" height="590" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/holiday-2020-back_hu_4428240f462b8623.jpeg" width="768" height="551" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Happy Holidays and Merry Christmas and all that from Phil, Krista, and Ramona!&lt;/p&gt;
&lt;p&gt;xoxo&lt;/p&gt;</description></item><item><title>Bye Bye Instagram</title><link>https://pdp.dev/posts/bye-bye-instagram/</link><pubDate>Fri, 27 Nov 2020 19:08:56 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/bye-bye-instagram/</guid><description>&lt;p&gt;Instagram changed their API and made it harder to share &lt;strong&gt;my photos&lt;/strong&gt; on &lt;strong&gt;my blog&lt;/strong&gt; which is horseshit.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d have to sign up for a Facebook developer account and get some tokens and blah blah blah. I&amp;rsquo;m not doing that, so I&amp;rsquo;m removing all references to Instagram photos and just hosting the images myself.&lt;/p&gt;
&lt;p&gt;Thankfully I didn&amp;rsquo;t link to Instagram very often. I&amp;rsquo;ll never post to Instagram again, and I rarely look at it. But when I do, I mostly look at &lt;a href="https://www.instagram.com/p/CHo7i9NlI3c/"&gt;skateboarding videos&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how I migrated off. In &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt;, Instagram photos are referenced using a shortcode like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{&lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nt"&gt;instagram&lt;/span&gt; &lt;span class="na"&gt;BoFYpYGg-aK&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This shortcode broke because of this change, which completely broke Hugo site generation. This was irritating, but I guess it makes sense when your website is static. To get things building again, I replaced the shortcode with this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;b&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;There used to be an embedded Instagram image here, but they deprecated the easy to use public API. I&amp;#39;m working on having this site not touch Instagram.&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;b&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I then had to go through my blog, find all the references to the Instagram shortcode, and use those to build URLs to the actual images:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ rg &lt;span class="s2"&gt;&amp;#34;&amp;lt;\s*insta&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep -o &lt;span class="s2"&gt;&amp;#34; instagram [^\s]* &amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;&amp;#39;{print &amp;#34;https://instagram.com/p/&amp;#34;$2}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://instagram.com/p/BoFYpYGg-aK
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://instagram.com/p/BoFX6j8APC2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://instagram.com/p/BoG9IvzgtAB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://instagram.com/p/BoIrdP9gSee
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://instagram.com/p/BoSk4xTgATQ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://instagram.com/p/BoS_gw3gozI
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;These are the images that I need to replace. You can&amp;rsquo;t just open those pages, right click on the image and hit &amp;ldquo;save&amp;rdquo; because Instagram doesn&amp;rsquo;t want to act like a normal website. You can use a web inspector to find the resource and save it, which is what I ended up doing. Thanks again Instagram.&lt;/p&gt;</description></item><item><title>Seabrook September 2020</title><link>https://pdp.dev/posts/seabrook-sept-2020/</link><pubDate>Fri, 11 Sep 2020 11:53:02 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/seabrook-sept-2020/</guid><description>&lt;p&gt;We rented a house on the Washington coast at &lt;a href="https://www.seabrookwa.com/"&gt;Seabrook&lt;/a&gt; for a few days and spent some time on the beach and in the trees. It was great to get away for a bit and have a change of scene. I was pretty crushed that the cable TV in our rental didn&amp;rsquo;t have the Lifetime channel, so I couldn&amp;rsquo;t catch up on great movies like &lt;a href="https://play.mylifetime.com/movies/her-deadly-sugar-daddy/her-deadly-sugar-daddy"&gt;HER DEADLY SUGAR DADDY&lt;/a&gt; or &lt;a href="https://play.mylifetime.com/movies/pool-boy-nightmare"&gt;POOL BOY NIGHTMARE&lt;/a&gt;. Next time I&amp;rsquo;ll be more diligent.&lt;/p&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2556_hu_d11ad6546d04e338.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2558-2_hu_1c8974bf1b5145a3.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2565_hu_a215f8967ba7e709.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2575_hu_b556841fcd7aed93.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2607_hu_c178204e6fc94367.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2613_hu_bedd2fefd0ed6dfd.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2664_hu_3508e505cb94a8cd.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2679_hu_93cf429ea6d87427.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2683_hu_5fd27e3403c31a32.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2699_hu_f4663f6f02dea623.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2702_hu_c81c7a278497d28e.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2723_hu_d6d0e8b0e77d342a.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_5660_hu_f6124678b78070fb.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_6771_hu_b011509e19664d23.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Outdoor Wifi</title><link>https://pdp.dev/posts/outdoor-wifi/</link><pubDate>Sun, 09 Aug 2020 20:16:46 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/outdoor-wifi/</guid><description>&lt;p&gt;The COVID 2020 work from home life marches on and the weather here in Seattle has been nice, so I wanted to be able to work while sitting outside in our backyard.&lt;/p&gt;
&lt;p&gt;The problem though is that the WiFi reception in our backyard sucks, so I needed to fix it if I wanted to dial into video calls and not have slow networking. Our house was built in the 1920s and it has plaster walls which I think have a wire mesh substructure. WiFi reception was a huge struggle in our house until 2015 when I got hip to &lt;a href="https://unifi-network.ui.com/wi-fi"&gt;Ubiquiti UniFi equipment&lt;/a&gt;. Their system allows for multiple wireless &lt;em&gt;access points&lt;/em&gt; that mesh into one network. The inside of our house is covered with &lt;a href="https://store.ui.com/collections/unifi-network-access-points/products/unifi-ac-pro"&gt;two access points&lt;/a&gt;: one in the basement near the front of the house and one upstairs near the back of the house.&lt;/p&gt;
&lt;p&gt;The backyard was covered but was spotty, if I video chatted with someone the signal would drop, I couldn&amp;rsquo;t stream video, ping times were all over the place. With UniFi the answer is easy: add another access point! They have an &lt;a href="https://store.ui.com/collections/unifi-network-access-points/products/unifi-flexhd"&gt;outdoor model&lt;/a&gt; that can be mounted in a variety of ways, so I ran a cable out of the basement into the backyard (which included some gross crawlspace crawling), up the side of the house, and mounted the access point under the awning.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2356_hu_3e066f48a5515b09.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;p&gt;One great thing about these access points is that they use &lt;a href="https://en.wikipedia.org/wiki/Power_over_Ethernet"&gt;Power over Ethernet&lt;/a&gt; or &lt;em&gt;PoE&lt;/em&gt; which makes it so you just have to run an Ethernet cable and data and power are provided. I have two of these &lt;a href="https://store.ui.com/collections/unifi-network-routing-switching/products/unifi-switch-8-60w"&gt;UniFi switches&lt;/a&gt; that provide PoE for the access points.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a graph of my network:&lt;/p&gt;
&lt;div class="mermaid"&gt;
graph TD;
I((Internet))
CB([Cable Modem])
USG([UniFi Security Gateway])
BS([Basement UniFi Switch])
BA([Basement Access Point])
FS([Furnace Room Switch])
UA([Upstairs Access Point])
OA([Outdoor Access Point])
classDef ap fill:#000,color:#FFF
class BA,UA,OA ap
subgraph Basement
I--&gt;CB;
CB--&gt;USG;
USG--&gt;BS;
BS-- PoE --&gt;BA;
BS--&gt;FS;
end;
subgraph Upstairs
FS-- PoE --&gt;UA;
end
subgraph Outside
FS-- PoE --&gt;OA;
end
&lt;/div&gt;
&lt;p&gt;I can now enjoy the weather and sip some coffee on the deck while working or streaming some video!&lt;/p&gt;</description></item><item><title>Mushihimesama Maniac 101 Million</title><link>https://pdp.dev/posts/mushi-maniac-101mil/</link><pubDate>Sun, 12 Jul 2020 16:21:04 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mushi-maniac-101mil/</guid><description>&lt;p&gt;I have been spending a little time here and there playing shmups and &lt;a href="https://twitch.tv/pdp80"&gt;streaming on Twitch&lt;/a&gt;. Today I played a single credit of &lt;a href="http://en.wikipedia.org/wiki/Mushihime-sama"&gt;Mushihimesama&lt;/a&gt; Maniac mode and got a new personal best score of 101,210,364! I&amp;rsquo;m proud to have finally broken 100 million, even though I blew it on the last boss and didn&amp;rsquo;t get the 1cc.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/fbEgHCa3xwM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I don&amp;rsquo;t exactly what I did to get such a good score, I know I had a high counter coming out of the stage 4 midboss. Need to reproduce this and get the clear!&lt;/p&gt;
&lt;p&gt;BTW, the scoring in this game is absolutely insane. &lt;a href="https://www.youtube.com/watch?v=cqeRrfh3Ico"&gt;This episode of STG Weekly&lt;/a&gt; details all the crazy things you can do to get like &lt;strong&gt;3 BILLION&lt;/strong&gt; points with low shot power and crazy frame perfect autofire tricks. I&amp;rsquo;m not going to be going for that level, but I do like seeing how I&amp;rsquo;m hitting the buttons with my input display!&lt;/p&gt;</description></item><item><title>Action Star TODO List</title><link>https://pdp.dev/posts/action-star/</link><pubDate>Fri, 10 Jul 2020 07:30:13 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/action-star/</guid><description>&lt;p&gt;I&amp;rsquo;ve been watching a lot of action movies lately and I made this list of tips and cool things you could/should cross off your TODO list if you wanted to be a really awesome action movie star!&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Proclaim that there’s no time for backup.&lt;/li&gt;
&lt;li&gt;Tell someone to let the girl go, it’s me you want.&lt;/li&gt;
&lt;li&gt;Dive underwater to dodge incoming hail of bullets.&lt;/li&gt;
&lt;li&gt;Shout &amp;ldquo;we’ve got company!&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Pull out one of those butterfly knifes and flip it around all cool.&lt;/li&gt;
&lt;li&gt;Shoot out a tire on a car.&lt;/li&gt;
&lt;li&gt;Cock a lever-action shotgun like Arnold in Terminator 2.&lt;/li&gt;
&lt;li&gt;Thinking a foe is defeated, let your guard down, only to have the foe muster up the energy for one last attack. Your partner, who up until now has been anti-violence, will save you.&lt;/li&gt;
&lt;li&gt;Shooting a gun and blowing something up while not even looking in the direction you&amp;rsquo;re shooting.&lt;/li&gt;
&lt;li&gt;Light a stick of dynamite with a cigar.&lt;/li&gt;
&lt;li&gt;Make a car drive off a cliff, then shoot it so it explodes midair.&lt;/li&gt;
&lt;li&gt;Act like you&amp;rsquo;re going to punch someone in the face but stop short and not actually him them, then have them faint.&lt;/li&gt;
&lt;li&gt;If you see something that looks like it might explode, it probably will, so shoot it.&lt;/li&gt;
&lt;li&gt;As a cop, be sure to use your personal classic car for official police business. It’s destruction will motivate you to catch the bad guys more.&lt;/li&gt;
&lt;li&gt;If you make a bad guy fall off a building, make sure they land on the roof of a car and that the impact makes the car’s alarm go off.&lt;/li&gt;
&lt;li&gt;Enter a room by kicking someone through the door.&lt;/li&gt;
&lt;li&gt;Use a grenade.&lt;/li&gt;
&lt;li&gt;Break a beer bottle on a table and then yell &amp;ldquo;C’MON!&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Catch an arrow shot at me with your bare hands.&lt;/li&gt;
&lt;li&gt;If you jump out of a moving car, be sure to roll along the ground. It’ll make it not hurt at all.&lt;/li&gt;
&lt;li&gt;Jump into a taxi and say &amp;ldquo;follow that car!&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Jump from a bridge onto a moving train below.&lt;/li&gt;
&lt;li&gt;Extract a bullet from your shoulder (just a flesh wound) yourself using some metal scissor thing to pull the bullet out, look at it, and then drop it into a metal dish to hear a satisfying &amp;ldquo;ping!&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Shout at the passenger in your car to &amp;ldquo;take the wheel!&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Clip the correct wire on a bomb that had an LED timer when the timer has one second remaining.&lt;/li&gt;
&lt;li&gt;Spin kick a gun or knife out of someone’s hand.&lt;/li&gt;
&lt;li&gt;Punctuate a sentence with a shotgun cock.&lt;/li&gt;
&lt;li&gt;Throw down a smoke bomb and when the smoke clears you&amp;rsquo;re gone.&lt;/li&gt;
&lt;li&gt;Lose more than 4 hub caps from your car during a high speed chase.&lt;/li&gt;
&lt;li&gt;Look at a foot print on the ground, touch it with your hand and say &amp;ldquo;they went this way.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Act like you&amp;rsquo;re going to kick someone in the face but stop short and just stand there for an extended period of time with your leg up.&lt;/li&gt;
&lt;li&gt;If you’re in a standard police car, be sure to go in reverse with the doors open so they rip off and you can shoot better.&lt;/li&gt;
&lt;li&gt;Shoot a six shot revolver more than six times without reloading.&lt;/li&gt;
&lt;li&gt;Yell &amp;ldquo;don’t let him get away!&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Rip open someone’s shirt to find them wearing a wire.&lt;/li&gt;
&lt;li&gt;Get shot at a whole bunch but all the bullets hit the handrails next to you and be unscathed.&lt;/li&gt;
&lt;li&gt;If you kill a henchman that has a better gun than you, don’t pick it up.&lt;/li&gt;
&lt;li&gt;Crawl through some air ducts.&lt;/li&gt;
&lt;li&gt;Convince the bad guy who clearly has the upper hand on you that he shouldn’t just shoot you as that would be the easy way out, let’s go mano-a-mano.&lt;/li&gt;
&lt;li&gt;It’s really easy to have conversations with people in cars next to you even when going hella fast. Talk normal, they’ll be able to hear you just fine.&lt;/li&gt;
&lt;li&gt;Yell &amp;ldquo;get down it’s gonna blow!&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Dual wield pistols and shoot to empty the clips, then make the empty clips fall to the ground in unison.&lt;/li&gt;
&lt;li&gt;Ride on top of an elevator car.&lt;/li&gt;
&lt;li&gt;Tell someone that they don’t have the guts.&lt;/li&gt;
&lt;li&gt;Have someone enter a room thinking it’s empty only to find you hiding behind the door or (somehow) above the door frame.&lt;/li&gt;
&lt;li&gt;Dive behind a sofa while dual wielding and shooting. Make sure your body gets as horizontal as possible in the air.&lt;/li&gt;
&lt;li&gt;Ask someone &amp;ldquo;why me?&amp;rdquo; and they respond &amp;ldquo;because we needed the BEST!&amp;rdquo;&lt;/li&gt;
&lt;li&gt;While driving, shift more times than your car has gears. You can always go faster.&lt;/li&gt;
&lt;li&gt;Blow something up by pushing down on one of those old timey plungers.&lt;/li&gt;
&lt;li&gt;Get a cut on your face, then touch the cut, look at the blood on your fingers, then lick the blood off your fingers while you look menacing at your foe.&lt;/li&gt;
&lt;li&gt;Shoot a shotgun one handed and somehow magically have it not recoil into your face.&lt;/li&gt;
&lt;li&gt;Save a civilian and let bad guys get away first. It’ll show you’re a good person and worth rooting for.&lt;/li&gt;
&lt;li&gt;Kick someone (or get kicked) into a giant pile of cardboard boxes.&lt;/li&gt;
&lt;li&gt;Sneak around behind some bad guys, but don’t just shoot them right away. Make sure to give them a heads up that you’re behind them and make sure they hear a zinger before they die.&lt;/li&gt;
&lt;li&gt;Jump off of an exploding boat into a body of water.&lt;/li&gt;
&lt;li&gt;Drive a car into a house / building. Hopefully with floor to ceiling glass.&lt;/li&gt;
&lt;li&gt;Emerge from a body of water with a machine gun.&lt;/li&gt;
&lt;li&gt;Ghost ride your car into a bad guys lair, they pump the car full of lead, then open the door to discover you’re not there.&lt;/li&gt;
&lt;li&gt;Be interviewed by a reporter, and use that opportunity to talk shit into the camera directly to the lead bad guy about how you’re coming for them. The lead bad guy is of course tuned in and has an outburst.&lt;/li&gt;
&lt;li&gt;Use a bad guy as a human shield.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Biker Boyz vs. Torque</title><link>https://pdp.dev/posts/biker-boyz-torque/</link><pubDate>Sun, 05 Jul 2020 20:37:24 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biker-boyz-torque/</guid><description>&lt;p&gt;These silly motorcycle movies came out around the same time and tried to ride the wave of The Fast and the Furious, which BTW is an amazing movie franchise that I love (no joke). Sadly, there was no sequels to either of these movies, no Biker 2oyz or 2orque. But let’s compare.&lt;/p&gt;
&lt;h2 id="biker-boyz"&gt;Biker Boyz&lt;/h2&gt;
&lt;p&gt;Smoke, played by Larry Fishburne, is &amp;ldquo;The King of Cali&amp;rdquo; which is like the top motorcycle racing guy in California. The movie does nothing to explain what it means to be the KoC or what the benefits are. It just means you’re cool. There are some other people that want to be the KoC, including KID ROCK who goes by Dogg and wears a tight spiked dog collar and this other guy named Kid whose dad is Smoke’s mechanic. Anyway, if you want a better plot synopsis go Google it. This movie is boring. The characters suck, the races are boring, there don’t seem to be any adults around to have a realistic perspective on anything. It turns out Kid’s real dad is actually Smoke, plot twist, and there’s the big climatic final showdown race where the loser has to give up racing motorcycles FOREVER. Stakes is high!&lt;/p&gt;
&lt;p&gt;Smoke lets Kid &amp;ldquo;grow up and be a man&amp;rdquo; by letting him beat him, thus becoming the new KoC. Goddamn if I wanted someone to grow up I’d make them stop racing in their silly motorcycle crew. The final race is so boring, basically it’s like neither of them realize they can twist the throttle more until they’re getting passed. Lots of really intense throttle twisting. Yawn. Then a bunch of corny sentimentality.&lt;/p&gt;
&lt;p&gt;1 out of 4 cylinders.&lt;/p&gt;
&lt;p&gt;BTW, Larry Fishburne was in Death Wish 2, which I didn’t mention in &lt;a href="https://pdp.dev/posts/death-wish/"&gt;my Death Wish post&lt;/a&gt;. He plays a thug who gets shot in the face while trying to shield it with his boom box. Classy!&lt;/p&gt;
&lt;h2 id="torque"&gt;Torque&lt;/h2&gt;
&lt;p&gt;I watched this second and immediately knew I would enjoy it more. Right off the bat they throw down the gauntlet to Fast and Furious, as two cars racing get totally passed by a motorcycle guy doing a wheelie with flames shooting out of his exhaust and it makes the street signs spin like crazy as the motorcycle goes by going so fast and the spinning signs say &amp;ldquo;cars suck&amp;rdquo; and oh my god that’s so cool and there are like CGI zoom ins on motors as people push buttons on their steering wheels and the NOS explodes and then they’re like vrrrrroooooommmm and the gauges go to the max because they’re going so fast!&lt;/p&gt;
&lt;p&gt;I watched this movie with a friend remotely and it was a total hoot. Unlike Biker Boyz, this movie has motorcycles doing all kinds of physics defying bullshit. It’s wondrous. People riding real fast and getting kicked in a face and not losing their balance, and when someone needs to get away there is &lt;em&gt;always&lt;/em&gt; some sloped surface to ride up and jump off of. The movie makers were also &lt;em&gt;really&lt;/em&gt; obsessed with reflections and there are so many shots that involve mirrors and shiny objects.&lt;/p&gt;
&lt;p&gt;My favorite scene is when the two girls fight while on their motorcycles. No one would do this, they would just get off their motorcycles and fight. But this is Torque and all expression must happen through motorcycles. They bang front wheels and ride standing up while kicking and punching. The big final chase scene with the fastest bike in the universe (called the Y2K bike) is real silly. Thankfully, there is a YouTube clip of all this:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/oKkF0xdrz1A?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;All in all, this movie fires on 3 out of 4 cylinders. It’s not cinema, but it&amp;rsquo;s fun!&lt;/p&gt;</description></item><item><title>New Domain = pdp.dev</title><link>https://pdp.dev/posts/pdp-dev/</link><pubDate>Fri, 19 Jun 2020 16:00:02 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/pdp-dev/</guid><description>&lt;p&gt;New domain name: &lt;a href="https://pdp.dev"&gt;pdp.dev&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s two letters shorter than my old domain name! &lt;a href="https://pdp80.com"&gt;pdp80.com&lt;/a&gt; should still work, at least for the time being.&lt;/p&gt;</description></item><item><title>Arcade Capture Setup</title><link>https://pdp.dev/posts/arcade-capture-setup/</link><pubDate>Sat, 13 Jun 2020 20:01:26 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/arcade-capture-setup/</guid><description>&lt;p&gt;I recently discovered &lt;a href="https://mermaid-js.github.io/mermaid/#/"&gt;MermaidJS&lt;/a&gt; for drawing diagrams for work and found it to be really useful. I figured I&amp;rsquo;d use it to diagram how I can capture/record/stream from my arcade cabinets.&lt;/p&gt;
&lt;div class="mermaid"&gt;
graph TD;
A([Arcade Board])
Sp([Splice])
S([SEGV echo.chan Splitter])
C([Capture Card])
Cab([Arcade Cabinet])
Input([Joystick/Buttons])
Pi([Raspberry Pi Input Display])
OSSC([OSSC Scaler])
A-- Audio+Video Outputs --&gt;S;
S-- Audio+Video --&gt;OSSC;
OSSC-- HDMI --&gt;C;
S-- Audio+Video --&gt;Cab;
Input-- Inputs --&gt;Sp;
Sp-- Inputs --&gt;Pi;
Sp-- Inputs --&gt;A;
&lt;/div&gt;
&lt;p&gt;The &lt;a href="https://www.arcade-projects.com/forums/index.php?thread/7187-segv-echo-chan-%E2%9D%A4%EF%B8%8F/"&gt;SEGV echo.chan&lt;/a&gt; is a JAMMA extender that splits and the video and audio signals from an arcade board. Before I had this, I just spliced the video wires which led to a dim image and crappy quality since the video signal coming off an arcade board isn&amp;rsquo;t strong enough to drive two displays. The echo.chan has a video amp to maintain signal quality.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://www.retrorgb.com/ossc.html"&gt;OSSC&lt;/a&gt; is the &lt;strong&gt;O&lt;/strong&gt;pen &lt;strong&gt;S&lt;/strong&gt;ource &lt;strong&gt;S&lt;/strong&gt;can &lt;strong&gt;C&lt;/strong&gt;onverter which takes the 240p video signal and audio signal and outputs a 720p HDMI signal. The OSSC is a really fantastic piece of hardware!&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://pdp.dev/posts/jamma-input-display/"&gt;Raspberry Pi Input Display&lt;/a&gt; is my own creation that I&amp;rsquo;ve posted about before.&lt;/p&gt;
&lt;h2 id="hugo-shortcode"&gt;Hugo Shortcode&lt;/h2&gt;
&lt;p&gt;I created a little &lt;a href="https://gohugo.io/content-management/shortcodes/"&gt;Hugo Shortcode&lt;/a&gt; called &lt;code&gt;mermaid&lt;/code&gt; to easily embed these diagrams:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;mermaid&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{.Inner}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="diagram-source"&gt;Diagram Source&lt;/h2&gt;
&lt;p&gt;Using that shortcode, here&amp;rsquo;s the source for the above diagram:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{&amp;lt; mermaid &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;graph TD;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; J([Arcade Board])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Sp([Splice])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; S([SEGV echo.chan Splitter])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; C([Capture Card])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Cab([Arcade Cabinet])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Input([Joystick/Buttons])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Pi([Raspberry Pi Input Display])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; OSSC([OSSC Scaler])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; J-- Audio+Video Outputs --&amp;gt;S;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; S-- Audio+Video --&amp;gt;OSSC;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; OSSC-- HDMI --&amp;gt;C;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; S-- Audio+Video --&amp;gt;Cab;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Input-- Inputs --&amp;gt;Sp;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Sp-- Inputs --&amp;gt;Pi;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Sp-- Inputs --&amp;gt;J;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{&amp;lt; /mermaid &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Video Tag</title><link>https://pdp.dev/posts/video-tag/</link><pubDate>Sat, 13 Jun 2020 12:40:42 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/video-tag/</guid><description>&lt;p&gt;I read &lt;a href="https://www.dannyguo.com/blog/serve-videos-instead-of-gifs/"&gt;this article&lt;/a&gt; about serving up videos instead of GIFs to save on bandwidth costs so I wanted to give it a shot. Here&amp;rsquo;s a nice video of my &lt;a href="https://pdp.dev/posts/jamma-input-display/"&gt;JAMMA input display&lt;/a&gt; that I originally captured as a GIF.&lt;/p&gt;
&lt;video autoplay loop muted playsinline &gt;
&lt;source src="https://pdp.dev/videos/input_display.mp4" type="video/mp4"&gt;
&lt;p&gt;Your browser doesn't support this embedded video.&lt;/p&gt;
&lt;/video&gt;
&lt;p&gt;The original GIF of the above is &lt;strong&gt;1.1MB&lt;/strong&gt;. The mp4 is &lt;strong&gt;27KB&lt;/strong&gt;, or &lt;strong&gt;97%&lt;/strong&gt; smaller! That&amp;rsquo;s amazing!&lt;/p&gt;
&lt;h2 id="conversion"&gt;Conversion&lt;/h2&gt;
&lt;p&gt;On my Mac, I had to use this command to create the video:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ffmpeg -i input_display.gif -movflags faststart -pix_fmt yuv420p -vf &lt;span class="s2"&gt;&amp;#34;scale=trunc(iw/2)*2:trunc(ih/2)*2&amp;#34;&lt;/span&gt; input_display.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If I didn&amp;rsquo;t use those fancy options the video was corrupted and Firefox couldn&amp;rsquo;t play it.&lt;/p&gt;
&lt;h2 id="hugo-shortcode"&gt;Hugo Shortcode&lt;/h2&gt;
&lt;p&gt;To easily put these videos into blog posts, I created a &lt;a href="https://gohugo.io/content-management/shortcodes/"&gt;Hugo Shortcode&lt;/a&gt; called &lt;code&gt;videogif&lt;/code&gt; to easily embed &lt;code&gt;.mp4&lt;/code&gt; files.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;video&lt;/span&gt; &lt;span class="na"&gt;autoplay&lt;/span&gt; &lt;span class="na"&gt;loop&lt;/span&gt; &lt;span class="na"&gt;muted&lt;/span&gt; &lt;span class="na"&gt;playsinline&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;source&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;{{ .Get &amp;#34;&lt;/span&gt;&lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="err"&gt;&amp;#34;&lt;/span&gt; &lt;span class="err"&gt;}}&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;video/mp4&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Your browser doesn&amp;#39;t support this embedded video.&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;video&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To insert these into a blog post, all I need to do is:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{&amp;lt; videogif src=&amp;#34;/videos/input_display.mp4&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Raspberry Pis in the House</title><link>https://pdp.dev/posts/raspberry-pis/</link><pubDate>Fri, 29 May 2020 15:38:15 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/raspberry-pis/</guid><description>&lt;p&gt;I really love &lt;a href="https://www.raspberrypi.org/"&gt;Raspberry Pis&lt;/a&gt; and have quite a few lingering around our house doing various tasks. Here are the things our Pis handle.&lt;/p&gt;
&lt;h2 id="openhab"&gt;OpenHAB&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.openhab.org/"&gt;OpenHAB&lt;/a&gt; is a home automation platform that’s pretty decent, it’s kinda tough to set up but the interface is really customizable and it consolidates things like Hue bulbs and Z-Wave light switches into one place.&lt;/p&gt;
&lt;p&gt;Our favorite feature is double-tapping down on the &lt;a href="https://www.amazon.com/HomeSeer-HS-WD100-Scene-Capable-Repeater-SmartThings/dp/B01DFRWZNE"&gt;light switch in our bedroom&lt;/a&gt; to go to bed. This kicks off a script that turns off all the lights in the house, dims a few lights to be night lights, and turns on the white noise machine in our bedroom.&lt;/p&gt;
&lt;p&gt;I should put my configuration somewhere on GitHub someday&amp;hellip;&lt;/p&gt;
&lt;h2 id="pi-hole"&gt;Pi-hole&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://pi-hole.net/"&gt;Pi-hole&lt;/a&gt; is a DNS server that will black hole DNS requests for things like ad-servers, trackers, and anything else you want to block. Think of it as a network wide ad-blocker. You can see what devices on your network are doing, like why is my Smart TV phoning home constantly, and block certain activity.&lt;/p&gt;
&lt;p&gt;The thing that has surprised me is the volume of lookups that get blocked. It’s around 20%!&lt;/p&gt;
&lt;p&gt;See also: the &lt;a href="https://www.reddit.com/r/pihole/"&gt;Pi-hole subreddit&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="arcade-input-display"&gt;Arcade Input Display&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/wnka/arcadebuttons-node-pi"&gt;I created this program&lt;/a&gt; that will listen to the inputs (joystick, buttons) on my arcade cabinet though GPIO and displays them on a webpage using Node.js and WebSockets. It was really fun to build and was a good introduction to WebSockets! I wrote about it &lt;a href="https://pdp.dev/posts/jamma-input-display/"&gt;here&lt;/a&gt; when I created it and &lt;a href="https://pdp.dev/posts/pretty-input-display/"&gt;here&lt;/a&gt; when I made it look prettier.&lt;/p&gt;
&lt;p&gt;This physically runs on the same Pi as my Pi-hole instance.&lt;/p&gt;
&lt;h2 id="wireguard"&gt;WireGuard&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.wireguard.com/"&gt;WireGuard&lt;/a&gt; is a VPN that allows me to connect to my home network from anywhere. This enables a few things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Have my iPhone connect to my home network and route all DNS requests through Pi-hole. Why would I want to spend my precious &lt;a href="https://www.mintmobile.com/"&gt;cell phone data plan of 3GB a month&lt;/a&gt; downloading ads? WireGuard supports only routing some traffic through the VPN, so normal internet traffic doesn’t have to go over the VPN, just certain IP ranges.&lt;/li&gt;
&lt;li&gt;Use public internet with comfort. If I’m sitting in a coffee shop (pre-COVID of course) or whatever I can push all traffic through the VPN.&lt;/li&gt;
&lt;li&gt;Get access to OpenHAB and our NAS from anywhere. I only have to port-forward the WireGuard port and all other remote access is through the VPN.
The iPhone and Mac apps work well. I especially like that on the iPhone app you can say when I’m on cellular service use this profile that routes just 192.168.0.0/16 through the VPN, and if I’m on a WiFi network that isn’t whitelisted use another profile that pushes all traffic through the VPN.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="power-over-ethernet-is-awesome"&gt;Power over Ethernet is awesome&lt;/h2&gt;
&lt;p&gt;I have &lt;a href="https://www.ui.com/"&gt;Ubiquiti&lt;/a&gt; networking equipment in our house. Our house isn’t that big, but traditional WiFi routers could never give full coverage. I think it’s because our house has plaster walls which can have a wire mesh as a substructure, and that’s not good for radio signals. So, we’ve got a &lt;a href="https://www.ui.com/unifi/unifi-ap-ac-pro/"&gt;two UniFi access points &lt;/a&gt;which give great coverage.&lt;/p&gt;
&lt;p&gt;I have a &lt;a href="https://www.ui.com/unifi-switching/unifi-switch-8/"&gt;UniFi Switch&lt;/a&gt; that has Power over Ethernet (PoE) ports. I use it to power the access points but you can get a &lt;a href="https://www.amazon.com/gp/product/B07TJ3ZNJ4"&gt;splitter&lt;/a&gt; that will take a PoE network connection and split it into a network cable and USB power for a Raspberry Pi. Fewer cables!&lt;/p&gt;
&lt;h2 id="the-future"&gt;The Future?&lt;/h2&gt;
&lt;p&gt;For a bit I set up a &lt;a href="https://matrix.org/"&gt;Matrix homeserver&lt;/a&gt; and was playing around with that, but it was just for fun and I shut it down. I might try and consolidate that WireGuard and Pi-hole/Arcade Pis so I just have 2, but eh why bother.&lt;/p&gt;</description></item><item><title>MacBook Pro 16"</title><link>https://pdp.dev/posts/macbook-pro-16/</link><pubDate>Wed, 27 May 2020 12:03:47 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/macbook-pro-16/</guid><description>&lt;p&gt;I got a new MacBook Pro 16&amp;quot; laptop in mid-February, right before everything locked down for COVID. I wanted a better machine for work as the standard issue 13-inch was too cramped on the go for my tastes.&lt;/p&gt;
&lt;p&gt;Well I’m not really much on the go anymore but I still really like this laptop. It’s great!&lt;/p&gt;
&lt;p&gt;I upgraded from an old Retina 13-inch (2015?), pre USB-C with the MagSafe power.&lt;/p&gt;
&lt;p&gt;This is my desk/WFH set up:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1960_hu_d514ef8ad116bd74.jpeg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;h2 id="keyboard"&gt;Keyboard&lt;/h2&gt;
&lt;p&gt;Nothing to write about which is good. My home laptop is a MacBook that has the controversial butterfly keyboard and yea, it’s different but I can type on it just fine. I definitely prefer this keyboard though, my biggest complaint about the butterfly keyboard mechanism is that it&amp;rsquo;s loud. This one is nice and quiet, I can aggressively take notes on a conference call and no one will hear a thing.&lt;/p&gt;
&lt;h2 id="touchbar"&gt;TouchBar&lt;/h2&gt;
&lt;p&gt;This is my first time using a TouchBar. It’s ok, my main point of frustration is that I have accidentally triggered shit when resting my fingers up there. I recently found out that you can customize the buttons, I got rid of the Siri button and added a button for “Do Not Disturb” mode which is incredibly useful. I got &lt;a href="https://folivora.ai/"&gt;BetterTouchTool&lt;/a&gt; to provide some buttons for Emacs (mostly org-mode related capture stuff). Overall I’m neutral on it. When I’m at my desk I still use the laptop keyboard and trackpad so at least I don&amp;rsquo;t have to transition back and forth between having and not having a TouchBar.&lt;/p&gt;
&lt;h2 id="docking"&gt;Docking&lt;/h2&gt;
&lt;p&gt;I’m living the one cord dream. I got an &lt;a href="https://www.amazon.com/gp/product/B07DPKVYXR/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;amp;psc=1"&gt;HP Thunderbolt 3 dock&lt;/a&gt; which works well. Got my monitor, nice webcam, Ethernet, microphone, and power all coming in through one cable.&lt;/p&gt;
&lt;p&gt;I thought I would miss MagSafe but being able to plug in on either side of the laptop is pretty handy. In addition to my desk (where I plug in on the left), I have a USB-C power + HDMI dongle going to my 4K LG OLED TV which is a nice option for hanging out on the couch (where I plug in on the right).&lt;/p&gt;
&lt;h2 id="speakers--mic"&gt;Speakers / Mic&lt;/h2&gt;
&lt;p&gt;The speakers in this thing are &lt;strong&gt;awesome!&lt;/strong&gt; This was a pleasant surprise. I don&amp;rsquo;t hook up external speakers, but then again I&amp;rsquo;m not blasting tunes that loud.&lt;/p&gt;
&lt;p&gt;With working remotely I spend a lot of time on video calls and I use the built in microphone, it seems to work well as folks seem to be able to hear me fine.&lt;/p&gt;
&lt;h2 id="performance"&gt;Performance&lt;/h2&gt;
&lt;p&gt;It’s fast I guess. Go read some other review for more details.&lt;/p&gt;
&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;I dig it and am glad I bought it. I look forward to sitting in a coffee shop with it someday.&lt;/p&gt;
&lt;p&gt;The only thing I don’t like is the USB-C only thing, but I get it. I bought a bunch of cheap dongles off Amazon and have accepted this new reality. The screen real estate is a big improvement.&lt;/p&gt;
&lt;h2 id="favorite-tools"&gt;Favorite Tools&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.alfredapp.com/"&gt;Alfred&lt;/a&gt; for launching stuff and doing web searches. The ability to make custom web search targets is super useful for internal work sites.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://magnet.crowdcafe.com/"&gt;Magnet&lt;/a&gt; for moving around windows with the keyboard.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flowapp.info/"&gt;Flow&lt;/a&gt; for Pomodoro timin&amp;rsquo;. I like it because it allows you to blacklist apps (OUTLOOK and CHATS) while on the clock.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hlissner/doom-emacs"&gt;Doom Emacs&lt;/a&gt; for editing. I actually don&amp;rsquo;t write much code in Emacs, but I use &lt;a href="https://orgmode.org/"&gt;org-mode&lt;/a&gt; for all my TODOs, notes, and &lt;a href="https://github.com/bastibe/org-journal"&gt;journal&lt;/a&gt;. My config files are &lt;a href="https://github.com/wnka/piwonka-doom-emacs"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.macbartender.com/"&gt;Bartender&lt;/a&gt; to keep my menu bar tidy.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="minimizing-distractions"&gt;Minimizing distractions&lt;/h2&gt;
&lt;p&gt;Not really related to getting a new machine but I thought I&amp;rsquo;d share this here. I get distracted really easily. When I start my day at work I run a script that does all the 2FA and stuff I need to SSH around and whatnot, and at the end of that script I blackhole the DNS for a bunch of distracting websites using entries in &lt;code&gt;/etc/hosts&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I put entries in my &lt;code&gt;/etc/hosts&lt;/code&gt; like this for sites I want to block:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 0.0.0.0 www.thehardtimes.net #PDPFUN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When it&amp;rsquo;s time to work, I run &lt;code&gt;worktime&lt;/code&gt;, which makes sure that my overrides are in effect:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/usr/bin/env bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sed -i.bak &lt;span class="s2"&gt;&amp;#34;s/^# \(.*\)#PDPFUN/\1#PDPWORK/g&amp;#34;&lt;/span&gt; /etc/hosts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /etc/hosts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dscacheutil -flushcache
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo killall -HUP mDNSResponder
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This enables those override entries in &lt;code&gt;/etc/hosts&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;0.0.0.0 www.thehardtimes.net &lt;span class="c1"&gt;#PDPWORK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When I want to take a break, I run &lt;code&gt;funtime&lt;/code&gt;, which comments out my overrides so I can access all those fun sites:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/usr/bin/env bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sed -i.bak &lt;span class="s2"&gt;&amp;#34;s/^\(.*\)#PDPWORK/# \1#PDPFUN/g&amp;#34;&lt;/span&gt; /etc/hosts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /etc/hosts
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo dscacheutil -flushcache
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo killall -HUP mDNSResponder
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Perhaps there&amp;rsquo;s a better way to do this, but this has been pretty effective at keeping me from drifting off while compiling or whatever.&lt;/p&gt;</description></item><item><title>Death Wish movies</title><link>https://pdp.dev/posts/death-wish/</link><pubDate>Sun, 03 May 2020 16:56:56 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/death-wish/</guid><description>&lt;p&gt;I watched all the Death Wish movies that star Charles Bronson. I think there was a remake with Bruce Willis? Maybe I’ll watch that later, but I’m pretty sure I got the point.&lt;/p&gt;
&lt;p&gt;I watched the movies in this order: 4, 5, 3, 2, 1&lt;/p&gt;
&lt;p&gt;I’ve seen talk of watching the Star Wars movie in a unique order, I’ve never seen this for another movie series. I’m definitely glad I saved #1 for last, because it served as a prequel and origin story to the silliness.&lt;/p&gt;
&lt;p&gt;They’re dumb silly fun. Don’t think about it too much. Someone wrongs Charles Bronson (I can’t even remember his character’s name at the moment) and then he goes on a killing spree of all those remotely involved. Someone close to him get killed and then he goes into “well I guess I gotta blow the dust off my guns” mode and starts killing. He’s alarmingly emotionless and stoic while doing this killing, but of course he throws in some one liners and quips before shooting people.&lt;/p&gt;
&lt;p&gt;My favorite in terms of silliness is #4, the first one to watch if you watch this in Phil Piwonka order. It’s the kind of scenario that makes no sense and only a bad guy in a movie would come up with to construct a plot. Charles Bronson’s girlfriends’ daughter dies of a drug overdose. So watch out drug dealers! This guy approaches CB and tells him “hey my daughter died of that shit too, I’m rich and I have all this information about the local drug networks, you should kill all those people!” CB is just like “yea ok” and the movie is underway. Of course the rich guy also provides CB with a massive number of giant guns. Once CB wipes out all drug people, it turns out (SPOILER ALERT) the rich guy is himself a drug person and was just using CB to get rid of his competition! So you know what that means: gotta kill him too.&lt;/p&gt;
&lt;p&gt;Oh Jack Kersey is his characters name, I just remembered. He’s an architect.&lt;/p&gt;
&lt;p&gt;The first movie is by far the best. CB seems human and is described as a ‘bleeding heart liberal’ (aka a wuss) who has wussy views on crime and all that. That all changes when his wife and daughter are attacked (the attackers include Jeff Goldblum!) leaving his wife dead and his daughter in a bad mental state. No one saw what happened, we never see the attackers again. CB has no leads. The police have no leads. But CB shoots a gun one day and feels power, you know, the kind of power god must feel when he shoots a gun, and starts taking out his mental anguish on muggers. He starts going out at night and putting himself in precarious situations, basically putting $100 on a string and luring “bad guys” into the bushes and shooting them. He doesn’t get his revenge, he doesn’t find Jeff Goldblum. At the end of the movie he leaves New York for Chicago, and the final scene is him seeing some “thugs” in the train station and pointing his finger like a gun at them. My take away from that final scene: this guy is nuts and needs some therapy.&lt;/p&gt;
&lt;p&gt;By the way his name is Paul Kersey, not Jack Kersey. I think I was thinking of Jack Dorsey the Twitter guy.&lt;/p&gt;
&lt;p&gt;The rest of the series holds police in low regard, that if you want justice you gotta take matters into your own hands. Everyone who isn’t a police officer seems to have this attitude: the people who CB saves with his vigilantism refuse to give the police any sort of helpful description of CB since they think the cops suck and that they’ll just get in the way. Want true justice? Gotta have someone going around shooting bad guys. Sometimes the cops acknowledge that their hands are tied by bureaucratic red tape so it’s a good thing CB is out there. WHAT?!&lt;/p&gt;
&lt;p&gt;In the first movie when CB kills his first mugger he goes back to his apartment and throws up, showing he’s actually human. The first movie doesn’t have any one liners before he shoots people. In all sequels he’s making all kinds of quips before he pumps dudes full of lead. It’s really cartoony, the guns get bigger and the bad guys aim gets worse so he’s really able to clear rooms full of bad guys.&lt;/p&gt;
&lt;p&gt;Anyway, I’ll rate the whole series 2 out of 6 bullets in a revolver. The first movie is worth watching since it’s kind of interesting in how they show CB and what he’s doing with some ambiguity. The rest are just silly action movies where CB is basically a robot that gets set into motion.&lt;/p&gt;
&lt;p&gt;I watched these movies the way I watch a lot of movies now: on my phone, near a sleeping baby, with subtitles and the volume up one click from muted.&lt;/p&gt;</description></item><item><title>Biking March 2020, WFH, COVID-19</title><link>https://pdp.dev/posts/2020-march-biking-covid/</link><pubDate>Fri, 03 Apr 2020 17:44:45 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2020-march-biking-covid/</guid><description>&lt;p&gt;Biking has taken a hit because I just don’t really want to go outside. COVID-19
is upon us and my biggest concern about biking outside is more around falling
and getting hurt and needing to go to the overwhelmed hospital than anything
else. Peloton has been absolutely fantastic during this craziness and my wife
and I are both doing rides daily&amp;hellip; or at least trying to. In March, I biked
&lt;strong&gt;133 miles&lt;/strong&gt; for a total this year of 656 miles.&lt;/p&gt;
&lt;p&gt;My last day in the office was Wednesday March 4th. Working from home all day
with a 5 month old in the house has been interesting. It’s been tough when I
hear Ramona fussing or crying&amp;hellip; I instinctively want to help out and feel
guilty when I don’t, but the biggest helper with that is just communication with
my wife and setting expectations. For this time range, consider me at work.
Outside of that range, I&amp;rsquo;m at home.&lt;/p&gt;
&lt;p&gt;Breaking up the day has been super important and doing a Peloton ride in the
middle of the day helps a lot. A longer ride of 45 minutes works well to give me
enough time to really get my mind off things and actually feel like I’m taking a
break, shorter rides feel like quick asides that I’m just waiting to be over
with so I can get back to what I was working on.&lt;/p&gt;
&lt;p&gt;Overall, I’m lucky throughout all this. It is stressful with concerns about
older family members and either me or my wife getting isolated from Ramona.
Everything has a thicker layer of anxiety, from going to the grocery store to
passing someone while out on a walk. Positives are that we have been cooking a
lot and spending time in our backyard. I get to spend a lot more time with
Ramona which is great. So, onward!&lt;/p&gt;</description></item><item><title>Video Game Music</title><link>https://pdp.dev/posts/video-game-music/</link><pubDate>Sat, 21 Mar 2020 10:55:16 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/video-game-music/</guid><description>&lt;p&gt;When I&amp;rsquo;m working, I like listening to repetitive instrumental music to minimize
distraction. Video game music works really well for this since it&amp;rsquo;s designed to
be background music that can be looped over and over. Thankfully there are lots
of video game music fans that have uploaded soundtracks to YouTube that you can easily pull up and listen to. Also, Red Bull Music Academy did a
great documentary series called &lt;em&gt;Diggin&amp;rsquo; in the Carts&lt;/em&gt; which can be found &lt;a href="https://www.youtube.com/watch?v=vBb59ZUkJao&amp;amp;list=PLtbJmr1Wtatc_k8o8tIgt3A5bvbFoutBG"&gt;on YouTube&lt;/a&gt;
that I &lt;strong&gt;highly recommend.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I figured I&amp;rsquo;d share how I listen as well as some of my favorite music.
&lt;a href="https://github.com/vgmrips/vgmplay"&gt;VGMPlay&lt;/a&gt; is a nice command line player that
emulates the sound chips used by consoles and arcade hardware. It uses &lt;code&gt;.vgz&lt;/code&gt;
files which contain samples and instructions to the sound hardware emulated by
VGMPlay. The files are nice and small: my entire library is only about 160MB.&lt;/p&gt;
&lt;p&gt;VGMPlay isn&amp;rsquo;t terribly well documented, but you can find the default &lt;code&gt;.ini&lt;/code&gt; file
&lt;a href="https://github.com/vgmrips/vgmplay/blob/master/VGMPlay/VGMPlay.ini"&gt;here&lt;/a&gt; which
you copy into the same directory as &lt;code&gt;vgmplay&lt;/code&gt; and alter to your taste. To
increase the number of loops per song, change &lt;code&gt;MaxLoops&lt;/code&gt; in the &lt;code&gt;.ini&lt;/code&gt; to a higher
hexadecimal value. It defaults to &lt;code&gt;0x02&lt;/code&gt; (or two loops), I pump that up to &lt;code&gt;0x04&lt;/code&gt;
which causes the desired amount of repetition.&lt;/p&gt;
&lt;h2 id="places-to-get-music-files"&gt;Places to get music files&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://vgmrips.net"&gt;VGMRIPS&lt;/a&gt; for arcade games. Some console stuff, but mostly NES.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://project2612.org"&gt;Project2612&lt;/a&gt; for Genesis/Mega Drive music.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.smspower.org/Music/VGMs"&gt;SMS Power&lt;/a&gt; for Sega Master System.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="some-personal-favorites"&gt;Some personal favorites&lt;/h2&gt;
&lt;p&gt;I included YouTube links as an easy way to listen. The VGMPlay links typically
include an &lt;code&gt;.m3u&lt;/code&gt; playlist that you can give to &lt;code&gt;vgmplay&lt;/code&gt; to hear the whole
soundtrack.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Battle Garegga - Arcade - &lt;a href="https://www.youtube.com/watch?v=1BK5ACIbJRI"&gt;YouTube&lt;/a&gt; / &lt;a href="https://vgmrips.net/packs/pack/battle-garegga-toaplan-2"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cave Story - PC/Various - &lt;a href="https://www.youtube.com/watch?v=HFbr3kjReok"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cho Ren Sha 68k - Sharp x68000/PC - &lt;a href="https://www.youtube.com/playlist?list=PLA7E90B6A7F3A3750"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Darius - Arcade - &lt;a href="https://www.youtube.com/watch?v=d-cIbTQfog4"&gt;YouTube&lt;/a&gt; / &lt;a href="https://vgmrips.net/packs/pack/darius-arcade"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fantasy Zone II - Arcade - &lt;a href="https://www.youtube.com/watch?v=s5hCOsYQhZ4"&gt;YouTube&lt;/a&gt; / &lt;a href="https://vgmrips.net/packs/pack/fantasy-zone-ii-dx-sega-system-16c"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gimmick! - NES/Famicom - &lt;a href="https://www.youtube.com/watch?v=aU0GEcU63qw"&gt;YouTube&lt;/a&gt; / &lt;a href="https://vgmrips.net/packs/pack/gimmick-family-computer"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lagrange Point - NES/Famicom - &lt;a href="https://www.youtube.com/watch?v=drwX7MbB_IE"&gt;YouTube&lt;/a&gt; / &lt;a href="https://vgmrips.net/packs/pack/lagrange-point-family-computer"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;M.U.S.H.A. - Genesis/Mega Drive - &lt;a href="https://www.youtube.com/watch?v=HmkXl2u4Zuc"&gt;YouTube&lt;/a&gt; / &lt;a href="https://project2612.org/details.php?id=320"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Phantasy Star - SMS FM version - &lt;a href="https://www.youtube.com/watch?v=sivhm5KRa8A"&gt;YouTube&lt;/a&gt; / &lt;a href="https://www.smspower.org/Games/PhantasyStar-SMS"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Raiden Fighters 2 - Arcade - &lt;a href="https://www.youtube.com/watch?v=adq4kQd19Js&amp;amp;list=PL-vD6rIjXrcIem1KHAy_9PGAYZk_aremX"&gt;YouTube&lt;/a&gt; / &lt;a href="https://vgmrips.net/packs/pack/raiden-fighters-2-operation-hell-dive-seibu-spi-system"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Recca - NES/Famicom - &lt;a href="https://www.youtube.com/watch?v=QbdDW3aSCyM"&gt;YouTube&lt;/a&gt; / &lt;a href="https://vgmrips.net/packs/pack/summer-carnival-92-recca-family-computer"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Revenge of Shinobi - Genesis/Mega Drive - &lt;a href="https://www.youtube.com/watch?v=-ekCndckJfU"&gt;YouTube&lt;/a&gt; / &lt;a href="https://project2612.org/details.php?id=135"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ridge Racer - Arcade/PSX - &lt;a href="https://www.youtube.com/watch?v=h3_s3Lqvdcs&amp;amp;list=PL5MAATZlrqOhGQ6trLJ-iFCg2_TrGuEOU&amp;amp;index=10"&gt;YouTube&lt;/a&gt; / &lt;a href="https://vgmrips.net/packs/pack/ridge-racer-namco-system-22"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Street Fighter II - Arcade - &lt;a href="https://www.youtube.com/watch?v=LQw-a8sApLQ&amp;amp;list=PL60138D0ECA664BF7"&gt;YouTube&lt;/a&gt; / &lt;a href="https://vgmrips.net/packs/pack/street-fighter-ii-the-world-warrior-cp-system"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Streets of Rage 2 - Genesis/Mega Drive - &lt;a href="https://www.youtube.com/watch?v=gGJGOv8HS5c"&gt;YouTube&lt;/a&gt; / &lt;a href="https://project2612.org/details.php?id=56"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Strider - Arcade - &lt;a href="https://www.youtube.com/watch?v=DgBLKfy5ErI"&gt;YouTube&lt;/a&gt; / &lt;a href="https://vgmrips.net/packs/pack/strider-arcade"&gt;vgmplay&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="play-script"&gt;Play Script&lt;/h2&gt;
&lt;p&gt;I keep this script in the Dropbox folder with all my music files, it will
continually pick a random &lt;code&gt;.m3u&lt;/code&gt; playlist.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;OIFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$IFS&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;IFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$&amp;#39;\n&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; i in &lt;span class="sb"&gt;`&lt;/span&gt;find . -name &lt;span class="s2"&gt;&amp;#34;*.m3u&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; gshuf&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; vgmplay &lt;span class="nv"&gt;$i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Press q to exit or any key to continue&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Timeout after 3 seconds to keep the party rolling&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;read&lt;/span&gt; -n &lt;span class="m"&gt;1&lt;/span&gt; -t &lt;span class="m"&gt;3&lt;/span&gt; input
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nv"&gt;$input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;q&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nv"&gt;$input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Q&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;then&lt;/span&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;IFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$OIFS&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Biking February 2020</title><link>https://pdp.dev/posts/2020-feb-biking/</link><pubDate>Sun, 01 Mar 2020 21:55:02 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2020-feb-biking/</guid><description>&lt;p&gt;In February I biked &lt;strong&gt;214 miles&lt;/strong&gt; for a total of 523 miles in 2020 so far. This was pretty much all commuting to work with a few Peloton rides sprinkled in. I biked to work every day except &lt;em&gt;three&lt;/em&gt; which I&amp;rsquo;m pretty proud of!&lt;/p&gt;
&lt;p&gt;~500 miles in two months puts me on track for 3,000 miles in twelve months. Just gotta keep it up!&lt;/p&gt;</description></item><item><title>Biking January 2020</title><link>https://pdp.dev/posts/2020-jan-biking/</link><pubDate>Sat, 01 Feb 2020 15:15:43 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2020-jan-biking/</guid><description>&lt;p&gt;In January I biked &lt;strong&gt;309 miles&lt;/strong&gt; which is pretty great. My paternity leave ended on Jan 6 and every day I went into work in January I biked&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;. Biking is by far the best way for me to get to work since it takes a very consistent amount of time. No traffic or late busses to deal with.&lt;/p&gt;
&lt;p&gt;Consistency is super important to my schedule these days since with a kiddo at home I need to plan out my day a lot more than I used to. I’ve been working pretty fixed hours and ensuring that I’m home at a certain time to help out my wife with the baby.&lt;/p&gt;
&lt;p&gt;Weather has been really rainy, even for Seattle. I use two &lt;a href="https://www.amazon.com/Ortlieb-Back-Roller-Panniers-Various-Patterns/dp/B0063879QQ"&gt;paniers/saddlebags&lt;/a&gt; to transport my stuff, which includes a change of clothes since I shower at work. Things that have really helped with riding comfortably in the rain:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Fizik-X5-Artica-Shoe-Black/dp/B077H5QVVJ"&gt;Waterproof shoes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Pearl-Izumi-AMFIB-Lobster-Gloves/dp/B00SOMS8AK"&gt;Waterproof gloves&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/gp/product/B000TA73Z6"&gt;Wool socks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Minus33-Merino-Wool-Midweight-Balaclava/dp/B01LZH96TH"&gt;Balaclava&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I also mixed in 10 minute Peloton “cool down” rides after I got home each day and rode to the grocery store on weekends to get in more miles. In February I’m going to continue commuting but I might cool it on other rides and try to do something else with that time. I kinda miss video games&amp;hellip;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;I didn’t bike to work on my wife’s birthday since we went and had a nice breakfast. Reasonable exception!&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>2019 Biking End</title><link>https://pdp.dev/posts/2019-biking-end/</link><pubDate>Wed, 01 Jan 2020 21:07:13 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2019-biking-end/</guid><description>&lt;p&gt;Happy New Year!&lt;/p&gt;
&lt;p&gt;In 2019 I biked &lt;strong&gt;1,903 miles&lt;/strong&gt; which crushed my goal of 1,500 miles. I was hoping to hit 2,000 miles but getting sick in the middle of December made that hard.&lt;/p&gt;
&lt;p&gt;For 2020 I am setting a goal of 2,000 miles. Now that we have a baby it&amp;rsquo;s going to be hard for me to go on longer rides, however I&amp;rsquo;m planning on doing a lot more commuting to work by bike. That plus doing Peloton rides can probably get me there. We&amp;rsquo;ll see!&lt;/p&gt;</description></item><item><title>Dodonpachi easy cheezy 1-ALL</title><link>https://pdp.dev/posts/dodonpachi-1all/</link><pubDate>Sat, 28 Dec 2019 09:00:10 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/dodonpachi-1all/</guid><description>&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/DoDonPachi"&gt;Dodonpachi&lt;/a&gt; is a classic bullet hell STG that I played a lot in MAME when I got back into STGs in like 2007 / 2008. I never 1-ALL&amp;rsquo;d it, meaning I never beat the first loop of the game on one credit. I&amp;rsquo;ve cleared a lot of other games since so I figured my improved skills would make short work of getting that 1-ALL. It took about six hours of playing to pull it off, with baby Ramona as my trusty co-pilot who mostly slept by my side while I played.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/F-riSbHnnv0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;The game gives you a &lt;strong&gt;lot&lt;/strong&gt; of resources in that your bomb stock goes up by one each time you die, so you can have up to six bombs. As long as you use those bombs in tight situations the game is pretty easy. This has always been a problem for me though, I tend to not want to bomb but instead prove to myself that I&amp;rsquo;m a superplayer that has tremendous dodging abilities. Once I really committed to &amp;rsquo;no bomb left behind&amp;rsquo; though, the clear came pretty easily.&lt;/p&gt;
&lt;p&gt;My score is junk but I&amp;rsquo;m ok with that. Dodonpachi scoring is based on &lt;strong&gt;chaining&lt;/strong&gt;, meaning when you kill an enemy a timer starts and if you kill another enemy within that timer you get a multiplier and the timer starts over. If you memorize all the enemy placements and time your shooting, you can build up huge chains that lead to huge scores. This is totally not my cup of tea, I don&amp;rsquo;t want to memorize all that stuff only to have a mistake completely wreck my score.&lt;/p&gt;
&lt;p&gt;There are some great players that have put in the time to learn those chains and beat the second loop, which is quite an amazing feat. These videos by &lt;a href="https://www.youtube.com/watch?v=16yD84DZJto"&gt;Mark_MSX&lt;/a&gt; and &lt;a href="https://www.youtube.com/watch?v=fNWUhcT19Dc"&gt;Jaimers&lt;/a&gt; are really impressive. It was fun to learn some of the bullet patterns, but my Dodonpachi journey ends here.&lt;/p&gt;</description></item><item><title>Ramona June</title><link>https://pdp.dev/posts/ramona-june/</link><pubDate>Tue, 12 Nov 2019 11:24:42 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/ramona-june/</guid><description>&lt;p&gt;&lt;strong&gt;Ramona June Welch Piwonka&lt;/strong&gt; was born on October 24th 2019 at 12:13pm. She weighed 7 lbs 3.5 oz and was 20 inches long.&lt;/p&gt;
&lt;p&gt;Mom and baby are both doing well. We are super excited to have Ramona in our lives.&lt;/p&gt;
&lt;p&gt;My wife and I have been together since 2005 and married since 2011. We do things slowly and having kids was not something that we ruled out but it was something we really wanted to be comfortable with.&lt;/p&gt;
&lt;p&gt;For me, I was always afraid of the impact having kids would have on my life and how I’d lose a lot of freedom to do what I want when I want. Selfish, but it was how I felt. In September 2017 my dad passed away unexpectedly which was very hard on me and my family. It made me think a lot about loss and what I wanted to accomplish with my life. Things were kind of feeling a little stagnant and repetitive&amp;hellip; another video game, another work project, etc.&lt;/p&gt;
&lt;p&gt;Things changed for &lt;a href="https://www.kristawelch.com/journal/index.php/2018/6/why-photos-matter-to-me-and-why-we-must-print-them"&gt;my wife and her family relationships&lt;/a&gt; at the same time my dad passed. We revisited the baby conversations and decided we wanted to have kids. We wanted to have one big international trip together, which was our Japan trip in late 2018. After that, we started trying to get pregnant.&lt;/p&gt;
&lt;p&gt;Krista surprised me on Valentines Day 2019 that she was pregnant. Our baby’s due date was October 25th!&lt;/p&gt;
&lt;p&gt;Ramona was born one day early on October 24th. Labor was long and hard on my wife but she’s a badass and did great. We had great support from &lt;a href="https://nwhospital.org/locations/midwives-clinic/"&gt;midwives&lt;/a&gt; and our &lt;a href="https://www.bornrooted.com"&gt;doula&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I am on parental leave until January 2020 to bond as a family. It’s been going well so far, the days are pretty unpredictable and getting just one thing accomplished is a feat, but we’re getting in lots of snuggles and naps.&lt;/p&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0252_hu_e2d158fd332201b8.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0243_2_hu_6fc992ddc3de6ba5.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0308_hu_7e6ca7e98a4ee704.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Love to all!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-Phil, Krista, and Ramona&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Biking October 2019</title><link>https://pdp.dev/posts/2019-oct-biking/</link><pubDate>Sun, 03 Nov 2019 18:22:02 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2019-oct-biking/</guid><description>&lt;p&gt;In October 2019, I biked only &lt;strong&gt;66 miles&lt;/strong&gt;. Why? We had a &lt;strong&gt;BABY&lt;/strong&gt; which really is cutting into my biking time! More on that baby soon!&lt;/p&gt;
&lt;p&gt;My biking total for 2019 is now &lt;strong&gt;1,709 miles&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Biking September 2019</title><link>https://pdp.dev/posts/2019-sept-biking/</link><pubDate>Sat, 05 Oct 2019 14:59:20 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2019-sept-biking/</guid><description>&lt;p&gt;In September 2019, I biked &lt;strong&gt;207.8 miles&lt;/strong&gt;. I haven&amp;rsquo;t been going on long rides as much so these miles are mostly commuting to work miles.&lt;/p&gt;
&lt;p&gt;My biking total for 2019 is now &lt;strong&gt;1,643.8 miles&lt;/strong&gt;, meeting my goal of riding 1,500 miles this year!&lt;/p&gt;</description></item><item><title>Biking August 2019</title><link>https://pdp.dev/posts/2019-aug-biking/</link><pubDate>Fri, 06 Sep 2019 20:50:04 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2019-aug-biking/</guid><description>&lt;p&gt;In August 2019, I biked &lt;strong&gt;197 miles&lt;/strong&gt;. Bit of a drop from last month for a few reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I was on pager duty for work which makes going for long rides and commuting via bike difficult. I could have done Peloton rides, but I just didn&amp;rsquo;t OK!?!&lt;/li&gt;
&lt;li&gt;We had friends come and stay with us for almost a week which made it tough to get bike time in, but that&amp;rsquo;s ok!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My biking total for 2019 is now &lt;strong&gt;1,436 miles&lt;/strong&gt; which is just 64 miles short of the 1,500 mile goal I set at the beginning of the year. Could I hit 2,000 miles by the end of the year?!&lt;/p&gt;</description></item><item><title>Input Display Style Improvements</title><link>https://pdp.dev/posts/pretty-input-display/</link><pubDate>Sat, 03 Aug 2019 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/pretty-input-display/</guid><description>&lt;p&gt;I made visual improvements to my arcade input display which can be found &lt;a href="https://github.com/wnka/arcadebuttons-node-pi"&gt;here on GitHub&lt;/a&gt;. The display is pure CSS and was heavily influenced by this &lt;a href="https://github.com/davidvandusen/joystick"&gt;CSS Joystick project&lt;/a&gt;.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/buttonslocal_hu_efa893f108be511c.jpg" alt="The old style" width="768" height="433" /&gt;
&lt;figcaption class="center" &gt;BEFORE: The old style&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/pretty-input_hu_1147d2ee4291b540.jpg" alt="The new style" width="768" height="522" /&gt;
&lt;figcaption class="center" &gt;AFTER: The new style&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I styled it after the control panel on my Astro City cabinet, which explains the green and the button layout.&lt;/p&gt;
&lt;p&gt;You can see it in action here, where I played some Espgaluda and got a new personal best 1cc clear score of &lt;strong&gt;28,582,720&lt;/strong&gt;!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/HPHacrqdxy0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Biking July 2019</title><link>https://pdp.dev/posts/2019-july-biking/</link><pubDate>Thu, 01 Aug 2019 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2019-july-biking/</guid><description>&lt;p&gt;In July 2019 I biked &lt;strong&gt;355 miles&lt;/strong&gt;, a new monthly record! This brings my 2019 total to &lt;strong&gt;1,238 miles!&lt;/strong&gt; I did my &lt;a href="https://pdp.dev/posts/metric-century-ride/"&gt;longest ride ever&lt;/a&gt; and bought a &lt;a href="https://www.onepeloton.com/bike"&gt;Peloton bike&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Why a Peloton bike?&lt;/p&gt;
&lt;p&gt;It was my wife&amp;rsquo;s super smart idea! We are expecting our first child in late October and while my wife is pregnant she wanted an easy way to get some light cardio in. For me, after baby arrives I am not going to be able to do long five hour bike rides for a while.&lt;/p&gt;
&lt;p&gt;My long rides are good efforts, but they&amp;rsquo;re pretty meandering and low intensity. Once a group of older gray haired riders &lt;strong&gt;blew past me&lt;/strong&gt; and I thought &amp;ldquo;damn I wish I could go that fast.&amp;rdquo; I figured that with Peloton I could actually train and track how my output is improving. I&amp;rsquo;ve been doing different classes and I really enjoy the HIIT (High Intensity Interval Training) rides. I&amp;rsquo;m already seeing improvement in my outdoor riding when it comes to being able to accelerate and maintain speed going up a hill. I had never really thought much about keeping a steady pedal cadence and that has really helped me think about what gear to be in.&lt;/p&gt;
&lt;p&gt;There are always new classes and committing to live classes helps me plan my workouts. I did a class every day from July 17th to July 31st except for one day, so I&amp;rsquo;m off to a good start.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/peloton_hu_70e0f63d26c3da7b.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;p&gt;First ride! Got pretty sweaty! Also, this motivated a much needed garage cleanup and many trips to Goodwill.&lt;/p&gt;
&lt;p&gt;Follow me on Peloton! My username is &lt;strong&gt;pdp80&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Metric Century Ride</title><link>https://pdp.dev/posts/metric-century-ride/</link><pubDate>Tue, 16 Jul 2019 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/metric-century-ride/</guid><description>&lt;p&gt;&lt;strong&gt;New distance personal best!&lt;/strong&gt; I rode 63.3 miles, which is 101.87 kilometers. This is a &lt;strong&gt;metric century ride&lt;/strong&gt; since I rode more than 100km. Next goal is an imperial century ride!&lt;/p&gt;
&lt;h2 id="routestats"&gt;Route/Stats&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1234_hu_f312b1917ef8e63f.jpeg" width="768" height="768" /&gt;
&lt;/figure&gt;
&lt;p&gt;Full Strava activity &lt;a href="https://www.strava.com/activities/2529762617"&gt;here&lt;/a&gt;&lt;/p&gt;</description></item><item><title>HEY Shmup List</title><link>https://pdp.dev/posts/hey-shmup-list/</link><pubDate>Tue, 09 Jul 2019 21:26:19 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/hey-shmup-list/</guid><description>&lt;p&gt;When we were in Japan in late Sept/early Oct 2018, I went to the &lt;a href="https://shmups.system11.org/viewtopic.php?f=1&amp;amp;t=57102"&gt;HEY! arcade in Akihabara which is known for their impressive shmup line up&lt;/a&gt;. Impressive indeed! I was thinking back to that trip and found that I noted down the shmups they had when I was there. For fun, here&amp;rsquo;s the list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1943 Kai&lt;/li&gt;
&lt;li&gt;19xx&lt;/li&gt;
&lt;li&gt;After Burner 2&lt;/li&gt;
&lt;li&gt;Air Buster&lt;/li&gt;
&lt;li&gt;Area 88&lt;/li&gt;
&lt;li&gt;Armed Police Batrider&lt;/li&gt;
&lt;li&gt;Batsugun Special Version&lt;/li&gt;
&lt;li&gt;Battle Bakraid&lt;/li&gt;
&lt;li&gt;Battle Garegga&lt;/li&gt;
&lt;li&gt;Daioh&lt;/li&gt;
&lt;li&gt;Dangun Feveron&lt;/li&gt;
&lt;li&gt;Darius 2&lt;/li&gt;
&lt;li&gt;Darius Burst&lt;/li&gt;
&lt;li&gt;Darius Gaiden&lt;/li&gt;
&lt;li&gt;DeathSmiles&lt;/li&gt;
&lt;li&gt;DeathSmiles Mega Black Label&lt;/li&gt;
&lt;li&gt;Dodonpachi&lt;/li&gt;
&lt;li&gt;Dodonpachi 2&lt;/li&gt;
&lt;li&gt;Dodonpachi Daifukkatsu&lt;/li&gt;
&lt;li&gt;Dodonpachi Daifukkatsu Black Label&lt;/li&gt;
&lt;li&gt;Dodonpachi Daioujou Black Label&lt;/li&gt;
&lt;li&gt;Dodonpachi Saidaioujou&lt;/li&gt;
&lt;li&gt;Dragon Blaze&lt;/li&gt;
&lt;li&gt;Espgaluda&lt;/li&gt;
&lt;li&gt;Espgaluda 2&lt;/li&gt;
&lt;li&gt;Esprade&lt;/li&gt;
&lt;li&gt;Fantasy Zone&lt;/li&gt;
&lt;li&gt;Final Star Force&lt;/li&gt;
&lt;li&gt;G Darius&lt;/li&gt;
&lt;li&gt;Gain Ground&lt;/li&gt;
&lt;li&gt;Gigawing&lt;/li&gt;
&lt;li&gt;Gradius&lt;/li&gt;
&lt;li&gt;Gradius 3&lt;/li&gt;
&lt;li&gt;Gunbird&lt;/li&gt;
&lt;li&gt;Gunbird 2&lt;/li&gt;
&lt;li&gt;Guwange&lt;/li&gt;
&lt;li&gt;Heavy Unit&lt;/li&gt;
&lt;li&gt;Ibara Kuro&lt;/li&gt;
&lt;li&gt;Image Fight&lt;/li&gt;
&lt;li&gt;In The Hunt&lt;/li&gt;
&lt;li&gt;Ketsui&lt;/li&gt;
&lt;li&gt;Kingdom Grand Prix&lt;/li&gt;
&lt;li&gt;Lost Worlds / Forgotten Worlds&lt;/li&gt;
&lt;li&gt;Mahou Daisakusen&lt;/li&gt;
&lt;li&gt;Metal Black&lt;/li&gt;
&lt;li&gt;Muchi Muchi Pork&lt;/li&gt;
&lt;li&gt;Mushihimesama&lt;/li&gt;
&lt;li&gt;Mushihimesama 1.5&lt;/li&gt;
&lt;li&gt;Mushihimesama Futari&lt;/li&gt;
&lt;li&gt;Mushihimesama Futari Black Label&lt;/li&gt;
&lt;li&gt;Night Striker&lt;/li&gt;
&lt;li&gt;Parodius - Fantastic Parodius (I think)&lt;/li&gt;
&lt;li&gt;Parodius - Sexy Parodius (I think)&lt;/li&gt;
&lt;li&gt;Pink Sweets&lt;/li&gt;
&lt;li&gt;Progear&lt;/li&gt;
&lt;li&gt;R-Type&lt;/li&gt;
&lt;li&gt;R-Type 2&lt;/li&gt;
&lt;li&gt;R-Type Leo&lt;/li&gt;
&lt;li&gt;Radiant Silvergun&lt;/li&gt;
&lt;li&gt;Raiden&lt;/li&gt;
&lt;li&gt;Raiden DX&lt;/li&gt;
&lt;li&gt;Raiden Fighters&lt;/li&gt;
&lt;li&gt;Raiden Fighters Jet&lt;/li&gt;
&lt;li&gt;RayCrisis&lt;/li&gt;
&lt;li&gt;RayForce&lt;/li&gt;
&lt;li&gt;RayStorm&lt;/li&gt;
&lt;li&gt;Soukyugurentai / Terra Diver&lt;/li&gt;
&lt;li&gt;Star Force&lt;/li&gt;
&lt;li&gt;Strato Fighter&lt;/li&gt;
&lt;li&gt;Strikers 1945&lt;/li&gt;
&lt;li&gt;Strikers 1999&lt;/li&gt;
&lt;li&gt;Strikers 2&lt;/li&gt;
&lt;li&gt;Truxton 2&lt;/li&gt;
&lt;li&gt;U.S. Navy&lt;/li&gt;
&lt;li&gt;Ultra X Weapons&lt;/li&gt;
&lt;li&gt;Varth&lt;/li&gt;
&lt;li&gt;Viper Phase 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They also had a few &lt;a href="https://en.wikipedia.org/wiki/NESiCAxLive"&gt;NESiCAxLive&lt;/a&gt; cabinets that had a bunch of games, I saw at least Crimzon Clover and Ikaruga.&lt;/p&gt;</description></item><item><title>Espgaluda 1CC 27,436,670</title><link>https://pdp.dev/posts/espgaluda-1cc-27mil/</link><pubDate>Fri, 05 Jul 2019 20:26:18 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/espgaluda-1cc-27mil/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/_DtIkmp-fqg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;My best score in this game and it&amp;rsquo;s a &lt;strong&gt;ONE CREDIT CLEAR!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I first got this game back in 2011 and got a 1CC pretty soon after I got it with a score of 27,387,750. I haven&amp;rsquo;t played it much since then, but I recently hooked up all my PCBs to make sure they still work, and settled to play this a bit more. I barely squeaked past that score with this run, and now I have a video of a 1cc run!&lt;/p&gt;</description></item><item><title>Final Fight Fixed!</title><link>https://pdp.dev/posts/final-fight-fix/</link><pubDate>Mon, 01 Jul 2019 19:42:44 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/final-fight-fix/</guid><description>&lt;p&gt;This last weekend, after my &lt;a href="https://pdp.dev/posts/bike-june-2019/"&gt;long bike ride&lt;/a&gt; on Saturday, I took some time on Sunday and poked at my &lt;a href="http://en.wikipedia.org/wiki/Final_fight"&gt;Final Fight&lt;/a&gt; arcade board to see if I could figure out its graphical issues. &lt;strong&gt;I FIXED IT!&lt;/strong&gt; I originally bought this game to swap parts to fix my &lt;a href="https://pdp.dev/posts/strider-pcb-fixed/"&gt;Strider arcade board&lt;/a&gt; and I knew the issue was in the B-board.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the &lt;strong&gt;before&lt;/strong&gt;:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/20120528-213148_hu_ea600331e23dab78.jpg" width="600" height="804" /&gt;
&lt;/figure&gt;
&lt;p&gt;To diagnose the issue, I had a random idea to look at the outputs of the graphics roms. I started by just grounding some output pins to see what that did to the screen. Interestingly, it produced a very similar fault to what I was seeing: that is, vertical lines running through the screen at different offsets. I found a pin that when I grounded it made &lt;em&gt;no difference&lt;/em&gt; to the screen. &lt;strong&gt;We have a candidate!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Next I used a &lt;a href="https://en.wikipedia.org/wiki/Logic_probe"&gt;logic probe&lt;/a&gt; to see if that pin was outputting anything and found that it was. So data was coming out of the pin, but the signal was getting lost along the way. I followed the trace on the board and used my volt meter to test the continuity. The signal was getting lost! I soldered up some wires to fix the trace and the issue is fixed!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1167_hu_88853cf3a8252b22.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;p&gt;Here&amp;rsquo;s the &lt;strong&gt;after&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1169_hu_93f494a6f79c8f17.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1173_hu_32405295e5b7633d.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;It only took me about &lt;strong&gt;seven years&lt;/strong&gt; to get around to fixing this. Once I sat down to do it, it only took about an hour. I gotta say that I felt pretty &lt;strong&gt;COOL&lt;/strong&gt; after fixing this, and for a fleeting moment thought about going and buying &lt;em&gt;broken&lt;/em&gt; arcade boards on eBay to see if I could fix them, but I don&amp;rsquo;t believe I&amp;rsquo;ll be doing &lt;em&gt;that!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Biking June 2019</title><link>https://pdp.dev/posts/bike-june-2019/</link><pubDate>Mon, 01 Jul 2019 19:29:42 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/bike-june-2019/</guid><description>&lt;p&gt;I biked a lot in June and wrapped the month up with a ride around &lt;em&gt;all&lt;/em&gt; of Lake Washington.&lt;/p&gt;
&lt;p&gt;I’ve covered all this ground in separate routes, but with the longer rides I&amp;rsquo;ve been doing I figured it was time to do the whole thing at once. I lucked out with weather, it was a beautiful sunny day. I went clockwise around the lake. I left at about 8am and stopped at Metropolitan Market in Sand Point, right off the Burke Gilman trail, for some coffee and a breakfast of eggs and sausage. I also picked up some snacks for the road, like meat and cheese, a hummus snack pack, and a cookie.&lt;/p&gt;
&lt;p&gt;From there I rode up and over Juanita Hill down into Kirkland and through Bellevue. I stopped at Coulon Park for a double cheeseburger from Kidd Valley, some rest, reapplication of sunscreen, and a water refill. Then I went around the Boeing plant at the south end of the lake, up to Seward Park, then along the west side of the lake to back home.&lt;/p&gt;
&lt;p&gt;All in all, 50.6 miles. Not too bad.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1149_hu_d9c4b734c9bd3648.JPG" width="768" height="768" /&gt;
&lt;/figure&gt;
&lt;p&gt;I also did 4 commutes to work by bike this week, so I rode a total of 102.2 miles!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For the month of June, I biked 344.6 miles! This is a new monthly record!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So far in 2019 I’ve biked 893 miles!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Vashon Island Biking</title><link>https://pdp.dev/posts/bike-vashon/</link><pubDate>Wed, 26 Jun 2019 18:24:32 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/bike-vashon/</guid><description>&lt;p&gt;This past weekend I biked from my house to West Seattle, where I caught a ferry to Vashon Island and then did some biking there. My wife &lt;em&gt;loves&lt;/em&gt; Vashon Island so she drove our car separately and we met up on the island for a nice dinner at &lt;a href="https://www.yelp.com/biz/the-ruby-brink-vashon"&gt;The Ruby Brink&lt;/a&gt;. Yummy meal!&lt;/p&gt;
&lt;p&gt;Biking to West Seattle to get on the ferry was easy, I got to ride through downtown Seattle on &lt;a href="http://www.seattle.gov/transportation/projects-and-programs/programs/bike-program/protected-bike-lanes/2nd-ave-mobility-improvements"&gt;2nd Ave which has a nice separated bike lane&lt;/a&gt; you can comfortably ride down. I took the long way around West Seattle so I could ride along Alki Beach and enjoy the views of the Puget Sound.&lt;/p&gt;
&lt;p&gt;Biking onto the ferry was easy and cheap, $6 to ride for me and my bike. Once you get off the ferry, you&amp;rsquo;re faced with this giant hill you have to climb to get to the main street of Vashon Island. It&amp;rsquo;s about a mile long and pretty steep, plus there&amp;rsquo;s only a narrow shoulder and all the cars getting off the ferry are passing you. Not pleasant like the 2nd Ave bike lane but not too bad.&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t do a ton of biking around the island but I will definitely head over there again and do more riding. I didn&amp;rsquo;t ride my bike home but instead threw it in the back of our car and rode with my wife.&lt;/p&gt;
&lt;p&gt;Great way to spend a beautiful day in Seattle.&lt;/p&gt;
&lt;h2 id="route--stats"&gt;Route / Stats:&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1129_hu_9b4b2aec01751b10.JPG" width="768" height="768" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1128_hu_c906e4ae44ed4f59.JPG" width="768" height="768" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Full Strava activity &lt;a href="https://www.strava.com/activities/2472295942"&gt;here&lt;/a&gt; and &lt;a href="https://www.strava.com/activities/2472364063"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="pictures-from-along-the-way"&gt;Pictures from along the way:&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1109_hu_a4d76973e5003c3.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1111_hu_c8bee2c9f49d225b.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1114_hu_c42f7caeb5c4d5d8.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1117_hu_540ddf27809bd21b.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Biking May 2019 - Bike Every Day and BelRedSamMerSea</title><link>https://pdp.dev/posts/bike-may-2019/</link><pubDate>Fri, 31 May 2019 18:15:09 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/bike-may-2019/</guid><description>&lt;p&gt;This month I set the goal of biking every day and I did it. It&amp;rsquo;s been great! I biked &lt;strong&gt;268.3 miles&lt;/strong&gt; in total and most rides were short, but on the last day of the month I went on the longest ride I&amp;rsquo;ve ever done at &lt;strong&gt;45.3 miles&lt;/strong&gt; to serve as a finale. I rode from my house to &lt;strong&gt;Bel&lt;/strong&gt;levue, through &lt;strong&gt;Red&lt;/strong&gt;mond, south on the eastside of Lake &lt;strong&gt;Sam&lt;/strong&gt;mamish, then west across &lt;strong&gt;Mer&lt;/strong&gt;cer Island and finally back to &lt;strong&gt;Sea&lt;/strong&gt;ttle. I shall call this route &lt;strong&gt;BelRedSamMerSea&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;I super enjoyed this route. The trail around the east side of Lake Sammamish was a flat ride and other parts had some hills to climb but nothing horrible. I will say that by the end of the ride I was pretty exhausted and was slowly creeping home. Some day I want to do a century ride (100 miles) but damn, by the end of this ride I would be less than half way there which was a reality check that I&amp;rsquo;ve got a long way to go before I can pull that off&amp;hellip;&lt;/p&gt;
&lt;h2 id="belredsammersea-routestats"&gt;BelRedSamMerSea Route/Stats&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1020_hu_705066bdfd8e5021.JPG" width="768" height="768" /&gt;
&lt;/figure&gt;
&lt;p&gt;Full Strava activity &lt;a href="https://www.strava.com/activities/2412727330"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="pictures-from-along-the-way"&gt;Pictures from along the way:&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1016_hu_8200cfd62449dae3.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1017_hu_cbe94771c3d22ca6.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1019_hu_243f0674c859ddf6.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Bicycle Sundays</title><link>https://pdp.dev/posts/bike-sunday/</link><pubDate>Sun, 12 May 2019 20:37:33 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/bike-sunday/</guid><description>&lt;p&gt;Today was the first &lt;a href="https://parkways.seattle.gov/2019/01/07/mark-calendar-2019-bicycle-sundays/"&gt;Bicycle Sunday&lt;/a&gt; of the year here in Seattle and I took advantage by going for a ride with some coworkers.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0933_hu_7e25bb3ae6345ed6.JPG" width="768" height="768" /&gt;
&lt;/figure&gt;
&lt;p&gt;My biking has really been slacking off in recent months, so my goal for May is to bike every single day. I&amp;rsquo;m not putting any distance or time requirements, even pedaling up and down my alley counts (thankfully I haven&amp;rsquo;t had to resort to that level of lameness yet). I swapped the pedals on my bike from being SPD clip-ins to being combo SPD clip on one side and regular flats on the other. Being able to just hop on my bike with regular shoes makes running little errands so much more appealing since I don&amp;rsquo;t have to worry about carrying or not-carrying regular shoes.&lt;/p&gt;</description></item><item><title>Biking February 2019</title><link>https://pdp.dev/posts/2019-feb-biking/</link><pubDate>Sun, 17 Mar 2019 10:39:35 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2019-feb-biking/</guid><description>&lt;p&gt;In February 2019, I biked &lt;strong&gt;16.3 miles&lt;/strong&gt;. Quite the drop from January! What the hell happened? 2 things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Weather in Seattle has been &lt;strong&gt;cold&lt;/strong&gt; and really not nice for biking. There was the biggest snow storm I&amp;rsquo;ve ever experienced since moving here in 2006!&lt;/li&gt;
&lt;li&gt;I got called for jury duty and ended up serving on a jury for about 4 weeks. It was a &lt;a href="https://www.seattletimes.com/seattle-news/murder-charge-filed-after-body-found-in-shopping-cart/"&gt;pretty crazy case&lt;/a&gt; and riding my bike to the courthouse while serving wasn&amp;rsquo;t really an option.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So far in March, I&amp;rsquo;ve biked &lt;strong&gt;36.4 miles&lt;/strong&gt;. February put a pretty big dent in my habit. The weather is getting a lot nicer here though so I&amp;rsquo;ll get back out there.&lt;/p&gt;</description></item><item><title>Biking January 2019</title><link>https://pdp.dev/posts/biking-january-2019/</link><pubDate>Thu, 14 Feb 2019 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biking-january-2019/</guid><description>&lt;p&gt;In January 2019, I biked &lt;strong&gt;155 miles&lt;/strong&gt;. I didn&amp;rsquo;t really do any long rides, most of these miles came from commuting to work. Good start to the year!&lt;/p&gt;</description></item><item><title>Muchi Muchi Pork 1-ALL 135,255,400</title><link>https://pdp.dev/posts/mmp-pb-135-mil/</link><pubDate>Mon, 11 Feb 2019 20:02:16 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mmp-pb-135-mil/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZFuUf9xCLDA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;It&amp;rsquo;s been snowing in Seattle which means a lot of sitting indoors, so this weekend I played some &lt;a href="https://en.wikipedia.org/wiki/Muchi_Muchi_Pork!"&gt;Muchi Muchi Pork&lt;/a&gt; and streamed it on Twitch. I was able to improve my 1-ALL score from 127,207,710 to 135,255,400.&lt;/p&gt;
&lt;p&gt;My current goal is get on the high score table on my PCB, which I got from Japan &lt;a href="https://pdp.dev/posts/muchi-muchi-pork-pcb/"&gt;back in January 2014&lt;/a&gt; (weird to think that was &lt;em&gt;five&lt;/em&gt; years ago) and it has some pretty crazy scores saved on it. For me to even get on the high score table, I would need at least 150 million. Seems doable if I practice and get some of the boss timings down.&lt;/p&gt;
&lt;p&gt;Also, I&amp;rsquo;ve improved my arcade capture setup which I&amp;rsquo;ll detail in a future post. The sound on this video recorded a little too loud which is why it&amp;rsquo;s a bit distorted, gotta fix that.&lt;/p&gt;</description></item><item><title>2018 Biking End</title><link>https://pdp.dev/posts/2018-biking-end/</link><pubDate>Mon, 31 Dec 2018 21:04:47 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2018-biking-end/</guid><description>&lt;p&gt;I slacked pretty hard on biking after our &lt;a href="https://pdp.dev/posts/japan-2018/"&gt;Japan Trip&lt;/a&gt;, so very few miles added in Oct/Nov/Dec. I did bike to work today, the last day of the year, to add 10 miles to my total.&lt;/p&gt;
&lt;p&gt;2018 total miles: &lt;strong&gt;1,111!&lt;/strong&gt; Cool to land on a number that&amp;rsquo;s ALL ONES!&lt;/p&gt;</description></item><item><title>Remote Coin Insertion</title><link>https://pdp.dev/posts/remote-coin-insertion/</link><pubDate>Tue, 30 Oct 2018 21:44:43 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/remote-coin-insertion/</guid><description>&lt;p&gt;Batteries on arcade PCBs are a pain. Gotta keep an eye on them to make sure they don’t start leaking acid and corroding everything. Also, sometimes removing them will intentionally ruin a game. &lt;a href="http://www.arcadecollecting.com/dead/"&gt;Read all about that here&lt;/a&gt;. Swapping &lt;a href="https://en.wikipedia.org/wiki/CP_System_II"&gt;CPS2&lt;/a&gt; batteries is always a little stressful, thankfully I haven&amp;rsquo;t had any problems when swapping those&amp;hellip;&lt;/p&gt;
&lt;p&gt;I looked at my &lt;a href="http://www.hardcoregaming101.net/ketsui/"&gt;Ketsui&lt;/a&gt; PCB and the battery was getting a little fuzzy, so I desoldered it and will just run the game with no battery. If you can run the game with no battery, what does use the battery for? You might think “high scores” but nope, Ketsui doesn’t save high scores. It only uses it to save the service menu options, so for example if you want to set the game to freeplay, change the difficulty, or turn off the sound for the demo loop. I used to run it with no battery, but had to reinstall one when I loaned it to the arcade operator at &lt;a href="https://www.yelp.com/biz/full-tilt-ice-cream-seattle-5"&gt;Full Tilt Ballard&lt;/a&gt; so he could change the coin settings (50 cents to start, 25 cents to continue) when we put the game on location there. When I got it back from him I just left the battery on so I could run the game in freeplay mode at home.&lt;/p&gt;
&lt;p&gt;I’d rather just not worry about the battery damaging the game, so I removed it and now the game runs with default settings and I gotta insert a coin to play. What a &lt;strong&gt;catastrophic inconvenience!&lt;/strong&gt; But what if I didn’t have to &lt;em&gt;actually&lt;/em&gt; insert a coin? The coin mechanism in an arcade cabinet is basically a hunk of plastic only lets quarters (or whatever currency) pass through. When they do pass through, they fall down a chute into a coin bucket and on the way flip a little switch that sends a signal to the PCB. That switch is basically just like a button in that it has a signal and a ground.&lt;/p&gt;
&lt;p&gt;I’ve already got a Raspberry Pi sitting under the control panel of my cabinet that runs &lt;a href="https://pdp.dev/posts/jamma-input-display/"&gt;the input display I built&lt;/a&gt;. The code for this is on &lt;a href="https://github.com/wnka/arcadebuttons-node-pi"&gt;Github&lt;/a&gt;. I made it able to &lt;a href="https://pdp.dev/posts/input-display-improvements/"&gt;trigger buttons remotely&lt;/a&gt;, which was fun to write but pretty useless&amp;hellip; until now.&lt;/p&gt;
&lt;p&gt;So to remotely trigger a coin drop, all I need to do is wire up the coin switch just like I wired up the buttons, which means hooking a &lt;a href="https://www.raspberrypi.org/documentation/usage/gpio/"&gt;GPIO pin&lt;/a&gt; to the signal wire of the coin switch. An alligator clip made that super easy and the coin switch still works as normal.&lt;/p&gt;
&lt;p&gt;The first attempt to remotely trigger the switch didn’t do anything. The game didn’t register the coin drop. &lt;strong&gt;Hmm.&lt;/strong&gt; When I built the remote button pressing feature I just arbitrarily made it hold the button down for one second. A coin falling down a chute isn’t going to trigger the switch for a full second, so I made that time shorter (100ms) and BAM, remote coin insertion worked!&lt;/p&gt;
&lt;p&gt;Some games will crash and show “coin error” if they detect goofy/fraudulent behavior on the coin switch. I can imagine someone with a quarter on a string causing switch weirdness. Ketsui apparently just ignores weird inputs.&lt;/p&gt;
&lt;p&gt;I didn’t want to stop there, I wanted to be able to trigger this from my phone and Apple Watch. The input display just uses &lt;a href="https://socket.io"&gt;Socket.IO&lt;/a&gt; for the input handling, and there’s a &lt;a href="https://github.com/socketio/socket.io-client-swift"&gt;Swift client library for Socket.IO&lt;/a&gt;. It was easy to create an app that was one button that said INSERT COIN that will send a message over the socket and trigger the switch.&lt;/p&gt;
&lt;video controls
preload=none
playsinline=true
poster=/images/insert_coin_remote_preview_hu_7b5ad32ca51775f8.jpg
src=https://pdp.dev/videos/insert_coin_remote.mp4
width=720
height=720
&gt;
&lt;p&gt;Your browser doesn't support this embedded video.&lt;/p&gt;
&lt;/video&gt;
&lt;p&gt;Quick aside, library handling in Xcode is weird and hard. I used &lt;a href="https://github.com/Carthage/Carthage"&gt;Carthage&lt;/a&gt; which worked ok but still required a bunch of manual setup in the build targets.&lt;/p&gt;
&lt;p&gt;Anyway this was a fun little project. Played a few Ketsui credits and sucked, I’m out of practice on that game.&lt;/p&gt;
&lt;p&gt;Interestingly, the &lt;a href="http://www.system16.com/hardware.php?id=809"&gt;hardware Ketsui runs on&lt;/a&gt; does have some NVRAM which someone created a &lt;a href="http://ikotsu.blogspot.com/2012/08/ketsui-save-hack.html"&gt;hacked ROM&lt;/a&gt; for using that to store high scores. I could burn an EPROM and give it a shot, but I&amp;rsquo;d rather not risk it and I know my scores. I wonder what that NVRAM is actually used for?&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the Swift code for the Apple Watch app. Pretty simple:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-swift" data-lang="swift"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// InterfaceController.swift&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// InsertCoinWatch WatchKit Extension&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="nc"&gt;WatchKit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="nc"&gt;Foundation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;import&lt;/span&gt; &lt;span class="nc"&gt;SocketIO&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Set this to where you&amp;#39;re running&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// https://github.com/wnka/arcadebuttons-node-pi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;http://192.168.0.208:8079/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Setting .reconnects(false) helped the app not freak out after being asleep.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// I&amp;#39;m sure I&amp;#39;m doing something wrong, but without it a ton of connections would get&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// created and fired on over time.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;manager&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SocketManager&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;socketURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;compress&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;forceNew&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;forcePolling&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reconnects&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;socket&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;manager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;defaultSocket&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;InterfaceController&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;WKInterfaceController&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;override&lt;/span&gt; &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;awake&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;withContext&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Any&lt;/span&gt;&lt;span class="p"&gt;?)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kc"&gt;super&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;awake&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;withContext&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clientEvent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ack&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;connected&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;override&lt;/span&gt; &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;willActivate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// This method is called when watch view controller is about to be visible to user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kc"&gt;super&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;willActivate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;override&lt;/span&gt; &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;didDeactivate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// This method is called when watch view controller is no longer visible&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kc"&gt;super&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;didDeactivate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;@IBAction&lt;/span&gt; &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;onCoin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;WKInterfaceButton&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// This gets called when you push the button&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Let&amp;#39;s play!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;clicked&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;button&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;coin&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Japan Trip 2018</title><link>https://pdp.dev/posts/japan-2018/</link><pubDate>Sun, 28 Oct 2018 18:11:28 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/japan-2018/</guid><description>&lt;p&gt;Krista and I were in Japan from Sept 22nd to Oct 3rd. This was our first trip to Japan and we totally loved it! &lt;a href="https://www.instagram.com/stories/highlights/17982598309054531/"&gt;Krista&amp;rsquo;s Instagram story shows a good pictoral summary of our trip.&lt;/a&gt; Below is the day-by-day log I kept during the trip.&lt;/p&gt;
&lt;h2 id="day-0---sept-21"&gt;Day 0 - Sept 21&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Woke up at 3am to get to the airport. Krista stayed up all night, I slept probably 2 hours.&lt;/li&gt;
&lt;li&gt;Our flight path was SEA -&amp;gt; LAX, LAX -&amp;gt; NRT. While taxiing in SEA, a warning light came on and they had to pull over to get it checked out. It ended up being a problem so the flight got delayed. Then the most magical airline customer service thing happened: they crammed us onto another flight headed for LAX that would allow us to not miss our Tokyo flight. They didn&amp;rsquo;t think our bags would make it, but at least we would!&lt;/li&gt;
&lt;li&gt;Made it to LAX and the Tokyo flight just in time. We got exit row seats, which meant I could cross my legs and stretch out.&lt;/li&gt;
&lt;li&gt;Continued my tradition of not being able to sleep on airplanes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-1---sept-22"&gt;Day 1 - Sept 22&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Flew in fine, went through customs and magically our bags made it! I&amp;rsquo;m impressed!&lt;/li&gt;
&lt;li&gt;Rode the train to our hotel. Super easy to figure out. Short walk from Kanda station which was down an alley and neat. Vending machines!&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ryumeikan-honten.jp/en/"&gt;Hotel&lt;/a&gt; is bonkers. Big Japanese style tub in the room!&lt;/li&gt;
&lt;li&gt;Asked hotel staff for dinner options. Wanted something light, so we went for tempura. Because our hotel is baller, they sent us to a baller &lt;a href="http://www.tempura-yamanoue.jp/en/"&gt;tempura place&lt;/a&gt; that was not cheap at all and we didn&amp;rsquo;t realize that until we sat down and saw the menu/prices. So we splurged and got to sit there and watch the guy make tempura. It was in the &lt;a href="https://www.yamanoue-hotel.co.jp/eng/"&gt;Hilltop Hotel&lt;/a&gt;, a short walk from our hotel.&lt;/li&gt;
&lt;li&gt;Came back, crashed. We went to bed at a decent time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-2---sept-23"&gt;Day 2 - Sept 23&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Woke up about 5am.&lt;/li&gt;
&lt;li&gt;Watched some TV. Made coffee in the room. News shows here will show a story and then have a PiP of the news caster so we can see their reactions to things. What’s up with that?&lt;/li&gt;
&lt;li&gt;Bidets are awesome.&lt;/li&gt;
&lt;li&gt;Walked to Akihabara at like 7:20am. Nothing was open yet, so it was kinda neat seeing everything shuttered and off.&lt;/li&gt;
&lt;li&gt;Bought cans of coffee from a vending machine. Struggled to find a place to sit down and drink them.&lt;/li&gt;
&lt;li&gt;Walked to Akihabara station, grappled with buying Suica cards but eventually figured it out. Easy!&lt;/li&gt;
&lt;li&gt;Had breakfast at this buffet place. It was ok, not great, but it was nice. Egg omelette slices and sausage, nothing super Japanese. Krista got these beans that were in this super stringy sauce.&lt;/li&gt;
&lt;li&gt;Saw a bunch of people lined up outside a &lt;a href="https://www.yodobashi.com/ec/store/0018/"&gt;giant electronics store&lt;/a&gt;. So we got in line cuz why not. It opened at 9:30. Touched the new iPhones (Xs and Xs MAX) for the first time. Also the new Apple Watch. 6 floors of electronics! They had tons of models too, like Macross and Gundam but also &lt;a href="https://www.tamiya.com/english/e-home.htm"&gt;Tamiya&lt;/a&gt; shit like cars, planes, tanks and boats. That was really cool. It was like a better Fry’s than Fry’s. I bought an iPhone charging cord since I forgot mine. We left there at like 11.&lt;/li&gt;
&lt;li&gt;Had lunch at 7-11. 7-11 is nice in Japan. Food was good! Soft boiled egg, rice ball, and Coke Zero.&lt;/li&gt;
&lt;li&gt;Went to &lt;a href="https://www.youtube.com/watch?v=dDyRnrWH1xQ"&gt;HEY&lt;/a&gt;, the arcade. Super cool place, rows of STG cabs, was super cool to be in a place I&amp;rsquo;d read about and seen pictures of for years. Played the &lt;a href="https://en.wikipedia.org/wiki/Ketsui:_Kizuna_Jigoku_Tachi"&gt;Ketsui&lt;/a&gt; PS4 port, got to stage 4 boss then blew it. This was pretty special, as that port doesn&amp;rsquo;t come out until Nov 29th but &lt;a href="https://m2stg.com/en/"&gt;M2&lt;/a&gt; were just happening to do a location test while we were in town. My favorite thing about HEY was just watching all the good players play games. Saw someone with an A score in &lt;a href="https://en.wikipedia.org/wiki/Battle_Garegga"&gt;Garegga&lt;/a&gt;, someone on the 2nd Ketsui loop, someone at Hibachi in &lt;a href="https://en.wikipedia.org/wiki/DoDonPachi_DaiOuJou"&gt;DOJ&lt;/a&gt;. Such pros! A guy double played the Ketsui PS4 cab. Oh and if folks made it to the second loop on the Ketsui PS4 cab, they’d just suicide and end their game. Courtesy? If they made Ura loop would they have done that? So many questions. Went to another Sega arcade but it was all newer stuff. There was a basement floor that seemed to have nude cartoon ladies. Didn’t go, but we walked past some dudes headed that way!&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/hey1_hu_3d436a12f965b8f8.jpg" alt="Hey" width="768" height="768" /&gt;
&lt;figcaption class="center" &gt;Me walking around HEY arcade&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/hey2_hu_b128ba9cf696bb99.jpg" alt="Hey" width="768" height="767" /&gt;
&lt;figcaption class="center" &gt;Look at all those vertical monitors and hardcore shmup players&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/hey3_hu_c79c5256992560a7.jpg" alt="Hey" width="768" height="768" /&gt;
&lt;figcaption class="center" &gt;Playing the Ketsui PS4 Location Test&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/hey4_hu_4d2551a6a7094b3e.jpg" alt="Hey" width="768" height="767" /&gt;
&lt;figcaption class="center" &gt;This dude was doing double-play, note the big stack of fliers to the right&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/hey5_hu_5bb4b3de0996f880.jpg" alt="Hey" width="768" height="768" /&gt;
&lt;figcaption class="center" &gt;This guy about the get a 1-ALL&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/hey6_hu_b81affc6bda245c2.jpg" alt="Hey" width="768" height="767" /&gt;
&lt;figcaption class="center" &gt;Darius Posters in the stairwell&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;Walked around some more. The maids / maid cafe thing is weird, and the erotic shit is surprisingly in the open. Giant poster of a naked chick with super thin ‘caution’ tape covering her privates, right next to a KFC. Weird stuff man. There was a guy with a camera carefully taking a photo of that poster.&lt;/li&gt;
&lt;li&gt;Headed south to Odaiba to go to the &lt;a href="https://borderless.teamlab.art"&gt;art light thing&lt;/a&gt; Krista got tickets to. That place is like the mall district. Lots of malls! Giant Ferris wheel. Walked by the &lt;a href="https://architecturetokyo.wordpress.com/2017/05/21/1996-fuji-television-kenzo-tange/"&gt;Fuji TV building&lt;/a&gt; which had a giant long staircase that was really impressive.&lt;/li&gt;
&lt;li&gt;Got lost and ended up walking a lot. Found &lt;a href="https://borderless.teamlab.art"&gt;the art thing&lt;/a&gt;. Went through it, it was really cool but pretty crowded. Lots of people taking photos, us included.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/tokyo_art_hu_ac75b3e59d21537f.jpg" alt="Tokyo Art" width="768" height="768" /&gt;
&lt;figcaption class="center" &gt;Very tired at the "art light thing"&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;Walked through one of the malls. Where the hell do people sit? There are like no benches anywhere. Saw a boy band performing a song. The name of the group was &lt;a href="https://www.youtube.com/watch?v=ECkZ2eKGyck"&gt;RAINZ&lt;/a&gt;. It was super funny but girls were losing their shit. I couldn’t understand any words but there was a bad boy in the group who started rapping at one point.&lt;/li&gt;
&lt;li&gt;The mall had a train station attached, so we got on the train and headed home. It was pretty packed! More standing. Trains here are awesome and we super quickly got comfortable getting around.&lt;/li&gt;
&lt;li&gt;Walking back to the hotel we saw the &lt;a href="https://www.tokyoweekender.com/2016/03/race-streets-tokyo-classic-mario-kart-style/"&gt;Mario Kart go-kart tour&lt;/a&gt; thing in progress. A guy was laughing like Wario at a stop light.&lt;/li&gt;
&lt;li&gt;All in all we walked about 10 miles. Got back to the hotel, were worn out so we ate in the &lt;a href="http://www.ryumeikan-honten.jp/en/dining.html"&gt;hotel restaurant&lt;/a&gt; which was decent. They had green tea beer which was green and ok. Talked a lot of the weird maid and erotic stuff. I want to go to a cafe where someone sits with you and explains what the deal is with maid cafes and giant cartoon tits.&lt;/li&gt;
&lt;li&gt;Soaked in the tub in our room while drinking beers from the fridge.&lt;/li&gt;
&lt;li&gt;Fell asleep.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-3---sept-24th"&gt;Day 3 - Sept 24th&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.ghibli-museum.jp/en/"&gt;Ghibli Museum tour&lt;/a&gt; day! Tour started at 10 am and we had to head over to the &lt;a href="https://www.keioplaza.com/index.html?gclid=CjwKCAjwx7DeBRBJEiwA9MeX_Eq_uAs7ricSyk04tK3OR2XJ2gAgqL-sZE4-iPfacrT3DguapPq1GBoCetgQAvD_BwE&amp;amp;gclsrc=aw.ds"&gt;Keio Plaza&lt;/a&gt; hotel to get on a bus. Took train over and walked around. Breakfast was riceballs and eggs from 7-11 before we got on the train. 7-11 is awesome in Tokyo!&lt;/li&gt;
&lt;li&gt;Being on a bus was nice after all the walking we did yesterday. Our tour guide, Miki, was great. Really helpful and knowledgeable.&lt;/li&gt;
&lt;li&gt;First stop: &lt;a href="https://adventuresofanette.blogspot.com/2015/12/feeling-spirited-away-visit-to-giblis.html"&gt;Hotel Gajoen&lt;/a&gt;. Inspired some buildings in Spirited Away. Crazy beautiful place. We had lunch there which was pretty fancy. A lot of weddings happen there, we walked past a big room with a bunch of tables where people were planning their weddings. Reminded me of a car dealer, couples sitting with salespeople going over the numbers.&lt;/li&gt;
&lt;li&gt;Just going through traffic and riding a bus on the freeways was really cool. Got to see the city from a different perspective, go through some tunnels, over some bridges, etc.&lt;/li&gt;
&lt;li&gt;Second stop was the &lt;a href="http://www.ghibli-museum.jp/en/"&gt;Ghibli Museum&lt;/a&gt; which was amazing. No photography inside because you’re supposed to be present and enjoy yourself.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/ghibli_hu_2cc03ecd17699fda.jpg" alt="Ghibli" width="768" height="960" /&gt;
&lt;figcaption class="center" &gt;Totoro works the ticket desk!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;Tons of cool stuff to see, got to see a short movie that is only shown at the museum, it was a Totoro sidestory called “Mei and the Kittenbus.” No subtitles but it was pretty clear what was going on. Cute story!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=zVX_cSXIXig"&gt;The 3D zoetrope&lt;/a&gt; was probably my favorite thing there. The building architecture was also really neat.&lt;/li&gt;
&lt;li&gt;Spent a lot of time in the gift shop. We got stuff for our nieces and I got a little Jiji stuffed animal. &lt;a href="https://en.wikipedia.org/wiki/Kiki%27s_Delivery_Service"&gt;Kiki’s Delivery Service&lt;/a&gt; is my favorite Ghibli movie, but I haven’t seen them all and now need to.&lt;/li&gt;
&lt;li&gt;Last stop was the outdoor &lt;a href="http://www.tatemonoen.jp/english/"&gt;Edo Architecture museum&lt;/a&gt;. We were kinda running out of steam at this point but it was cool to see the different styles. It was attached to a park which I enjoyed just watching people hang out with their families and stuff. Today was a national holiday (I forget why, some solstice thing?) so a lot of people were enjoying the park.&lt;/li&gt;
&lt;li&gt;Back on bus back to Shinjuku. Long bus ride in traffic. Once in Shinjuku we went to the &lt;a href="http://www.odakyu-dept.co.jp/shinjuku/floorguide/index.html"&gt;Odakyu department store&lt;/a&gt; which was a giant 14 floor building. Clothes, furniture, restaurants, a farmers market like thing, it was crazy. I expected to ride up an escalator to a floor that had livestock.&lt;/li&gt;
&lt;li&gt;Took the train back to our hotel and ordered room service. Long day. On the walk back to the room we stopped at a FamilyMart convenience store and I bought a tall boy of &lt;a href="https://medium.com/@sasuraiger/my-japan-trip-2017-2018-drinking-in-japan-and-strong-zero-ad5c60256a4e"&gt;Strong Zero&lt;/a&gt;, which is 9% alcohol, costs less than $2, and is available at any corner store.&lt;/li&gt;
&lt;li&gt;Watched Japanese TV, ate, drank, went to sleep.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-4---sept-25th"&gt;Day 4 - Sept 25th&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Last day at our first &lt;a href="http://www.ryumeikan-honten.jp/en/"&gt;hotel&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Slow morning, did laundry, spent time in the hotel’s library looking at their books about Japan and writing out post cards to friends/family.&lt;/li&gt;
&lt;li&gt;Checked out at noon, rode the train to the &lt;a href="https://www.marunouchi-hotel.co.jp/en/"&gt;next hotel&lt;/a&gt;. Started raining pretty hard but we got umbrellas. Stopped at the JR station to activate our JR Rail passes and reserve a seat on the Shinkansen to Kyoto.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.marunouchi-hotel.co.jp/en/"&gt;Next hotel&lt;/a&gt; is right next to Tokyo Station and you can get to it through tunnels at the station. We didn’t know that at first so we walked in the rain.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/tokyo_station_hu_1ac2e561c6c9f40a.jpg" alt="Tokyo Station" width="768" height="768" /&gt;
&lt;figcaption class="center" &gt;View of Tokyo Station from our room at Marunouchi Hotel&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;Took train to Harajuku which was pretty wild. Fashion! There was a Carhartt store, I coulda picked up some new pocket tees (since this is what I wear everyday of my life).&lt;/li&gt;
&lt;li&gt;Lots of stores that no longer exist in the US are still in Japan. Tully’s coffee is popular here. Tower Records is still a thing. We walked by an X-girl shop, which I thought went away in the 90s.&lt;/li&gt;
&lt;li&gt;Walked down ‘Cat Street’ which my wife was sad to discover had no cats. Or cat cafes.&lt;/li&gt;
&lt;li&gt;Went into a store called “&lt;a href="https://www.yelp.com/biz/ps-first-%E6%B8%8B%E8%B0%B7%E5%8C%BA"&gt;P’s First&lt;/a&gt;” which means “Pets Always Come First” or something like that. They sold high end puppies and kittens. Like $7k puppies. My wife’s head almost exploded from the cuteness.&lt;/li&gt;
&lt;li&gt;When my wife worked in architecture, she had a Japanese coworker who moved back to Japan in ~2010. We made plans to meet up with her in Shibuya for dinner, so we walked from Harajuku to Shibuya through &lt;a href="https://en.wikipedia.org/wiki/Yoyogi_Park"&gt;Yoyogi Park&lt;/a&gt;. Meiji Jingu Shrine is there and the whole place was very serene and beautiful. Quite a contrast to the density and bustle of Harajuku.&lt;/li&gt;
&lt;li&gt;Dinner was all you could eat sushi. It was also all you could drink. We kept it classy.&lt;/li&gt;
&lt;li&gt;Took the train back to the hotel, in the train station we saw an old guy in a suit that was totally hammered. Strong Zero?&lt;/li&gt;
&lt;li&gt;The trains are so easy to navigate, everything has a two-letter code, a color, and a number. So I want to go from JY07 to JY11, therefore I want the platform that makes the numbers get bigger and ride four stops. Everything is numbered, it&amp;rsquo;s like in that Godzilla movie where they go to Planet X and the guy is all &amp;ldquo;Everything is numbered here&amp;hellip; the monster is zero.&amp;rdquo; Strong Zero?&lt;/li&gt;
&lt;li&gt;Watched some TV (Dragon Ball Z was on) and fell asleep.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-5---sept-26th"&gt;Day 5 - Sept 26th&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;My mom sent a text message “You aware of typhoon Trami?” We saw something about a typhoon on the news and couldn’t understand the details, but tonally it didn’t seem like a big deal. I bet Japan knows how to handle a typhoon.&lt;/li&gt;
&lt;li&gt;We stopped at FamilyMart and bought breakfast and snacks for the Shinkansen. I also bought a Strong Zero for the train, cuz why not.&lt;/li&gt;
&lt;li&gt;The Shinkansen was great, plenty of room, quite comfortable, and FAST. Really cool views!&lt;/li&gt;
&lt;li&gt;Felt weird drinking booze on the train, but I saw a grey haired old lady doing it which put me at ease.&lt;/li&gt;
&lt;li&gt;Trains in Japan are super quiet as in people don’t talk on them. You are asked to put your phone on silent mode, and there are posters showing a cartoon guy talking on the phone and without even knowing the language you can tell that he’s being super judged as an inconsiderate asshole.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kyotostation.com/sakura-terrace-the-gallery-hotel/"&gt;Hotel&lt;/a&gt; was 2 blocks from the &lt;a href="https://en.wikipedia.org/wiki/Ky%C5%8Dto_Station"&gt;Kyoto train station&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Our room is small, but it has a little balcony which is nice. Pretty much the moment we got to the room it started raining. We left the patio door open and took a much needed nap.&lt;/li&gt;
&lt;li&gt;Dinner at the hotel since it was late and rainy. We got to grate our own wasabi for the first time ever. Sashimi and steak and drinks and desert. Not too expensive either, like $45 for the whole meal.&lt;/li&gt;
&lt;li&gt;Another thing I’ve noticed here is that ‘sweets’ aren’t nearly as sweet as in the US. Less sugar I guess.&lt;/li&gt;
&lt;li&gt;Thought about walking around but it’s raining pretty hard and it’s dark so we wouldn’t really see anything. After all the high density public spaces it’s kind of nice to have a night in. &lt;a href="https://qvc.jp"&gt;Japanese QVC&lt;/a&gt; is hilarious.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-6---sept-27th"&gt;Day 6 - Sept 27th&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Woke up and had breakfast at a coffee shop in Kyoto station. Sat next to a nice old lady who gave us tips of what shrines to visit and stuff. She gave us her and her daughter&amp;rsquo;s phone numbers in case we had any questions!&lt;/li&gt;
&lt;li&gt;Walked through the &lt;a href="http://www.chisan.or.jp/english/"&gt;Chishakuin Temple&lt;/a&gt;. Very nice and peaceful. You’re in the city then the next block your in this manicured garden with these super interesting looking buildings and it’s quiet.&lt;/li&gt;
&lt;li&gt;Walked through this shopping district that was all narrow streets. Pretty interesting. Found another Studio Ghibli shop, bought some gifts.&lt;/li&gt;
&lt;li&gt;Went to a Starbucks, which sounds hella lame for a Seattle person to do, but this one was styled as an old style building, with small rooms and super interesting decor. I had a Sweet Potato Frappuccino, which is a drink I would never normally order but it was too weird for me to pass. It wasn’t bad.&lt;/li&gt;
&lt;li&gt;I realized in Starbucks that I didn’t have my credit card, which was concerning. Retracing my steps made it quite likely I accidentally left it in our hotel room. Tried to not stress too much about it.&lt;/li&gt;
&lt;li&gt;Went through another shrine. &lt;a href="https://www.kodaiji.com/e_index.html"&gt;Kodaiji temple&lt;/a&gt;. Very cool, nice bamboo forest in the back but also super crowded.&lt;/li&gt;
&lt;li&gt;Walked around the neighborhood near the temple called &lt;a href="https://en.wikipedia.org/wiki/Gion"&gt;Gion&lt;/a&gt; which is where geishas live. Super cool. Kimono rental is a thing, so lots of people dressed up in Kimonos. Not sure why, probably just cuz? Streets were packed though. The density!&lt;/li&gt;
&lt;li&gt;Soft serve ice cream is everywhere, but it’s green tea instead of chocolate, so a swirl is vanilla and green tea. It’s good, we stopped and had some.&lt;/li&gt;
&lt;li&gt;Walked back toward our hotel. Stopped at Kyoto Station for dinner which was conveyor belt sushi. It was super cheap but the quality was decent. Still haven’t had a high quality sushi dinner, will do that at some point. That station is huge and has tons of shops, I looked at a model magazine at a book store. That’s model as in model airplanes, not Zoolander.&lt;/li&gt;
&lt;li&gt;Walked back to the hotel. My credit card was in the room, so crisis adverted.&lt;/li&gt;
&lt;li&gt;Went to the hotel bar for our daily free drink.&lt;/li&gt;
&lt;li&gt;Back in the room watching Japanese baseball. Just as boring as American baseball.&lt;/li&gt;
&lt;li&gt;Total walking mileage: 9.4 miles. Our legs hurt. City is fairly flat, but temples required some stair and hill climbing.&lt;/li&gt;
&lt;li&gt;Typhoon update on the news says that Sunday will be windy and rainy. Should clear up by Monday, which is when we head to our next destination. Not too worried about it. However, trying to find decent information has been hard, so much is sensationalized bullshit that uses adjectives like “SLAM” and “DESTRUCTIVE” and “UNSTOPPABLE” but offers no actual information. Thankfully I found the &lt;a href="https://www.jma.go.jp/en/typh/"&gt;Japan Meteorological Agency&amp;rsquo;s website&lt;/a&gt; which had good information.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-7---sept-28th"&gt;Day 7 - Sept 28th&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Got up and had breakfast buffet at the hotel. It was decent.&lt;/li&gt;
&lt;li&gt;Weather was beautiful, very few clouds in the sky.&lt;/li&gt;
&lt;li&gt;Walked over to a bike tour place and they were able to fit us into the 10:30 south Kyoto tour. Did that which was really neat. Got to see the famous &lt;a href="https://en.wikipedia.org/wiki/Fushimi_Inari-taisha"&gt;Fushimi Inari-taisha gates&lt;/a&gt;. Our tour guide was great and the group was pretty small. Biking around was nice, the city is pretty flat so no problems there, and it felt really safe from a traffic perspective. I dig all the casual biking here, you see women on bikes hauling around two kids. I should have turned on Strava so I could have seen the route we took, but sadly I forgot.&lt;/li&gt;
&lt;li&gt;Went north on the train to a shopping district. I was trying to find a toy store because I want to find a &lt;a href="https://en.wikipedia.org/wiki/VF-1_Valkyrie"&gt;Macross VF-1&lt;/a&gt; toy. I found a store I thought would have one, but they were a model shop not a toy shop. Still, had fun looking at all the models. You can get models of the &lt;a href="https://en.wikipedia.org/wiki/Galaga"&gt;Galaga&lt;/a&gt; ship and &lt;a href="https://wiki.arcadeotaku.com/w/Taito_Vewlix"&gt;Vewlix arcade cabinets&lt;/a&gt;. Also models for weird obscure video game stuff, like &lt;a href="https://en.wikipedia.org/wiki/Target_Earth_(video_game)"&gt;Assault Suit Leynos&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/Silpheed"&gt;Silpheed&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Walked down this famous alley shop thing. &lt;a href="https://www.japan-guide.com/e/e3931.html"&gt;Nishiki Market&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Krista loves &lt;a href="http://www.deepjapan.org/a/951"&gt;Bikkle soda&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Had conveyor belt sushi again. Sat next to a 96 year old Japanese man. That was fun. He told us his favorite temple but I forgot the name.&lt;/li&gt;
&lt;li&gt;Came back to the hotel. Had some drinks. Went to bed. Lots mosquito bites. I also got sunburned.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/kyoto1_hu_17da068fa5d7047.jpg" alt="Kyoto" width="768" height="768" /&gt;
&lt;figcaption class="center" &gt;Hi I'm a tourist at the Fushimi Inari-taisha gates!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/kyoto2_hu_ec5c2b39c88c618.jpg" alt="Kyoto" width="768" height="768" /&gt;
&lt;figcaption class="center" &gt;Krista outside Fushimi Inari-taisha gates&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/kyoto3_hu_1f4ff2d8733b47f6.jpg" alt="Kyoto" width="768" height="768" /&gt;
&lt;figcaption class="center" &gt;A big tree outside a temple&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/kyoto4_hu_b8abb59c9ac65514.jpg" alt="Kyoto" width="768" height="768" /&gt;
&lt;figcaption class="center" &gt;A temple, sadly I forget the name&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/kyoto5_hu_88574176ac80d457.jpg" alt="Kyoto" width="768" height="767" /&gt;
&lt;figcaption class="center" &gt;Riding bikes on the bike tour&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/kyoto6_hu_5f29032079b1e23c.jpg" alt="Kyoto" width="768" height="768" /&gt;
&lt;figcaption class="center" &gt;Another temple&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/kyoto7_hu_49e0fc3e3f9dcc76.jpg" alt="Kyoto" width="768" height="767" /&gt;
&lt;figcaption class="center" &gt;This is a famous tower&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="day-8---sept-29th"&gt;Day 8 - Sept 29th&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Had McDonald’s for breakfast. Lame I know, but interesting. It was basically exactly the same as the US.&lt;/li&gt;
&lt;li&gt;Hopped on a train to Saga-Arashiyama to go to the &lt;a href="https://en.wikipedia.org/wiki/Bamboo_Forest_(Kyoto,_Japan)"&gt;bamboo forest&lt;/a&gt;. This was really neat, but super crowded. We met a nice guy from Korea on the train that we chatted with some. He and Krista are Instagram friends now.&lt;/li&gt;
&lt;li&gt;Walked around that area a lot, went through a park that actually wasn’t crowded which was nice. It was raining pretty hard at times, but nothing we couldn’t manage.&lt;/li&gt;
&lt;li&gt;Went through an Owl cafe. It’s not a cafe at all! I guess for health reasons that’s for the best. They were cute, but it was kinda sad. They’re chained to a branch during the day, then they supposedly let them loose at night. Krista was really bothered by it.&lt;/li&gt;
&lt;/ul&gt;
&lt;video controls
preload=none
playsinline=true
poster=/images/owly_preview_hu_a7f9904b7f51ed9c.jpg
src=https://pdp.dev/videos/owly.mp4
width=720
height=720
&gt;
&lt;p&gt;Your browser doesn't support this embedded video.&lt;/p&gt;
&lt;/video&gt;
&lt;ul&gt;
&lt;li&gt;We tried to find ramen, but didn’t have any luck. Everything we walked by was dessert, so we had some fancy cotton candy.&lt;/li&gt;
&lt;li&gt;Rode the train back to Kyoto Station. Found a ramen place, it was real real good. There&amp;rsquo;s kind of a mall attached to Kyoto Station that like 10 floors, there was a whole floor dedicated to ramen restaurants.&lt;/li&gt;
&lt;li&gt;I’ve been feeling a little under the weather, so I wanted to go back to the hotel and lie down. Stuffy nose and cough. I hope it doesn’t get worse, so I’m taking it easy.&lt;/li&gt;
&lt;li&gt;Typhoon update: it’s supposed to get here tomorrow night and pass through. We saw footage on the news from Okinawa where it hit today, didn’t seem too bad. Hotel has signs up saying we’ll probably lose power and to charge your devices. Sounds like we can handle it. We’re supposed to leave here on Oct 1st and go to Hakone which is east of here. We spend one night in an onsen there for our anniversary. Hopefully everything cooperates.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-9---sept-30th"&gt;Day 9 - Sept 30th&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Typhoon coming. Went to the train station to see what was going on. Lots of stuff shutdown and trains weren&amp;rsquo;t running. Wanted to go to Mister Donut but they were shutdown! Ended up going to a small sit down place and had some breakfast curry.&lt;/li&gt;
&lt;li&gt;Trains not running meant it would be hard to get around. My cold got worse so I was feeling pretty beat.&lt;/li&gt;
&lt;li&gt;We spent from noon on in our hotel room. I took a lot of naps. Basically a real lazy day and took the typhoon coming as an excuse to rest up to get over my cold.&lt;/li&gt;
&lt;li&gt;Watched “Memoirs of a Geisha” which was ok. It was cool to see the Gion district we were walking though a few days ago.&lt;/li&gt;
&lt;li&gt;Typhoon came I guess? It got real windy at one point but it didn’t really disrupt sleep. I slept pretty poorly due to my cold though. Just couldn’t get comfortable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-10---oct-1st"&gt;Day 10 - Oct 1st&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Last day in Kyoto. We’re talking a bullet train to Hakone where we’re staying one night at a super nice place. Today is our 7 year wedding anniversary.&lt;/li&gt;
&lt;li&gt;Weather is nice and clear. Blue skies. Typhoon gone.&lt;/li&gt;
&lt;li&gt;Walked over to Kyoto station to get breakfast. Ate at same restaurant where we chatted with that old lady the first morning we were in Kyoto. They have a dish called “eggslut” which is probably unintentional but pretty hilarious. Krista ordered it and liked it.&lt;/li&gt;
&lt;li&gt;Went to a drugstore and bought what I think/hope is ibuprofen.&lt;/li&gt;
&lt;li&gt;Saw some news mentioning train service delays, so we stopped at an information booth to ask about our Shinkansen route. Guy told us it would be delayed at most 30 minutes.&lt;/li&gt;
&lt;li&gt;Went back to the hotel, packed up and checked out.&lt;/li&gt;
&lt;li&gt;Got to the train station early, so went to Mister Donut for a snack. Pretty decent, I had an old fashioned which was good. Not too much icing. They also sell spaghetti. What is it with spaghetti? So many places unexpectedly sell spaghetti. Wendy’s for example.&lt;/li&gt;
&lt;li&gt;Train was on time. No delay at all.&lt;/li&gt;
&lt;li&gt;Had some food on the train. I’m feeling better, so I also had a beer. Not feeling well enough for a Strong Zero, so just regular beer. It continues to blow my mind how I can buy beer out of vending machines out in the open. Such an advanced society!&lt;/li&gt;
&lt;li&gt;Also, brands here are way broader than they are in the US. For example, Suntory, the whiskey maker, also sells bottled water and sodas. Could you imagine Coors bottled water?&lt;/li&gt;
&lt;li&gt;Got off the Shinkansen at &lt;a href="https://en.wikipedia.org/wiki/Odawara"&gt;Odawara&lt;/a&gt; and transferred to another train to &lt;a href="https://en.wikipedia.org/wiki/Hakone"&gt;Hakone&lt;/a&gt;, then caught a hotel shuttle to &lt;a href="https://luxury-ryokan.com"&gt;Yama No Chaya&lt;/a&gt;. Onsen is the right term right?&lt;/li&gt;
&lt;li&gt;Our room has its own private bath that overlooks a bamboo grove and a stream and a hillside. Wow.&lt;/li&gt;
&lt;li&gt;We had dinner which was a 7 course, 2 hour affair served to us in our room. It was quite good and made us quite full.&lt;/li&gt;
&lt;li&gt;Spent more time in the bath. Ahhhh. The arcade I was at in Akihabara that has the Ketsui location test was streaming people play (I’m pretty sure I was on stream when I played) on NicoNico so I watched that while in the bath.&lt;/li&gt;
&lt;li&gt;Sleeps. We head back to Tokyo tomorrow, I want to try and track down some Macross toys and maybe go to &lt;a href="https://www.yelp.com/biz/%E3%81%88%E3%81%B3%E3%81%9B%E3%82%93-%E7%B7%B4%E9%A6%AC%E5%8C%BA"&gt;Ebisen&lt;/a&gt;, an arcade KevinDDR told me about. It’s kind of a trek though so we’ll see about that.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-11---oct-2nd"&gt;Day 11 - Oct 2nd&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Woke up and soaked in the bath.&lt;/li&gt;
&lt;li&gt;Had breakfast in the room fancy style.&lt;/li&gt;
&lt;li&gt;Check out at 10, they sadly informed us that they couldn’t book a taxi at 10, would 10:10 be ok. Uh, yes.&lt;/li&gt;
&lt;li&gt;Taxi from &lt;a href="https://luxury-ryokan.com"&gt;Yama No Chaya&lt;/a&gt; to Hakone-Yumoto train station. About a mile, about $10.&lt;/li&gt;
&lt;li&gt;Train ride from Hakone-Yumoto to Odawara where we’ll catch the Shinkansen to Tokyo.&lt;/li&gt;
&lt;li&gt;Got to &lt;a href="https://en.parkhoteltokyo.com"&gt;final hotel&lt;/a&gt; about noon. 31st floor, nice view. Our room has this art motif that’s kinda neat.&lt;/li&gt;
&lt;li&gt;Krista and I plan to split up. I want to go to more arcades and she wants to look at other stuff. I give her WiFi hotspot and head to Akihabara.&lt;/li&gt;
&lt;li&gt;Go back to HEY. Man, I missed a whole row of STG cabs the first time I was here, and also didn’t notice that many cabs have 2 games in them you can switch between. So they DO have &lt;a href="https://en.wikipedia.org/wiki/Mushihimesama_Futari"&gt;Futari Black Label&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/Muchi_Muchi_Pork!"&gt;Muchi Muchi Pork&lt;/a&gt;! Their Muchi Muchi Pork is set to give extends every 5 mil which is weird. I got to the last boss on the first try but died there. Saw a guy almost reach the Ura loop on &lt;a href="https://en.wikipedia.org/wiki/Ketsui:_Kizuna_Jigoku_Tachi"&gt;Ketsui&lt;/a&gt; but he died in the backwards tunnel part of stage 5. I left to go look for &lt;a href="https://en.wikipedia.org/wiki/Macross"&gt;Macross&lt;/a&gt; toys.&lt;/li&gt;
&lt;li&gt;Went to &lt;a href="http://around-akiba.com/shops/1502-mandarake/"&gt;Mandarake tower&lt;/a&gt;, which is 8 floors of nerd stuff. Some weird shit (hentai and cosplaying supplies) but lots of cool video game stuff and toys. Macross toys are expensive and large, so I won’t be getting any. But saw some neat stuff. They had the Gamest VHS superplays for &lt;a href="http://suicidebullets.blogspot.com/2012/07/dodonpachi-2nd-vol-43-gamest-superplay.html"&gt;Dodonpachi&lt;/a&gt; and &lt;a href="http://suicidebullets.blogspot.com/2012/07/radiant-silvergun-gamest-vol-44-t-3-vhs.html"&gt;RSG&lt;/a&gt; which were neat to see. Saw a &lt;a href="http://www.siliconera.com/2014/08/13/eight-copies-gold-mega-man-4-cartridge-exist-worth-fortune/"&gt;gold Rockman 4 cartridge which is super rare&lt;/a&gt;, perhaps given to those whose enemy designs were picked or something? I feel like I saw this discussed on an episode of &lt;a href="https://www.sa-gccx.com"&gt;Game Center CX&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Went into some other arcades but they were all filled with stuff I wasn’t interested in. I was planning on going to Ebisen today but since HEY has all the games I want I’ll just stay there.&lt;/li&gt;
&lt;li&gt;Stopped at 7-11 for a riceball and egg. Guy in front of me bought a 9% can of booze. Tempting&amp;hellip; but no.&lt;/li&gt;
&lt;li&gt;Played a bunch of MMP. 1 all’d it!&lt;/li&gt;
&lt;li&gt;Train back to the hotel at 8pm.&lt;/li&gt;
&lt;li&gt;Krista and I walked through the Ginza district to go to a place for dinner Krista found while I was at HEY. Ginza is pretty fancy. Also walked by the &lt;a href="https://www.atlasobscura.com/places/the-giant-ghibli-clock-tokyo-japan"&gt;clock that Hayao Miyazaki designed&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Came back to hotel, watched Gundam, fell asleep. Our flight doesn’t leave tomorrow until like 7pm, so we’ll squeeze in some more stuff tomorrow morning.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-12---oct-3rd"&gt;Day 12 - Oct 3rd&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Last day. Sad!&lt;/li&gt;
&lt;li&gt;Woke up early and rode the train to Shibuya to see &lt;a href="https://www.lonelyplanet.com/japan/tokyo/attractions/shibuya-crossing/a/poi-sig/396831/356817"&gt;Shibuya Crossing&lt;/a&gt;. It was ok, I mean it&amp;rsquo;s just a big crosswalk with a bunch of people. There was a group of dudes that were hip-hop dudes and they would go out into the crossing when the walk signal was on and film themselves doing super generic hip-hop gestures, maybe for a video or something? I kind of wish I had asked them.&lt;/li&gt;
&lt;li&gt;Went to a &lt;a href="https://www.yelp.com/biz/%E7%8C%AB%E3%82%AB%E3%83%95%E3%82%A7mocha-%E6%B8%8B%E8%B0%B7%E5%BA%97-%E6%B8%8B%E8%B0%B7%E5%8C%BA-3"&gt;cat cafe&lt;/a&gt;. Cute cats, but there weren&amp;rsquo;t really super social. Not like our cat Champion who will jump all over you and smell you. They were kind of bratty snobs. We got to see them get fed though which was pretty hilarious.&lt;/li&gt;
&lt;li&gt;Checked out of our hotel and had them hang onto our bags for the 1.5 hours until we caught the bus to the airport.&lt;/li&gt;
&lt;li&gt;Went to Taco Bell. It was roughly Taco Bell quality, although my grilled burrito had pork that looked like real pork. The portion sizes were laughably small to this American. Also, nachos were called &amp;lsquo;cheesy chips&amp;rsquo;.&lt;/li&gt;
&lt;li&gt;Went to Tower Records. People still buy CDs apparently, and holy shit they&amp;rsquo;re expensive, like $25.&lt;/li&gt;
&lt;li&gt;Got on the bus to the airport. Nice bus! &amp;ldquo;Limousine Bus&amp;rdquo; they call it.&lt;/li&gt;
&lt;li&gt;Sat on a plane for 9 hours and landed in LAX. LAX is such a horrible horrible airport.&lt;/li&gt;
&lt;li&gt;With the time change of 16 hours, we got home to our house in Seattle at the same time that we left Tokyo. We got home at about 7:30pm.&lt;/li&gt;
&lt;li&gt;We snuggled with our cats who were happy to see us and got in bed at about 10pm.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fin"&gt;FIN!&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/mmp_clear_at_hey_hu_2c960c26d8c0967e.jpg" alt="MMP Clear" width="640" height="640" /&gt;
&lt;figcaption class="center" &gt;Muchi Muchi Pork 1-ALL at HEY!&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Biking Sept 2018</title><link>https://pdp.dev/posts/biking-sept-2018/</link><pubDate>Sun, 21 Oct 2018 17:45:20 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biking-sept-2018/</guid><description>&lt;p&gt;In September 2018, I rode my bike 132 miles. My wife and I were in Japan from September 21st to October 3rd, which cut my biking time but I still commuted via bike and took a few longer rides. I&amp;rsquo;m working on a post about our Japan trip.&lt;/p&gt;
&lt;p&gt;2018 total miles: &lt;strong&gt;1,007!&lt;/strong&gt; I broke my goal of 1,000 miles with 3 months to go!&lt;/p&gt;</description></item><item><title>Mercer Island Loop</title><link>https://pdp.dev/posts/mercer-island-loop/</link><pubDate>Sun, 16 Sep 2018 17:29:03 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mercer-island-loop/</guid><description>&lt;p&gt;It’s getting to be rainy season here in Seattle, so this ride required a little more suiting up than usual. I have crappy circulation in my hands and feet so those are always the first to get cold. This is easy to fix though with waterproof gloves and shoes. I use &lt;a href="https://www.fizik.com/us_en/men/shoes/mtb/artica-x5.html"&gt;these shoes&lt;/a&gt; in the rainy season which keep my feet nice and dry.&lt;/p&gt;
&lt;p&gt;A coworker told me that biking around Mercer Island is a nice ride, so I figured I’d give that a shot this last weekend. I’ve ridden to and across the island before, but never around the whole thing. It was great, not too hard but with enough hills to make it not boring. My one beef is that there’s not a great place to stop off and rest along the loop since you’re basically on a street winding through a fancy neighborhood.
I was starting to get worried about finding a bathroom, but thankfully someone put some portapotties at a pull off spot. You do share the road with cars the whole way around, but people seemed to know how to deal with cyclists so I never felt unsafe.&lt;/p&gt;
&lt;h2 id="routestats"&gt;Route/Stats:&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1991_hu_94fe758d5bb5bf18.jpeg" width="768" height="768" /&gt;
&lt;/figure&gt;
&lt;p&gt;Total distance: &lt;strong&gt;28.3 miles.&lt;/strong&gt; Full Strava activity &lt;a href="https://www.strava.com/activities/1846484671"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="pictures"&gt;Pictures:&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1971_hu_2524b7276c150f42.jpeg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1974_hu_e06fd4c86fe23773.jpeg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1975_hu_e7b9710cfdadbf75.jpeg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1979_hu_b838067d7ad42af1.jpeg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1981_hu_1866e75176c3f96d.jpeg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1984_hu_b6141b2bcb52251e.jpeg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1985_hu_45b0eae7baf74266.jpeg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1986_hu_4a875964c7e182fc.jpeg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1989_hu_b70f90c848bfe368.jpeg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1990_hu_907e3c5a83609788.jpeg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="soundtrack-for-the-ride"&gt;Soundtrack for the ride:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Various Artists - Project Blowed - &lt;a href="https://itunes.apple.com/us/album/project-blowed/967457803"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/user/22qxl4oncobvnhoba5jmb7tda/playlist/6HvKhw3pFxr9MmfpRVHex2"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Del the Funky Homosapien - No Need for Alarm - &lt;a href="https://itunes.apple.com/us/album/no-need-for-alarm/373223910"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/3spPMkueLuatXNwReFv25r"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dr. Dooom - First Come First Served - &lt;a href="https://itunes.apple.com/us/album/first-come-first-served/1088459213"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/2jHjmjuVP1IlOIWWg1HRyY"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Biking to Burgers - North Lake Washington loop</title><link>https://pdp.dev/posts/biking-to-burgers---north-lake-washington-loop/</link><pubDate>Sat, 08 Sep 2018 17:31:39 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biking-to-burgers---north-lake-washington-loop/</guid><description>&lt;p&gt;Today I rode around the north half of Lake Washington. I rode the Burke-Gilman trail up to Kenmore and stopped at &lt;a href="http://www.ranchdrivein.com"&gt;The Ranch Drive-in&lt;/a&gt; for a burger and chocolate shake. That hella hit the spot. From there, I rode up &lt;a href="http://www.bicycleclimbs.com/Default.aspx?ClimbId=21"&gt;Juanita Drive&lt;/a&gt; (which is a pretty rough climb) and went down through Kirkland before hitting the 520 bridge and heading home. I&amp;rsquo;ve done this ride before and it&amp;rsquo;s becoming my go-to long weekend ride. I dig it because it starts nice and flat, but then you get some challenging hills.&lt;/p&gt;
&lt;p&gt;Total distance: &lt;strong&gt;35.7 miles&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="routestats"&gt;Route/Stats:&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1949_hu_1582a209b9fad2eb.JPG" width="768" height="620" /&gt;
&lt;/figure&gt;
&lt;p&gt;Full Strava activity &lt;a href="https://www.strava.com/activities/1828471767"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="soundtrack-for-the-ride"&gt;Soundtrack for the ride:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Bo Diddley - Bo Diddley is a Gunslinger - &lt;a href="https://itunes.apple.com/us/album/bo-diddley-is-a-gunslinger/6778353"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/2bMibmPQcEfeyd0Km2rHNU"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bo Diddley - Have Guitar will Travel - &lt;a href="https://itunes.apple.com/us/album/have-guitar-will-travel/1109023109"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/1L4O7czcqKXZcKzv7Xg1YF"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Frank Stokes - Best of - &lt;a href="https://itunes.apple.com/us/album/the-best-of-frank-stokes/797837202"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/5el2MJDFH4QMdYnFbWPpIu"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Biking August 2018</title><link>https://pdp.dev/posts/biking-august-2018/</link><pubDate>Tue, 04 Sep 2018 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biking-august-2018/</guid><description>&lt;p&gt;In August 2018, I biked &lt;strong&gt;251.8 miles&lt;/strong&gt;! Much improvement!&lt;/p&gt;
&lt;p&gt;Notable rides:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://pdp.dev/posts/bike-seattle-redmond/"&gt;Seattle-Redmond loop&lt;/a&gt; - 37.6 miles&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pdp.dev/posts/south-lake-washington/"&gt;South Lake Washington loop&lt;/a&gt; - 41.8 miles&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pdp.dev/posts/west-seattle/"&gt;West Seattle&lt;/a&gt; - 24.8 miles&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With my back feeling better, it was great to put in longer rides and cover new routes. My goal is to do longer rides on the weekends and make blog posts when I cover a new route.&lt;/p&gt;
&lt;p&gt;I also set a new one week mileage record of &lt;strong&gt;111.7 miles&lt;/strong&gt;, beating my previous record of 111.2 miles set in July of 2016.&lt;/p&gt;
&lt;p&gt;2018 total miles: &lt;strong&gt;898&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Vacation bike ride #3: West Seattle</title><link>https://pdp.dev/posts/west-seattle/</link><pubDate>Mon, 03 Sep 2018 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/west-seattle/</guid><description>&lt;p&gt;Today was the last of the &amp;ldquo;long ass bike rides&amp;rdquo; of my vacation, so I rode out to West Seattle. The statement &amp;ldquo;I&amp;rsquo;m going to bike to West Seattle&amp;rdquo; sounds quite gutsy, but it&amp;rsquo;s really not that far or hard. The goal was to bike to &lt;a href="https://westseattleblog.com/2012/10/marination-ma-kai-west-seattles-newest-restaurant-opens-tomorrow/"&gt;Marination&lt;/a&gt; to meet my wife for lunch. After that I biked home a longer way by going between Magnolia and Queen Anne.&lt;/p&gt;
&lt;p&gt;I headed out by going south on 10th Ave/&lt;a href="https://www.youtube.com/watch?v=SBPpy_SVV_0"&gt;Broadway&lt;/a&gt; through Capitol Hill, which at some point gains a separated bike lane that is quite comfortable to ride on. I hit Yesler Way and headed west into downtown to meet up with the &lt;a href="https://www.wta.org/go-hiking/hikes/elliott-bay-trail"&gt;Elliott Bay trail&lt;/a&gt;. I got a tiny bit lost on the way while going through the bike lane on 2nd Ave which was packed with homeless people hanging out. I certainly felt out of place&amp;hellip;&lt;/p&gt;
&lt;p&gt;Once on the Elliott Bay trail it was easy to follow the signage and reach Alki Beach. We had lunch, then I headed back a longer way through the Magnolia neighborhood, which was fairly straightforward but had one sketchy part when I had to bike with traffic along the Seattle waterfront. This didn&amp;rsquo;t last long though and soon I was back on a trail near the &lt;a href="http://www.seattleartmuseum.org/visit/olympic-sculpture-park"&gt;Seattle Sculpture Park&lt;/a&gt; and went through Magnolia near some railways which was pretty neat.&lt;/p&gt;
&lt;p&gt;Total distance: &lt;strong&gt;24.8 miles&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="to-west-seattle-routestats"&gt;To West Seattle Route/Stats&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_B14D53374D36-1_hu_295498bb728f5d2a.jpeg" width="768" height="673" /&gt;
&lt;/figure&gt;
&lt;p&gt;Full Strava activity &lt;a href="https://www.strava.com/activities/1817071635"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="pictures-heading-to-west-seattle"&gt;Pictures heading to West Seattle:&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1875_hu_1a018a14b7876725.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1877_hu_80872c1a79257a82.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1880_hu_ce3af99a5fd334d1.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1881_hu_d69a9fdc85ab1f06.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1882_hu_83416cc32649c9ee.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1884_hu_ce4ee6730b9ff1c5.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1885_hu_6d65e99e83fbbdd5.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1886_hu_fb82fb1bf6fb509e.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1887_hu_2ee1c4cb2814ca35.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1888_hu_8d40c90d66354a1.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="from-west-seattle-to-home-routestats"&gt;From West Seattle to Home Route/Stats:&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1A0172138DBC-1_hu_c2a2ec1d2bfe1101.jpeg" width="768" height="662" /&gt;
&lt;/figure&gt;
&lt;p&gt;Full Strava activity &lt;a href="https://www.strava.com/activities/1817451082"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="pictures-heading-home"&gt;Pictures heading home:&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1895_hu_afcb5fcc3fb6fd51.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1897_hu_c25a047a270c4f75.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1898_hu_42096e33f956815b.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1900_hu_de2b265901d50f90.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1903_hu_e08648ecdfbffccf.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1904_hu_e9b7193e3ea9a374.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1905_hu_57f278753bd13055.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1908_hu_de852afd4b179cf0.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1910_hu_c71539cc8e046708.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="soundtrack-for-the-ride"&gt;Soundtrack for the ride:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Rezzett - Rezzett - &lt;a href="https://itunes.apple.com/ee/album/rezzett/1344927144"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/5N91OjEKm2kLaPuXhlFpkx"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kool Keith / KutMasta Kurt - Your Mom is my Wife EP - &lt;a href="https://itunes.apple.com/us/album/your-mom-is-my-wife-ep/1342773690"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/263B0ofZk3CvffvUvkE58j"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The Upsetters / Lee Perry - Return of the Super Ape - &lt;a href="https://itunes.apple.com/us/album/return-of-the-super-ape-deluxe-edition/274769018"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/0VceVaIcxxNEXQ3fNv8u2G"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mobb Deep - The Infamous&amp;hellip; - &lt;a href="https://itunes.apple.com/us/album/the-infamous/255342338"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/1cCAb1vN8uUsdfEylVmTLs"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Hugo and Lambda</title><link>https://pdp.dev/posts/hugo-lambda/</link><pubDate>Fri, 31 Aug 2018 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/hugo-lambda/</guid><description>&lt;p&gt;I made a post a few days ago about &lt;a href="https://pdp.dev/posts/hugo-from-phone/"&gt;being able to post using my phone&lt;/a&gt;, so here&amp;rsquo;s some more info!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; I work at Amazon on the AWS Lambda team.&lt;/p&gt;
&lt;p&gt;This blog is written using &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt;, which is a &lt;strong&gt;static website generator&lt;/strong&gt;. This means after I write a post, I must &lt;strong&gt;generate&lt;/strong&gt; the static HTML files that I then upload into an S3 bucket that is used to serve the content to you, the reader. I like static sites because conceptually they&amp;rsquo;re simple: all the server has to do is send files to the client. The one thing I don&amp;rsquo;t like is the generation step because you have to set up your computer with the right tools, run the tools, then upload the output to where it&amp;rsquo;s being hosted. It&amp;rsquo;s not rocket science, but it&amp;rsquo;s something I&amp;rsquo;d like to think about less.&lt;/p&gt;
&lt;p&gt;The source code for this blog is stored in a &lt;a href="https://github.com/wnka/pdp80-blog"&gt;GitHub repository&lt;/a&gt;, so conceptually what I wanted was this: whenever a change is made to that repository, re-generate the site and upload the output to S3. &lt;a href="https://aws.amazon.com/lambda/"&gt;AWS Lambda&lt;/a&gt; is a good candidate to take care of this for me.&lt;/p&gt;
&lt;p&gt;The first step is use GitHub &lt;a href="https://developer.github.com/webhooks/"&gt;Webhooks&lt;/a&gt; to send a notification when any change happens to the source code repository. This notification comes in the form of an HTTP POST request sent to an endpoint you define. I used &lt;a href="https://aws.amazon.com/api-gateway/"&gt;API Gateway&lt;/a&gt; to set up an endpoint that will receive that notification and forward the request to Lambda.&lt;/p&gt;
&lt;p&gt;The request that the GitHub Webhook sends must complete in 10 seconds or less, so I actually wrote two Lambda functions that separate &lt;em&gt;accepting work from GitHub&lt;/em&gt; and &lt;em&gt;doing the work&lt;/em&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;API Lambda&lt;/strong&gt; - this function sits behind the API Gateway endpoint. It:
&lt;ol&gt;
&lt;li&gt;Receives and parses the GitHub Webhook request.&lt;/li&gt;
&lt;li&gt;Does validation that the request actually came from GitHub by checking the defined secret.&lt;/li&gt;
&lt;li&gt;Asynchronously calls the &lt;strong&gt;Builder Lambda&lt;/strong&gt; that does the heavy lifting.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builder Lambda&lt;/strong&gt; - this function does the generation of the site. It:
&lt;ol&gt;
&lt;li&gt;Clones the most recent code out of the GitHub repository.&lt;/li&gt;
&lt;li&gt;Uses the copy of &lt;code&gt;hugo&lt;/code&gt; bundled with the Lambda function to generate the static HTML that makes up the site. One reason why I love Hugo is that it&amp;rsquo;s just one big executable so incorporating it into a Lambda function was super easy. No crazy dependencies or toolchains to pull in, just bundle the executable into your .zip.&lt;/li&gt;
&lt;li&gt;Syncs the static HTML from the Hugo output directory to the defined S3 bucket.&lt;/li&gt;
&lt;li&gt;Submits an invalidation to CloudFront.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here&amp;rsquo;s a diagram of the overall flow I whipped up using &lt;a href="https://draw.io"&gt;draw.io&lt;/a&gt;:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/HugoLambda_hu_9ff79c33104e96e6.png" width="736" height="394" /&gt;
&lt;/figure&gt;
&lt;p&gt;This works quite well and takes about 30 seconds from GitHub repository push to the change being live on my blog.&lt;/p&gt;
&lt;p&gt;I made all the code that I use available on GitHub. Please feel free to use it, change it, or give feedback!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/wnka/hugo-lambda-webhook"&gt;API Lambda&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/wnka/hugo-lambda"&gt;Builder Lambda&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One of the reasons I like hosting my own content is that it gives me the opportunity to play around with some toy problems and experiment with different tools. I find this kind of stuff fun!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TODO:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Doing full CloudFront invalidations on updates feels goofy, there&amp;rsquo;s gotta be a better way.&lt;/li&gt;
&lt;li&gt;Need to set &lt;code&gt;Cache-Control&lt;/code&gt; headers/metadata appropriately on images.&lt;/li&gt;
&lt;li&gt;Get the &lt;strong&gt;API Lambda&lt;/strong&gt; and &lt;strong&gt;Builder Lambda&lt;/strong&gt; to be more easily deployable. &lt;a href="https://github.com/awslabs/serverless-application-model"&gt;AWS SAM?&lt;/a&gt; &lt;a href="https://serverless.com"&gt;Serverless framework?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;UPDATE 9/14/2018:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I made &lt;a href="https://github.com/wnka/hugo-lambda/commit/304b043a2a4d8e99d8ec74a1538db1092cea1ba5"&gt;some changes&lt;/a&gt; to set &lt;code&gt;Cache-Control&lt;/code&gt; headers in a sane way when syncing to S3, which has eliminated the need for CloudFront invalidations.&lt;/p&gt;</description></item><item><title>Vacation bike ride #2: South Lake Washington loop</title><link>https://pdp.dev/posts/south-lake-washington/</link><pubDate>Thu, 30 Aug 2018 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/south-lake-washington/</guid><description>&lt;p&gt;Ow my legs. I set out yesterday morning planning on biking east over the 520 bridge and then coming back west over the I-90 bridge. When I got to the I-90 bridge trailhead, I decided to just go for it and go all the way around the south half of Lake Washington. This wasn&amp;rsquo;t too hard in terms of hills, but goddamn it was a long ride.&lt;/p&gt;
&lt;p&gt;I started out heading east over the 520 bridge and then turning south and biking through Medina. I&amp;rsquo;ve lived in Seattle for 12 years but have never gone through that hella baller neighborhood. I think both Gates and Bezos live over there. Lots of private driveways with gates that have lionheads on them and shit. I read later on &lt;a href="https://en.wikipedia.org/wiki/Medina,_Washington"&gt;Wikipedia&lt;/a&gt; that every intersection in Medina has video cameras and all license plates are looked up to see if they&amp;rsquo;re suspicious. From there I snaked through Bellevue until I hit the I-90 trailhead. I started up the path to go west over the bridge and start heading home, but then had a flash of inspiration/confidence and said &amp;ldquo;I &lt;strong&gt;will&lt;/strong&gt; do this&amp;rdquo; and headed south to cover new ground. &lt;a href="https://kingcountyparks.org/2018/08/13/trail-spotlight-eastside-rail-corridor/"&gt;Nice trail&lt;/a&gt; until you hit &lt;a href="https://rentonwa.gov/city_hall/community_services/parks_and_trails/find_a_park_or_trail/gene_coulon_memorial_beach_park"&gt;Coulon Beach Park&lt;/a&gt;. I stopped there and took a break and ate snacks. From there you get dumped onto city streets as you have to go around the Boeing facility down there and you&amp;rsquo;re on busy city streets for the southwest portion of the lake.&lt;/p&gt;
&lt;p&gt;I took another break at &lt;a href="https://www.seattle.gov/parks/find/parks/seward-park"&gt;Seward Park&lt;/a&gt; to stretch my back before heading north home. It was 9 more miles from that point. At this point you&amp;rsquo;re still on city streets with no bike lane but it was still a nice ride since Lake Washington Blvd doesn&amp;rsquo;t have super heavy traffic and you&amp;rsquo;re right against the lake. On the way I passed by &lt;a href="https://en.wikipedia.org/wiki/Viretta_Park"&gt;Viretta Park&lt;/a&gt; and the house where Kurt Cobain shot himself. Things were mostly flat until I reached &lt;a href="https://www.seattle.gov/parks/find/parks/lakeview-park"&gt;Lakeview Park&lt;/a&gt;, which has a really steep hill and switchbacks that make it hard for cars to pass slow ass cyclists. I was so wiped by that point and the poor car behind me just had to creep along with me until I reached the top.&lt;/p&gt;
&lt;p&gt;I gotta say I&amp;rsquo;m pretty damn proud of this ride. I knew I could do it and I did it. I was so spent when I got home I just laid in bed and watched &lt;a href="https://en.wikipedia.org/wiki/New_Jack_City"&gt;New Jack City&lt;/a&gt; with my wife since she had never seen it and I hadn&amp;rsquo;t seen it since it was new. That movie is hella 90s. The singer in the wedding scene is played by Keith Sweat, how awesome is that? My favorite line is when Mario Van Peebles is all like &amp;ldquo;I need some new jack cops to take down a new jack gangster.&amp;rdquo; They should have kept using &amp;ldquo;new jack&amp;rdquo; as an adjective throughout the entire movie. What a waste.&lt;/p&gt;
&lt;p&gt;Total mileage for the week so far: &lt;strong&gt;89.4 miles&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="route--stats"&gt;Route / Stats:&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1851_hu_38196088011db894.jpg" width="768" height="615" /&gt;
&lt;/figure&gt;
&lt;p&gt;Full Strava activity &lt;a href="https://www.strava.com/activities/1806235335"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="pictures-from-along-the-way"&gt;Pictures from along the way:&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1821_hu_43e3c6d9066c08a2.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1822_hu_3043f2de47d2ab3d.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1827_hu_87db01d8918ca90.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1830_hu_43a02db3ed2e6b75.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1832_hu_92ea4fd031fb8104.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1836_hu_6adace7904410bd8.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1838_hu_176c8a89de40899e.JPG" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1840_hu_e839f11683973624.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1844_hu_ac6475559b62d440.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1847_hu_4f4da0e9b1638fb7.JPG" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="soundtrack-for-the-ride"&gt;Soundtrack for the ride:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Black Moon - Enta da Stage - &lt;a href="https://itunes.apple.com/us/album/enta-da-stage/14141230"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/6WqXR9PUGCCQe26QDL5gY3"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Black Flag - My War - &lt;a href="https://itunes.apple.com/us/album/my-war/117618702"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/17j1kW5y6yHlY5vaBFijbR"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Big Black - Songs About Fucking - &lt;a href="https://itunes.apple.com/us/album/songs-about-f-g/443085887"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/0XKBAGuu9V11zeUfWZcmer"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Shabazz Palaces - Black Up - &lt;a href="https://itunes.apple.com/us/album/black-up/669854622"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/6xmJwIZr8GXrSTiYa9UYXG"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Monks - Black Monk Time - &lt;a href="https://itunes.apple.com/us/album/black-monk-time/668699145"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/7h0NNvwsiA0WuWJ5xpDdcJ"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For some reason I built the playlist to have bands or albums with &lt;strong&gt;black&lt;/strong&gt; in the title. The ride ended just as Black Monk Time finished which was kind of eerie. If I had needed more music I would have added Black Sabbath&amp;rsquo;s &amp;lsquo;Master of Reality.&amp;rsquo;&lt;/p&gt;</description></item><item><title>Quick Bike Ride, Arcade PCB Storage</title><link>https://pdp.dev/posts/quick-bike-ride-arcade-pcb-storage/</link><pubDate>Tue, 28 Aug 2018 18:53:39 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/quick-bike-ride-arcade-pcb-storage/</guid><description>&lt;p&gt;First up, after yesterday&amp;rsquo;s long bike ride I went for a short ride today, but was able to hit some decent hills in my neighborhood. First big hill was going up into &lt;a href="https://www.seattle.gov/parks/find/parks/interlaken-park"&gt;Interlaken Park&lt;/a&gt;, which is crazy beautiful and it always blows my mind that something so wooded and peaceful is so close to two freeways. The second hill was going up E Lynn St which then turns into Delmar Dr E and hits &lt;a href="https://www.seattle.gov/parks/find/parks/roanoke-park"&gt;Roanoke Park&lt;/a&gt;&amp;hellip; that hill always looks scary from the bottom but it doesn&amp;rsquo;t stay that steep for long.&lt;/p&gt;
&lt;p&gt;Mileage for the week: &lt;strong&gt;42.4 miles.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="route--stats"&gt;Route / Stats:&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/vacation-08-2018-day2_hu_76a5ede1d9e5f62d.jpg" width="768" height="626" /&gt;
&lt;/figure&gt;
&lt;h2 id="pictures-from-along-the-way"&gt;Pictures from along the way:&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/interlocken_hu_f3f418e530b36d32.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/garden_hu_679ba8b8c2792bc6.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/shelby_hu_14f68b6968a2d3d5.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="soundtrack-for-the-ride"&gt;Soundtrack for the ride:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Disappears - Guider - &lt;a href="https://itunes.apple.com/us/album/guider-ep/407907109"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/2wTFPA5KBBqzSeQWbO9W1c"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="arcade-pcb-storage"&gt;Arcade PCB Storage&lt;/h2&gt;
&lt;p&gt;The other thing I did today was finally get &lt;a href="https://www.ikea.com/us/en/catalog/products/50192822/"&gt;some shelving&lt;/a&gt; that will nicely store my arcade PCBs and free up closet space in the basement, something that has driven my wife nuts for years. PCBs come in all different shapes and sizes, making them kind of weird to buy shelves for, plus I had mounted them to wood to keep them from flexing too much but this made them even more cumbersome. I mean, look at the PCB for the &lt;a href="https://en.wikipedia.org/wiki/Commando_(video_game)"&gt;1985 Capcom game Commando&lt;/a&gt;. It&amp;rsquo;s 3 boards stacked and is hella large:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/commandoPCB_hu_b0cdc45a7fa22a2b.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;p&gt;For the larger games, I measured their dimensions without the wood and went to Ikea and found something with drawers that would fit even the largest game. For smaller games (Cave SH3 / PGM) the drawers are big enough for me to keep the wood. Now everything is stored nicely and out of sight.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/PCBdrawers_hu_85a43598480b0cdc.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;p&gt;This is not the final resting place for this cabinet, it&amp;rsquo;ll go into that closet to the right there, but we gotta make some Goodwill trips first.&lt;/p&gt;</description></item><item><title>Vacation bike ride #1: Seattle-Redmond loop</title><link>https://pdp.dev/posts/bike-seattle-redmond/</link><pubDate>Mon, 27 Aug 2018 18:53:39 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/bike-seattle-redmond/</guid><description>&lt;p&gt;I was hitting my vacation limit at work so I took this week off. &lt;a href="https://www.kristawelch.com"&gt;My wife&lt;/a&gt; is in peak wedding season with her photography business so we&amp;rsquo;ll probably just stay around town. My goal is to bike 100 miles this week while I&amp;rsquo;m off and explore some new routes. Today I rode 37.6 miles doing a loop from Seattle to Redmond. This route is pretty nice, it&amp;rsquo;s flat and easy until you hit Redmond and start on the 520 trail, which has some hills but nothing too rough. My plan is to alternate hard days with easy days. Today was a hard day, so tomorrow I&amp;rsquo;ll ride to get coffee or something, then Wednesday I plan on doing a loop of crossing both the 520 bridge and the I-90 bridge. My back is giving me a little bit of pain but I&amp;rsquo;m stretching a lot so hopefully it holds.&lt;/p&gt;
&lt;h2 id="route--stats"&gt;Route / Stats:&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/sea-red-loop_hu_405da1e4ded54c79.jpg" width="768" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;Full Strava activity &lt;a href="https://www.strava.com/activities/1801745205"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="pictures-from-along-the-way"&gt;Pictures from along the way:&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/woodbridge_hu_4a30cb2b4917b5e1.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/405underpass_hu_39c245b2eb92c9d8.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/woodinville_hu_122d432d380548c4.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/520east_hu_cf41810b39b0e4ba.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/520bridge_hu_2cf46d285a4a6222.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="soundtrack-for-the-ride"&gt;Soundtrack for the ride:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Fall - Totally Wired: The Rough Trade Anthology - &lt;a href="https://itunes.apple.com/gb/album/totally-wired-the-rough-trade-anthology/1144224993"&gt;iTunes&lt;/a&gt; / &lt;a href="https://open.spotify.com/album/1AikHVRZpnTVfkOXMt7RfJ"&gt;Spotify&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Posting to Hugo from my phone</title><link>https://pdp.dev/posts/hugo-from-phone/</link><pubDate>Mon, 27 Aug 2018 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/hugo-from-phone/</guid><description>&lt;p&gt;This will hopefully work. If it does, I&amp;rsquo;ll write up another post on how I did it. In the meantime, here&amp;rsquo;s a picture from yesterday where I rode my bike to have donuts for breakfast.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/bikedonuts_hu_1702ac09b95745ed.jpg" width="720" height="960" /&gt;
&lt;/figure&gt;</description></item><item><title>Biking July 2018</title><link>https://pdp.dev/posts/biking-july-2018/</link><pubDate>Sat, 11 Aug 2018 09:58:10 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biking-july-2018/</guid><description>&lt;p&gt;In July 2018, I rode only &lt;strong&gt;19 miles&lt;/strong&gt;, making it the lowest mileage month yet of 2018. I did ride quite a bit on &lt;a href="https://www.geekwire.com/2018/rode-electric-limebike-around-downtown-seattle-hill-lived-tell-tale/"&gt;LimeBike e-bikes&lt;/a&gt;, which are electric pedal-assist bikes you can use to get around Seattle. I rode those to and from work quite a bit, for a total of about &lt;strong&gt;27 pedal-assist miles&lt;/strong&gt; but I&amp;rsquo;m not counting that towards my overall milage. Pedal-assist makes it super easy to get up hills so it&amp;rsquo;s hardly a workout, but it was a good way to ease back into biking while my back got better. My back is doing much better these days and I&amp;rsquo;ve started riding more, so I hope to rack up more miles in August!&lt;/p&gt;
&lt;p&gt;2018 total miles: &lt;strong&gt;623&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Packard Bell</title><link>https://pdp.dev/posts/packard-bell/</link><pubDate>Fri, 20 Jul 2018 22:45:16 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/packard-bell/</guid><description>&lt;p&gt;I came across this hilarious Packard Bell TV commercial from 1996. What art!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Z28KzhQ3gFU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Reminds me of that Mr. Plow ad from the Simpsons.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/gArU-BAO7Kw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I never owned a Packard Bell, but my first &amp;ldquo;real&amp;rdquo; job was in 1997 doing phone tech support for them. Up until that point I knew I wanted to do something with computers, and this job taught me that there are some pretty crappy computer jobs out there. I used some of the money I earned to buy some programming books and developer tools so I could teach myself programming. My first book was &lt;a href="https://www.amazon.com/One-Hour-Sams-Teach-Yourself/dp/0789757745/ref=pd_lpo_sbs_14_t_0?_encoding=UTF8&amp;amp;psc=1&amp;amp;refRID=TD8QDZ9B9WJF1ESVJE6S"&gt;Teach Yourself C++ in 21 Days&lt;/a&gt; which took me way longer than 21 days. I stuck with it though and decided to study Computer Science in college, which has enabled me to have a non-crappy computer job.&lt;/p&gt;</description></item><item><title>Vinyl Collection</title><link>https://pdp.dev/vinyl/</link><pubDate>Sat, 14 Jul 2018 18:53:54 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/vinyl/</guid><description>&lt;p&gt;I started buying vinyl in 1998 when I was a senior in high school and had my own money from working. My interest in music was really ramping up and vinyl was the cheapest way to get music (this is all pre-Napster). I don&amp;rsquo;t really buy records anymore, there are easier ways to get music with all the streaming services and records have gotten crazy expensive lately.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Favorite Record Store:&lt;/strong&gt; &lt;a href="https://www.blackandread.com"&gt;Black and Read&lt;/a&gt; in Arvada, CO.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Favorite Online Record Store:&lt;/strong&gt; &lt;a href="https://www.turntablelab.com"&gt;Turntable Lab&lt;/a&gt;, nice curated selection that turned me on to a lot of good stuff.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Favorite Record:&lt;/strong&gt; Gosh that&amp;rsquo;s a hard question, but I&amp;rsquo;ll go with &lt;a href="https://en.wikipedia.org/wiki/Slates_(EP)"&gt;Slates&lt;/a&gt; by &lt;a href="https://en.wikipedia.org/wiki/The_Fall_(band)"&gt;The Fall&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;July 15, 2018:&lt;/strong&gt; This list is currently not up to date, I&amp;rsquo;m in the process of cataloging everything to figure out what I want to keep and what I want to sell/donate/give away.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Artist&lt;/th&gt;
&lt;th&gt;Album&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;808 State&lt;/td&gt;
&lt;td&gt;NewBuild&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A Certain Ratio&lt;/td&gt;
&lt;td&gt;Sextet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A Tribe Called Quest&lt;/td&gt;
&lt;td&gt;Midnight Marauders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A Tribe Called Quest&lt;/td&gt;
&lt;td&gt;The Love Movement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A-Trak&lt;/td&gt;
&lt;td&gt;Enter Ralph Wiggum / Live @ Tableturns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aceyalone&lt;/td&gt;
&lt;td&gt;A Book of Human Language&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aceyalone&lt;/td&gt;
&lt;td&gt;Accepted Eclectic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aceyalone&lt;/td&gt;
&lt;td&gt;Faces / The Guidelines 94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adventure Time&lt;/td&gt;
&lt;td&gt;Dreams of Water Themes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aesop Rock&lt;/td&gt;
&lt;td&gt;Float&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aesop Rock&lt;/td&gt;
&lt;td&gt;Labor Days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aesop Rock&lt;/td&gt;
&lt;td&gt;Coma / Maintenance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Air&lt;/td&gt;
&lt;td&gt;Premiers Symptomes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Air&lt;/td&gt;
&lt;td&gt;Moon Safari&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Al Green&lt;/td&gt;
&lt;td&gt;Explores Your Mind&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;All Natural Lemon and Lime Flavors&lt;/td&gt;
&lt;td&gt;Turning Into Small&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ammon Contact&lt;/td&gt;
&lt;td&gt;Sounds Like Everything&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amon Tobin&lt;/td&gt;
&lt;td&gt;Bricolage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;And You Will Know Us By The Trail of Dead&lt;/td&gt;
&lt;td&gt;Source Tags and Codes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anti Pop Consortium&lt;/td&gt;
&lt;td&gt;Tragic Epilogue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Antibalas&amp;rsquo; Afro Beat Orchestra&lt;/td&gt;
&lt;td&gt;Liberation Afro Beat Vol. 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aphex Twin&lt;/td&gt;
&lt;td&gt;Come To Daddy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arcade Fire&lt;/td&gt;
&lt;td&gt;Funeral&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aretha Franklin&lt;/td&gt;
&lt;td&gt;Best Of&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Art Blakey&lt;/td&gt;
&lt;td&gt;A Night At Bird Land Volume 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;As Mercenarias&lt;/td&gt;
&lt;td&gt;The Beginning of the End of the World&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automato&lt;/td&gt;
&lt;td&gt;My Casio / Cool Boots&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bad Brains&lt;/td&gt;
&lt;td&gt;Bad Brains&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bad Brains&lt;/td&gt;
&lt;td&gt;I Against I&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bahamadia&lt;/td&gt;
&lt;td&gt;BB Queen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Band of Gypsies&lt;/td&gt;
&lt;td&gt;Band of Gypsies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beastie Boys&lt;/td&gt;
&lt;td&gt;Paul&amp;rsquo;s Boutique&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beat Happening&lt;/td&gt;
&lt;td&gt;Beat Happening&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Big Black&lt;/td&gt;
&lt;td&gt;Headache&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Big Black&lt;/td&gt;
&lt;td&gt;Songs About Fucking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Big Daddy Kane&lt;/td&gt;
&lt;td&gt;Ain&amp;rsquo;t No Half Steppin'&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Big Daddy Kane&lt;/td&gt;
&lt;td&gt;It&amp;rsquo;s a Big Daddy Thing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Big L&lt;/td&gt;
&lt;td&gt;The Big Picture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bikini Kill&lt;/td&gt;
&lt;td&gt;EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bikini Kill&lt;/td&gt;
&lt;td&gt;Pussy Whipped&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Biz Markie&lt;/td&gt;
&lt;td&gt;Best Of Cold Chillin'&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bjork&lt;/td&gt;
&lt;td&gt;Gling-Glo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Black Eyes&lt;/td&gt;
&lt;td&gt;Black Eyes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Black Eyes&lt;/td&gt;
&lt;td&gt;Cough&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Black Flag&lt;/td&gt;
&lt;td&gt;Slip It In&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Black Lips&lt;/td&gt;
&lt;td&gt;Good Bad Not Evil&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Black Sheep&lt;/td&gt;
&lt;td&gt;The Choice is Yours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Black Star&lt;/td&gt;
&lt;td&gt;Black Star&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blackalicious&lt;/td&gt;
&lt;td&gt;Nia&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blackalicious&lt;/td&gt;
&lt;td&gt;A2G EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blackalicious&lt;/td&gt;
&lt;td&gt;Passion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blonde Redhead&lt;/td&gt;
&lt;td&gt;Melody of Certain Damaged Lemons&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blonde Redhead&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blondie&lt;/td&gt;
&lt;td&gt;Parallel Lines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bon Jovi&lt;/td&gt;
&lt;td&gt;Slippery When Wet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bonobo&lt;/td&gt;
&lt;td&gt;Dial M for Monkey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Boogie Down Productions&lt;/td&gt;
&lt;td&gt;Ghetto Music: The Blueprint of Hip Hop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Booker T. and the MGs&lt;/td&gt;
&lt;td&gt;Soul Dressing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breakestra&lt;/td&gt;
&lt;td&gt;Cramp Your Style / Baby Don&amp;rsquo;t Cry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Brian Eno&lt;/td&gt;
&lt;td&gt;Ambient 1 - Music for Airports&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Brian Eno and David Byrne&lt;/td&gt;
&lt;td&gt;My Life In The Bush of Ghosts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bud Powell&lt;/td&gt;
&lt;td&gt;The Scene Changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Built To Spill&lt;/td&gt;
&lt;td&gt;Perfect From Now On&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Built to Spill&lt;/td&gt;
&lt;td&gt;There&amp;rsquo;s Nothing Wrong With Love&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Burning Spear&lt;/td&gt;
&lt;td&gt;Studio One Presents Burning Spear&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Candi Staton&lt;/td&gt;
&lt;td&gt;Best Of&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cannibal Ox&lt;/td&gt;
&lt;td&gt;The Cold Vein&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cannibal Ox&lt;/td&gt;
&lt;td&gt;Vein / B-Boy&amp;rsquo;s Alpha&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cannibal Ox&lt;/td&gt;
&lt;td&gt;The F-Word (White Label Promo)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cannibal Ox&lt;/td&gt;
&lt;td&gt;The F-Word&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Casual&lt;/td&gt;
&lt;td&gt;Fear Itself&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Charizma and Peanut Butter Wolf&lt;/td&gt;
&lt;td&gt;Devotion &amp;lsquo;92 / Devotion &amp;lsquo;93&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cherrywine&lt;/td&gt;
&lt;td&gt;In Here / 16th Minute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cibo Matto&lt;/td&gt;
&lt;td&gt;Viva! La Woman&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ciccone Youth&lt;/td&gt;
&lt;td&gt;The Whitey Album&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clifton Chenier&lt;/td&gt;
&lt;td&gt;Louisiana Blues and Zydeco&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coldcut&lt;/td&gt;
&lt;td&gt;Let Us Play!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coldcut&lt;/td&gt;
&lt;td&gt;More Beats and Pieces&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coldcut&lt;/td&gt;
&lt;td&gt;Re:volution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Common&lt;/td&gt;
&lt;td&gt;Resurrection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Common&lt;/td&gt;
&lt;td&gt;One Day It&amp;rsquo;ll All Make Sense&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Common&lt;/td&gt;
&lt;td&gt;Like Water For Chocolate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Company Flow&lt;/td&gt;
&lt;td&gt;Little Johnny from the Hospitul: Breaks and Instrumentals Vol. 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Company Flow&lt;/td&gt;
&lt;td&gt;End to End Burners&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Company Flow&lt;/td&gt;
&lt;td&gt;Infokill / Population Control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Company Flow&lt;/td&gt;
&lt;td&gt;Funcrusher Plus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Company Flow / Cannibal Ox&lt;/td&gt;
&lt;td&gt;DPA / Iron Galaxy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Company Flow / Indelible MCs&lt;/td&gt;
&lt;td&gt;Fire In Which You Burn / Collude Intrude&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constantines&lt;/td&gt;
&lt;td&gt;Shine A Light&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contortions&lt;/td&gt;
&lt;td&gt;Buy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Controller 7&lt;/td&gt;
&lt;td&gt;Left Handed Selections&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cornelius&lt;/td&gt;
&lt;td&gt;Fantasma&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Creedence Clearwater Revival&lt;/td&gt;
&lt;td&gt;Cosmo&amp;rsquo;s Factory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Curtis Mayfield&lt;/td&gt;
&lt;td&gt;Roots&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cut Chemist / Madlib&lt;/td&gt;
&lt;td&gt;Bunky&amp;rsquo;s Pick / 6 Variations of In The Rain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cymande&lt;/td&gt;
&lt;td&gt;Second Time Round&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cymande&lt;/td&gt;
&lt;td&gt;Cymande&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cypress Hill&lt;/td&gt;
&lt;td&gt;Cypress Hill&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D-Styles&lt;/td&gt;
&lt;td&gt;Phantazmagorea&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D.I.T.C.&lt;/td&gt;
&lt;td&gt;Get Yours / Where You At?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D12&lt;/td&gt;
&lt;td&gt;Quitter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dan the Automator&lt;/td&gt;
&lt;td&gt;A Much Better Tomorrow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;David Axelrod&lt;/td&gt;
&lt;td&gt;Heavy Axe&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;David Bowie&lt;/td&gt;
&lt;td&gt;Ziggy Stardust&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;De La Soul&lt;/td&gt;
&lt;td&gt;De La Soul is Dead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;De La Soul&lt;/td&gt;
&lt;td&gt;Buhloone Mind State&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dead Prez&lt;/td&gt;
&lt;td&gt;It&amp;rsquo;s Bigger Than Hip-Hop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeBARGE&lt;/td&gt;
&lt;td&gt;Rhythm of the Night&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Declaime&lt;/td&gt;
&lt;td&gt;Andsoitisaid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deep Puddle Dynamics&lt;/td&gt;
&lt;td&gt;The Taste of Rain &amp;hellip; Why Kneel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Del The Funky Homosapien&lt;/td&gt;
&lt;td&gt;Catch a Bad One&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Del The Funky Homosapien&lt;/td&gt;
&lt;td&gt;I Wish My Brother George Was Here&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Del The Funky Homosapien&lt;/td&gt;
&lt;td&gt;No Need For Alarm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deltron 3030&lt;/td&gt;
&lt;td&gt;Deltron 3030&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Department of Eagles&lt;/td&gt;
&lt;td&gt;The Whitey On The Moon UK LP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Devo&lt;/td&gt;
&lt;td&gt;Freedom of Choice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Devo&lt;/td&gt;
&lt;td&gt;Q: Are We Not Men? A: We Are Devo!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Devo&lt;/td&gt;
&lt;td&gt;Duty Now For The Future&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dexter Gordon&lt;/td&gt;
&lt;td&gt;Our Man In Paris&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Diamond and the Psychotic Neurotics&lt;/td&gt;
&lt;td&gt;Stunts Blunts and Hip-Hop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Die Kreuzen&lt;/td&gt;
&lt;td&gt;Century Days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dilated Peoples&lt;/td&gt;
&lt;td&gt;The Platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dinosaur Jr.&lt;/td&gt;
&lt;td&gt;Bug&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Diplo&lt;/td&gt;
&lt;td&gt;Diplodocus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Babu&lt;/td&gt;
&lt;td&gt;Superduckbreaks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Babu&lt;/td&gt;
&lt;td&gt;Superduckbreaks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Butchwax&lt;/td&gt;
&lt;td&gt;Hee-Haw Breaks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Faust&lt;/td&gt;
&lt;td&gt;Inward Journeys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Food&lt;/td&gt;
&lt;td&gt;Quadraplex EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Food&lt;/td&gt;
&lt;td&gt;Kaleidoscope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Jazzy Jeff&lt;/td&gt;
&lt;td&gt;The Magnificent EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Jazzy Jeff and the Fresh Prince&lt;/td&gt;
&lt;td&gt;I Think I Can Beat Mike Tyson&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Jazzy Jeff and the Fresh Prince&lt;/td&gt;
&lt;td&gt;He&amp;rsquo;s the DJ I&amp;rsquo;m the Rapper&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Krush&lt;/td&gt;
&lt;td&gt;Krush EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Krush&lt;/td&gt;
&lt;td&gt;Kakusei&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Krush&lt;/td&gt;
&lt;td&gt;Zen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Krush and Toshinori Kondo&lt;/td&gt;
&lt;td&gt;Ki-oku&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Q-Bert&lt;/td&gt;
&lt;td&gt;Wave Twisters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Q-Bert&lt;/td&gt;
&lt;td&gt;The Y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Shadow&lt;/td&gt;
&lt;td&gt;The Private Press&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Shadow&lt;/td&gt;
&lt;td&gt;Endtroducing&amp;hellip;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Shadow&lt;/td&gt;
&lt;td&gt;Dark Days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Shadow and Dan the Automator&lt;/td&gt;
&lt;td&gt;Bombay The Hard Way&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Spooky&lt;/td&gt;
&lt;td&gt;Songs of a Dead Dreamer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DJ Vadim&lt;/td&gt;
&lt;td&gt;USSR Repertoire (The Theory of Verticality)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Don Caballero&lt;/td&gt;
&lt;td&gt;Don Caballero 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Don Caballero&lt;/td&gt;
&lt;td&gt;American Don&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Donald Byrd&lt;/td&gt;
&lt;td&gt;A New Perspective&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dos&lt;/td&gt;
&lt;td&gt;Dos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dr. Dooom&lt;/td&gt;
&lt;td&gt;First Come First Served&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dr. Octagon&lt;/td&gt;
&lt;td&gt;Dr. Octagonecologyst&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dub Narcotic Sound System&lt;/td&gt;
&lt;td&gt;Out of Your Mind&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dub Narcotic Sound System&lt;/td&gt;
&lt;td&gt;Bone Dry EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dub Narcotic Sound System&lt;/td&gt;
&lt;td&gt;Industrial Breakdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dudley Perkins&lt;/td&gt;
&lt;td&gt;A Lil&amp;rsquo; Light&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Duran Duran&lt;/td&gt;
&lt;td&gt;The Wild Boys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dynamic Syncopation&lt;/td&gt;
&lt;td&gt;Dynamism&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Eazy-E&lt;/td&gt;
&lt;td&gt;Eazy-Duz-It&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Echo and the Bunnymen&lt;/td&gt;
&lt;td&gt;Crocodiles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ed O.G. and Da Bulldogs&lt;/td&gt;
&lt;td&gt;Life of a Kid in the Ghetto&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ed O.G. and Da Bulldogs&lt;/td&gt;
&lt;td&gt;I Got To Have It&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Einsturzende Neubauten&lt;/td&gt;
&lt;td&gt;Strategies Against Architecture III&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;El-P&lt;/td&gt;
&lt;td&gt;Stepfather Factory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;El-P&lt;/td&gt;
&lt;td&gt;Fandam Remix&amp;rsquo;d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;El-P&lt;/td&gt;
&lt;td&gt;Fandamstrumentals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;El-P&lt;/td&gt;
&lt;td&gt;Deep Space 9mm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elliott Smith&lt;/td&gt;
&lt;td&gt;Figure 8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elliott Smith&lt;/td&gt;
&lt;td&gt;Elliott Smith&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elliott Smith&lt;/td&gt;
&lt;td&gt;Either / Or&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elliott Smith&lt;/td&gt;
&lt;td&gt;Speed Trials / Angeles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elliott Smith&lt;/td&gt;
&lt;td&gt;Needle In The Hay / Alphabet Town&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elliott Smith&lt;/td&gt;
&lt;td&gt;Division Day&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elton John&lt;/td&gt;
&lt;td&gt;Philadelphia Freedom / I Saw Her Standing There&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elvis Costello&lt;/td&gt;
&lt;td&gt;My Aim is True&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Eric B. and Rakim&lt;/td&gt;
&lt;td&gt;Paid in Full&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ESG&lt;/td&gt;
&lt;td&gt;A South Bronx Story&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Eugene McDaniels&lt;/td&gt;
&lt;td&gt;Headless Heroes of the Apocalypse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Explosions In The Sky&lt;/td&gt;
&lt;td&gt;The Earth Is Not A Cold Dead Place&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Express Rising&lt;/td&gt;
&lt;td&gt;Miserable Miracle / Buy, Sell, Tirade&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fat Boys&lt;/td&gt;
&lt;td&gt;Coming Back Hard Again&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fat Jack&lt;/td&gt;
&lt;td&gt;Cater to the DJ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Five Deez / Mr Dibbs&lt;/td&gt;
&lt;td&gt;Table Noise Vol. 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flipper&lt;/td&gt;
&lt;td&gt;Generic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Foreign Legion&lt;/td&gt;
&lt;td&gt;Playtight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Four Tops&lt;/td&gt;
&lt;td&gt;Keeper of the Castle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free Kitten&lt;/td&gt;
&lt;td&gt;Sentimental Education&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Galt MacDermot&lt;/td&gt;
&lt;td&gt;Live in Nashville&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gastr Del Sol&lt;/td&gt;
&lt;td&gt;Camoufleur&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Genius / GZA&lt;/td&gt;
&lt;td&gt;4th Chamber / Shadowboxin&amp;rsquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ghostface Killah&lt;/td&gt;
&lt;td&gt;Cherchez La Ghost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gil Scott-Heron&lt;/td&gt;
&lt;td&gt;Pieces of a Man&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Glenn Frey&lt;/td&gt;
&lt;td&gt;The Heat Is On&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gloria Scott&lt;/td&gt;
&lt;td&gt;What Am I Gonna Do&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Godspeed You Black Emperor&lt;/td&gt;
&lt;td&gt;F# A# Infinity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Godspeed You Black Emperor&lt;/td&gt;
&lt;td&gt;Slow Riot for New Zero Kanada&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grant Green&lt;/td&gt;
&lt;td&gt;Idle Moments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gucci Crew II&lt;/td&gt;
&lt;td&gt;So Def So Fresh So Stupid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hank Mobley&lt;/td&gt;
&lt;td&gt;Dippin&amp;rsquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Harold Faltermeyer&lt;/td&gt;
&lt;td&gt;Axel F Theme&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heatmiser&lt;/td&gt;
&lt;td&gt;Dead Air&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heatmiser&lt;/td&gt;
&lt;td&gt;Mic City Sons&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heatmiser&lt;/td&gt;
&lt;td&gt;Dead Air&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heatmiser&lt;/td&gt;
&lt;td&gt;Cop and Speeder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heatmiser&lt;/td&gt;
&lt;td&gt;Everybody Has It / Dirty Dream&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heatmiser&lt;/td&gt;
&lt;td&gt;Sleeping Pill / Temper&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hella&lt;/td&gt;
&lt;td&gt;The Devil Isn&amp;rsquo;t Red&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hella / Four Tet&lt;/td&gt;
&lt;td&gt;Split 7&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Herbie Hancock&lt;/td&gt;
&lt;td&gt;Takin&amp;rsquo; Off&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Herbie Hancock&lt;/td&gt;
&lt;td&gt;Futureshock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heroic Doses&lt;/td&gt;
&lt;td&gt;S / T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hieroglyphics&lt;/td&gt;
&lt;td&gt;3rd Eye Vision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Highlighters&lt;/td&gt;
&lt;td&gt;Poppin&amp;rsquo; Pop Corn / The Funky Sixteen Corners&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Horace Andy&lt;/td&gt;
&lt;td&gt;Dance Hall Style&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Horace Silver&lt;/td&gt;
&lt;td&gt;Song For My Father&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Howard Jones&lt;/td&gt;
&lt;td&gt;Things Can Only Get Better&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hu Vibrational&lt;/td&gt;
&lt;td&gt;Beautiful&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Huey Lewis and the News&lt;/td&gt;
&lt;td&gt;The Power of Love&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Husker Du&lt;/td&gt;
&lt;td&gt;Zen Arcade&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Husker Du&lt;/td&gt;
&lt;td&gt;Flip Your Wig&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Husker Du&lt;/td&gt;
&lt;td&gt;Metal Circus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Husker Du&lt;/td&gt;
&lt;td&gt;Candy Apple Grey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hymie&amp;rsquo;s Basement&lt;/td&gt;
&lt;td&gt;Hymie&amp;rsquo;s Basement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ice-T&lt;/td&gt;
&lt;td&gt;Power&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;icu&lt;/td&gt;
&lt;td&gt;Chotto matte a moment!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Iggy and the Stooges&lt;/td&gt;
&lt;td&gt;Raw Power&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Iggy Pop&lt;/td&gt;
&lt;td&gt;The Idiot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Incredible Bongo Band&lt;/td&gt;
&lt;td&gt;Bongo Rock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internal / External&lt;/td&gt;
&lt;td&gt;Featuring&amp;hellip;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J-Live&lt;/td&gt;
&lt;td&gt;All of the Above&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J-Live&lt;/td&gt;
&lt;td&gt;The Best Part&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J-Live&lt;/td&gt;
&lt;td&gt;Them That&amp;rsquo;s Not / True School Anthem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J-Live&lt;/td&gt;
&lt;td&gt;The Best Part&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J.Rocc / Steinski&lt;/td&gt;
&lt;td&gt;Say Ho! / Ain&amp;rsquo;t No Thing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jaga Jazzist&lt;/td&gt;
&lt;td&gt;A Livingroom Hush&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jah Wobble&lt;/td&gt;
&lt;td&gt;Snake Charmer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jaylib&lt;/td&gt;
&lt;td&gt;Champion Sound Instrumentals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JB&amp;rsquo;s&lt;/td&gt;
&lt;td&gt;Food for Thought&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JB&amp;rsquo;s&lt;/td&gt;
&lt;td&gt;Doing It To Death&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jermaine Jackson&lt;/td&gt;
&lt;td&gt;Dynamite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jeru the Damaja&lt;/td&gt;
&lt;td&gt;The Sun Rises in the East&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jimi Hendrix&lt;/td&gt;
&lt;td&gt;Crash Landing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jimmy Cliff&lt;/td&gt;
&lt;td&gt;The Harder They Come OST&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;John Coltrane&lt;/td&gt;
&lt;td&gt;A Love Supreme&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;John Spencer Blues Explosion&lt;/td&gt;
&lt;td&gt;Talk About The Blues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Joy Division&lt;/td&gt;
&lt;td&gt;Unknown Pleasures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Joy Division&lt;/td&gt;
&lt;td&gt;Still&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jurassic 5&lt;/td&gt;
&lt;td&gt;EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kid Koala&lt;/td&gt;
&lt;td&gt;Scratchappyland&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kid Koala&lt;/td&gt;
&lt;td&gt;Carpal Tunnel Syndrome&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kid Koala&lt;/td&gt;
&lt;td&gt;Emperors Main Course in Cantonese&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;King Geedorah&lt;/td&gt;
&lt;td&gt;Take Me To Your Leader&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;King Tubby&lt;/td&gt;
&lt;td&gt;Meets Rockers Uptown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KMD&lt;/td&gt;
&lt;td&gt;Mr. Hood&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KMD&lt;/td&gt;
&lt;td&gt;Instrumentals 1991-94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KMD&lt;/td&gt;
&lt;td&gt;Bl_ck B_st_rds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KMD&lt;/td&gt;
&lt;td&gt;What a Nigga Know / Constipated Monkey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kool and the Gang&lt;/td&gt;
&lt;td&gt;Kool and the Gang&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kraftwerk&lt;/td&gt;
&lt;td&gt;Trans-Europe Express&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L.A. Dream Team&lt;/td&gt;
&lt;td&gt;Nursery Rhymes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;La Funk Mob&lt;/td&gt;
&lt;td&gt;Breaking Boundaries Messing Up Heads EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Laika&lt;/td&gt;
&lt;td&gt;where I am I am what is missing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latyrx&lt;/td&gt;
&lt;td&gt;The Album&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leo Kottke&lt;/td&gt;
&lt;td&gt;6 and 12 String Guitar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lightnin Hopkins&lt;/td&gt;
&lt;td&gt;Compilation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Liz Phair&lt;/td&gt;
&lt;td&gt;Exile In Guyville&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LL Cool J&lt;/td&gt;
&lt;td&gt;Radio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lootpack&lt;/td&gt;
&lt;td&gt;Miss Deja Vu / I Declare War&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lootpack&lt;/td&gt;
&lt;td&gt;Soundpieces: Da Antidote!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lord Finesse and DJ Mike Smooth&lt;/td&gt;
&lt;td&gt;Funky Technician&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Things We Lost in the Fire&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lyrics Born&lt;/td&gt;
&lt;td&gt;Later That Day&amp;hellip;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M.F. Doom&lt;/td&gt;
&lt;td&gt;Special Herbs Vol. 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M.F. Doom&lt;/td&gt;
&lt;td&gt;MM Food&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M.F. Doom&lt;/td&gt;
&lt;td&gt;Special Herbs Vol. 1 and 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M.F. Doom&lt;/td&gt;
&lt;td&gt;Dead Bent / Doomsday&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M.F. Doom&lt;/td&gt;
&lt;td&gt;Special Herbs Vol. 7 and 8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M.F. Doom&lt;/td&gt;
&lt;td&gt;Change The Name / My Favorite Remix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M.F. Grimm&lt;/td&gt;
&lt;td&gt;Do It For The Kids / Bloody Love Letter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mach Tiver / The Creature&lt;/td&gt;
&lt;td&gt;Split 7&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Madlib&lt;/td&gt;
&lt;td&gt;Shades of Blue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Madlib&lt;/td&gt;
&lt;td&gt;Madlib Invazion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Madlib&lt;/td&gt;
&lt;td&gt;The Beat Conductor 2x7&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Madonna&lt;/td&gt;
&lt;td&gt;Like a Virgin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Madonna&lt;/td&gt;
&lt;td&gt;Madonna&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Madvillain&lt;/td&gt;
&lt;td&gt;Money Folder / America&amp;rsquo;s Most Blunted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Madvillain&lt;/td&gt;
&lt;td&gt;One Beer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Madvillian&lt;/td&gt;
&lt;td&gt;Madvilliany Instrumentals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Madvillian&lt;/td&gt;
&lt;td&gt;Madvilliany&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Madvillian&lt;/td&gt;
&lt;td&gt;Curls / All Caps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Major Force West&lt;/td&gt;
&lt;td&gt;93-97&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Malcolm McLaren&lt;/td&gt;
&lt;td&gt;Double Dutch / Hobo Scratch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mantronix&lt;/td&gt;
&lt;td&gt;The Best Of (1985-1999)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marva Whitney&lt;/td&gt;
&lt;td&gt;It&amp;rsquo;s My Thing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marvin Gaye&lt;/td&gt;
&lt;td&gt;Greatest Hits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mass Influence&lt;/td&gt;
&lt;td&gt;Analyze / All Out&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mass Influence&lt;/td&gt;
&lt;td&gt;Nonsense / Nightime Groove&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Massive Attack&lt;/td&gt;
&lt;td&gt;Protection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Massive Attack&lt;/td&gt;
&lt;td&gt;Mezzanine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mates of State&lt;/td&gt;
&lt;td&gt;Our Constant Concern&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meat Puppets&lt;/td&gt;
&lt;td&gt;Meat Puppets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meat Puppets&lt;/td&gt;
&lt;td&gt;Meat Puppets II&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meat Puppets&lt;/td&gt;
&lt;td&gt;Up On The Sun&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meat Puppets&lt;/td&gt;
&lt;td&gt;Mirage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mekons&lt;/td&gt;
&lt;td&gt;The Mekons Rock &amp;rsquo;n Roll&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Men At Work&lt;/td&gt;
&lt;td&gt;Business As Usual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Method Man and Redman&lt;/td&gt;
&lt;td&gt;Blackout!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Michael Jackson&lt;/td&gt;
&lt;td&gt;Thriller&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mike Watt&lt;/td&gt;
&lt;td&gt;Ball-hog or Tugboat?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Miles Davis&lt;/td&gt;
&lt;td&gt;Relaxin&amp;rsquo; With The Miles Davis Quintet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Miles Davis&lt;/td&gt;
&lt;td&gt;Kind of Blue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Miles Davis&lt;/td&gt;
&lt;td&gt;&amp;lsquo;Round About Midnight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minor Threat&lt;/td&gt;
&lt;td&gt;Out of Step&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minuteflag&lt;/td&gt;
&lt;td&gt;Minuteflag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minutemen&lt;/td&gt;
&lt;td&gt;The Politics of Time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minutemen&lt;/td&gt;
&lt;td&gt;What Makes a Man Start Fires?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minutemen&lt;/td&gt;
&lt;td&gt;Project: Mersh&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minutemen&lt;/td&gt;
&lt;td&gt;Buzz or Howl Under the Influence of Heat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minutemen&lt;/td&gt;
&lt;td&gt;Double Nickels on the Dime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minutemen&lt;/td&gt;
&lt;td&gt;The Punch Line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minutemen&lt;/td&gt;
&lt;td&gt;Paranoid Time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mmmr&lt;/td&gt;
&lt;td&gt;mmmr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobb Deep&lt;/td&gt;
&lt;td&gt;The Infamous&amp;hellip;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modest Mouse&lt;/td&gt;
&lt;td&gt;Night on the Sun&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modest Mouse&lt;/td&gt;
&lt;td&gt;The Fruit that Ate Itself&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modest Mouse&lt;/td&gt;
&lt;td&gt;The Lonesome Crowded West&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modest Mouse&lt;/td&gt;
&lt;td&gt;This Is A Long Drive For Someone With Nothing To Think About&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modest Mouse&lt;/td&gt;
&lt;td&gt;Float On&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modest Mouse&lt;/td&gt;
&lt;td&gt;Life of Arctic Sounds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modest Mouse&lt;/td&gt;
&lt;td&gt;Broke / Whenever I Breathe Out You Breathe In / Positive Negative&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Moodymann&lt;/td&gt;
&lt;td&gt;Black Mahogani&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mos Def&lt;/td&gt;
&lt;td&gt;Universal Magnetic / If You Can Huh You Can Hear&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mos Def&lt;/td&gt;
&lt;td&gt;Black on Both Sides&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mount Eerie&lt;/td&gt;
&lt;td&gt;No Flashlight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mr. Len&lt;/td&gt;
&lt;td&gt;Pity the Fool&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mr. Len&lt;/td&gt;
&lt;td&gt;The Hurt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mr. Lif&lt;/td&gt;
&lt;td&gt;Enters the Colossus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Murray Head&lt;/td&gt;
&lt;td&gt;One Night In Bangkok / Merano&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Murs&lt;/td&gt;
&lt;td&gt;3:16 the 9th Edition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;My Bloody Valentine&lt;/td&gt;
&lt;td&gt;Isn&amp;rsquo;t Anything&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;My Bloody Valentine&lt;/td&gt;
&lt;td&gt;Feed Me With Your Kiss EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;My Bloody Valentine&lt;/td&gt;
&lt;td&gt;You Made Me Realise EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;My Bloody Valentine&lt;/td&gt;
&lt;td&gt;Loveless&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;My Bloody Valentine&lt;/td&gt;
&lt;td&gt;Loveless (Reissue)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nas&lt;/td&gt;
&lt;td&gt;Illmatic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Neu&lt;/td&gt;
&lt;td&gt;Neu 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New Order&lt;/td&gt;
&lt;td&gt;Power Corruption and Lies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nigo&lt;/td&gt;
&lt;td&gt;Ape Sounds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nine Inch Nails&lt;/td&gt;
&lt;td&gt;Pretty Hate Machine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No.2&lt;/td&gt;
&lt;td&gt;Allistair Chestnut&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ol Dirty Bastard&lt;/td&gt;
&lt;td&gt;Brooklyn Zoo / Give It To Ya Raw&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Omid / Cosiner&lt;/td&gt;
&lt;td&gt;Involution Vol. 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Organized Konfusion&lt;/td&gt;
&lt;td&gt;Stress (The Extinction Agenda)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Organized Konfusion&lt;/td&gt;
&lt;td&gt;Organized Konfusion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ornette Coleman&lt;/td&gt;
&lt;td&gt;Free Jazz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ornette Coleman&lt;/td&gt;
&lt;td&gt;At The &amp;ldquo;Golden Circle&amp;rdquo; Volume Two&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Otis Redding&lt;/td&gt;
&lt;td&gt;The Dictionary of Soul&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Outkast&lt;/td&gt;
&lt;td&gt;Aquemini&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Outkast&lt;/td&gt;
&lt;td&gt;Stankonia&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Outkast&lt;/td&gt;
&lt;td&gt;Hey Ya!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P.E.A.C.E.&lt;/td&gt;
&lt;td&gt;Southern Fry&amp;rsquo;d Chicken&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Patti Smith&lt;/td&gt;
&lt;td&gt;Easter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Patti Smith&lt;/td&gt;
&lt;td&gt;Horses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pavement&lt;/td&gt;
&lt;td&gt;Westing (by Musket and Sextant)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pavement&lt;/td&gt;
&lt;td&gt;Slanted and Enchanted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pavement&lt;/td&gt;
&lt;td&gt;Crooked Rain Crooked Rain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pavement&lt;/td&gt;
&lt;td&gt;Terror Twilight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Peanut Butter Wolf&lt;/td&gt;
&lt;td&gt;Peanut Butter Breaks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pere Ubu&lt;/td&gt;
&lt;td&gt;The Modern Dance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pere Ubu&lt;/td&gt;
&lt;td&gt;Dub Housing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pete Rock&lt;/td&gt;
&lt;td&gt;PeteStrumentals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pharoahe Monch&lt;/td&gt;
&lt;td&gt;Internal Affairs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Piano Overlord&lt;/td&gt;
&lt;td&gt;Tease EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pixies&lt;/td&gt;
&lt;td&gt;Doolittle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pixies&lt;/td&gt;
&lt;td&gt;Trompe le Monde&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pixies&lt;/td&gt;
&lt;td&gt;Come on Pilgrim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pixies&lt;/td&gt;
&lt;td&gt;Surfer Rosa&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pixies&lt;/td&gt;
&lt;td&gt;Debaser / #13 Baby&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pointer Sisters&lt;/td&gt;
&lt;td&gt;I&amp;rsquo;m So Excited / Dance Electric&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pointer Sisters&lt;/td&gt;
&lt;td&gt;Neutron Dance / Telegraph Your Love&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Polvo&lt;/td&gt;
&lt;td&gt;Exploded Drawing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Polvo&lt;/td&gt;
&lt;td&gt;Shapes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pond&lt;/td&gt;
&lt;td&gt;The Practice of Joy Before Death&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Portastatic&lt;/td&gt;
&lt;td&gt;I Hope Your Heart Is Not Brittle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Portishead&lt;/td&gt;
&lt;td&gt;Dummy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Portishead&lt;/td&gt;
&lt;td&gt;Roseland NYC Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prefuse 73&lt;/td&gt;
&lt;td&gt;The &amp;lsquo;92 vs. &amp;lsquo;02 Collection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pretty Girls Make Graves&lt;/td&gt;
&lt;td&gt;The New Romance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Primal Scream&lt;/td&gt;
&lt;td&gt;XTRMNTR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Primal Scream&lt;/td&gt;
&lt;td&gt;If They Move Kill Em&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Primus&lt;/td&gt;
&lt;td&gt;Frizzle Fry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prince&lt;/td&gt;
&lt;td&gt;Purple Rain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prince&lt;/td&gt;
&lt;td&gt;Around the World in a Day&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prince&lt;/td&gt;
&lt;td&gt;Sign O The Times&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prince&lt;/td&gt;
&lt;td&gt;Let&amp;rsquo;s Go Crazy / Erotic City&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prince Paul&lt;/td&gt;
&lt;td&gt;A Prince Among Thieves&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public Enemy&lt;/td&gt;
&lt;td&gt;There&amp;rsquo;s a Poison Goin&amp;rsquo; On&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public Enemy&lt;/td&gt;
&lt;td&gt;Muse Sick-n-Hour Mess Age&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public Enemy&lt;/td&gt;
&lt;td&gt;Yo! Bum Rush The Show&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public Image Limited&lt;/td&gt;
&lt;td&gt;Metal Box&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Push Button Objects&lt;/td&gt;
&lt;td&gt;360 Degrees&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pussy Galore&lt;/td&gt;
&lt;td&gt;Right Now!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pussy Galore&lt;/td&gt;
&lt;td&gt;Pussy Gold 5000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pussy Galore&lt;/td&gt;
&lt;td&gt;Sugarshit Sharp EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pussy Galore&lt;/td&gt;
&lt;td&gt;Dial M for Motherfucker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pussy Galore&lt;/td&gt;
&lt;td&gt;Live In The Red&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Q And Not U&lt;/td&gt;
&lt;td&gt;No Kill No Beep Beep&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Q-Tip&lt;/td&gt;
&lt;td&gt;Amplified&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quasi&lt;/td&gt;
&lt;td&gt;Featuring &amp;ldquo;Birds&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quasi&lt;/td&gt;
&lt;td&gt;Field Studies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quasi&lt;/td&gt;
&lt;td&gt;All Bent Out of Shape / Blood and Dirt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quasimoto&lt;/td&gt;
&lt;td&gt;The Unseen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;R.E.M.&lt;/td&gt;
&lt;td&gt;Murmur&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RA The Rugged Man&lt;/td&gt;
&lt;td&gt;Till My Heart Stops / Flipside&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Radio Birdman&lt;/td&gt;
&lt;td&gt;The Essential Radio Birdman (1974-1978)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Raekwon&lt;/td&gt;
&lt;td&gt;Only Built 4 Cuban Linx&amp;hellip;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Raekwon&lt;/td&gt;
&lt;td&gt;Ice Cream / Incarcerated Scarfaces&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rammelzee vs. K-Rob&lt;/td&gt;
&lt;td&gt;Beat Bop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rare Earth&lt;/td&gt;
&lt;td&gt;Ecology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rasco&lt;/td&gt;
&lt;td&gt;Time Waits for No Man&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ratatat&lt;/td&gt;
&lt;td&gt;Ratatat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ray Baretto&lt;/td&gt;
&lt;td&gt;Acid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ray Parker Jr.&lt;/td&gt;
&lt;td&gt;Ghostbusters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Redman&lt;/td&gt;
&lt;td&gt;Muddy Waters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reflection Eternal&lt;/td&gt;
&lt;td&gt;Fortified Live / 2000 Seasons&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reflection Eternal&lt;/td&gt;
&lt;td&gt;Train of Thought&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ricci Rucker and Mike Boo&lt;/td&gt;
&lt;td&gt;Scetchbook&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RJD2&lt;/td&gt;
&lt;td&gt;Since We Last Spoke&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rob Swift&lt;/td&gt;
&lt;td&gt;Soulful Fruit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rob Swift&lt;/td&gt;
&lt;td&gt;The Ablist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rolling Stones&lt;/td&gt;
&lt;td&gt;Exile on Main Street&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roots Manuva&lt;/td&gt;
&lt;td&gt;Witness (1 Hope)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roots Manuva&lt;/td&gt;
&lt;td&gt;Brand New Second Hand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roxy Music&lt;/td&gt;
&lt;td&gt;Roxy Music&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roy Ayers Ubiquity&lt;/td&gt;
&lt;td&gt;He&amp;rsquo;s Coming&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Royal Trux&lt;/td&gt;
&lt;td&gt;Cats and Dogs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run DMC&lt;/td&gt;
&lt;td&gt;Walk This Way&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run DMC&lt;/td&gt;
&lt;td&gt;Tougher Than Leather&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run DMC&lt;/td&gt;
&lt;td&gt;Run DMC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run DMC&lt;/td&gt;
&lt;td&gt;Run&amp;rsquo;s House / Beats To The Rhyme&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Saccharine Trust&lt;/td&gt;
&lt;td&gt;Worldbroken&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Saint Etienne&lt;/td&gt;
&lt;td&gt;How We Used To Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sam and Dave&lt;/td&gt;
&lt;td&gt;The Best of Sam and Dave&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Savath &amp;amp; Savalas&lt;/td&gt;
&lt;td&gt;Apropa&amp;rsquo;t&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scaramanga&lt;/td&gt;
&lt;td&gt;Seven Eyes Seven Horns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sebadoh&lt;/td&gt;
&lt;td&gt;III&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sebadoh&lt;/td&gt;
&lt;td&gt;Weed Forestin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sigur Ros&lt;/td&gt;
&lt;td&gt;Agaetis Byrjun&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Silver Jews&lt;/td&gt;
&lt;td&gt;Bright Flight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Silver Jews&lt;/td&gt;
&lt;td&gt;American Water&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Siouxsie and the Banshees&lt;/td&gt;
&lt;td&gt;Nocturne&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Siouxsie and the Banshees&lt;/td&gt;
&lt;td&gt;Once Upon a Time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sir Menelik aka Cyclops 4000&lt;/td&gt;
&lt;td&gt;Space Cadillac / Nightwork&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleater-Kinney&lt;/td&gt;
&lt;td&gt;Call The Doctor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleater-Kinney&lt;/td&gt;
&lt;td&gt;The Hot Rock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleater-Kinney&lt;/td&gt;
&lt;td&gt;Sleater-Kinney&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleater-Kinney&lt;/td&gt;
&lt;td&gt;Dig Me Out&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleater-Kinney&lt;/td&gt;
&lt;td&gt;All Hands On The Bad One&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleater-Kinney&lt;/td&gt;
&lt;td&gt;Get Up / By the Time You&amp;rsquo;re Twenty-five&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleater-Kinney&lt;/td&gt;
&lt;td&gt;You&amp;rsquo;re No Rock N&amp;rsquo; Roll Fun / Maraca&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slint&lt;/td&gt;
&lt;td&gt;Spiderland&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sly and Robbie&lt;/td&gt;
&lt;td&gt;Riddim: The Best of Sly and Robbie in Dub (1978- 1980)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sly and the Family Stone&lt;/td&gt;
&lt;td&gt;Stand!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sly and the Family Stone&lt;/td&gt;
&lt;td&gt;There&amp;rsquo;s a Riot Goin&amp;rsquo; On&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smashing Pumpkins&lt;/td&gt;
&lt;td&gt;Siamese Dream&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sole&lt;/td&gt;
&lt;td&gt;Bottle of Humans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonic Youth&lt;/td&gt;
&lt;td&gt;SYR1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonic Youth&lt;/td&gt;
&lt;td&gt;Sonic Nurse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonic Youth&lt;/td&gt;
&lt;td&gt;4 tunna brix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonic Youth&lt;/td&gt;
&lt;td&gt;Bad Moon Rising&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonic Youth&lt;/td&gt;
&lt;td&gt;Master-Dik EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonic Youth&lt;/td&gt;
&lt;td&gt;Daydream Nation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonic Youth&lt;/td&gt;
&lt;td&gt;A Thousand Leaves&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonic Youth&lt;/td&gt;
&lt;td&gt;Confusion is Sex&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonic Youth&lt;/td&gt;
&lt;td&gt;EVOL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonic Youth&lt;/td&gt;
&lt;td&gt;Sister&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonic Youth&lt;/td&gt;
&lt;td&gt;Death Valley 69 / Brave Men Run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sonics Rendezvous Band&lt;/td&gt;
&lt;td&gt;Strikes Like Lightning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Souls of Mischief&lt;/td&gt;
&lt;td&gt;Focus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Souls of Mischief&lt;/td&gt;
&lt;td&gt;93 &amp;rsquo;til Infinity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stark Reality&lt;/td&gt;
&lt;td&gt;NOW&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Starship&lt;/td&gt;
&lt;td&gt;We Built This City / Private Room&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Statistics&lt;/td&gt;
&lt;td&gt;Leave Your Name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stephen Malkmus&lt;/td&gt;
&lt;td&gt;Discretion Grove&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stetsasonic&lt;/td&gt;
&lt;td&gt;In Full Gear&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stevie Wonder&lt;/td&gt;
&lt;td&gt;Songs in the Key of Life&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Suicide&lt;/td&gt;
&lt;td&gt;Suicide&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunny Day Real Estate&lt;/td&gt;
&lt;td&gt;How It Feels To Be Something On&amp;hellip;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunny Day Real Estate&lt;/td&gt;
&lt;td&gt;Diary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunny Day Real Estate&lt;/td&gt;
&lt;td&gt;LP2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Superseal&lt;/td&gt;
&lt;td&gt;Sealed Breaks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Swollen Members&lt;/td&gt;
&lt;td&gt;Balance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;T-Love&lt;/td&gt;
&lt;td&gt;Witch-Bitch? / Q.M.S.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Talking Heads&lt;/td&gt;
&lt;td&gt;Burning Down The House / This Must Be The Place (Naive Melody)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tash&lt;/td&gt;
&lt;td&gt;Raplife&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Television&lt;/td&gt;
&lt;td&gt;The Blow Up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Television&lt;/td&gt;
&lt;td&gt;Adventure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tha Alkaholiks&lt;/td&gt;
&lt;td&gt;21 and Over&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thanksgiving&lt;/td&gt;
&lt;td&gt;Welcome Nowhere&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The A-Team&lt;/td&gt;
&lt;td&gt;Who Framed the A-Team?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Beat Junkies&lt;/td&gt;
&lt;td&gt;The World Famous Vol. 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Beatles&lt;/td&gt;
&lt;td&gt;Revolver&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Beatnuts&lt;/td&gt;
&lt;td&gt;Intoxicated Demons EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Black Gang&lt;/td&gt;
&lt;td&gt;This is a Prayer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Blood Brothers&lt;/td&gt;
&lt;td&gt;Burn Piano Island Burn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Casket Lottery&lt;/td&gt;
&lt;td&gt;Survival is for Cowards&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Cinematic Orchestra&lt;/td&gt;
&lt;td&gt;Every Day&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Cinematic Orchestra&lt;/td&gt;
&lt;td&gt;Remixes 98-2000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Cinematic Orchestra&lt;/td&gt;
&lt;td&gt;Motion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Clash&lt;/td&gt;
&lt;td&gt;London Calling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Cure&lt;/td&gt;
&lt;td&gt;Boys Don&amp;rsquo;t Cry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Cure&lt;/td&gt;
&lt;td&gt;Pornography&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Cure&lt;/td&gt;
&lt;td&gt;Disintegration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Damned&lt;/td&gt;
&lt;td&gt;Music For Pleasure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Electric Prunes&lt;/td&gt;
&lt;td&gt;I Had Too Much To Dream Last Night&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Fall&lt;/td&gt;
&lt;td&gt;The Real New Fall LP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Fall&lt;/td&gt;
&lt;td&gt;Dragnet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Fall&lt;/td&gt;
&lt;td&gt;Totally Wired&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Fall&lt;/td&gt;
&lt;td&gt;Hex Enduction Hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Fall&lt;/td&gt;
&lt;td&gt;Slates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Fall&lt;/td&gt;
&lt;td&gt;Live at the Witch Trials&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Fall&lt;/td&gt;
&lt;td&gt;Living Too Late / Hot Aftershave Bop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Fall&lt;/td&gt;
&lt;td&gt;Bend Sinister&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Folk Implosion&lt;/td&gt;
&lt;td&gt;Take a Look Inside&amp;hellip;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Folk Implosion&lt;/td&gt;
&lt;td&gt;Dare to be Surprised&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Freestyle Fellowship&lt;/td&gt;
&lt;td&gt;To Whom It May Concern&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The GO! Team&lt;/td&gt;
&lt;td&gt;Thunder Lightning Strike&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Grateful Dead&lt;/td&gt;
&lt;td&gt;Workingman&amp;rsquo;s Dead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Herbalizer&lt;/td&gt;
&lt;td&gt;Blow Your Headphones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Herbalizer&lt;/td&gt;
&lt;td&gt;Remedies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Infesticons&lt;/td&gt;
&lt;td&gt;Gun Hill Road&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The James Gang&lt;/td&gt;
&lt;td&gt;16 Greatest Hits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The James Gang&lt;/td&gt;
&lt;td&gt;Live in Concert&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Jesus and Mary Chain&lt;/td&gt;
&lt;td&gt;Darklands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Jesus and Mary Chain&lt;/td&gt;
&lt;td&gt;Psychocandy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Jesus Lizard&lt;/td&gt;
&lt;td&gt;Goat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Jimi Hendrix Experience&lt;/td&gt;
&lt;td&gt;Axis: Bold as Love&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Jon Spencer Blues Explosion&lt;/td&gt;
&lt;td&gt;ACME&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Meters&lt;/td&gt;
&lt;td&gt;The Meters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Meters&lt;/td&gt;
&lt;td&gt;Struttin&amp;rsquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Microphones&lt;/td&gt;
&lt;td&gt;The Glow Part Two&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Monks&lt;/td&gt;
&lt;td&gt;Black Monk Time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The National&lt;/td&gt;
&lt;td&gt;Boxer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Pharcyde&lt;/td&gt;
&lt;td&gt;Bizarre Ride II The Pharcyde&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Poets of Rhythm&lt;/td&gt;
&lt;td&gt;Guiding Resolution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Promise Ring&lt;/td&gt;
&lt;td&gt;Nothing Feels Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Sea and Cake&lt;/td&gt;
&lt;td&gt;Oui&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Shins&lt;/td&gt;
&lt;td&gt;Oh Inverted World&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Smiths&lt;/td&gt;
&lt;td&gt;Louder Than Bombs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Smiths&lt;/td&gt;
&lt;td&gt;Meat is Murder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Smiths&lt;/td&gt;
&lt;td&gt;Hateful of Hollow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Smiths&lt;/td&gt;
&lt;td&gt;The Queen Is Dead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Sonics&lt;/td&gt;
&lt;td&gt;Here Are The Sonics!!!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Sonics&lt;/td&gt;
&lt;td&gt;Boom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Sugarcubes&lt;/td&gt;
&lt;td&gt;Life&amp;rsquo;s Too Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Temptations&lt;/td&gt;
&lt;td&gt;Greatest Hits II&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Three Sounds&lt;/td&gt;
&lt;td&gt;Blue Genes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Velvet Underground&lt;/td&gt;
&lt;td&gt;White Light / White Heat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Velvet Underground&lt;/td&gt;
&lt;td&gt;VU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Velvet Underground&lt;/td&gt;
&lt;td&gt;Loaded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Velvet Underground&lt;/td&gt;
&lt;td&gt;3rd LP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Wizard Of Oz&lt;/td&gt;
&lt;td&gt;Audiobook&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tommy Guerrero&lt;/td&gt;
&lt;td&gt;A Little Bit of Somethin&amp;rsquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tortoise&lt;/td&gt;
&lt;td&gt;TNT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tortoise&lt;/td&gt;
&lt;td&gt;Standards&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TV On The Radio&lt;/td&gt;
&lt;td&gt;Desperate Youth, Blood Thirsty Babes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;U.N.K.L.E.&lt;/td&gt;
&lt;td&gt;The Time Has Come EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;U2&lt;/td&gt;
&lt;td&gt;The Unforgettable Fire&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UNKLE&lt;/td&gt;
&lt;td&gt;Psyence Fiction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Urban Renewal Program&lt;/td&gt;
&lt;td&gt;#1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Us 3&lt;/td&gt;
&lt;td&gt;Broadway &amp;amp; 52nd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Project Blowed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Tags of the Times 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Zen RMX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Dance the Slurp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Definitive Jux Presents II&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Urban Revolutions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Stones Throw 100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Sound In Color&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;In The Beginning There Was Rhythm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Here We Come Skhool Yard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Quannum Spectrum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Xen Cuts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Fondle &amp;lsquo;Em Fossils&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Ultimate Breaks and Beats Volume 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Zen: a Retrospective&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Untinted: Sources for Madlib&amp;rsquo;s Shades of Blue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Turntables by the Bay Vol. 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Turntables by the Bay Vol. 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;The Sexual Life of the Savages: Underground Post-Punk from Sao Paulo Brasil&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Turn It Up or Turn It Off&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Lyricist Lounge Volume 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Lyricist Lounge Volume 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Solesides Greatest Bumps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Miami Sound: Rare Funk &amp;amp; Soul from Miami Florida 1967-1974&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Selector Dub Narcotic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;New York Noise Vol. 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;The Funky 16 Corners&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Rapid Transit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Bombay 2: Electric Vindaloo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Headz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Osmosis Jones OST&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Various Artists&lt;/td&gt;
&lt;td&gt;Soul 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Viktor Vaughn&lt;/td&gt;
&lt;td&gt;Vaudeville Villian&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vladimir Horowitz&lt;/td&gt;
&lt;td&gt;Favorite Beethoven Sonatas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vladimir Horowitz&lt;/td&gt;
&lt;td&gt;Encores&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weird Al Yankovic&lt;/td&gt;
&lt;td&gt;Eat It / That Boy Could Dance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WHAM!&lt;/td&gt;
&lt;td&gt;Everything She Wants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wire&lt;/td&gt;
&lt;td&gt;Pink Flag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wire&lt;/td&gt;
&lt;td&gt;154&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wire&lt;/td&gt;
&lt;td&gt;The Ideal Copy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wu-Tang Clan&lt;/td&gt;
&lt;td&gt;Enter the Wu-Tang 36 Chambers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X-Clan&lt;/td&gt;
&lt;td&gt;Fire &amp;amp; Earth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X-ecutioners&lt;/td&gt;
&lt;td&gt;X-pressions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XTC&lt;/td&gt;
&lt;td&gt;Go 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XTC&lt;/td&gt;
&lt;td&gt;Ball and Chain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Yesterdays New Quintet&lt;/td&gt;
&lt;td&gt;Elle&amp;rsquo;s Theme&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Yesterdays New Quintet&lt;/td&gt;
&lt;td&gt;Uno Esta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Yesterdays New Quintet&lt;/td&gt;
&lt;td&gt;Bomb Shelter EP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Yesterdays New Quintet&lt;/td&gt;
&lt;td&gt;Yesterdays Universe!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Yo La Tengo&lt;/td&gt;
&lt;td&gt;And then nothing turned itself inside-out&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Yo La Tengo&lt;/td&gt;
&lt;td&gt;Painful&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Yo La Tengo&lt;/td&gt;
&lt;td&gt;Ride The Tiger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Yo La Tengo&lt;/td&gt;
&lt;td&gt;Genius + Love&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Z-Trip&lt;/td&gt;
&lt;td&gt;Dynasty / Monster!&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zoogz Rift&lt;/td&gt;
&lt;td&gt;Looser Than Clams&amp;hellip; A Historical Retrospective (Greatest Hits Vol. 1)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Biking April / May / June 2018</title><link>https://pdp.dev/posts/biking-april-may-june-2018/</link><pubDate>Sat, 07 Jul 2018 10:15:47 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biking-april-may-june-2018/</guid><description>&lt;p&gt;Unfortunately, my biking has really slowed down over in recent months. I did something (it’s never clear what) to injure my back in May. I took it easy for a little bit and healed up, then went for a long 30 mile ride in the middle of June which went great and felt great, but the next day my back was screwed up again and worse than it’s been in years.&lt;/p&gt;
&lt;p&gt;I’ve gone to physical therapy in the past and was doing exercises they gave me to try and heal up, but they weren’t really helping. I found a new physical therapist that gave me a single stretch to do (basically &lt;a href="https://en.wikipedia.org/wiki/Bhujangasana"&gt;yoga cobra pose&lt;/a&gt;) and I’ve been doing that diligently. Coworkers can find me on the floor next to my desk stretching at least twice a day. I’m slowly getting better. So I do that stretch, stand at my desk, and walk a lot. I’m writing this sitting in my &lt;a href="https://madisonparkbakery.net"&gt;favorite donut spot&lt;/a&gt;, which I walked 3 miles to get to this morning.&lt;/p&gt;
&lt;p&gt;Sadly I’m probably not going to bike again until late July, but I look forward to being pain free which is the priority right now.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;April miles: &lt;strong&gt;52&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;May miles: &lt;strong&gt;40&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;June miles: &lt;strong&gt;58&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2018 total miles: &lt;strong&gt;604&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Biking March 2018</title><link>https://pdp.dev/posts/biking-march-2018/</link><pubDate>Tue, 17 Apr 2018 21:50:57 -0700</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biking-march-2018/</guid><description>&lt;p&gt;In March 2018, I biked 134 miles. I started out strong, but later in the month I slacked off. Unfortunately, April isn&amp;rsquo;t looking great so far as I&amp;rsquo;ve been doing some traveling and I&amp;rsquo;ve also been sick.&lt;/p&gt;</description></item><item><title>Biking February 2018</title><link>https://pdp.dev/posts/biking-feb-2018/</link><pubDate>Sun, 04 Mar 2018 18:26:34 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biking-feb-2018/</guid><description>&lt;p&gt;In Feb 2018, I biked 123 miles. This is less than I would have liked, but two things reduced my miles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I was on pager duty one week for work. I still biked a few days, but biking while you could get paged at any moment isn&amp;rsquo;t exactly fun.&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s been &lt;em&gt;cold&lt;/em&gt; here in Seattle. I&amp;rsquo;m fine down to freezing since I have warm gear, but once it gets below freezing I don&amp;rsquo;t bike. I don&amp;rsquo;t want to hit some ice and biff it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This weekend I changed the chain and brake pads on my bike so I&amp;rsquo;m ready to get my milage back up in March. I haven&amp;rsquo;t changed my chain since I got my bike in 2015 and wow, things are so much smoother now.&lt;/p&gt;</description></item><item><title>Amazon Spheres</title><link>https://pdp.dev/posts/amazon-spheres/</link><pubDate>Wed, 07 Feb 2018 21:57:31 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/amazon-spheres/</guid><description>&lt;p&gt;I got to tour the &lt;a href="https://www.seattlespheres.com"&gt;Spheres at Amazon&lt;/a&gt; this week, and it was pretty awesome. There&amp;rsquo;s quite a lot of space to hang out and relax, but for now you have to make an appointment to go as they ramp up letting people in. I sat for a bit and enjoyed a &lt;a href="https://www.gpdoughnuts.com"&gt;donut&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-20-06_475_hu_6e917b3f44299c5b.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-21-50_875_hu_18e40a25e33e1b05.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-22-21_961_hu_373b87a48c7030a5.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-22-55_148_hu_9aba218b5a8b94b7.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-23-20_444_hu_879ca5ad681e050e.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-24-42_461_hu_b5def4d722092af1.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-26-41_091_hu_1d98f0204b0f876c.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-27-28_219_hu_fc7c7d02c464615b.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-27-54_271_hu_3f3a829606972ebd.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-28-10_195_hu_f07130ac77a8b97d.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-28-34_363_hu_c6c0aa3b282984a0.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-28-50_704_hu_a638b2686cb0186b.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-29-00_993_hu_a31d90cdc8fb57ac.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-29-12_478_hu_5426e9b8467c7966.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-30-16_283_hu_624198849bb202a4.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-30-42_263_hu_e4f95a3edd29f142.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-30-59_092_hu_fbcf3da6da0e42cf.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-31-32_360_hu_e0d3d22db2f9e0ab.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-31-43_778_hu_9805635e63ea3bad.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-32-44_415_hu_7790a29a15da049f.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-34-09_162_hu_9ec4fdf62d046fef.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-34-24_091_hu_dde83306430cbf9c.jpg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/spheres/2018-02-06_09-35-18_861_hu_48b31e8e8c7d71e5.jpg" width="768" height="1024" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;I took these pictures on my iPhone 8 Plus, and pretty much just walked around and snapped whatever.&lt;/p&gt;
&lt;p&gt;To put these on this page, I wanted to resize them such that the width of the images was fixed regardless of their orientation. To do this, I used &lt;a href="https://www.imagemagick.org/script/index.php"&gt;ImageMagick&lt;/a&gt;. These notes are mostly for me.&lt;/p&gt;
&lt;p&gt;First, I need to find each image&amp;rsquo;s orientation:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; i in &lt;span class="sb"&gt;`&lt;/span&gt;ls *.jpeg&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;j&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;identify -format &lt;span class="s1"&gt;&amp;#39;%[orientation]&amp;#39;&lt;/span&gt; &lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$j&lt;/span&gt;,&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This gives output like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;BottomRight,2018-02-06_09-30-16_283.jpeg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RightTop,2018-02-06_09-30-25_981.jpeg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;BottomRight = landscape, or wider than tall.&lt;/li&gt;
&lt;li&gt;RightTop = portrait, or taller than wide.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To resize the portrait images (and also rename them from .jpeg to .jpg):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; i in &lt;span class="sb"&gt;`&lt;/span&gt;grep RightTop files.out &lt;span class="p"&gt;|&lt;/span&gt; cut -d, -f2&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; convert &lt;span class="nv"&gt;$i&lt;/span&gt; -resize &lt;span class="s2"&gt;&amp;#34;1024x&amp;#34;&lt;/span&gt; -sampling-factor 4:2:0 -strip -quality &lt;span class="m"&gt;85&lt;/span&gt; -interlace JPEG -colorspace sRGB -auto-orient &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="p"&gt;: : -5&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;.jpg&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To resize the landscape images:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; i in &lt;span class="sb"&gt;`&lt;/span&gt;grep BottomRight files.out &lt;span class="p"&gt;|&lt;/span&gt; cut -d, -f2&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; convert &lt;span class="nv"&gt;$i&lt;/span&gt; -resize &lt;span class="s2"&gt;&amp;#34;768x&amp;#34;&lt;/span&gt; -sampling-factor 4:2:0 -strip -quality &lt;span class="m"&gt;85&lt;/span&gt; -interlace JPEG -colorspace sRGB -auto-orient &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="p"&gt;: : -5&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;.jpg&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Neat!&lt;/p&gt;</description></item><item><title>Ketsui 103 Million</title><link>https://pdp.dev/posts/ketsui-103-million/</link><pubDate>Sun, 04 Feb 2018 21:12:42 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/ketsui-103-million/</guid><description>&lt;p&gt;I played some &lt;a href="http://en.wikipedia.org/wiki/Ketsui"&gt;Ketsui&lt;/a&gt; today for the first time in about 6 months and streamed it on &lt;a href="http://twitch.tv/pdp80"&gt;Twitch&lt;/a&gt; for fun. On my 2nd run, I got a new personal best for clearing the first loop and broke 100 million for the first time with a score of 103,939,795.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/0CF_7jHnZ88?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I think I&amp;rsquo;ll play and stream some more soon. I&amp;rsquo;ll work on improving the audio quality too!&lt;/p&gt;</description></item><item><title>Biking January 2018</title><link>https://pdp.dev/posts/biking-jan-2018/</link><pubDate>Wed, 31 Jan 2018 21:32:55 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biking-jan-2018/</guid><description>&lt;p&gt;In Jan 2018, I biked 197 miles. This year I&amp;rsquo;ve been dedicated to riding my bike to work most days (for some definition of most). It really is the best way for me to get to work, both in terms of time and health/mental benefits. I&amp;rsquo;ve got a good routine and gear to handle the rain. Each round trip is 10 miles, so this month I did roughly 20 commutes. Not bad!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.strava.com/athletes/6632067"&gt;Follow me on Strava!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Hugo!</title><link>https://pdp.dev/posts/hugo/</link><pubDate>Mon, 29 Jan 2018 21:46:13 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/hugo/</guid><description>&lt;p&gt;I moved my blog from Octopress to &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt; since it builds sites blazing fast and doesn&amp;rsquo;t have all the goofy dependency management of Ruby with rvm and all that. I picked a nice super simple &lt;a href="https://themes.gohugo.io/temple/"&gt;theme&lt;/a&gt; that builds fast loading pages.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m considering blogging more in 2018. I haven&amp;rsquo;t been playing a lot of shmups lately but have been biking quite a bit. It&amp;rsquo;s the primary way I get to work these days and I really have grown to enjoy it, even in the Seattle rain!&lt;/p&gt;</description></item><item><title>Current arcade PCB list</title><link>https://pdp.dev/pcb/</link><pubDate>Mon, 29 Jan 2018 18:58:16 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/pcb/</guid><description>&lt;p&gt;This list is ordered by (roughly) when I got them. I didn&amp;rsquo;t start buying PCBs until I got my Astro City cabinet on May 8th 2011.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;1943&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: May 19 2011&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mushihimesama&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: June 15 2011&lt;/li&gt;
&lt;li&gt;1cc Original: July 10 2011 - S-Power - 18,814,527&lt;/li&gt;
&lt;li&gt;1cc Maniac: Feb 10 2012 - W-Power - 87,308,083&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Battle Garegga (w/Zakk roms)&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: June 15 2011&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EspGaluda&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: August 5 2011&lt;/li&gt;
&lt;li&gt;1cc: August 13 2011 - Ageha - 27,387,750&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ketsui&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: July 27 2011&lt;/li&gt;
&lt;li&gt;1-ALL: Feb 21 2012 - Jager - 72,325,552&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contra&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: July 20 2011&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strider&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: May 17 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mars Matrix&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: January 23 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Giga Wing&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: January 23 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Street Fighter II: Champion Edition&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Super Street Fighter II X&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: January 23 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ibara&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: January 23 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ibara Kuro&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: February 29 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Final Fight&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: May 26 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JAMMA Genesis&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Volfied&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: January 23 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Progear (Conversion)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Neo-Geo: Metal Slug&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Neo-Geo: Metal Slug 2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Neo-Geo: Magical Drop 2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Neo-Geo: 161-in-1 bootleg&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puzzle Bobble 2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arkanoid Returns&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KLAX&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commando&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: January 15 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gun.Smoke&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: January 15 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gunbird 2&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: July 13 2012&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rayforce (F3 cart conversion)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RayStorm&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sōkyūgurentai / Terra Diver&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shienryu&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tetris Grand Master 3&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In The Hunt&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: October 26 2013&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Muchi Muchi Pork!&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Got: January 11 2014&lt;/li&gt;
&lt;li&gt;1-ALL: June 7 2014 - Pink - 115,449,200&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sega Naomi 1&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;With NetBoot DIMM + Capcom I/O + Raspberry Pi running &lt;a href="https://github.com/wnka/piforcetools"&gt;piforcetools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shinobi&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Side Arms&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="previously-owned-and-soldtraded"&gt;Previously owned and sold/traded&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Raiden II&lt;/strong&gt; [traded for In The Hunt]&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puzzle Bobble 4&lt;/strong&gt; [traded for In The Hunt]&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>About</title><link>https://pdp.dev/about/</link><pubDate>Mon, 29 Jan 2018 18:53:54 -0800</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/about/</guid><description>
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/welchonka_hu_92bb8cc61bcbf07e.jpeg" width="768" height="576" /&gt;
&lt;/figure&gt;
&lt;p&gt;Hi, my name is Phil Piwonka and I live in Seattle, WA with my &lt;a href="https://kristawelch.com"&gt;wife&lt;/a&gt; and daughter. I&amp;rsquo;m currently an engineer at &lt;a href="https://aws.amazon.com/"&gt;Amazon Web Services&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="mailto:hello@pdp.dev?subject=Hello!"&gt;E-mail me and say hello!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pdp.dev/pcb/"&gt;Arcade PCB Collection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pdp.dev/vinyl/"&gt;Vinyl Collection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.last.fm/user/pdp80"&gt;Last.fm&lt;/a&gt; - For what I&amp;rsquo;m listening to&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.strava.com/athletes/6632067"&gt;Strava&lt;/a&gt; - For bike adventures&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hachyderm.io/@pdp" rel="me"&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/wnka" rel="me"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://philpiwonka.com"&gt;Resume&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This blog is built on &lt;a href="http://www.gohugo.io/"&gt;Hugo&lt;/a&gt; with a theme based on the &lt;a href="https://github.com/panr/hugo-theme-terminal"&gt;Terminal theme&lt;/a&gt; with heavy modifications. It is hosted on &lt;a href="https://aws.amazon.com/amplify/"&gt;AWS Amplify&lt;/a&gt;. The source code is available &lt;a href="https://github.com/wnka/pdp80-blog"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Mushi Futari BL God Mode 1.2 billion!</title><link>https://pdp.dev/posts/mushi-futari-bl-god-mode-1-dot-2-billion/</link><pubDate>Sun, 11 Jun 2017 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mushi-futari-bl-god-mode-1-dot-2-billion/</guid><description>&lt;p&gt;I&amp;rsquo;ve had a goal of breaking a billion points on Mushihimesama Futari Black Label God Mode for a while now, and with a little effort I was able to get a score of 1,212,620,114!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/_eax8DI359M?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;My run started really strong, I almost had a billion points at the end of stage 2. Stage 3 was a big mess but I was able to push to a new personal best. If I get some more time to play I should be able to crank that number up, so my next goal is 1.5 billion.&lt;/p&gt;</description></item><item><title>100 Mile Week</title><link>https://pdp.dev/posts/100-mile-week/</link><pubDate>Sun, 24 Jul 2016 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/100-mile-week/</guid><description>&lt;p&gt;This week, I biked 111.2 miles.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_3034_hu_8e4c6075b8748851.JPG" width="640" height="640" /&gt;
&lt;figcaption class="center" &gt;Milage&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;For a while, I was thinking about what it would take to pull off a 100 mile week. Turned out the biggest thing I needed to do was to just do it.&lt;/p&gt;
&lt;p&gt;I racked up 37 miles during the week communiting which put me on an ok pace. My Saturday morning ride got moved to Sunday, and my wife had to work all day Saturday and use our car. With a long ride scheduled on Sunday and me sitting around on Saturday with no car, I slowly figured out that if I went for a decent ride on Saturday and did the ride on Sunday I&amp;rsquo;d break 100 miles that week.&lt;/p&gt;
&lt;p&gt;So, I went and did a solo 35 mile ride on Saturday. Easy route of Burke Gilman trail to the Sammamish River trail, easy in the sense of flat. Then Sunday I did the scheduled ride which was the 38 mile loop I talked about in my last post. That loop is &lt;em&gt;tough&lt;/em&gt;, but those hills were considerably easier than the last time we did them.&lt;/p&gt;
&lt;p&gt;I must say, I&amp;rsquo;m pretty proud of myself. 100 miles in a week felt like this elusive thing that would take me a long time to work up to, but I was able to just go do it. The rest of Sunday I was pretty worthless, but that&amp;rsquo;s ok, I earned it!&lt;/p&gt;</description></item><item><title>Ibara PB = 8.4m</title><link>https://pdp.dev/posts/ibara-pb-equals-8-dot-4m/</link><pubDate>Sun, 24 Jul 2016 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/ibara-pb-equals-8-dot-4m/</guid><description>&lt;p&gt;I&amp;rsquo;ve been getting back into &lt;a href="http://www.hardcoregaming101.net/ibarapinksweets/ibarapinksweets.htm"&gt;Ibara&lt;/a&gt; and streaming on &lt;a href="http://twitch.tv/pdp80"&gt;Twitch&lt;/a&gt; a little bit. I was able to improve my personal best to 8,442,540! Closer to that letter score (which is 10 million for those not familiar with Yagawa scoring)!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_3008_hu_c0333ab6bdb934a3.JPG" width="640" height="480" /&gt;
&lt;figcaption class="center" &gt;'Ibara PB 8,442,540'&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Biking July 2016</title><link>https://pdp.dev/posts/biking-july-2016/</link><pubDate>Sat, 02 Jul 2016 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biking-july-2016/</guid><description>&lt;p&gt;Man, I did a lot of biking in June. Our early morning Saturday rides are serious business! Last blog post I was at 419 miles for the year, as of now I&amp;rsquo;m at 653 miles. That&amp;rsquo;s 234 miles in a month!&lt;/p&gt;
&lt;p&gt;I commute to work at least 2 times a week by bike (10 miles round trip), but I&amp;rsquo;m getting to the point where my 40 mile per week goal is met with just our Saturday rides. Last Saturday was a 42 mile ride from UW to Woodinville and back. This Saturday was a 38 mile loop of UW -&amp;gt; Kenmore -&amp;gt; Kirkland -&amp;gt; Bellevue -&amp;gt; Mercer Island -&amp;gt; UW. That loop was HARD, the hill when you get off the Burke Gilman trail and head into Kirkland is no joke! Helping my climbing muscles for sure.&lt;/p&gt;</description></item><item><title>Biking June 2016</title><link>https://pdp.dev/posts/biking-june-2016/</link><pubDate>Sun, 05 Jun 2016 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/biking-june-2016/</guid><description>&lt;p&gt;I got a slow start to biking this year for various reasons (lazyness, back pain, lazyness) but toward the end of April I started up again and am now hitting my goal of 40 miles per week consistently. I&amp;rsquo;ve been doing early morning rides on Saturdays with a friend, which has really helped me stay committed.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve gone 419 miles so far this year. I&amp;rsquo;m going to set the same goal as I set last year: 1,500 miles.&lt;/p&gt;
&lt;p&gt;With 30 weeks left in 2016, I&amp;rsquo;ll need to average about 36 miles per week to hit 1,500 miles. I&amp;rsquo;m gonna go for it. This week I rode 67.4 miles (3 commutes + long Saturday morning ride) so I definitely think I can make it.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.strava.com/athletes/6632067"&gt;Follow me on Strava!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Muchi Muchi Pork V1.01 1-ALL</title><link>https://pdp.dev/posts/muchi-muchi-pork-v1-dot-01-1-all/</link><pubDate>Sun, 17 Jan 2016 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/muchi-muchi-pork-v1-dot-01-1-all/</guid><description>&lt;p&gt;Haven&amp;rsquo;t been playing a lot of shmups in recent times, but I played some &lt;a href="http://www.hardcoregaming101.net/muchimuchipork/muchimuchipork.htm"&gt;Muchi Muchi Pork&lt;/a&gt; on XBox 360 and was able to 1-ALL the game and reach the 2nd loop for the first time!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Hq_LXwFmayM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I own &lt;a href="https://pdp.dev/posts/muchi-muchi-pork-pcb/"&gt;the PCB&lt;/a&gt; of this game, which is v1.00 of the game. Differences in v1.01 which is in the XBox 360 port:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No silly 2nd loop requirement. v1.00 requires no deaths to reach the 2nd loop. v1.01 only requires a one credit clear of the first loop.&lt;/li&gt;
&lt;li&gt;The lard meter burns down slower, making the game considerably easier than v1.00.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to &lt;a href="https://pdp.dev/posts/muchi-muchi-pork-1-all/"&gt;my v1.00 clear&lt;/a&gt;, I only needed to play a few games of v1.01 to get to the 2nd loop.&lt;/p&gt;
&lt;p&gt;This game is so fun, definitely one of my favorites STGs. The stage 4 and stage 5 bosses remain trainwrecks for me, but thankfully I can keep enough lives in stock to squeak past.&lt;/p&gt;
&lt;p&gt;Next goal: Break a billion points in Mushi Futari BL God Mode.&lt;/p&gt;</description></item><item><title>2015 Biking Results</title><link>https://pdp.dev/posts/2015-biking-results/</link><pubDate>Wed, 30 Dec 2015 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/2015-biking-results/</guid><description>&lt;p&gt;Unfortunately, I did not meet my biking goal of 1,500 miles for 2015.&lt;/p&gt;
&lt;p&gt;I went 1,379 miles total in 2015.&lt;/p&gt;
&lt;p&gt;I injured my back in late October which made me unable to bike. I was able to get back in the saddle in late December and ride about 40 more miles before heading out for Christmas vacation in Colorado to visit our families.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve had back problems for years but after going to physical therapy for this most recent flare up, I&amp;rsquo;ve got a good set of stretches and exercises that should help me prevent future issues.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll be setting a new goal for 2016 and working to maintain my back so that I don&amp;rsquo;t get sidelined again!&lt;/p&gt;</description></item><item><title>October Biking Update</title><link>https://pdp.dev/posts/october-biking-update/</link><pubDate>Sun, 18 Oct 2015 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/october-biking-update/</guid><description>&lt;ul&gt;
&lt;li&gt;2015 miles as of October 18th: 1299&lt;/li&gt;
&lt;li&gt;Miles to go toward goal of 1,500: 201&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Haven&amp;rsquo;t updated in a bit, but I&amp;rsquo;ve been keeping up with my goal. I have 73 days left to bike 201 miles, which is certainly doable!&lt;/p&gt;</description></item><item><title>Early June Biking Update</title><link>https://pdp.dev/posts/early-june-biking-update/</link><pubDate>Sun, 07 Jun 2015 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/early-june-biking-update/</guid><description>&lt;ul&gt;
&lt;li&gt;2015 miles as of June 7th: 787&lt;/li&gt;
&lt;li&gt;Miles to go toward goal of 1,500: 713&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;April was a little slow for biking which is why I didn&amp;rsquo;t post an update. We had a big family vacation in Hawaii where I didn&amp;rsquo;t do any biking other than coasting down Mount Haleakala after watching the sunrise there. The views were amazing and the bike ride was about 15 miles of downhill, starting at 6,450 ft above sea level and riding down to about sea level.&lt;/p&gt;
&lt;p&gt;Back in Seattle, it became time for a new bike. The bike I&amp;rsquo;ve been riding is a Gary Fisher mountain bike I bought back in Colorado in 2004 so I could do the 27-mile &lt;a href="http://www.elephantrockride.com/"&gt;Elephant Rock Ride&lt;/a&gt;. Its been a good bike but the fat tires and front shock aren&amp;rsquo;t ideal for commuting.&lt;/p&gt;
&lt;p&gt;I now ride a &lt;a href="http://www.cannondale.com/nam_en/2015/bikes/road/cyclocross/caadx/caadx-sram-rival-disc"&gt;Cannondale CAADX Rival&lt;/a&gt;, which has been great so far. It&amp;rsquo;s so much easier to go fast, in fact on my first commute ride I set new personal bests on three segments of my route!&lt;/p&gt;
&lt;p&gt;A friend of mine that lives on Mercer Island invited me and my wife Krista over for fried chicken, so I rode there and back while Krista drove. This was my first time going over I-90 on a bike and it was a nice ride, but a lot harder than other rides I do! Lots of hills and climbing, which my commute and the Burke Gilman trail don&amp;rsquo;t have. The ride was 20 miles round trip but left me considerably more tired. I need to do more hill climbing!&lt;/p&gt;
&lt;p&gt;Also, I&amp;rsquo;m getting Krista more into biking and she&amp;rsquo;s getting more comfortable riding on the streets and using her bike as a way to get around. We&amp;rsquo;re slowly increasing the distance of our rides together.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m past the halfway point!&lt;/p&gt;</description></item><item><title>Input Display Improvements</title><link>https://pdp.dev/posts/input-display-improvements/</link><pubDate>Sun, 12 Apr 2015 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/input-display-improvements/</guid><description>&lt;p&gt;I did some more work on my &lt;a href="https://pdp.dev/posts/jamma-input-display/"&gt;JAMMA input display&lt;/a&gt; recently and its working really well now. Before I had some issues with stuck inputs and it freezing up, but I upgraded to the 1.0 version of &lt;a href="http://socket.io"&gt;socket.io&lt;/a&gt; and now it&amp;rsquo;s rock solid. I also upgraded to a Raspberry Pi 2 which reduced the lag between the inputs and the display.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been on pager duty for work this week, which means I need to be near a computer at all times in case something goes wrong. That possibility rules out going for a nice long bike ride this weekend, so instead I added to new feature to my input display: remote control!&lt;/p&gt;
&lt;p&gt;You can now click/tap on any of the inputs on the display and they will be remotely triggered. Not super handy, but neat! The idea came about when hanging out with &lt;a href="http://twitch.tv/kevinddr"&gt;KevinDDR&lt;/a&gt; while I was teaching him how to play &lt;a href="http://en.wikipedia.org/wiki/Ketsui:_Kizuna_Jigoku_Tachi"&gt;Ketsui&lt;/a&gt; and telling him when to bomb to avoid dying. I thought it would be cool to be able to actually do it for him. Someday we&amp;rsquo;ll get together and try it!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/luvwnieSAqQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>March Biking Update</title><link>https://pdp.dev/posts/march-biking-update/</link><pubDate>Sat, 04 Apr 2015 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/march-biking-update/</guid><description>&lt;p&gt;On pace to meet my goal of 1,500 miles in 2015!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Miles in March: 156&lt;/li&gt;
&lt;li&gt;2015 miles so far: 482&lt;/li&gt;
&lt;li&gt;2015 miles to go: 1,018&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>February Biking Update</title><link>https://pdp.dev/posts/february-biking-update/</link><pubDate>Sat, 28 Feb 2015 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/february-biking-update/</guid><description>&lt;p&gt;With today being the last day of February and a beautiful day here in Seattle, I went for a 14.8 mile ride along the Burke Gilman trail up to Matthews Beach. So in February I biked 126.8 miles, putting me at 325.8 miles so far this year. That leaves 1,174.2 miles for my goal of 1,500 miles this year.&lt;/p&gt;
&lt;p&gt;I biked less in February than in January due to a trip for work that made me miss a week of biking to work, as well as a trip to visit my brother. However, I&amp;rsquo;m still on a good pace to meet my goal!&lt;/p&gt;</description></item><item><title>January Biking</title><link>https://pdp.dev/posts/january-biking/</link><pubDate>Sat, 14 Feb 2015 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/january-biking/</guid><description>&lt;p&gt;Last year I started biking more seriously, sometimes biking to work but mostly doing longer trips on weekends. I gradually increased my miles on the weekend and was soon doing 32 mile rides. I didn&amp;rsquo;t really set a goal for total miles for the year, but as the end of 2014 approached I noticed I was very close to achieving 1,000 miles so I pushed in the final days of the year and was able to hit that goal!&lt;/p&gt;
&lt;p&gt;For 2015 I wanted actually set a goal in advance, so I&amp;rsquo;m setting a goal of &lt;strong&gt;1,500 miles&lt;/strong&gt;. I&amp;rsquo;ll post at the end of each month to give an update on my progress.&lt;/p&gt;
&lt;p&gt;By the end of January I had biked &lt;strong&gt;199 miles&lt;/strong&gt;, establishing a really good pace!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m trying to ride 40 miles a week, which I can easily do if I take a longer route to and from work 4 days a week. I&amp;rsquo;ve been sticking to that schedule and it&amp;rsquo;s pretty much a habit at this point, so I should achieve 1,500 miles in 2015 as long as I stick with it. Stay tuned!&lt;/p&gt;</description></item><item><title>Side Arms and Happy New Year</title><link>https://pdp.dev/posts/side-arms-and-happy-new-year/</link><pubDate>Fri, 02 Jan 2015 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/side-arms-and-happy-new-year/</guid><description>&lt;p&gt;Near the end of 2014 I bought a &lt;a href="http://en.wikipedia.org/wiki/Hyper_Dyne_Side_Arms"&gt;Side Arms&lt;/a&gt; PCB off the guy who runs &lt;a href="http://shmuplations.com"&gt;shmuplations.com&lt;/a&gt;. I &lt;em&gt;LOVED&lt;/em&gt; this game as a kid, I used to gawk at the box of the DOS version at Fry&amp;rsquo;s Electronics and think about playing it at home. But even as a kid, I smelled trouble because the back of the DOS box featured screen shots from the arcade version. When they don&amp;rsquo;t show actual screen shots of what you&amp;rsquo;re about to buy, chances are it&amp;rsquo;s a turd. &lt;a href="http://youtube.com/watch?v=3HNlmkcSFzA"&gt;I was so right.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So while 8 year old me thought highly of this game, current me who has decent shmup skills 1CC&amp;rsquo;d it the first time I played it seriously. &lt;strong&gt;FOR REAL!&lt;/strong&gt; I played 2 credits just to make sure the PCB worked ok so I could give the seller positive feedback, then I let it sit for a few days. On the first credit I sat down and played with real effort, I 1CC&amp;rsquo;d the game. I double checked the DIP switches to make sure the difficulty wasn&amp;rsquo;t set super low, but they were set to defaults.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/sidearms_hu_3c60222157df4c84.jpg" width="450" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;The left/right shooting mechanic is neat, but all in all the game isn&amp;rsquo;t anything that special. The &lt;a href="http://youtube.com/watch?v=rE3-37iqWaQ"&gt;music&lt;/a&gt; is rad and it has that classic Capcom feel, but I don&amp;rsquo;t think this is a PCB worth keeping.&lt;/p&gt;
&lt;p&gt;I think the first thing I&amp;rsquo;m going to do in 2015 is sell some PCBs and tidy up my collection. I have picked up a few games based on nostalgia, but they aren&amp;rsquo;t games I&amp;rsquo;ll play seriously or repeatedly.&lt;/p&gt;
&lt;p&gt;As far as 2015 shmup goals, I carry over some goals from last year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ibara&lt;/strong&gt;: Letter Score&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mushihimesama Futari Black Label&lt;/strong&gt;: 1 billion points in God mode&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I had the day off work on January 1st and I hooked my XBox 360 back up to my vertical cab so that I could play Mushihimesama Futari Black Label (MFBL). That game is &lt;em&gt;amazing!&lt;/em&gt; I 1CC&amp;rsquo;d maniac mode in the past, now I want to work on God mode as building up the multiplier to x30,000 and then cashing it in is probably one of the most satisfying feelings in gaming I&amp;rsquo;ve ever experienced.&lt;/p&gt;
&lt;p&gt;I will be streaming stuff on my &lt;a href="http://twitch.tv/pdp80"&gt;Twitch channel&lt;/a&gt;, so subscribe and check out my efforts!&lt;/p&gt;
&lt;p&gt;Happy New Year!&lt;/p&gt;</description></item><item><title>Muchi Muchi Pork 1-ALL</title><link>https://pdp.dev/posts/muchi-muchi-pork-1-all/</link><pubDate>Sat, 07 Jun 2014 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/muchi-muchi-pork-1-all/</guid><description>&lt;p&gt;I took a break from playing for about a week and a half, then on my second credit after playing
again I was able to 1-ALL
&lt;a href="http://www.hardcoregaming101.net/muchimuchipork/muchimuchipork.htm"&gt;Muchi Muchi Pork&lt;/a&gt;!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/s3OC2QnTOBk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Final score:&lt;/strong&gt; 115,449,200&lt;/p&gt;
&lt;p&gt;My best score is 119,827,720 but I played a little more conservatively than usual to get the
1-ALL. That stage 5 boss was a total mess, I went in with 5 lives in stock and barely made it on my
last life with zero bombs.&lt;/p&gt;
&lt;p&gt;Such a great game! Had a lot of fun learning it! I&amp;rsquo;m tempted to go back and learn the stage 5 boss
better and improve my score, but that will have to come later.&lt;/p&gt;
&lt;p&gt;What to play next?&lt;/p&gt;</description></item><item><title>JAMMA Input Display</title><link>https://pdp.dev/posts/jamma-input-display/</link><pubDate>Sun, 04 May 2014 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/jamma-input-display/</guid><description>&lt;p&gt;I built an input display for my arcade cabinets by reading the
&lt;a href="http://elinux.org/RPi_Low-level_peripherals"&gt;GPIO pins&lt;/a&gt; on a
&lt;a href="http://www.raspberrypi.org/"&gt;Raspberry Pi&lt;/a&gt; using
&lt;a href="http://nodejs.org"&gt;Node.js&lt;/a&gt; and &lt;a href="http://socket.io"&gt;socket.io&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/wnka/arcadebuttons-node-pi"&gt;The code is available on GitHub&lt;/a&gt; and here is a sample capture from me playing some &lt;a href="http://en.wikipedia.org/wiki/Espgaluda"&gt;Espgaluda&lt;/a&gt;:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/uSHMhtIR2wg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I created an AMP-UP control panel wiring extender that splits off the input wires on my Astro City into the Raspberry
Pi, but you could also split the wires off of the JAMMA harness. The needed 12-pin AMP-UP connectors are available
from &lt;a href="http://digikey.com"&gt;DigiKey&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.digikey.com/product-detail/en/175151-1/A107106TR-ND/1152993"&gt;Male Pins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.digikey.com/product-search/en?WT.z_header=search_go&amp;amp;lang=en&amp;amp;site=us&amp;amp;keywords=A106906-ND&amp;amp;x=0&amp;amp;y=0&amp;amp;formaction=on"&gt;Male Connector&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.digikey.com/product-detail/en/175149-2/A107105TR-ND/1149437"&gt;Female Pins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.digikey.com/product-search/en?WT.z_header=search_go&amp;amp;lang=en&amp;amp;site=us&amp;amp;keywords=A106914-ND&amp;amp;x=0&amp;amp;y=0&amp;amp;formaction=on"&gt;Female Connector&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/rpibuttons_hu_bdfaed6607575c8f.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Raspberry Pi with control panel extension&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;With Node up and running on the Raspberry Pi, you can just point a web browser at the server and see
the inputs reflected there.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/buttonslocal_hu_efa893f108be511c.jpg" width="768" height="433" /&gt;
&lt;figcaption class="center" &gt;Button display&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;For streaming I just added the region of the desktop where the browser was being shown so that it
would be shown in the stream.&lt;/p&gt;
&lt;p&gt;I wanted to play around with Node.js and this project was what I thought of when reading about
Node&amp;rsquo;s event-driven model. Streamers that play arcade games in MAME have the ability to use
input displays and I wanted to be able to do that as well for an actual arcade cab.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: The display does sometimes freeze up, however refreshing the
browser page typically solves this. I&amp;rsquo;m not sure what causes it, maybe I&amp;rsquo;ll figure it out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: Updating to a newer version of &lt;a href="http://socket.io"&gt;Socket.IO&lt;/a&gt; fixed the freezing.&lt;/p&gt;</description></item><item><title>Sega Naomi Netboot</title><link>https://pdp.dev/posts/sega-naomi-netboot/</link><pubDate>Sat, 29 Mar 2014 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/sega-naomi-netboot/</guid><description>&lt;p&gt;I bought a &lt;a href="http://system16.com/hardware.php?id=721"&gt;Sega Naomi&lt;/a&gt; with NetDIMM off a guy on the
&lt;a href="http://shmups.system11.org"&gt;shmups forum&lt;/a&gt; and got it up and running. I ran into some troubles, but
with a little work I was able to start NetBooting games.&lt;/p&gt;
&lt;p&gt;The Naomi is the arcade version of the &lt;a href="http://en.wikipedia.org/wiki/Dreamcast"&gt;Dreamcast&lt;/a&gt;, which is
why so many of the games that were released on Naomi in the arcades were ported to Dreamcast. I
bought a Dreamcast in 1999 when they were new and I still have it. It&amp;rsquo;s one of my favorite gaming
systems and many of my favorite games on it started as Naomi arcade releases, which is what
interested me in getting a Naomi. They are common and pretty cheap, a motherboard will cost about
$80.&lt;/p&gt;
&lt;p&gt;The Naomi used a few different media formats for games. Some games were simple cartridges and some
required an add-on &lt;a href="http://en.wikipedia.org/wiki/GD-ROM"&gt;GD-ROM&lt;/a&gt; drive, the same disc format used by
the Dreamcast. Since arcades don&amp;rsquo;t want to have players staring at loading screens, the GD-ROM drive
was only used during boot up in conjunction with a DIMM cartridge so that the whole game could be
loaded into and played from RAM with zero loading times.&lt;/p&gt;
&lt;p&gt;This means that you can use other methods to load the game into RAM. GD-ROM drives tended to fail
because of their mechanical nature, so later Sega released a Compact Flash module as well as a
NetDIMM. The NetDIMM is basically some RAM with a network interface and arcades could network their
machines and load games onto them from a centralized location. This required protection keys and
security chips to prevent people from just pirating games.&lt;/p&gt;
&lt;p&gt;Of course, people have cracked that protection and now you can download games off the internet and
boot them using a computer networked with the Naomi. I didn&amp;rsquo;t want to have my computer sitting
around and hooked up to play games, but thankfully you can now use a
&lt;a href="http://www.raspberrypi.org/"&gt;Raspberry Pi&lt;/a&gt; with an
&lt;a href="http://learn.adafruit.com/adafruit-16x2-character-lcd-plus-keypad-for-raspberry-pi/overview"&gt;Adafruit LCD display&lt;/a&gt;
to build a self-contained unit to send the games! This is what pushed me over the edge and made me
finally want to get a Naomi.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/piforce_hu_8e3cc7a8f42daa4f.jpg" width="600" height="444" /&gt;
&lt;figcaption class="center" &gt;Raspberry Pi running piforcetools&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;You use the buttons to select which game, then hit select to send it to the Naomi. The project for
driving the LCD and menus is called &lt;a href="https://github.com/capane-us/piforcetools"&gt;piforcetools&lt;/a&gt;. It
uses &lt;a href="http://debugmo.de/2009/04/triforce-tools/"&gt;triforcetools&lt;/a&gt; to send the game data to the
NetDIMM.&lt;/p&gt;
&lt;p&gt;I had a &lt;a href="http://www.solvalou.com/arcade_naomicapcom.php"&gt;Capcom I/O board&lt;/a&gt; that I got with my
&lt;a href="http://www.system16.com/hardware.php?id=677"&gt;Taito Type X&lt;/a&gt; that I bought from &lt;a href="http://twitter.com/KevinDDR"&gt;KevinDDR&lt;/a&gt;,
so I would use that to convert the Naomi&amp;rsquo;s JVS I/O to JAMMA. The Naomi I bought didn&amp;rsquo;t come with any
power cables or anything, but I was able to track down the connector type and build a cable that
would allow the Capcom I/O to power the
Naomi. &lt;a href="http://www.digikey.com/product-detail/en/VLP-08V%28P%29/455-2353-ND/1883067"&gt;Here is the plug housing&lt;/a&gt;
and &lt;a href="http://www.digikey.com/product-detail/en/SVF-42T-P2.0/455-2347-1-ND/1883085"&gt;here are the pins&lt;/a&gt;
that you need to build a power connector. The pinout is straightforward and is available
&lt;a href="http://cc.arkadtorget.se/naomi_power_mod/naomi_filter_pcb_front_empty.gif"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I got the system in the mail, hooked it all up on my test bench, and switched it on
AND&amp;hellip;.. nothing. Black screen. The Naomi&amp;rsquo;s fans came on so it was getting power, but no other
signs of life. Bummer. First thing I did was remove the NetDIMM cartridge and power it up again. It
booted! Ok, that&amp;rsquo;s good since it means the main board isn&amp;rsquo;t fried. I checked the voltages with a
multimeter and the 3.3V, 5V, and 12V lines were all fine. Plugged the NetDIMM back in, powered up,
AND&amp;hellip; nothing again. Well, time for Googling.&lt;/p&gt;
&lt;p&gt;I found a &lt;a href="http://forum.arcadeotaku.com/viewtopic.php?f=26&amp;amp;t=26044"&gt;forum thread&lt;/a&gt; saying that the
Capcom I/O cannot provide enough power to drive a NetDIMM and that you needed a separate power
supply. That&amp;rsquo;s a bit of a bummer since getting the power off the I/O would cut down on cable mess,
but it was worth a try so I ordered a cheap ATX computer power supply from Amazon. Once that
arrived, I hacked up the 20-pin ATX motherboard connector to get 3.3V, 5V, 12V and ground lines into
a Naomi power connector. I switched on the power supply but it didn&amp;rsquo;t seem to turn on since its fan
wasn&amp;rsquo;t spinning. I stared at it for a little bit but then I remembered that modern computers have a
soft power switch, and that is flipped by grounding pin 14. So I snipped that green wire and the
black one next to it, which is a ground, and used a wire nut to tie them together. I flipped the
switch on the power supply and it fired right up, then I used my multimeter to double check the
lines I wired up to go to the Naomi as it&amp;rsquo;s always good to check that before plugging it in and
frying something.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/naomipower_hu_d51499822c044ca6.jpg" width="600" height="616" /&gt;
&lt;figcaption class="center" &gt;Hacked up power connector&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Now for the moment of truth, will the ATX power supply drive the NetDIMM? &lt;em&gt;YEP!&lt;/em&gt; I went into the
service menu to set the IP address of the NetDIMM and checked that the Raspberry Pi could ping the
NetDIMM IP address, then I tried to send it a game and it worked!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/naomitest_hu_2e7f302d4a23b308.jpg" width="600" height="656" /&gt;
&lt;figcaption class="center" &gt;Naomi running on test bench&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;em&gt;Rant:&lt;/em&gt; why do some service menus make you navigate them using only the TEST and SERVICE buttons!?
You have a joystick right there! My test bench doesn&amp;rsquo;t have buttons wired up for those, which I need
to fix, so I had to find the wires in the harness and touch them to a ground wire to navigate the
menus. Talk about hacky. But when you get to the menu item where you enter the IP address, you &lt;em&gt;can&lt;/em&gt;
use the joystick for that so it&amp;rsquo;s not like it can&amp;rsquo;t read those inputs!&lt;/p&gt;
&lt;p&gt;The next thing I need to do is mount all this to a wood board so that I can tame the mess of wires and
boxes in my cab. It all barely fits in the Astro City PCB bay and I want to easily be able to move
it between my vertical and horizontal cabs. I&amp;rsquo;ll need to figure out a way to do that.&lt;/p&gt;
&lt;p&gt;Time to play some &lt;a href="http://en.wikipedia.org/wiki/Under_Defeat"&gt;Under Defeat&lt;/a&gt;! Or maybe some
&lt;a href="http://en.wikipedia.org/wiki/Cosmic_Smash"&gt;Cosmic Smash&lt;/a&gt;! Or
&lt;a href="http://en.wikipedia.org/wiki/Zero_Gunner_2"&gt;Zero Gunner 2&lt;/a&gt;! Or&amp;hellip; &lt;em&gt;TOO MANY GOOD GAMES!&lt;/em&gt;&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/underdefeat_hu_d98a0eb89b7c3fd.jpg" width="600" height="716" /&gt;
&lt;figcaption class="center" &gt;Under Defeat&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Muchi Muchi Pork PCB</title><link>https://pdp.dev/posts/muchi-muchi-pork-pcb/</link><pubDate>Sat, 11 Jan 2014 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/muchi-muchi-pork-pcb/</guid><description>&lt;p&gt;I love this game.&lt;/p&gt;
&lt;p&gt;The first time I ever played
&lt;a href="http://www.hardcoregaming101.net/muchimuchipork/muchimuchipork.htm"&gt;Muchi Muchi Pork&lt;/a&gt; was at a
shmupmeet here in Seattle back in November 2010 at the old Pink Gorilla arcade. There&amp;rsquo;s a collector
here in Seattle who owns a lot of Cave PCBs and the operator (who&amp;rsquo;s now the operator of
&lt;a href="http://www.yelp.com/biz/full-tilt-ice-cream-seattle-5"&gt;Full Tilt in Ballard&lt;/a&gt;) would borrow stuff
from him for our meets. This is before all the XBox 360 ports so it was pretty special to be able to
play Cave STGs outside of Japan.&lt;/p&gt;
&lt;p&gt;That meet was pretty epic, the lineup was
&lt;a href="http://en.wikipedia.org/wiki/Pink_Sweets:_Ibara_Sorekara"&gt;Pink Sweets&lt;/a&gt;,
&lt;a href="http://en.wikipedia.org/wiki/Do-Don-Pachi_Dai-Fukkatsu"&gt;Dodonpachi Daifukkatsu&lt;/a&gt;,
&lt;a href="http://www.hardcoregaming101.net/progear/progear.htm"&gt;Progear&lt;/a&gt;, and
&lt;a href="http://www.hardcoregaming101.net/muchimuchipork/muchimuchipork.htm"&gt;Muchi Muchi Pork&lt;/a&gt;.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/shmupmeet.11.2010_hu_1e46c81b6468543.jpg" width="768" height="574" /&gt;
&lt;figcaption class="center" &gt;Seattle Shmupmeet November 2010&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;You can see Muchi Muchi Pork on the cab at the end, which is actually the Astro City I ended up buying
from that operator! &lt;a href="https://pdp.dev/posts/marquee-light-replacement/"&gt;I fixed the marquee lamp&amp;hellip;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;No one at the meet knew how to play Muchi Muchi Pork, I played it and didn&amp;rsquo;t really think much of
it. I felt the same way about Pink Sweets. We spent most of the meet playing Daifukkatsu because we
all were familiar with the other Dodonpachi games and their scoring systems.&lt;/p&gt;
&lt;p&gt;Even still, I bought the XBox 360 port that bundled Muchi Muchi Pork and Pink Sweets because I
figured that at least one of the games would be enjoyable once I knew how to play them. I played
Muchi Muchi Pork first, and still haven&amp;rsquo;t really touched Pink Sweets because Muchi Muchi Pork is &lt;em&gt;SO
FUN&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;YES&lt;/em&gt;, the character design makes you look like a pervert. &lt;em&gt;YES&lt;/em&gt;, the in game character voices can
be annoying. But blowing shit up and creating massive amounts of 10,000 medals and them vacuuming
them up is &lt;em&gt;AWESOME&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Ports are great, but I&amp;rsquo;m weird and need to own the original so as a reward to myself for all my hard
work at my job for the last 6 months I picked up the PCB. I ordered it from &lt;a href="http://www.sophia-corp.jp/"&gt;Sophia Corp&lt;/a&gt; who I highly
recommend. Great service, decent prices, and they know how to pack and ship PCBs.&lt;/p&gt;
&lt;p&gt;As usual, I can let &lt;a href="http://twitter.com/stgweekly"&gt;&amp;ldquo;STGWeekly&amp;rdquo;&lt;/a&gt; provide a great intro to the game:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/WOEQKFTxf5A?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;The guest and player in that episode is NTSC-J, who lives in Japan but is from Seattle. He was back
in town once and came out to Full Tilt and I got to meet him, really nice guy. He mentions our
&lt;a href="http://www.yelp.com/biz/full-tilt-ice-cream-seattle-5"&gt;&amp;ldquo;ice cream bar&amp;rdquo;&lt;/a&gt; at the
&lt;a href="http://www.youtube.com/watch?v=WOEQKFTxf5A#t=5205"&gt;end of that episode&lt;/a&gt; which is pretty cool.&lt;/p&gt;
&lt;p&gt;I did some streaming on Twitch from the PCB this morning and had a good run, which is my personal
best!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/djHPdlHX2X0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/mmp_hu_8ad39dd36f7a37a0.jpg" width="768" height="1024" /&gt;
&lt;figcaption class="center" &gt;MMP on my Astro City&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;One of my shmup goals for 2014: 1-ALL Muchi Muchi Pork!&lt;/p&gt;</description></item><item><title>KevinDDR Battle Garegga Letter Score [nwstg]</title><link>https://pdp.dev/posts/nwstg-kevinddr-battle-garegga-letter-score/</link><pubDate>Sat, 04 Jan 2014 14:29:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/nwstg-kevinddr-battle-garegga-letter-score/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/L75K9IiZLqY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;KevinDDR says:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Well, I finally did it! I&amp;rsquo;ve wanted to get a letter score in Garegga for a long time, and I&amp;rsquo;m glad that I managed to pull it off in the end. This run was pretty exciting; it had quite a few ups and downs as well as some hilarious close calls. I pulled off a great flamingo score, but butchered my medal chain before stage 3. Despite that, I still managed to keep on pace for 10M throughout the game. When I passed the stage 6 turret wall and miraculously picked up the search options after dying, I knew I would make 10M if I could just survive to 9M and get the extend. I managed to hoard enough bombs for Black Heart 2, and a few BOMBAHs later, the letter score was mine! Shout outs to &lt;a href="http://twitch.tv/pdp80"&gt;PDP80&lt;/a&gt; for letting me borrow his Garegga board for a while and setting up the stream. Also, I&amp;rsquo;d like to thank the people watching the Garegga stream for giving me last-minute tips!&lt;/p&gt;
&lt;p&gt;-&lt;a href="https://twitter.com/KevinDDR"&gt;KevinDDR&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Contra 1cc</title><link>https://pdp.dev/posts/contra-1cc/</link><pubDate>Fri, 03 Jan 2014 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/contra-1cc/</guid><description>&lt;p&gt;I didn&amp;rsquo;t play many games seriously in 2013, mostly due to work being very demanding and just not
having the time to really get into a game. Sadly, I didn&amp;rsquo;t 1CC a single game in 2013 that I
hadn&amp;rsquo;t 1CC&amp;rsquo;d before. I spent most of my gaming time setting up my cabinet so that I could &lt;a href="http://twitch.tv/pdp80"&gt;stream&lt;/a&gt;
from it and had some fun with that.
&lt;a href="http://shmups.system11.org/viewtopic.php?f=6&amp;amp;t=45917"&gt;I put the details of my setup here on the Shmups Forum&lt;/a&gt;
if you&amp;rsquo;re interested.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s now 2014 and I will hopefully have more time to play games. In my few days off around the
holidays, I wanted to try and 1CC something and ease myself back into playing arcade games. I
picked &lt;a href="http://en.wikipedia.org/wiki/Contra_%28video_game%29"&gt;Contra&lt;/a&gt;. Everybody knows Contra and I
own the PCB. Contra on NES is a really hard game, but the arcade game isn&amp;rsquo;t so bad, at least with
the dip switch settings mine was randomly set to.&lt;/p&gt;
&lt;p&gt;I played the game for about 3 hours on New Years Day and reached the big beating heart final
boss. The next day on my 3rd credit of the day I beat it. I was streaming (with no one watching) and
captured the run.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/6RgctZ-Hbl4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;The video does some weird things, my capture card doesn&amp;rsquo;t seem to be able to handle the 57hz refresh
rate of the arcade PCB. Oh well, sorry!&lt;/p&gt;
&lt;p&gt;I have set some STG/shmup goals for 2014, I&amp;rsquo;ll post more about those later. I ordered a new PCB from
Japan that I&amp;rsquo;m super excited about and will write about when it arrives. But for now, this
Contra 1CC will serve as a good start to the year!&lt;/p&gt;
&lt;p&gt;Happy New Year!&lt;/p&gt;</description></item><item><title>CPS-2 Fan Replacement</title><link>https://pdp.dev/posts/cps-2-fan-replacement/</link><pubDate>Sat, 30 Nov 2013 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/cps-2-fan-replacement/</guid><description>&lt;p&gt;CPS-2 Motherboard fans are super loud. The fan noise isn&amp;rsquo;t much of a problem when the PCB is inside
one of my cabinets, but when playing on my supergun it&amp;rsquo;s super annoying. It&amp;rsquo;s enough of a problem
that people sell quieter replacement fans. I picked a few replacements up from
&lt;a href="http://www.jamma-nation-x.com/jammax/store.html"&gt;Jamma Nation X&lt;/a&gt; for cheap. It took me about 10 minutes to
install and the difference is obvious:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/otdcf7bbIi0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Site Move</title><link>https://pdp.dev/posts/site-move/</link><pubDate>Sun, 27 Oct 2013 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/site-move/</guid><description>&lt;p&gt;I&amp;rsquo;ve moved my site off of &lt;a href="http://dreamhost.com"&gt;Dreamhost&lt;/a&gt; and onto
&lt;a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html"&gt;Amazon S3&amp;rsquo;s static webhosting&lt;/a&gt;.
I get no traffic, so Dreamhost was overkill. I experimented with S3 static hosting when I made
&lt;a href="http://nwstg.com"&gt;Northwest STG&lt;/a&gt; and found it work well and cost virtually nothing, so I
have transitioned my site over. This site is now built with
&lt;a href="https://github.com/imathis/octopress"&gt;Octopress&lt;/a&gt; with the &lt;a href="https://github.com/alexharris/octopress-flat/"&gt;&amp;ldquo;Octopress Flat&amp;rdquo; theme&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also moved the main domain to be &lt;a href="http://fishandbeef.com"&gt;fishandbeef.com&lt;/a&gt; from
&lt;a href="http://wnka.org"&gt;wnka.org&lt;/a&gt;. Fish and Beef is what cats crave!&lt;/p&gt;</description></item><item><title>In the Hunt PCB</title><link>https://pdp.dev/posts/in-the-hunt-pcb/</link><pubDate>Sat, 26 Oct 2013 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/in-the-hunt-pcb/</guid><description>&lt;p&gt;With my PCB collection getting too large for me to realistically play all of my games, I traded 2
games that I never play to get an &lt;a href="http://en.wikipedia.org/wiki/In_the_Hunt"&gt;In the Hunt&lt;/a&gt; PCB. The
guy I traded with was local here in the Seattle area so I drove out to his house and traded
Raiden II and Puzzle Bobble 4 for In the Hunt. I think he got the better end of the deal, but now
my collection is smaller and those games will get played. Win win! Plus, I got to see a
&lt;a href="http://wiki.arcadeotaku.com/w/Taito_Egret_II"&gt;Taito Egret II&lt;/a&gt; cabinet in person, which was pretty
neat.&lt;/p&gt;
&lt;p&gt;In college an arcade near campus had In the Hunt and I played it quite a bit. On top of the
nostalgia, the art style and animation are what really makes this game for me. As an STG, it&amp;rsquo;s not
a great game, but the graphics are awesome. If you&amp;rsquo;ve played the Metal Slug games then you&amp;rsquo;ll see some
style similarities; this is because members of the team that worked on the game at Irem would later
form Nazca and &lt;a href="http://metalslug.wikia.com/wiki/The_origin_of_Metal_Slug"&gt;create Metal Slug&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a video of someone 1CC&amp;rsquo;ing In the Hunt:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/m4n6RKSkpcI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Ikaruga Stage 2 S-Rank [nwstg]</title><link>https://pdp.dev/posts/nwstg-ikaruga-stage-2-s-rank/</link><pubDate>Mon, 23 Sep 2013 20:44:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/nwstg-ikaruga-stage-2-s-rank/</guid><description>&lt;p&gt;&lt;strong&gt;YouTube video is no longer available&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/user/DJSessum?feature=watch"&gt;James Sessum&lt;/a&gt; pulls off a 142 chain and S rank on Ikaruga Stage 2, Normal mode. Nice!&lt;/p&gt;</description></item><item><title>wnka Ketsui 1CC [nwstg]</title><link>https://pdp.dev/posts/nwstg-wnka-ketsui-1cc/</link><pubDate>Wed, 03 Jul 2013 22:49:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/nwstg-wnka-ketsui-1cc/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/TxSGlth0Cco?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://twitter.com/wnka"&gt;wnka&lt;/a&gt; recently got his Ketsui PCB back from being at &lt;a href="http://fulltilticecream.com"&gt;Full Tilt Ice Cream&lt;/a&gt; in
&lt;a href="http://www.yelp.com/biz/full-tilt-ice-cream-seattle-5"&gt;Ballard&lt;/a&gt;, so he decided to record a full 1CC
run. Not his best, but it&amp;rsquo;ll do.&lt;/p&gt;</description></item><item><title>KevinDDR plays Radiant Silvergun [nwstg]</title><link>https://pdp.dev/posts/nwstg-kevinddr-plays-radiant-silvergun/</link><pubDate>Wed, 19 Jun 2013 09:23:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/nwstg-kevinddr-plays-radiant-silvergun/</guid><description>&lt;p&gt;&lt;a href="https://twitter.com/KevinDDR"&gt;KevinDDR&lt;/a&gt; came over and did some Radiant Silvergun runs and this was the best one. He came up just
short of the 1cc, which he has pulled off but we wanted to get it on film. He&amp;rsquo;ll be back!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZD7xqKR5P80?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>RayForce at Full Tilt [nwstg]</title><link>https://pdp.dev/posts/nwstg-rayforce-at-full-tilt/</link><pubDate>Tue, 11 Jun 2013 22:13:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/nwstg-rayforce-at-full-tilt/</guid><description>&lt;p&gt;The classic Taito STG &lt;a href="http://en.wikipedia.org/wiki/RayForce"&gt;RayForce&lt;/a&gt; is now at &lt;a href="https://pdp.dev/ft"&gt;Full Tilt in Ballard&lt;/a&gt;! We are excited to feature this game, which was recently covered
on an episode of &lt;a href="http://stgweekly.wordpress.com/"&gt;STGWeekly&lt;/a&gt;.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5SQCb9ckzRY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Northwest STG</title><link>https://pdp.dev/posts/northwest-stg/</link><pubDate>Mon, 27 May 2013 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/northwest-stg/</guid><description>&lt;p&gt;A few of us shmup players here in Seattle have started a website called &lt;a href="http://nwstg.com"&gt;Northwest STG&lt;/a&gt; where we will post videos and streaming information for meetups and tournaments we do. Check it out!&lt;/p&gt;</description></item><item><title>wnka plays Ibara [nwstg]</title><link>https://pdp.dev/posts/nwstg-wnka-plays-ibara/</link><pubDate>Sun, 26 May 2013 20:54:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/nwstg-wnka-plays-ibara/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/GFPeznh0I3c?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://twitter.com/wnka"&gt;wnka&lt;/a&gt; plays &lt;a href="http://en.wikipedia.org/wiki/Ibara_(arcade_game)"&gt;Ibara&lt;/a&gt; and gets a new personal best of 6,786,060.&lt;/p&gt;</description></item><item><title>KevinDDR Cardinal Sins 86mil [nwstg]</title><link>https://pdp.dev/posts/nwstg-kevinddr-cardinal-sins-run/</link><pubDate>Sat, 18 May 2013 19:53:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/nwstg-kevinddr-cardinal-sins-run/</guid><description>&lt;p&gt;&lt;strong&gt;YouTube video is no longer available&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Good run on Cardinal Sins by &lt;a href="http://twitter.com/KevinDDR"&gt;KevinDDR&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Final score = 86,436,290&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Cardinal Sins tournament [nwstg]</title><link>https://pdp.dev/posts/nwstg-cardinal-sins/</link><pubDate>Sun, 05 May 2013 23:04:59 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/nwstg-cardinal-sins/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/4V2lGSRu820?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I&amp;rsquo;ve been working on a streaming setup lately for streaming shmups and other arcade stuff. People
came over to watch the &lt;a href="http://www.100yenfilm.com/"&gt;100 Yen: The Japanese Arcade Experience&lt;/a&gt; documentary and we gave the setup a
spin and this is what happened. Super fun, none of us had really played &lt;a href="http://www.shmups.com/reviews/cardinalsins/index.html"&gt;Cardinal Sins&lt;/a&gt; except for
KevinDDR so he gave us the rundown and we had a little mini-tournament.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Final scores:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;KevinDDR - KCB - 58,779,110&lt;/li&gt;
&lt;li&gt;Marus - MPO - 54,426,830&lt;/li&gt;
&lt;li&gt;EPS21 - EPS - 46,286,420&lt;/li&gt;
&lt;li&gt;Tadaru - ATT - 44,076,590&lt;/li&gt;
&lt;li&gt;pdp80 - PDP - 41,325,530&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Marus plays Pink Sweets [nwstg]</title><link>https://pdp.dev/posts/nwstg-marus-pink-sweets/</link><pubDate>Sun, 05 May 2013 22:04:59 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/nwstg-marus-pink-sweets/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/2KTaKWWnMOQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Marus plays &lt;a href="http://en.wikipedia.org/wiki/Pink_Sweets:_Ibara_Sorekara"&gt;Pink Sweets&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Another Ketsui 1cc at Full Tilt</title><link>https://pdp.dev/posts/another-ketsui-1cc-at-full-tilt/</link><pubDate>Sat, 13 Apr 2013 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/another-ketsui-1cc-at-full-tilt/</guid><description>&lt;p&gt;I 1CC&amp;rsquo;d &lt;a href="http://en.wikipedia.org/wiki/Ketsui:_Kizuna_Jigoku_Tachi"&gt;Ketsui&lt;/a&gt; again at &lt;a href="http://www.yelp.com/biz/full-tilt-ice-cream-seattle-5"&gt;Full Tilt&lt;/a&gt;, this time with the Wide Shot ship (Tiger Schwert) which is my first ever with that ship type. I had to tweak my strategies a little since this ship moves slower than the other ship type, but I found it&amp;rsquo;s faster lock on speed and wider shot to be pretty helpful in dealing with stage 5 where there are a lot of popcorn enemies all over the screen. Stage 5 is always a pain though, to me Ketsui has two parts: everything leading up to stage 5, then stage 5.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/qt1KCq65snM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I was at Full Tilt with my wife and she recorded the end of the run&amp;hellip; I didn&amp;rsquo;t even have to ask, she knows what&amp;rsquo;s up!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0851_hu_3f246a9dba3127cd.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;'Final score: 88,755,366'&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;That&amp;rsquo;s my best 1cc score evar! I&amp;rsquo;m going to be playing more with that shot type and aim for getting to the second loop. I think with a little practice I could reach the easier 2nd loop&amp;hellip;&lt;/p&gt;</description></item><item><title>Raystorm PCB GET</title><link>https://pdp.dev/posts/raystorm-pcb-get/</link><pubDate>Sun, 07 Apr 2013 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/raystorm-pcb-get/</guid><description>&lt;p&gt;I picked up a &lt;a href="http://en.wikipedia.org/wiki/RayStorm"&gt;RayStorm&lt;/a&gt; PCB recently, which is the sequel to RayForce.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/20130407-070612_hu_1b5875c816b292e6.jpg" width="338" height="450" /&gt;
&lt;figcaption class="center" &gt;GET&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Ketsui 1cc at Full Tilt</title><link>https://pdp.dev/posts/ketsui-1cc-at-full-tilt/</link><pubDate>Sat, 06 Apr 2013 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/ketsui-1cc-at-full-tilt/</guid><description>&lt;p&gt;My Ketsui PCB is currently on loan to
&lt;a href="http://www.yelp.com/biz/full-tilt-ice-cream-seattle-5"&gt;Full Tilt Ice Cream in Ballard&lt;/a&gt; where the
shmup guys here in Seattle (all 5 of us) do
&lt;a href="http://shmups.system11.org/viewtopic.php?f=8&amp;amp;t=41318"&gt;meetups every week&lt;/a&gt;. Last meetup I 1CC&amp;rsquo;d the
first loop LIVE:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/JzoT7ldlDas?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I had a pretty hilarious death right at the start of the last boss. Here&amp;rsquo;s a nice loop of that:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ManpTjjUmak?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/Ketsui1CCFT_hu_e8caacf939baae85.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Final score: 82,520,034&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Beat my previous 1CC score by about 10 million!&lt;/p&gt;</description></item><item><title>Rayforce</title><link>https://pdp.dev/posts/rayforce/</link><pubDate>Sat, 02 Mar 2013 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/rayforce/</guid><description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/RayForce"&gt;Rayforce&lt;/a&gt; is a game I&amp;rsquo;ve wanted for quite a while now, however original PCBs are hard to find and are expensive when they do show up.&lt;/p&gt;
&lt;p&gt;Rayforce runs on &lt;a href="http://en.wikipedia.org/wiki/Taito_F3_System"&gt;Taito F3&lt;/a&gt; hardware, however it was one of the first games released for that hardware and was a standalone PCB, not a cartridge like other F3 games. I read some articles on a &lt;a href="http://www.arcade-system.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=608:convertir-une-cartouche-taito-f3-en-rayforce-gunlock&amp;amp;catid=137:les-tutoriaux&amp;amp;Itemid=261"&gt;few&lt;/a&gt; &lt;a href="http://retrogamebay.free.fr/?convertir-une-cartouche-taito-f3.html"&gt;websites&lt;/a&gt; (all in French for some reason) about converting an F3 cartridge into Rayforce, so I gave it a shot. I would like an original PCB, but I thought it might be fun to try the conversion.&lt;/p&gt;
&lt;p&gt;I bought an F3 motherboard and an &lt;a href="http://en.wikipedia.org/wiki/Arkanoid_Returns"&gt;Arkanoid Returns&lt;/a&gt; cartridge. I opened it up and started desoldering the ROMs using a &lt;a href="http://www.amazon.com/Sucking-Vacuum-Desoldering-Solder-Remover/dp/B005GIPKOW/ref=sr_1_2?ie=UTF8&amp;amp;qid=1362203332&amp;amp;sr=8-2&amp;amp;keywords=desolder+pump"&gt;solder sucker&lt;/a&gt;. This took &lt;strong&gt;FOREVER&lt;/strong&gt;. Each ROM was 40-pins, so doing those one by one with a pump was super time consuming. It was so painful that I didn&amp;rsquo;t unsolder one of the sound ROMs and just installed all the other ROMs.&lt;/p&gt;
&lt;p&gt;For each ROM I desoldered, I installed a socket and made sure that Arkanoid Returns still worked correctly. I tore up a few traces but was able to patch them with wire. So in the end I had a socketed Arkanoid Returns that still had one sound ROM not socketed. I installed the Rayforce ROMs and powered up the board.&lt;/p&gt;
&lt;p&gt;Nothing. The board just kept rebooting over and over and over, so I gave up. I figured the PAL chip those French articles talk about was not the right one, even though the marking was D77-14 which should work. Perhaps Google Translate forgot a &amp;ldquo;NOT&amp;rdquo; when translating that sentence about IC21. I didn&amp;rsquo;t want to go through the effort of desoldering that sound ROM just to have the game not boot. So I wasted a bunch of time and got pretty good at desoldering the hard way.&lt;/p&gt;
&lt;p&gt;Time passes. Many months.&lt;/p&gt;
&lt;p&gt;Recently I was chatting with a coworker about something and we got to talking soldering. He mentioned he had a &lt;a href="http://www.amazon.com/Hakko-Desoldering-Kit-With-808/dp/B000ARPULW/ref=sr_1_1?ie=UTF8&amp;amp;qid=1362204158&amp;amp;sr=8-1&amp;amp;keywords=desoldering+gun"&gt;desoldering gun&lt;/a&gt;. I told my story about how painful it was removing ROMs manually with a pump, so he let me borrow it. The first thing I did with it? I desoldered that sound ROM.&lt;/p&gt;
&lt;p&gt;Now, I was in the process of burning the Rayforce ROMs and had everything burned except for the background graphics ROMs, but that one sound ROM that I hadn&amp;rsquo;t replaced before (D66-01) was in place so I fired up the game.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0617_hu_f2d1214c0aa6077f.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Working with missing background ROMs&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;IT WORKED! WOW! As you can see, the backgrounds are missing because those ROMs are missing. I finished up burning those and installed them.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0623_hu_3d9500fe60d4355e.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Background ROMs installed&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Clearly that &amp;ldquo;sound ROM&amp;rdquo; also serves some other important function since the game wouldn&amp;rsquo;t even boot without it. I mean, I figured I would just get messed up sounds from Arkanoid Returns.&lt;/p&gt;
&lt;p&gt;Now, there were a few small issues to fix. Some of the sprites had lines running through them which I chased down to a bad ROM burn on D66-03. Re-burning fixed the issue. The other issue was that the backgrounds had weird sparkles (technical term) in them where the colors were wrong. In the above picture with the green sphere, you can maybe see some blue pixels on the right hand side of the sphere if you look closely. I hooked the game up to my test rig and started poking around. I quickly figured out that this was a voltage issue and turning down the 5V on my PSU fixed it.&lt;/p&gt;
&lt;p&gt;I now had a perfectly working Rayforce F3 cartridge. I&amp;rsquo;ve been playing it some tonight and it is such a great game. I&amp;rsquo;ve played it in MAME a lot but its great to have it running on the real hardware. The graphics are crazy, definitely one of the best looking games on F3. So much scaling!&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve played a few credits and I can get to Area 4 pretty consistently. My current best score is 1,174,100 in Area 4:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0631_hu_122ab29d55d1fddf.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Goal #1 met: beat default high score&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I think this is what I&amp;rsquo;m going to try and 1CC next. It has a very different feel from other shmups I play in that there aren&amp;rsquo;t tons of bullets on the screen, but it&amp;rsquo;s so well put together and tons of fun. To survive, it&amp;rsquo;s pretty clear that you need to lock on to things before they reach the main play field, otherwise things get hairy pretty fast. That means memorizing enemy placements and destroying enemies as fast as you can.&lt;/p&gt;
&lt;p&gt;Also, it should be noted that &lt;a href="http://www.youtube.com/watch?v=rGc7-eb9pwE"&gt;Rayforce is available for iOS&lt;/a&gt;. I enthusiastically bought it when it came out, however I must say that the iOS version pretty much sucks. Either play it in MAME or do all the crazy stuff I just described to build an F3 cartridge version. Or buy the real PCB. Go!&lt;/p&gt;</description></item><item><title>Another Astro City</title><link>https://pdp.dev/posts/another-astro-city/</link><pubDate>Wed, 13 Feb 2013 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/another-astro-city/</guid><description>&lt;p&gt;I got another Astro City cabinet! A friend of mine found that he wasn&amp;rsquo;t using his cab as much as he thought he would and wanted to sell it. With our recent move, we have more space, so I bought it.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s funny, because when he was thinking about buying this cab about a year ago, I told him that if he ever wanted to sell it, he could sell it for what he paid for it and joked that if he ever did want to sell it I would probably buy it. I was right.&lt;/p&gt;
&lt;p&gt;He bought this cab from the same guy I bought mine from and I had played on it at shmupmeets, so I knew what I was getting.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a &lt;a href="http://wiki.arcadeotaku.com/w/Sega_New_Astro_City"&gt;New Astro City&lt;/a&gt; which is basically the same as a regular &lt;a href="http://wiki.arcadeotaku.com/w/Sega_Astro_City"&gt;Astro City&lt;/a&gt;, except the speakers and monitor are different. Personally, I think the speakers are uglier than an Astro City, but that&amp;rsquo;s mostly because the plastic tends to yellow due to age. Some folks &lt;a href="http://www.gamoover.net/node/59"&gt;spray paint them white&lt;/a&gt; to cover up the yellowing, which I&amp;rsquo;ll probably do myself soon.&lt;/p&gt;
&lt;p&gt;As I commented &lt;a href="https://pdp.dev/posts/moving-an-astro-city/"&gt;before&lt;/a&gt;, separating the two halves of the body on these cabinets is a huge pain. Thankfully in order to get it into his apartment he already had to disassemble it, so all the screws were loose which made it easy to take apart. We had it broken down and loaded into a U-Haul van in about 30 minutes.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0435_hu_944906993072aa5c.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Monitor and Bezel in U-Haul&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0436_hu_7c8af8d738dcd573.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Back Half and Control Panel in U-Haul&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;We got it into my house, reassembled, and working in no time. Piece of cake!&lt;/p&gt;
&lt;p&gt;My existing Astro City has been for shmups so I&amp;rsquo;ve kept the monitor vertical. I&amp;rsquo;ve always wanted another cabinet so that I could play horizontal games, and these two look great side-by-side!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0445_hu_d2d2a937e50c799d.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Two Cabs!&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>Moving an Astro City</title><link>https://pdp.dev/posts/moving-an-astro-city/</link><pubDate>Sun, 10 Feb 2013 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/moving-an-astro-city/</guid><description>&lt;p&gt;Last November my wife and I moved to a new place, so that meant that the ol&amp;rsquo; Astro City had to be moved. Piece of cake right?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WRONG&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now moving the cab from the old place to the new place was pretty easy. However in the new place it needed to go into the basement, which is only accessible from a narrow staircase. This was the battle. The cab had to be broken apart into pieces and then reassembled in the basement. Thankfully, I have friends who have done this before, so I had two of them come over and lend a hand.&lt;/p&gt;
&lt;p&gt;I was freaked out about taking the monitor out and carrying that down the basement, I was imagining glass shattering and electrocution. That part was easy.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0335_hu_eb0595ddbf85501.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Monitor safely moved downstairs&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The hardest part by far was unscrewing the two halves of the body. Those screws were a complete pain to get out and one had to be severed with a Dremel tool.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/dremelastro_hu_a71619fc15ac30b4.jpg" width="600" height="450" /&gt;
&lt;figcaption class="center" &gt;Sucks, but it had to be done&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Less than ideal, but it was only one thankfully. We also did the &amp;ldquo;cut a flathead slot with a dremel&amp;rdquo; trick on one screw, which surprisingly worked!&lt;/p&gt;
&lt;p&gt;Once the cab was apart, getting it down the stairs was easy. Here are the pieces:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0341_hu_9bbcc12f79d91c68.jpg" width="600" height="450" /&gt;
&lt;figcaption class="center" &gt;All the pieces moved&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Reassembling everything was a piece of cake, but that first power on was stressful. I hooked up my &lt;a href="http://en.wikipedia.org/wiki/Street_Fighter_II:_Champion_Edition"&gt;Street Fighter II: Champion Edition&lt;/a&gt; PCB since if things blew up for whatever reason, that board is common and cheap.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0342_hu_44a3f2457d8ad5e8.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Power on success!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Everything worked! Here&amp;rsquo;s my cab side-by-side with my supergun setup:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0345_hu_506d371ba6930b0a.jpg" width="600" height="450" /&gt;
&lt;figcaption class="center" &gt;Done&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I felt much more moved in and at home after the cab got put in its proper place!&lt;/p&gt;</description></item><item><title>Mushihimesama 1CCs at Full Tilt</title><link>https://pdp.dev/posts/mushihimesama-1ccs-at-full-tilt/</link><pubDate>Fri, 28 Dec 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mushihimesama-1ccs-at-full-tilt/</guid><description>&lt;p&gt;After I 1CC&amp;rsquo;d &lt;a href="http://en.wikipedia.org/wiki/Mushihime-sama"&gt;Mushihimesama&lt;/a&gt; Maniac mode, I didn&amp;rsquo;t play the game much. I let a friend borrow it for a while, then I let the operator at &lt;a href="http://www.yelp.com/biz/full-tilt-ice-cream-seattle-5"&gt;Full Tilt Ice Cream in Ballard&lt;/a&gt; borrow it and put it on location. We recently took it out to install my &lt;a href="http://en.wikipedia.org/wiki/Gunbird_2"&gt;Gunbird 2&lt;/a&gt; PCB, but before it left I spent a bunch of time and was able to 1CC both Original mode and Maniac mode on location.&lt;/p&gt;
&lt;p&gt;I was able to greatly improve my Original mode score by beating the game with more lives in stock.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0237_hu_9dc06d554cb21f09.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Original with S-Power: 29,313,539&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;My Maniac mode score isn&amp;rsquo;t my best 1CC score, but doing it on location was pretty satisfying.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0243_hu_df28d431c4127b99.jpg" width="450" height="600" /&gt;
&lt;figcaption class="center" &gt;Maniac with W-Power: 80,701,141&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;On to &lt;a href="http://en.wikipedia.org/wiki/Gunbird_2"&gt;Gunbird 2&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>York Sunset</title><link>https://pdp.dev/posts/york-sunset/</link><pubDate>Thu, 13 Dec 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/york-sunset/</guid><description>&lt;p&gt;This excellent video was sent to me by &lt;a href="http://vjskulpture.wordpress.com/"&gt;Graham&lt;/a&gt; where he used &lt;a href="http://gawker.sourceforge.net/Gawker.html"&gt;Gawker&lt;/a&gt; to record a sunset in York.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/sAkbEkcUyvo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Thanks &lt;a href="http://vjskulpture.wordpress.com/"&gt;Graham&lt;/a&gt; for sharing!&lt;/p&gt;</description></item><item><title>Mushihimesama Futari Black Label Maniac 1CC</title><link>https://pdp.dev/posts/mushihimesama-futari-black-label-maniac-1cc/</link><pubDate>Fri, 23 Nov 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mushihimesama-futari-black-label-maniac-1cc/</guid><description>&lt;p&gt;Happy Thanksgiving! Before heading out to Thanksgiving dinner with friends, I put some time into &lt;a href="http://en.wikipedia.org/wiki/Mushihime-sama_Futari"&gt;Mushihimesama Futari Black Label&lt;/a&gt; and managed to finally get a Maniac mode 1cc!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/f129ddc034f611e2baac22000a1fbda6_7_hu_7c19122fcf63936a.jpg" width="600" height="600" /&gt;
&lt;figcaption class="center" &gt;Maniac with Palm: 309,969,291&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I had gotten really close a couple of times, like &amp;ldquo;4px of life left on the final boss&amp;rdquo; close, so I&amp;rsquo;m glad to have finally done it. The last boss was a bit of a bomb fest, but oh well, got the 1cc!&lt;/p&gt;
&lt;p&gt;This port for XBox 360 came out almost exactly three years ago and I got it the day after Thanksgiving in 2009. I think it&amp;rsquo;s safe to say I&amp;rsquo;ve gotten my money&amp;rsquo;s worth…&lt;/p&gt;
&lt;p&gt;Video!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/uRJUpJE13s0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Gawker and Mountain Lion</title><link>https://pdp.dev/posts/gawker-and-mountain-lion/</link><pubDate>Sat, 28 Jul 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gawker-and-mountain-lion/</guid><description>&lt;p&gt;I am happy to report that Gawker still works correctly in OS X Mountain Lion!&lt;/p&gt;
&lt;p&gt;Also, I put the Gawker source code up on &lt;a href="http://github.com/"&gt;GitHub&lt;/a&gt;. It is available &lt;a href="https://github.com/wnka/Gawker"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Happy Gawking!&lt;/p&gt;</description></item><item><title>Ketsui Arrange 1.5</title><link>https://pdp.dev/posts/ketsui-arrange-1-5/</link><pubDate>Sun, 22 Jul 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/ketsui-arrange-1-5/</guid><description>&lt;p&gt;Version 1.5 of Ketsui Arrange was released recently by &lt;a href="https://twitter.com/trap0xf"&gt;trap15&lt;/a&gt;. You can read more about it &lt;a href="http://dodonpachi.daifukkat.su/ketarr/"&gt;here&lt;/a&gt;. Basically, weapons were rebalanced and suicide bullets were added at high rank which makes the game &lt;em&gt;way&lt;/em&gt; harder.&lt;/p&gt;
&lt;p&gt;I burned an EPROM of it, slapped it on my Ketsui board and recorded the first couple of times I played it.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/P9BKdDiHmw0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>June Pickups</title><link>https://pdp.dev/posts/june-pickups/</link><pubDate>Mon, 02 Jul 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/june-pickups/</guid><description>&lt;p&gt;Some good pickups last month, starting with a better control panel for my &lt;a href="http://en.wikipedia.org/wiki/SuperGun"&gt;supergun&lt;/a&gt; setup. A guy on the shmups forum was parting out some Astro City cabinets, so I grabbed the plastic part that the control panel attaches to so that I could use it with my spare two player control panel.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2558_hu_5a955a0c8e86469.jpg" width="600" height="448" /&gt;
&lt;/figure&gt;
&lt;p&gt;Since this is only the upper part, I had to get a little inventive to make it sit firmly on the table. I thought about cutting a piece of wood that I could attach it to so that it would have a flat surface to sit on, but that seemed like a lot of work to do correctly. Instead, I bought a roll of &lt;a href="http://www.amazon.com/Soft-Self-Adhesive-Baby-Cushion-Tape/dp/B005GNBRDA/ref=pd_sim_ba_6"&gt;adhesive padding that parents use to soften hard corners and edges in their homes when they have kids&lt;/a&gt;. I just took it and wrapped it around the bottom corners of the piece, which due to the rubberiness of the padding really helps it stay in place on the table.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2559_hu_6eecb6ba4f0e3389.jpg" width="600" height="448" /&gt;
&lt;/figure&gt;
&lt;p&gt;This new setup is great for fighting games, so I picked up &lt;a href="http://en.wikipedia.org/wiki/Super_Street_Fighter_II_Turbo"&gt;Super Street Fighter II X, or Super Street Fighter II Turbo&lt;/a&gt; as its known here in the US. I play it quite a bit at Full Tilt Ice Cream in Ballard and it&amp;rsquo;s an awesome game. I&amp;rsquo;m gonna try to start getting better at the game so I can whoop up!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0023_hu_aa70ca3113bb34cb.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;I also picked up some &lt;a href="http://www.system16.com/hardware.php?id=665"&gt;Taito F3&lt;/a&gt; hardware. This platform ran some great shmups and I&amp;rsquo;m most interested in &lt;a href="http://en.wikipedia.org/wiki/RayForce"&gt;Rayforce&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Darius_Gaiden"&gt;Darius Gaiden&lt;/a&gt;. So I picked up a motherboard and cartridges for Arkanoid Returns and Puzzle Bobble 4. Why those games? Because they were cheap and supposedly you can swap roms in the game cartridges, allowing me to convert those cheap games into expensive awesome games.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/f3_hu_1db124493bb79ed7.jpg" width="600" height="495" /&gt;
&lt;/figure&gt;
&lt;p&gt;Unfortunately, my attempts to convert the cartridges has been a complete failure. I went through all the work of desoldering the ROM chips out of the Arkanoid Returns cartridge and installing chip sockets so I could easily swap ROMs. While I can swap out the chips, both Rayforce and Darius Gaiden just reboot endlessly when I install their ROM chips. The good news is that I am now actually pretty decent at desoldering chips, and my sockets work because Arkanoid Returns still works when I put its chips in the sockets I installed! I did rip up a few traces in the process of desoldering, but I was able to patch those with wire.&lt;/p&gt;
&lt;p&gt;So lately I seem to just be amassing more and more games but not really playing anything super seriously. This is mostly because work is pretty crazy right now, but at some point I need to sit down and actually put time into playing a game.&lt;/p&gt;</description></item><item><title>Ketsui Arrange</title><link>https://pdp.dev/posts/ketsui-arrange/</link><pubDate>Fri, 01 Jun 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/ketsui-arrange/</guid><description>&lt;p&gt;A super cool guy reverse engineered Ketsui and made his own arrange mode and released it for free. &lt;a href="http://dodonpachi.daifukkat.su/ketarr/"&gt;It is available here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The really cool news is that you can play it on an actual PCB! I had been thinking about getting an &lt;a href="http://en.wikipedia.org/wiki/EPROM"&gt;EPROM&lt;/a&gt; programmer for a while, but this pushed me over the edge and forced me to actually get &lt;a href="http://www.mcumall.com/comersus/store/comersus_viewitem.asp?idproduct=4282"&gt;one&lt;/a&gt; so that I could burn a copy of this and stick it on my Ketsui board.&lt;/p&gt;
&lt;p&gt;This is my first programmed EPROM, a 27C160 which is what Ketsui uses to store its game logic.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/20120531-221032_hu_61dab45c7bce6d8b.jpg" width="600" height="804" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/20120531-221047_hu_cc32cf95d7d1d3bb.jpg" width="600" height="804" /&gt;
&lt;/figure&gt;
&lt;p&gt;I haven&amp;rsquo;t played it much yet, but it is really well done and is a neat take on the original game. Basically, you hold down A+C to jack up the rank (a la &lt;a href="http://en.wikipedia.org/wiki/Do-Don-Pachi_Dai-Fukkatsu#Dodonpachi_Daifukkatsu_Black_Label_.28Xbox_360.29"&gt;Dodonpachi Daifukkatsu Black Label&lt;/a&gt;) and then you get bombarded with the bullet patterns from the more difficult 2nd loop of the game. You can let go of A+C to drop the rank down and make things easier, but of course you get more points by making things hard for yourself.&lt;/p&gt;
&lt;p&gt;So far I&amp;rsquo;ve only been able to reach the 3rd stage on one credit, but it&amp;rsquo;s fun to get the rank high and see how long you can survive. I probably won&amp;rsquo;t play this super seriously, but it&amp;rsquo;s cool to get a new variation of a game I love for free!&lt;/p&gt;</description></item><item><title>Strider PCB Fixed</title><link>https://pdp.dev/posts/strider-pcb-fixed/</link><pubDate>Sat, 26 May 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/strider-pcb-fixed/</guid><description>&lt;p&gt;As I &lt;a href="https://pdp.dev/posts/new-pcbs-2/"&gt;mentioned previously&lt;/a&gt;, I picked up a &lt;a href="http://en.wikipedia.org/wiki/Strider_(arcade_game)"&gt;Strider&lt;/a&gt; PCB that had some graphical issues. I did more futzing around and was able to fix the problem. It was the &amp;ldquo;B&amp;rdquo; board, just as I thought. I used my Street Fighter II board set to eliminate the &amp;ldquo;A&amp;rdquo; and &amp;ldquo;C&amp;rdquo; boards as the problem, which narrowed it down to either the &amp;ldquo;B&amp;rdquo; board itself or some of the graphics roms.&lt;/p&gt;
&lt;p&gt;I pulled the graphics roms out one by one, which led to some interesting results and helped me narrow it down to the ST-8 and/or ST-9 graphics roms. I swapped in some of the other graphics roms into those positions, which totally screwed up the graphics but showed that the roms that I put in that position also started showing vertical lines. This told me it was those sockets on the board and not the actual roms, since those roms at their original position showed no corruption.&lt;/p&gt;
&lt;p&gt;I inspected the traces and solder joints around those sockets, but couldn&amp;rsquo;t see anything obvious. I checked the continuity of the traces to their next point of the board and everything was fine. Either something was happening downstream or there were traces being shorted/bridged. Since no fix was obvious, I decided to just track down another &amp;ldquo;B&amp;rdquo; board.&lt;/p&gt;
&lt;p&gt;The SFII board I have has a different &amp;ldquo;B&amp;rdquo; board layout with different/incompatible sockets, so I couldn&amp;rsquo;t use that. A &lt;a href="http://en.wikipedia.org/wiki/Final_fight"&gt;Final Fight&lt;/a&gt; board came up on eBay, which is also &lt;a href="http://en.wikipedia.org/wiki/CP_System"&gt;CPS-1&lt;/a&gt; and uses the same &amp;ldquo;B&amp;rdquo; board (89624B-3) as Strider so I bought it. If my theory was wrong, at least I&amp;rsquo;d have Final Fight!&lt;/p&gt;
&lt;p&gt;The Final Fight arrived and I verified that it worked, then I swapped the Strider roms and &amp;ldquo;C&amp;rdquo; board onto the FF &amp;ldquo;B&amp;rdquo; board.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/20120528-213257_hu_9e80851e1c658326.jpg" width="600" height="804" /&gt;
&lt;/figure&gt;
&lt;p&gt;I swapped the Final Fight roms onto the Strider &amp;ldquo;B&amp;rdquo; board. Lines!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/20120528-213148_hu_ea600331e23dab78.jpg" width="600" height="804" /&gt;
&lt;/figure&gt;
&lt;p&gt;At some point I&amp;rsquo;ll look more into what is wrong with the Strider &amp;ldquo;B&amp;rdquo; board, but at least now I have a fully working CPS board set.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; I was able to figure out what was wrong with that B-board, see &lt;a href="https://pdp.dev/posts/final-fight-fix/"&gt;this post&lt;/a&gt; for details!&lt;/p&gt;</description></item><item><title>Astro City Super Sound</title><link>https://pdp.dev/posts/astro-city-super-sound/</link><pubDate>Tue, 22 May 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/astro-city-super-sound/</guid><description>&lt;p&gt;The speakers &lt;a href="https://pdp.dev/posts/easy-astro-city-speaker-upgrade/"&gt;I swapped into my Astro City&lt;/a&gt; were a big improvement over the stock ones, however 8&amp;quot; drivers can only do so much. Thankfully, there&amp;rsquo;s an easy and cheap way to get RCA outputs on a cabinet using a &lt;a href="http://www.amazon.com/Pyramid-NS60-Level-Impedance-Adaptor/dp/B000EFKK5G/ref=sr_1_2?ie=UTF8&amp;amp;qid=1337657429&amp;amp;sr=8-2"&gt;high-to-low converter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Basically all this little box does is take the amplified signal going to the speakers and converts it down to line levels. Typically these are used in car stereos when hooking up after market amplifiers to stock radios. Once you have the signal at line level, you can use the RCA jacks up to hook up to a home stereo or computer speakers. My cab is now hooked up to a set of computer speakers that have a subwoofer and, as you might imagine, games sound &lt;strong&gt;so much better&lt;/strong&gt;. Shmups and bass!&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the box stashed underneath my control panel.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/20120521-204346_hu_e971c9858ee14391.jpg" width="600" height="804" /&gt;
&lt;/figure&gt;
&lt;p&gt;All I did was wire up the L and R channels from the box to a 4-pin AMP-UP connector that plugs into the speaker connector under the control panel. + on the right, - on the left. You don&amp;rsquo;t have to pay attention to which is L and which is R since JAMMA games are mono. I can easily swap back to using the cabinet speakers by just swapping that 4-pin connector. I don&amp;rsquo;t like permanently modding my cab, so this solution is easy to revert if I ever need to just use the stock speakers.&lt;/p&gt;</description></item><item><title>Battle Garegga 4.86 Million</title><link>https://pdp.dev/posts/battle-garegga-4-86-million/</link><pubDate>Thu, 17 May 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/battle-garegga-4-86-million/</guid><description>&lt;p&gt;I recently got a new iPad and wanted to test the video recording quality, so here&amp;rsquo;s a &lt;a href="http://en.wikipedia.org/wiki/Battle_Garegga"&gt;Battle Garegga&lt;/a&gt; run. This is actually my best score ever, which isn&amp;rsquo;t that great. Enjoy it in 1080p!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Cgn4BOu97oA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Full Tilt Ice Cream</title><link>https://pdp.dev/posts/full-tilt-ice-cream/</link><pubDate>Thu, 17 May 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/full-tilt-ice-cream/</guid><description>&lt;p&gt;There is a place here in the Ballard neighborhood of Seattle called &lt;a href="http://www.yelp.com/biz/full-tilt-ice-cream-seattle-5"&gt;Full Tilt Ice Cream&lt;/a&gt;. It&amp;rsquo;s amazing.&lt;/p&gt;
&lt;p&gt;They have ice cream, pinball, arcade machines, and beer.&lt;/p&gt;
&lt;p&gt;Recently a friend of mine became the operator of all the machines at this location. This is the same guy who used to run the Pink Gorilla arcade in the University District and the same guy I bought my Astro City cabinet from. He&amp;rsquo;s a great dude and keeps all his machines in excellent shape.&lt;/p&gt;
&lt;p&gt;With a name like Full Tilt, obviously the main attraction is the pinball machines, but there are also some candy cabinets there with shmups, fighting games, and music games.&lt;/p&gt;
&lt;p&gt;Currently my Ibara Kuro PCB is on location there in a New Astro City cabinet. It&amp;rsquo;s crunch time at work so I don&amp;rsquo;t have a lot of time to play games. I hate having my PCBs sitting around not getting played, so it&amp;rsquo;s good to get other people enjoying them. We just hooked up the game last night, and already another friend from the shmups scene here in Seattle has beaten my best score and taken the #1 position on the high score board. It&amp;rsquo;ll be fun to swap strategies, down cold ones and compete for the top spot!&lt;/p&gt;
&lt;p&gt;Pretty much every Tuesday a group of us meet there to hang out and play games. If you&amp;rsquo;re in the Seattle area I would highly recommend heading over to Ballard and checking out Full Tilt!&lt;/p&gt;</description></item><item><title>New PCBs 2</title><link>https://pdp.dev/posts/new-pcbs-2/</link><pubDate>Thu, 17 May 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/new-pcbs-2/</guid><description>&lt;p&gt;It&amp;rsquo;s been a while since I posted since I&amp;rsquo;ve been pretty busy with work and haven&amp;rsquo;t been able to play a lot of games. However, that hasn&amp;rsquo;t stopped me from &lt;strong&gt;buying&lt;/strong&gt; games!&lt;/p&gt;
&lt;p&gt;I got 3 new PCBs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ibara Kuro: Black Label&lt;/li&gt;
&lt;li&gt;Strider&lt;/li&gt;
&lt;li&gt;Street Fighter II: Champion Edition&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Ibara_%28video_game%29#Ibara_Kuro:_Black_Label"&gt;Ibara Kuro&lt;/a&gt; is a remix of the original &lt;a href="http://en.wikipedia.org/wiki/Ibara_%28arcade_game%29"&gt;Ibara&lt;/a&gt;, which I also got recently and enjoy, but I enjoy Kuro &lt;strong&gt;a lot more&lt;/strong&gt;. I sampled this in MAME when the Cave SH3 games were briefly emulated and quickly determined that I needed to have it. Only about 150 PCBs of this exist, making it the rarest PCB I own. In terms of gameplay changes, Ibara Kuro does with rank control what &lt;a href="http://en.wikipedia.org/wiki/Ketsui"&gt;Ketsui&lt;/a&gt; does with chaining: makes it short and sweet. Ibara (as with most games by Shinobu Yagawa) is all about controlling rank over the course of a game, whereas Ibara Kuro is about quickly raising rank then caching in and building it up again. It makes for a pretty fun scoring system while staying tough.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Strider_%28arcade_game%29"&gt;Strider&lt;/a&gt; was one of my all time favorite arcade games growing up, but I don&amp;rsquo;t want to say that this purchase was nostalgic because the game holds up so well. Everything about it is top shelf: &lt;a href="http://www.youtube.com/watch?v=n-R4Qyy7AII"&gt;music&lt;/a&gt;, graphics, level design, and fun factor. The Genesis port is pretty decent, but of course nothing beats the real thing. The Amiga port, which is what I had as a kid, is &lt;strong&gt;HORRIBLE&lt;/strong&gt; and was a crushing disappointment. I mean, &lt;a href="http://www.youtube.com/watch?feature=player_detailpage&amp;amp;v=YaTxpPIW1C4#t=215s"&gt;look at this scene from the Amiga game&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?feature=player_detailpage&amp;amp;v=FZwzRRHn53k#t=231s"&gt;then look at that same scene on the arcade game&lt;/a&gt; and you&amp;rsquo;ll see what I mean.&lt;/p&gt;
&lt;p&gt;Unfortunately, the Strider board that I bought has some graphical corruption issues. It is still fully playable, however there are vertical lines running through some of the sprites.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm8.staticflickr.com/7042/6879775386_4a3c895b20.jpg" alt="Boo"&gt;&lt;/p&gt;
&lt;p&gt;In an effort to fix the issue, I bought another game that runs on the same &lt;a href="http://en.wikipedia.org/wiki/CP_System"&gt;Capcom CPS1&lt;/a&gt; hardware that you should all know and love: &lt;a href="http://en.wikipedia.org/wiki/Street_Fighter_II:_Champion_Edition"&gt;Street Fighter II: Champion Edition&lt;/a&gt;. I don&amp;rsquo;t need to say much about this game.&lt;/p&gt;
&lt;p&gt;A CPS1 game has 3 parts: An &amp;ldquo;A&amp;rdquo; board which contains the CPU (&lt;a href="http://en.wikipedia.org/wiki/Motorola_68000"&gt;68000&lt;/a&gt;) and other hardware; a &amp;ldquo;B&amp;rdquo; board that contains the ROMs for the specific game; and a &amp;ldquo;C&amp;rdquo; board that contains a protection chip. The reason I bought SF II CE is because the &amp;ldquo;A&amp;rdquo; and &amp;ldquo;C&amp;rdquo; boards are compatible with Strider. After getting it and swapping the &amp;ldquo;A&amp;rdquo; and &amp;ldquo;C&amp;rdquo; boards, Strider &lt;em&gt;still&lt;/em&gt; has graphical issues, which means that it is either a bad graphics mask ROM, or the &amp;ldquo;B&amp;rdquo; board itself is bad. From swapping some of the graphics ROMs around and poking around with a &lt;a href="http://www.amazon.com/Elenco-Electronics-LP-560-Logic-Probe/dp/B000Z9HAP4/ref=sr_1_1?ie=UTF8&amp;amp;qid=1337659715&amp;amp;sr=8-1"&gt;logic probe&lt;/a&gt;, it looks like in my case the &amp;ldquo;B&amp;rdquo; board is bad and has bad connections. Unfortunately, the &amp;ldquo;B&amp;rdquo; boards from SF II CE and Strider are not compatible, so I might need to pick up yet another great Capcom CPS1 game like Final Fight or Ghouls &amp;rsquo;n Ghosts to fix the issue.&lt;/p&gt;
&lt;p&gt;Still, the arcade Strider with vertical lines running through the screen is still &lt;strong&gt;FAR&lt;/strong&gt; better than the crappy Amiga port!&lt;/p&gt;</description></item><item><title>CPS-2 Suicide Batteries</title><link>https://pdp.dev/posts/cps-2-suicide-batteries/</link><pubDate>Mon, 05 Mar 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/cps-2-suicide-batteries/</guid><description>&lt;p&gt;Today, I changed the suicide batteries on my &lt;a href="http://en.wikipedia.org/wiki/CP_System_II"&gt;Capcom CPS-2 boards&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Each CPS-2 &amp;ldquo;B&amp;rdquo; board contains a battery that is used to keep a volatile memory powered that stores decryption keys required to run the game. Since &lt;a href="http://en.wikipedia.org/wiki/CP_System"&gt;Capcom CPS-1&lt;/a&gt; games were heavily bootlegged (which is why there were all kinds of &lt;a href="http://www.youtube.com/watch?v=FcFopsUC9XY"&gt;wacky Street Fighter II variants&lt;/a&gt;), Capcom took some pretty drastic measures to prevent bootlegs of CPS-2 games.&lt;/p&gt;
&lt;p&gt;Basically, if the battery dies, the decryption keys are lost and the game can no longer be played, hence the term &amp;ldquo;suicide battery&amp;rdquo; since the game basically kills itself. I have two CPS-2 &amp;ldquo;B&amp;rdquo; boards: &lt;a href="http://en.wikipedia.org/wiki/Mars_Matrix"&gt;Mars Matrix&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Giga_Wing"&gt;Giga Wing&lt;/a&gt;. I got them both from Japan and have no idea when the battery was changed, so I figured I should change them as soon as I could.&lt;/p&gt;
&lt;p&gt;I bought some &lt;a href="http://www.jammaboards.com/store/arcade-pcb-mods-parts/cps-2-3-parts-service/"&gt;replacement batteries&lt;/a&gt;, opened up my boards and took a deep breath. It was a little stressful because if you do something wrong, you can ruin your games. Once the existing battery is desoldered, the clock is ticking and you need to get the new battery wired up ASAP. Capacitors on the board will hold a charge for a few minutes while you change the battery, but if they run out of juice, those decryption keys will be lost and the game will be ruined.&lt;/p&gt;
&lt;p&gt;Thankfully, the task itself is really easy. I heated up both my soldering iron and my &lt;a href="http://www.amazon.com/ECG-J-045-DS-Watt-Desoldering-Iron/dp/B00068IJSG/ref=sr_1_1?ie=UTF8&amp;amp;qid=1330917550&amp;amp;sr=8-1"&gt;desoldering iron&lt;/a&gt;. Use the desoldering iron to desolder and remove the old battery. Stick the new battery&amp;rsquo;s wires through the holes on the PCB, then solder it into place. Screw everything back together, then power up the game and take a deep breath. Thankfully, both of my games still work. Guidance says to change the batteries every 5 years, so I won&amp;rsquo;t have to worry about it again until 2017.&lt;/p&gt;
&lt;p&gt;If I had screwed something up, thankfully the encryption for the CPS-2 was broken in 2001. This has led to interesting developments, including being able to play CPS-2 games in MAME, as well as &lt;em&gt;resurrect dead boards&lt;/em&gt;. These boards are said to have been &amp;ldquo;phoenixed&amp;rdquo; since they have been revived from death, however some view phoenixes games as bootlegs since the EEPROMs have been swapped for non-official versions. I&amp;rsquo;m glad that I was able to not ruin my boards, but if I had I would&amp;rsquo;ve gladly used the phoenix edition EEPROMs to revive them. At the end of the day, I just want to be able to play the games&amp;hellip;&lt;/p&gt;</description></item><item><title>Neo-Geo</title><link>https://pdp.dev/posts/neo-geo/</link><pubDate>Mon, 05 Mar 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/neo-geo/</guid><description>&lt;p&gt;Introduced in 1990, the &lt;a href="http://en.wikipedia.org/wiki/Neo_Geo_(system)"&gt;Neo Geo&lt;/a&gt; was very unique in that it was both an arcade platform and a home console. Since the home console hardware was exactly the same as the arcade hardware, it was finally possible to truly have arcade games at home. However the home console was ridiculously expensive at $649 and individual games were around $200, about the same as the full Genesis or SNES consoles from the time.&lt;/p&gt;
&lt;p&gt;I wanted one so bad when I was a kid. I concocted all sorts of schemes that involved me combining Christmas and birthday gifts across &lt;strong&gt;multiple years&lt;/strong&gt; and doing tons of chores in hopes of getting one.&lt;/p&gt;
&lt;p&gt;Thankfully, my parents were sane and didn&amp;rsquo;t listen to my wishes. If they had, I would probably still have to mow their lawn (which now would involve air travel) and still wouldn&amp;rsquo;t be able to receive any gifts from them. Plus, if they got me one I would have been one of those spoiled brats with a Neo Geo. I was already that spoiled brat with an Amiga, so if I got a Neo Geo too that would have just been absurd.&lt;/p&gt;
&lt;p&gt;My desires were soon replaced with something else, and the world moved on. But… Neo Geo is still cool, and I&amp;rsquo;ve always kind of wanted one. Since the home console Neo Geo (or AES) was so expensive and not a huge success, it is still fairly rare and expensive. However, the arcade hardware (or MVS) was a huge success and is really common. Since these days I like arcade hardware, I bought a Neo Geo MVS motherboard and some games. It&amp;rsquo;s awesome!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2160_hu_93b9f7022f334815.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;</description></item><item><title>Ketsui 1-ALL 1cc</title><link>https://pdp.dev/posts/ketsui-1-all-1cc/</link><pubDate>Thu, 23 Feb 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/ketsui-1-all-1cc/</guid><description>&lt;p&gt;Clearing the first loop of &lt;a href="http://en.wikipedia.org/wiki/Ketsui"&gt;Ketsui&lt;/a&gt; in one credit has been a goal of mine for a long time. I dedicated a whole month to trying to pull it off on the XBox 360 port, then I &lt;a href="https://pdp.dev/posts/cave-pgm-boards/"&gt;got the PCB&lt;/a&gt; and put more time into it and came insanely close on the last boss. Then I gave up for a while.&lt;/p&gt;
&lt;p&gt;Last night, after almost 2 years of playing the game off and on, I finally did it! I even captured it on video, for the most part. &lt;strong&gt;Protip:&lt;/strong&gt; if you&amp;rsquo;re going to record something important on your iPhone, turn on airplane mode, otherwise a phone call will cause the video to stop recording.&lt;/p&gt;
&lt;p&gt;Yep, I got a phone call in the middle of stage 4, which cut off my video. It&amp;rsquo;s a bummer, but here&amp;rsquo;s what I was able to capture.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2101_hu_12924d7076ccb60c.jpg" width="600" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;Not my best score, but I bombed a lot and played it safe.&lt;/p&gt;
&lt;p&gt;Ketsui is one of my favorite games of all time. First, the scoring system is straightforward and encourages really aggressive play by pushing you to destroy enemies while being as close as possible to them, which has influenced and improved how I play pretty much every other shooting game. Secondly, the art style and &lt;a href="http://www.youtube.com/watch?v=z472pIce5CY"&gt;music&lt;/a&gt; are fantastic. Lastly, the bullet patterns are great and fun to dodge. Good bullet patterns are like puzzles to decipher and make you want to play more and find routes through them. Bad bullet patterns make you feel like they&amp;rsquo;re cheap and impossible, which just make you want to give up. Ketsui is full of great bullet patterns.&lt;/p&gt;
&lt;p&gt;Now I really want to capture a full video&amp;hellip;&lt;/p&gt;</description></item><item><title>Amiga to Jamma</title><link>https://pdp.dev/posts/amiga-to-jamma/</link><pubDate>Sun, 19 Feb 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/amiga-to-jamma/</guid><description>&lt;p&gt;Growing up, my brother and I had an &lt;a href="http://en.wikipedia.org/wiki/Amiga_2000"&gt;Amiga 2000&lt;/a&gt;. That computer got a lot of use: we played a lot of games, called a lot of BBSs on our 2400 baud modem, and listened to &lt;a href="http://en.wikipedia.org/wiki/MOD_music"&gt;MOD music&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Originally launched in 1985, the &lt;a href="http://en.wikipedia.org/wiki/Amiga"&gt;Commodore Amiga&lt;/a&gt; was years ahead of all other computers and game consoles in terms of graphics and sound. I first saw an Amiga at a neighbor&amp;rsquo;s house and I vividly remember the first two games I saw: &lt;a href="http://www.youtube.com/watch?v=1sMJq_Xxnjc"&gt;Sword of Sodan&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=dSE5LFdOtQI"&gt;Dragon&amp;rsquo;s Lair&lt;/a&gt;. Compared to the NES games we were playing, those games were pretty impressive.&lt;/p&gt;
&lt;p&gt;That Amiga 2000 from my youth eventually broke, so one day when feeling nostalgic I found an &lt;a href="http://en.wikipedia.org/wiki/Amiga_1000"&gt;Amiga 1000&lt;/a&gt; on craigslist so that I could still play all those great games and have a reason to keep all those 3.5&amp;quot; 880k floppies. Recently however, the monitor for the Amiga stopped showing blue on its RGB input, leaving only red and green and making everything yellow. However, an Amiga monitor is basically an arcade monitor, which means I can hook it up to my cabinet or &lt;a href="https://pdp.dev/posts/playing-arcade-games-with-no-cabinet/"&gt;supergun&lt;/a&gt;!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2046_hu_1b0ca920052415b9.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;Since the Amiga has its own power supply and sound output, all I needed to wire up was the video output and the controls to the JAMMA edge. Here are the pinouts for the Amiga side of things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://old.pinouts.ru/Video/C1084dd.shtml"&gt;Video pinout&lt;/a&gt; - Male DB9, wire R, G, B, and Composite Sync to the corresponding video contacts on the fingerboard&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://old.pinouts.ru/Inputs/JoystickAtari2600_pinout.shtml"&gt;Joystick pinout&lt;/a&gt; - Female DB9, wire the directions, button, and ground to the control contacts on fingerboard&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It works great and I can basically treat my Amiga like another arcade board! Just plug it into the JAMMA harness and play.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2089_hu_15ea3957e0715be5.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;</description></item><item><title>Mushihimesama Maniac 1CC</title><link>https://pdp.dev/posts/mushihimesama-maniac-1cc/</link><pubDate>Sat, 11 Feb 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mushihimesama-maniac-1cc/</guid><description>&lt;p&gt;YES! I was able to pull off a 1CC of Mushihimesama Maniac mode!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/wnka/6855156109/"&gt;&lt;img src="http://farm8.staticflickr.com/7194/6855156109_8153126948.jpg" alt="Mushihimesama Maniac 1CC!!!!!!"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This run started off really poorly with a silly death on stage 1, but I kept going and surprisingly pulled off the 1CC! I got to the last boss with ZERO lives left and only 1 bomb so I didn&amp;rsquo;t have a lot of hope, but I very strategically dropped that bomb and was able to take the last boss DOWN.&lt;/p&gt;</description></item><item><title>Playing Arcade Games with no Cabinet</title><link>https://pdp.dev/posts/playing-arcade-games-with-no-cabinet/</link><pubDate>Sat, 04 Feb 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/playing-arcade-games-with-no-cabinet/</guid><description>&lt;p&gt;A &lt;a href="http://en.wikipedia.org/wiki/SuperGun"&gt;SuperGun&lt;/a&gt; sounds way cooler than it is. All it does is allow you to play arcade games without an arcade cabinet.&lt;/p&gt;
&lt;p&gt;But I actually have an arcade cabinet, so why would I need a SuperGun? Well, my arcade cabinet is currently configured for vertical games, meaning the monitor is rotated such that it is taller than it is wide. Since I play a lot of vertically scrolling shooters, this is necessary. However, there are a bunch of great horizontal arcade games that I want to play as well. My Astro City allows for the monitor to be rotated, but it&amp;rsquo;s kind of involved and I don&amp;rsquo;t really want to manhandle my monitor every time I want to play a horizontal game. So, I built a SuperGun.&lt;/p&gt;
&lt;p&gt;This was SuperEasy. I already had an RGB capable monitor due to my &lt;a href="blog/2011/05/sideways-monitor-iterations/"&gt;past approximations of an arcade cabinet&lt;/a&gt;, so all I had to do was wire that up to a JAMMA harness.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2025_hu_91bc4e82fa79d918.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;So, what&amp;rsquo;s involved?&lt;/p&gt;
&lt;p&gt;All an arcade board needs is something to give it power, joystick inputs, and output its video and audio signals. That&amp;rsquo;s it. An arcade cabinet provides all these things, however its easy to provide these things using other components. Here is what you&amp;rsquo;ll need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JAMMA Harness:&lt;/strong&gt; This is the plug that an arcade board will plug into. &lt;a href="http://www.jammaboards.com/store/jamma-full-cabinet-wiring-harness-loom/prod_146.html"&gt;Here is a full loom&lt;/a&gt; that will allow for easy wiring to your components.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2038_hu_bcc98fee472e65b3.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Power:&lt;/strong&gt; &lt;a href="http://www.jammaboards.com/store/15a-arcade-switching-power-supply-with-digital-display-110w/prod_251.html"&gt;This power supply from jammaboards.com&lt;/a&gt; is cheap and completely adequate for supplying +5v, -5v and +12v to an arcade board.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2039_hu_ea21ef8e10ce8599.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Display:&lt;/strong&gt; Any RGB monitor that is capable of 15.75khz will work. Most modern monitors are not capable of this scan rate, but you can find a cheap old one that is. I used a Sony PVM-14N6U that I got off eBay for cheap.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1994_hu_2205f728fb5055b3.jpg" width="600" height="600" /&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sound:&lt;/strong&gt; Since JAMMA boards include a sound amp, you can use &lt;a href="http://www.amazon.com/Pyramid-NS60-Level-Impedance-Adaptor/dp/B000EFKK5G/ref=sr_1_1?ie=UTF8&amp;amp;qid=1327798217&amp;amp;sr=8-1"&gt;a high-to-low converter&lt;/a&gt; to give RCA line outputs that you can plug into pretty much anywhere. Just take the &amp;ldquo;Speaker +&amp;rdquo; and &amp;ldquo;Speaker -&amp;rdquo; wires coming off the JAMMA loom and connect them to the wires of your high-to-low converter. Since JAMMA is mono, you just send the - and + wire from the loom to both wires of the converter so that sound will come out of both speakers.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2040_hu_4a7aebbf31fcc98c.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Controls:&lt;/strong&gt; I hooked my controls up to a joystick I had laying around which meant just hooking the quick disconnects from the loom to the buttons and joystick. You can build your own controls using parts from &lt;a href="http://www.lizardlick.com"&gt;here&lt;/a&gt; that will hook into the quick disconnects provided by the loom.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_2037_hu_50019cf7dc0ff96a.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;It takes some time to hook all these things up, but it&amp;rsquo;s fairly straightforward and really cool to see once it&amp;rsquo;s all working. If you want to get into arcade collecting, this is an easy way to build a set up that will let you play games or just test out boards. I&amp;rsquo;ll be using mine for playing horizontal games, or having two vertical setups for when friends are over.&lt;/p&gt;</description></item><item><title>New Arrivals</title><link>https://pdp.dev/posts/new-arrivals/</link><pubDate>Sun, 29 Jan 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/new-arrivals/</guid><description>&lt;p&gt;MORE GAMES! I won these on &lt;a href="http://category.auctions.yahoo.co.jp/list/%E3%82%B2%E3%83%BC%E3%83%A0%E5%9F%BA%E6%9D%BF-%E3%82%A2%E3%83%BC%E3%82%B1%E3%83%BC%E3%83%89%E3%82%B2%E3%83%BC%E3%83%A0-%E3%82%B2%E3%83%BC%E3%83%A0-%E3%81%8A%E3%82%82%E3%81%A1%E3%82%83-%E3%82%B2%E3%83%BC%E3%83%A0/2084047782/?fr=auc-prop&amp;amp;tab_ex=commerce&amp;amp;p=%E3%82%B2%E3%83%BC%E3%83%A0%E5%9F%BA%E6%9D%BF"&gt;Yahoo Auctions Japan&lt;/a&gt; and used &lt;a href="http://rinkya.com/"&gt;Rinkya&lt;/a&gt; for proxy bidding.&lt;/p&gt;
&lt;h2 id="ibara"&gt;Ibara&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/ibara_hu_fb8c41c13086ec05.jpg" width="450" height="567" /&gt;
&lt;/figure&gt;
&lt;p&gt;My second &lt;a href="http://system16.com/hardware.php?id=868"&gt;Cave SH-3&lt;/a&gt; game, I got a good deal on this as it includes PCB, box, instruction strip, POP, and dip switch flyer.&lt;/p&gt;
&lt;h2 id="volfied"&gt;Volfied&lt;/h2&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/volfied_hu_e3a8005e81b0c90b.jpg" width="332" height="207" /&gt;
&lt;/figure&gt;
&lt;p&gt;My first &lt;a href="http://system16.com/hardware.php?id=650"&gt;Taito&lt;/a&gt; game that I only got because it was so cheap, but its actually a pretty excellent game. Its basically an updated version of &lt;a href="http://en.wikipedia.org/wiki/Qix"&gt;Qix&lt;/a&gt;, which is a game I really like and this version is a cool update.&lt;/p&gt;
&lt;h2 id="mars-matrix"&gt;Mars Matrix&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=rRhFYV4-pBQ"&gt;GO PLAY MARS MATRIX&lt;/a&gt;. By &lt;a href="http://en.wikipedia.org/wiki/Takumi_Corporation"&gt;Takumi&lt;/a&gt;, this is my first &lt;a href="http://en.wikipedia.org/wiki/CP_System_II"&gt;CPS-2&lt;/a&gt; game. I played this on Dreamcast a ton and am really glad to have the arcade version.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/marsmatrix_hu_ea2bcf0027e78774.jpg" width="323" height="485" /&gt;
&lt;/figure&gt;
&lt;h2 id="giga-wing"&gt;Giga Wing&lt;/h2&gt;
&lt;p&gt;My second &lt;a href="http://en.wikipedia.org/wiki/CP_System_II"&gt;CPS-2&lt;/a&gt; game, another great horizontal shmup by &lt;a href="http://en.wikipedia.org/wiki/Takumi_Corporation"&gt;Takumi&lt;/a&gt;.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/gigawing_hu_29d7bbb2d4d88791.jpg" width="416" height="273" /&gt;
&lt;/figure&gt;
&lt;p&gt;So glad to keep adding great games to my collection!&lt;/p&gt;</description></item><item><title>Seven Years</title><link>https://pdp.dev/posts/seven-years/</link><pubDate>Mon, 23 Jan 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/seven-years/</guid><description>&lt;p&gt;Seven years ago today on January 22nd 2005, I met my awesome wife.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/kp084_hu_a9e0da19cc7f3438.jpg" width="600" height="399" /&gt;
&lt;/figure&gt;</description></item><item><title>Mushihimesama Maniac Mode</title><link>https://pdp.dev/posts/mushihimesama-maniac-mode/</link><pubDate>Wed, 18 Jan 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mushihimesama-maniac-mode/</guid><description>&lt;p&gt;Lately I&amp;rsquo;ve been doing more cabinet maintenance and improvements than actually playing any games seriously. I&amp;rsquo;ve swapped all of my boards in and out to check how they looked after &lt;a href="https://pdp.dev/posts/astro-city-monitor-calibration/"&gt;recalibrating my monitor&lt;/a&gt;, and after playing a few credits of everything I have I&amp;rsquo;ve decided to leave Mushihimesama in the cab.&lt;/p&gt;
&lt;p&gt;Now, I previously &lt;a href="https://pdp.dev/posts/mushihimesama-1cc/"&gt;1CC&amp;rsquo;d Mushihimesama Original mode&lt;/a&gt;, however that&amp;rsquo;s the easiest mode of the game. The scoring is really simple (don&amp;rsquo;t die) and it really wasn&amp;rsquo;t too challenging to get the 1CC.&lt;/p&gt;
&lt;p&gt;Maniac mode has bullet patterns that are a lot more dense and interesting. On top of that, the scoring system is also more complicated and has the potential for huge scores. High level players get scores in the BILLIONS. Scoring is based around chaining enemies and pushing counter values higher. There are multiple counters that you need to monitor and use different attacks in different scenarios to push the counter values up. This &lt;a href="http://www.cave-stg.com/forum/index.php?topic=4.msg4#msg4"&gt;thread&lt;/a&gt; does a good job explaining the different attacks and when to use them. Usually I don&amp;rsquo;t like chaining based scoring systems but the incorporation of the shot types and child counters make for interesting gameplay.&lt;/p&gt;
&lt;p&gt;I recently got a &lt;a href="http://www.amazon.com/Studio-Neat-Tripod-Mount-iPhone/dp/B0052G679K/ref=sr_1_1?ie=UTF8&amp;amp;qid=1326918775&amp;amp;sr=8-1"&gt;tripod mount for my iPhone&lt;/a&gt; so I recorded some games to test it out. I was able to capture my best game of Maniac mode yet, which I have posted to YouTube. The quality is surprisingly good, however the sound is a little quiet. &lt;strong&gt;Score:&lt;/strong&gt; 77,916,281.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/cXPzP3nm3Do?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;As long as I don&amp;rsquo;t go overboard with trying to do crazy scoring tricks, which I am very prone to do, I can reach stage 4 consistently. Stage 4 and 5 are pretty rocky, mainly because I haven&amp;rsquo;t been able to play them much. This is one disadvantage of playing on a PCB: no practice modes!&lt;/p&gt;
&lt;p&gt;However, Mushihimesama was recently ported to iOS as &amp;lsquo;&lt;a href="http://itunes.apple.com/us/app/bug-princess/id455202208?mt=8"&gt;Bug Princess&lt;/a&gt;&amp;rsquo; for portable on the go gaming action. Practicing can now happen pretty much anywhere! You have to crank the difficulty up to &amp;lsquo;Hell&amp;rsquo; to get the arcade bullet patterns, but all the bullets are there. I counted.&lt;/p&gt;
&lt;p&gt;Seriously though, &amp;lsquo;Bug Princess&amp;rsquo;?!&lt;/p&gt;</description></item><item><title>Nostalgic Capcom PCBs</title><link>https://pdp.dev/posts/nostalgic-capcom-pcbs/</link><pubDate>Sun, 15 Jan 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/nostalgic-capcom-pcbs/</guid><description>&lt;p&gt;I picked up two games this week: &lt;a href="http://en.wikipedia.org/wiki/Commando_(video_game)"&gt;Commando&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Gun.Smoke"&gt;Gun.Smoke&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Growing up I had both of these games on NES and I played them in the arcade whenever I could, always dreaming of having the arcade version in my house. Well now that I&amp;rsquo;m old and apparently going through some sort of mid-life crisis, I decided to pick these up off eBay. Pretty much every arcade you went to in the 80s had a Commando machine, however I only remember seeing a Gun.Smoke machine once at a Wal-Mart near my grandma&amp;rsquo;s house in &lt;a href="http://en.wikipedia.org/wiki/Caldwell,_Texas"&gt;Caldwell, Texas&lt;/a&gt;. I&amp;rsquo;m guessing the western theme made it a good choice for a Wal-Mart in Texas.&lt;/p&gt;
&lt;p&gt;So other than nostalgia, are these games any good? Gun.Smoke is actually a decent &lt;a href="http://en.wikipedia.org/wiki/Shoot_em_up"&gt;shmup&lt;/a&gt;: the theme is unique and the 3-button control scheme for firing in different directions works really well. Commando holds up pretty well, but the controls can be frustrating since you only fire in the direction you are facing so you have to do a lot of twitchy joystick work to shoot where you need. This is not a flaw of Commando though since most &lt;a href="http://en.wikipedia.org/wiki/Shoot_em_up#Run_and_gun"&gt;run&amp;rsquo;n&amp;rsquo;gun&lt;/a&gt; style games use this kind of control scheme, but I just don&amp;rsquo;t care for it since it makes deaths feel cheap.&lt;/p&gt;
&lt;p&gt;I totally love the graphical style and music from these games. Clearly this is based on nostalgia, but there&amp;rsquo;s just something about the sprite art and the way the music sounds. Both of these games run on the same hardware platform, which &lt;a href="http://www.system16.com"&gt;system16.com&lt;/a&gt; refers to as the &amp;ldquo;&lt;a href="http://system16.com/hardware.php?id=788"&gt;Capcom Commando Hardware&lt;/a&gt;&amp;rdquo;, probably since Commando was the first game released using this hardware. The sound chip is the &lt;a href="http://en.wikipedia.org/wiki/Yamaha_YM2203"&gt;Yahama YM2203&lt;/a&gt;, which was used in a &lt;a href="http://www.youtube.com/watch?v=JGqfNVqhgv0"&gt;lot&lt;/a&gt; &lt;a href="http://www.youtube.com/watch?v=eo4omnPc_2o"&gt;of&lt;/a&gt; &lt;a href="http://www.youtube.com/watch?v=oP0-yosb7UA"&gt;other&lt;/a&gt; &lt;a href="http://www.youtube.com/watch?v=VTmJJ0lUyQc"&gt;games&lt;/a&gt; from this era.&lt;/p&gt;
&lt;p&gt;One cool thing about owning the real hardware is how gigantic the games are. The Commando board set is &lt;strong&gt;three&lt;/strong&gt; boards connected via ribbon cable, making it the largest game I own and most awkward to handle. Gun.Smoke, despite being the same hardware, is only two boards. This makes for an interesting storage challenge, but it&amp;rsquo;s cool to see all the different chips that were needed to make a game back in 1985. It makes me wonder which board in the set is doing what, and I&amp;rsquo;m tempted to take Commando and just start unplugging things to see what happens.&lt;/p&gt;
&lt;p&gt;Commando PCB:
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/commando_pcb_hu_5d6db7109e7f1a28.jpg" width="600" height="448" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Gun.Smoke PCB:
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/gunsmoke_pcb_hu_ebbc0ef587e16f61.jpg" width="600" height="448" /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;So while I&amp;rsquo;m glad to add these two games to my collection, I&amp;rsquo;ll probably never play either of them seriously. I&amp;rsquo;ll definitely get some mileage out of Gun.Smoke just because it&amp;rsquo;s more my cup of tea than Commando.&lt;/p&gt;</description></item><item><title>Astro City Monitor Calibration</title><link>https://pdp.dev/posts/astro-city-monitor-calibration/</link><pubDate>Sun, 08 Jan 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/astro-city-monitor-calibration/</guid><description>&lt;p&gt;I had always noticed that the monitor on my Astro City was kind of dark and after watching videos of some of the games I had been playing and noticing details that weren&amp;rsquo;t visible on my monitor, I knew I needed to recalibrate. I had fiddled with the adjustments under the control panel, but it didn&amp;rsquo;t make much of a difference.&lt;/p&gt;
&lt;p&gt;To make things better, I followed &lt;a href="http://wiki.arcadeotaku.com/w/How_to_Correctly_Set_Up_Monitor_Colours_and_Brightness"&gt;this article&lt;/a&gt; on the &lt;a href="http://wiki.arcadeotaku.com/w/How_to_Correctly_Set_Up_Monitor_Colours_and_Brightness"&gt;Arcade Otaku wiki&lt;/a&gt; and it made a &lt;strong&gt;huge&lt;/strong&gt; difference. To demonstrate, here&amp;rsquo;s the color test screen from the Mushihimesama service menu. Before, almost half the color levels are not visible:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/bad_hu_b65c57b6ad631ad8.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;After tweaking the &amp;lsquo;SCREEN&amp;rsquo; potentiometer on the monitor flyback and then adjusting the RGB gains, all the spectrum is visible:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/good_hu_93ccf67e2c97f11b.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;I also adjusted the &amp;lsquo;FOCUS&amp;rsquo; potentiometer on the flyback which made things sharper. It&amp;rsquo;s seriously like I have a new monitor and only after doing this did I realize how crappy the settings were before. Previously I had to jack up the RGB gains to get good brightness but that lead to colors bleeding at high intensity. Now the colors are visible at all intensities and since no gains are cranked up the colors stay sharp even when bright. Everything looks so much better!&lt;/p&gt;</description></item><item><title>Marquee Light Replacement</title><link>https://pdp.dev/posts/marquee-light-replacement/</link><pubDate>Mon, 02 Jan 2012 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/marquee-light-replacement/</guid><description>&lt;p&gt;Happy New Year everybody!&lt;/p&gt;
&lt;p&gt;When I got my &lt;a href="https://pdp.dev/posts/sega-astro-city/"&gt;Astro City back in May of 2011&lt;/a&gt;, it was in great shape but it had one issue: the fluorescent lamp for the marquee didn&amp;rsquo;t work. Before I headed back to work I wanted to finally get this fixed, so I spent New Years Day working on it.&lt;/p&gt;
&lt;p&gt;The original fixture required a starter bulb, which was missing when I got the cabinet. The first thing I tried was ordering some &lt;a href="http://www.bulbconnection.com/ViewSIMItem/bcrw/simid/3677/item.html"&gt;FG-1E starter bulbs&lt;/a&gt; and screwing one into the empty socket. This somewhat fixed the problem in that I could get the lamp to start up, but it didn&amp;rsquo;t work without manual intervention since something was wrong with the ballast. I asked around on &lt;a href="http://shmups.system11.org/viewtopic.php?f=6&amp;amp;t=36865"&gt;forums&lt;/a&gt; but with no easy fix, I didn&amp;rsquo;t worry about it too much since I was too busy playing games. Finally, I decided to just replace the whole fixture. I&amp;rsquo;ve seen &lt;a href="http://forum.arcadeotaku.com/viewtopic.php?f=3&amp;amp;t=5691"&gt;others&lt;/a&gt; &lt;a href="http://forum.arcadeotaku.com/viewtopic.php?f=3&amp;amp;t=15564"&gt;talk&lt;/a&gt; about doing this but haven&amp;rsquo;t found a comprehensive guide of how to do it, so I figured I&amp;rsquo;d document what I did to replace mine.&lt;/p&gt;
&lt;p&gt;First thing I did was remove the monitor shroud. Remove the metal panel on the back of the cabinet that covers the speakers and lamp, then underneath the control panel unhook the speaker AMP-UP connector (in green) and three screws (in red) as shown below.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_18791_hu_18d94b37a3e7f2f7.jpg" width="600" height="231" /&gt;
&lt;/figure&gt;
&lt;p&gt;With the shroud removed, we now have easy access to the fluorescent fixture and can remove it.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_18621_hu_a112561641e7d2c7.jpg" width="600" height="350" /&gt;
&lt;/figure&gt;
&lt;p&gt;You can see there are two wires running out of the fixture, one pink and one gray. Follow these down to a connector inside the cabinet that should be reachable through the service door (where you put PCBs) if you lay on your back and look up inside the cab. Once you unhook that connector, you can unscrew the four screws for the fixture and set it aside. With the fixture removed, now would be a good opportunity to do some cleaning around the mounting brackets.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1869_hu_4f88188eab157334.jpg" width="600" height="332" /&gt;
&lt;/figure&gt;
&lt;p&gt;Now we&amp;rsquo;re ready to wire up the new fixture. I bought a &lt;a href="http://www.amazon.com/16687-24-Inch-Premium-Fluorescent-Fixture/dp/B001ET6DC0/ref=sr_1_3?ie=UTF8&amp;amp;qid=1325466902&amp;amp;sr=8-3"&gt;24-inch direct wire fixture off Amazon&lt;/a&gt;, however here in the US things are 120V while the power coming off the power supply inside the cab is 100V since this is a Japanese cabinet. I plug my cabinet into step-down converter to convert 120V to 100V, so before I went through all the trouble of wiring up the light only to find it not work, I figured I would see what happens with the fixture I bought when it&amp;rsquo;s fed 100V.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now, a bit of a disclaimer&lt;/strong&gt;: I&amp;rsquo;m not an electrician and I don&amp;rsquo;t really know what I&amp;rsquo;m doing. I&amp;rsquo;m not sure if anything I&amp;rsquo;m doing here is a terrible idea and/or risky. I talked to some folks who know a little about wiring and voltages and they made it sound like nothing to worry about, so I trusted them. However, I maybe shouldn&amp;rsquo;t have and should have consulted a professional. If you do know what you&amp;rsquo;re doing and are finding what I&amp;rsquo;m saying to be stupid and dangerous, please let me know!&lt;/p&gt;
&lt;p&gt;The direct wire fixture has three wires: white (neutral), black (hot), and green (ground). I cut a three prong cord off of a cheap power strip and wired up the three wires so that I can plug the fixture into my step-down converter and make sure that it will work on 100V. First I tested it on a wall socket to check my wiring and it worked fine, then I plugged it into the step-down converter and it worked fine! Whew!&lt;/p&gt;
&lt;p&gt;Now we&amp;rsquo;re ready to wire the new fixture into where the old one connected to the power supply. I cut the pink and gray wires off the old fixture so that I could reuse the connector and wire. From the fixture, wire the pink wire to the black wire and the gray wire to the white wire. What about ground? The old fixture has no ground wire, but the new one does. Thankfully there are quite a few ground points within the cab, so you can just wire it to one of those. I crimped a ring terminal connector to the ground wire and hooked it to a post just inside the service door by the front left leg. The ground wire for the light is the red one:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1880_2_hu_d1bdba85bb5e06ba.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;Next, the new fixture didn&amp;rsquo;t have any mounting holes, so I need to drill some. I just held it up to the bracket and marked where the holes needed to go, then used a punch on those spots to help guide the bit. With those drilled, the new fixture can now be mounted and things can be reassembled. Viola!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1875_2_hu_4e3fffa0ea322412.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1878_hu_dccbaa265ce96615.jpg" width="600" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;I can&amp;rsquo;t believe I went for so long without a working light! The cab now really ties the room together.&lt;/p&gt;</description></item><item><title>Easy Astro City Speaker Upgrade</title><link>https://pdp.dev/posts/easy-astro-city-speaker-upgrade/</link><pubDate>Sat, 24 Dec 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/easy-astro-city-speaker-upgrade/</guid><description>&lt;p&gt;The original Sega speakers that came in my Astro City cabinet sound like crap. They&amp;rsquo;re very tinny and basically have no bass, which just won&amp;rsquo;t do when you&amp;rsquo;re playing Battle Garegga and want to crank the &lt;a href="http://www.youtube.com/watch?v=6jFziuiB0ko"&gt;excellent soundtrack&lt;/a&gt;. Thankfully, others have also found them lacking and there&amp;rsquo;s a pretty easy upgrade, documented &lt;a href="http://www.neo-geo.com/forums/showthread.php?177596-Astro-City-speakers-sound-like-shit"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To summarize that forum thread, find a pair of Cambridge Soundworks SBS52 PC speakers, pull the drivers out of them and install them in your Astro City. Here&amp;rsquo;s a &lt;a href="http://www.ebay.com/sch/i.html?_from=R40&amp;amp;_trksid=m570.l1313&amp;amp;_nkw=cambridge+sbs52&amp;amp;_sacat=See-All-Categories"&gt;link to a search on eBay&lt;/a&gt; for the speakers.&lt;/p&gt;
&lt;p&gt;Once you get the speakers, you need to disassemble them. I wrestled with this since there is a hidden screw on the front of each speaker under the speaker grill holding the enclosure together. Thankfully getting the grill off is easy, just jam a flatblade screwdriver between the grill and the plastic and wiggle it outward, then remove the screw. Once you get all the screws out, open the enclosure and you&amp;rsquo;ll see this:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/speaker11_hu_cc4b94a621516dbe.jpg" width="183" height="299" /&gt;
&lt;/figure&gt;
&lt;p&gt;Next, use your soldering iron to desolder the two wires that are going to the driver. Make sure that you remove the existing solder from the posts on the driver, otherwise the quick disconnects for the speakers on the Astro City will not fit due to the excess solder. Then unscrew the driver from the housing and replace the one already in your cabinet. Repeat for the other speaker and you&amp;rsquo;re in business!&lt;/p&gt;
&lt;p&gt;Here is a new and old speaker side by side:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/speaker2_hu_d427fea16b380c4b.jpg" width="300" height="172" /&gt;
&lt;/figure&gt;
&lt;p&gt;The old speaker is the one on the right with the Sega logo.&lt;/p&gt;
&lt;p&gt;This was a good and easy first step in making the cabinet sound better, however in the future I might look at more speaker options. There&amp;rsquo;s plenty of room in the cab for a subwoofer and I really would like to be able to use headphones. &lt;a href="http://www.emphatic.se/?p=202"&gt;This blog post&lt;/a&gt; talks about putting &lt;a href="http://www.amazon.com/Logitech-S220-Speaker-System-Subwoofer/dp/B000RQSGYO"&gt;Logitech S220&lt;/a&gt; speakers (which I conveniently have lying around) inside a Taito Egret II cabinet, so I might try doing something similar with my Astro City. I just need to figure out how to fit the speakers in the existing speaker cavity and where I can put the wired remote.&lt;/p&gt;</description></item><item><title>Happy Holidays from Astro City</title><link>https://pdp.dev/posts/happy-holidays-from-astro-city/</link><pubDate>Wed, 14 Dec 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/happy-holidays-from-astro-city/</guid><description>
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/xmas_astro_hu_cb250fdd2d00fd57.jpg" width="600" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;Happy Holidays everybody!&lt;/p&gt;</description></item><item><title>Paewang Revolution</title><link>https://pdp.dev/posts/paewang-revolution/</link><pubDate>Wed, 14 Dec 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/paewang-revolution/</guid><description>&lt;p&gt;In the past, I had padhacked a 360 controller so that I could wire it up to my Astro City cabinet. This is a pain to do and I&amp;rsquo;ve had 2 of them die on me for no apparent reason.&lt;/p&gt;
&lt;p&gt;Thankfully, folks want to mod and build joysticks so there are a few alternatives that don&amp;rsquo;t require ripping apart a controller. One is called the Paewang Revolution and it is compatible with 360, PS3, and PC. Perfect!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/paewang1_hu_49e7ffbc7aae1ade.jpg" width="600" height="448" /&gt;
&lt;/figure&gt;
&lt;p&gt;I bought this from &lt;a href="http://www.focusattack.com/"&gt;Focus Attack&lt;/a&gt;, which is a great shop for genuine arcade joystick parts. Their &lt;a href="http://www.focusattack.com/paewang/"&gt;page for the Paewang&lt;/a&gt; shows great tutorials and info for getting it working, even &lt;a href="http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=Y_UiBgVWgzE"&gt;a video&lt;/a&gt; that completely breaks down how to solder up your stick and buttons to the PCB.&lt;/p&gt;
&lt;p&gt;Following all this made the soldering a piece of cake. I ran into some small problems with the small button contact points because I used larger gauge wire than I should have, but other than that it was totally straightforward. Time for some 360 Cave port playin'!&lt;/p&gt;</description></item><item><title>Gawker 0.8.4</title><link>https://pdp.dev/posts/gawker-0-8-4/</link><pubDate>Sun, 27 Nov 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gawker-0-8-4/</guid><description>&lt;p&gt;A new version of Gawker has been &lt;a href="http://gawker.sourceforge.net/Download.html"&gt;released&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;You can use &amp;lsquo;Check for Updates&amp;rsquo; from within Gawker to get this new update.&lt;/p&gt;
&lt;p&gt;This release fixes desktop recording on OS X Lion. It also moves the minimum OS requirement up to OS X Snow Leopard. This means no more support for PowerPC Macs.&lt;/p&gt;
&lt;p&gt;The source code for this version is in the git repository and has been tagged &amp;ldquo;&lt;a href="http://gawker.git.sourceforge.net/git/gitweb.cgi?p=gawker/gawker;a=shortlog;h=refs/tags/v.0.8.4"&gt;v0.8.4&lt;/a&gt;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;</description></item><item><title>Gawker Videos</title><link>https://pdp.dev/posts/gawker-videos/</link><pubDate>Mon, 12 Sep 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gawker-videos/</guid><description>&lt;p&gt;Sometimes I get videos from folks that use Gawker and I always enjoy seeing what people create with it. Here are some of my favorites:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rainbow Bridge Timelapse&lt;/strong&gt; - Will Hains&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/iimW_AfrLvQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Lego Time Lapse&lt;/strong&gt; - Keshav Saharia&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/61M8u7pJoTw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Rainbow flowers&lt;/strong&gt; - &lt;a href="http://librariansmatter.com/blog/2011/01/01/how-to-make-rainbow-flowers-1-minute-movie/"&gt;Kathryn Greenhill&lt;/a&gt;&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/4r0k7olJV5A?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Sundre Plaza&lt;/strong&gt; - &lt;a href="http://starlord.net/2010/09/time-lapse-video-recorded-today-8-hours-39-seconds/"&gt;Christopher Calhoun&lt;/a&gt;&lt;/p&gt;
&lt;div
style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe
src="https://player.vimeo.com/video/14893052?dnt=0"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allow="fullscreen"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Flower in bloom&lt;/strong&gt; - Garrett Freier&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/bUdQW4USF_A?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Food Chains&lt;/strong&gt; - Michael Stenta&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/SMgHejm3Vg8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;If you&amp;rsquo;ve created something with Gawker you want to share, send it along!&lt;/p&gt;</description></item><item><title>Cave PGM Boards</title><link>https://pdp.dev/posts/cave-pgm-boards/</link><pubDate>Wed, 17 Aug 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/cave-pgm-boards/</guid><description>&lt;p&gt;My PCB collection continues to grow and I picked up two more Cave boards: &lt;a href="http://en.wikipedia.org/wiki/Ketsui:_Kizuna_Jigoku_Tachi"&gt;Ketsui&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Espgaluda"&gt;Espgaluda&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/wnka/6034369116/"&gt;&lt;img src="http://farm7.static.flickr.com/6129/6034369116_3b56a7ba77.jpg" alt="PGM boards"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;They look similar since they both run on the &lt;a href="http://en.wikipedia.org/wiki/PolyGame_Master"&gt;PGM&lt;/a&gt; hardware platform.&lt;/p&gt;
&lt;p&gt;I already own the Ketsui 360 port but I wanted the real deal since it&amp;rsquo;s my favorite shmup. After getting the PCB I started playing quite a bit and I got SO close to pulling off a 1-ALL on the PCB, I had the stage 5 boss down to about 4 pixels of health when I sadly got blowed up. One day I will be victorious&amp;hellip; hopefully.&lt;/p&gt;
&lt;p&gt;I picked up Espgaluda since I used to play it at the now-defunct Pink Gorilla arcade and always really liked it. It&amp;rsquo;s not as punishing as Ketsui which makes it a nice change of pace, however in the week that I&amp;rsquo;ve had it I already 1CC&amp;rsquo;d it. My score was quite low.&lt;/p&gt;
&lt;p&gt;I think I said in a prior post that I need to &amp;ldquo;chill&amp;rdquo; when it comes to buying more games. Well at this point I&amp;rsquo;m pretty content with what I&amp;rsquo;ve got, so now I probably will actually chill.&lt;/p&gt;</description></item><item><title>Espgaluda 1cc</title><link>https://pdp.dev/posts/espgaluda-1cc/</link><pubDate>Wed, 17 Aug 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/espgaluda-1cc/</guid><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/wnka/6039389004/"&gt;&lt;img src="http://farm7.static.flickr.com/6197/6039389004_9cce058b29.jpg" alt="BAM! Espgaluda 1cc!"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ageha - ALL - 27,387,750&lt;/p&gt;</description></item><item><title>Battle Garegga 3mil</title><link>https://pdp.dev/posts/battle-garegga-3mil/</link><pubDate>Thu, 21 Jul 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/battle-garegga-3mil/</guid><description>&lt;p&gt;I&amp;rsquo;ve been playing Battle Garegga more recently and it&amp;rsquo;s growing on me quite a bit.&lt;/p&gt;
&lt;p&gt;I had been scoring in the 1.6 million range, so my goal was to break the 2 million mark. Tonight I had a game where I not only broke 2 million for the first time, but I broke 3 million!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/wnka/5959641423/"&gt;&lt;img src="http://farm7.static.flickr.com/6030/5959641423_8c01440945.jpg" alt="Goal has been to break 2mil. I broke 3mil."&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Gawker is Lion Compatible (sort of)</title><link>https://pdp.dev/posts/gawker-is-lion-compatible-sort-of/</link><pubDate>Thu, 21 Jul 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gawker-is-lion-compatible-sort-of/</guid><description>&lt;p&gt;Lion was released today and I upgraded my Mac. I did a little testing of Gawker to make sure it still works, and I was glad to see that it does in fact still work for capturing from a camera.&lt;/p&gt;
&lt;p&gt;However, I noticed that capturing from the desktop doesn&amp;rsquo;t seem to work. I&amp;rsquo;ll investigate what is wrong when I get some time.&lt;/p&gt;</description></item><item><title>Mushihimesama 1CC</title><link>https://pdp.dev/posts/mushihimesama-1cc/</link><pubDate>Mon, 11 Jul 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mushihimesama-1cc/</guid><description>&lt;p&gt;Even though I got &lt;a href="https://pdp.dev/posts/new-pcbs/"&gt;new PCBs in June&lt;/a&gt;, I previously had set a &amp;ldquo;1CC &lt;a href="http://en.wikipedia.org/wiki/Ketsui"&gt;Ketsui&lt;/a&gt; in June&amp;rdquo; goal for myself so I didn&amp;rsquo;t spend much time with them. June is over, so did I meet my goal? Unfortunately, no. I got very close and I&amp;rsquo;ll continue the chase soon, but I had to take a break. I didn&amp;rsquo;t touch shmups for about a week or so.&lt;/p&gt;
&lt;p&gt;I had played a few credits of Mushihimesama and gotten a feel for the different modes. I found Original mode to be pretty easy, in fact the first time I ever played the game I was able to get to stage 4 on one credit and soon after was reaching stage 5. But again, due to my prior commitment I didn&amp;rsquo;t put much time into it.&lt;/p&gt;
&lt;p&gt;Tonight I decided to ease myself back into playing and threw Mushihimesama in the Astro City. On about the 4th credit of Original mode I played, I was able to pull off the 1CC!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/wnka/5924728513/"&gt;&lt;img src="http://farm7.static.flickr.com/6022/5924728513_1e8cf6ac22.jpg" alt="Mushihimesama 1CC (original mode)"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>New PCBs</title><link>https://pdp.dev/posts/new-pcbs/</link><pubDate>Sat, 25 Jun 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/new-pcbs/</guid><description>&lt;p&gt;I got two new arcade boards on June 15th: &lt;a href="http://en.wikipedia.org/wiki/Mushihime-sama"&gt;Mushihimesama&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Battle_Garegga"&gt;Battle Garegga&lt;/a&gt;. I got both of these off of &lt;a href="http://category.auctions.yahoo.co.jp/list/%E3%82%B2%E3%83%BC%E3%83%A0%E5%9F%BA%E6%9D%BF-%E3%82%A2%E3%83%BC%E3%82%B1%E3%83%BC%E3%83%89%E3%82%B2%E3%83%BC%E3%83%A0-%E3%82%B2%E3%83%BC%E3%83%A0-%E3%81%8A%E3%82%82%E3%81%A1%E3%82%83-%E3%82%B2%E3%83%BC%E3%83%A0/2084047782/?p=%E3%82%B2%E3%83%BC%E3%83%A0%E5%9F%BA%E6%9D%BF&amp;amp;tab_ex=commerce&amp;amp;fr=auc-prop&amp;amp;slider=0&amp;amp;b=1"&gt;Yahoo Auctions Japan&lt;/a&gt; through &lt;a href="http://www.rinkya.com/index.php"&gt;Rinkya&lt;/a&gt;, a proxy bidding service. I was nervous about the whole proxy bidding process, but it went smoothly and I&amp;rsquo;d use Rinkya again despite their pre-Web 1.0 website.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/wnka/5843179937/"&gt;&lt;img src="http://farm4.static.flickr.com/3481/5843179937_b926c594ef.jpg" alt="Mushihimesama PCB"&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/wnka/5843182913/"&gt;&lt;img src="http://farm6.static.flickr.com/5195/5843182913_2c72e19144.jpg" alt="Mushihimesama"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mushihimesama Futari, which I recently &lt;a href="https://pdp.dev/posts/mushihimesama-futari-1cc/"&gt;1CC&amp;rsquo;d&lt;/a&gt;, is the sequel to Mushihimesama. I had never played it but I liked Futari so much that I wanted to check the original out. So far it&amp;rsquo;s great, I&amp;rsquo;ve been playing Original mode a little and progressing nicely. I can reach the 5th level on 1 credit, but then I get annihilated so a 1cc will take more practice. The board has some pretty astronomical scores saved (even in Ultra mode), so whoever had this board before me was a champ. I don&amp;rsquo;t think I&amp;rsquo;ll ever beat those scores!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/wnka/5843185911/"&gt;&lt;img src="http://farm6.static.flickr.com/5119/5843185911_d4cea45cd2.jpg" alt="Battle Garegga PCB"&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/wnka/5843187795/"&gt;&lt;img src="http://farm6.static.flickr.com/5305/5843187795_be8e296de1.jpg" alt="Battle Garegga"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Battle Garegga is a &lt;a href="http://shmups.system11.org/viewtopic.php?f=5&amp;amp;t=351"&gt;massively complicated game&lt;/a&gt;. I&amp;rsquo;ve played it a little in MAME and really liked the aesthetic and feel (the &lt;a href="http://www.youtube.com/watch?v=Skr8UCEKHKs"&gt;music&lt;/a&gt; is fantastic), so I sprung for the original board. I haven&amp;rsquo;t been playing it much since I&amp;rsquo;ve been focusing more on Mushihimesama, but I&amp;rsquo;m happy to have this in my collection. I&amp;rsquo;ll get around to it soon&amp;hellip;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s getting to the point where I have too many great games to play and no time to play them. I need to put some serious time into these before I grow my collection anymore. There is a &lt;a href="http://en.wikipedia.org/wiki/Raiden_II"&gt;Raiden II&lt;/a&gt; board headed my way, but after that I&amp;rsquo;ll need to chill. Besides, I have a wedding that needs planning.&lt;/p&gt;</description></item><item><title>Dodonpachi Daifukkatsu 1.5 1cc</title><link>https://pdp.dev/posts/dodonpachi-daifukkatsu-1-5-1cc/</link><pubDate>Tue, 31 May 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/dodonpachi-daifukkatsu-1-5-1cc/</guid><description>&lt;p&gt;(NOTE: This technically is not a 1CC, it&amp;rsquo;s a 1-ALL since this game has multiple loops and I only cleared the first loop. 1-ALL means I cleared all the stages of the first loop.)&lt;/p&gt;
&lt;p&gt;This game was actually my first ever Cave 1CC. The easiest way to play it is on &lt;a href="http://itunes.apple.com/us/app/dodonpachi-resurrection/id387176580?mt=8"&gt;iOS from the App Store&lt;/a&gt; and let me tell you, it is worth every penny since Cave does a really great job porting their games to iOS.&lt;/p&gt;
&lt;p&gt;So I played it a ton last summer after it came out for iOS, then at one of the shmupmeets (9/11/10) at the old Pink Gorilla arcade, a local collector loaned his arcade PCB for the meet and I got to play the arcade version. My iOS training came in handy and I was actually able to get a 1CC on the first night I ever played the arcade version.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/ddpdfkpg_hu_11c139cbabd21a80.jpg" width="600" height="448" /&gt;
&lt;/figure&gt;
&lt;p&gt;Now, I should note that I 1CC&amp;rsquo;d using Strong Mode, which due to auto-bombing makes the 1CC pretty easy. However, I&amp;rsquo;m still proud of the fact that I was able to 1CC something in public with people watching.&lt;/p&gt;
&lt;p&gt;Since then, the game has come out on 360 which I of course bought but I hadn&amp;rsquo;t 1CC&amp;rsquo;d the game on that version, so I figured I&amp;rsquo;d put some time in and get that out of the way. DONE:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/ddpdfk360_hu_fb609a2160e2d52f.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;My scores are pretty awful, but I survived&amp;hellip;.&lt;/p&gt;</description></item><item><title>Mushihimesama Futari Black Label 1CC</title><link>https://pdp.dev/posts/mushihimesama-futari-black-label-1cc/</link><pubDate>Tue, 24 May 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mushihimesama-futari-black-label-1cc/</guid><description>&lt;p&gt;After my 1CC of Version 1.5 Original mode, I figured that I&amp;rsquo;d also be able to 1CC of Black Label Original mode. It took a few tries but I was able to pull it off!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/FutariBL_hu_838fc24ef70f6d0d.jpg" width="600" height="273" /&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Character:&lt;/strong&gt; Palm &lt;strong&gt;Final score:&lt;/strong&gt; 293,899,502&lt;/p&gt;
&lt;p&gt;The Black Label version of the game (which is available on the 360 as DLC) has some &lt;a href="http://en.wikipedia.org/wiki/Mushihime-sama_Futari#Arcade_Black_Label_Release"&gt;tweaks to the scoring system and shot types&lt;/a&gt;, making the potential scores a lot higher. My score is not that great, but I was playing for survival and for that I would say that it&amp;rsquo;s an easier 1CC that 1.5 Original mode.&lt;/p&gt;
&lt;p&gt;Next I might try to get my score up. That&amp;rsquo;s what I love about shooting games, you can always try to make that number go up!&lt;/p&gt;</description></item><item><title>Mushihimesama Futari 1CC</title><link>https://pdp.dev/posts/mushihimesama-futari-1cc/</link><pubDate>Sat, 21 May 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/mushihimesama-futari-1cc/</guid><description>&lt;p&gt;I imported &lt;a href="http://en.wikipedia.org/wiki/Mushihime-sama_Futari"&gt;Mushihimesama Futari&lt;/a&gt; for 360 right when it came out since it was region-free and could be played on a US 360. It has recently been released as part of the &lt;a href="http://www.play-asia.com/Mushihimesama_Futari_Ver_1.5_Platinum_Collection/paOS-13-71-br-49-en-70-3yu5.html"&gt;Platinum Collection in Japan&lt;/a&gt;, so if you are at all curious about modern shooting games I would &lt;em&gt;highly&lt;/em&gt; recommend checking it out. It&amp;rsquo;s a fantastic game. You may recognize it from this video that was circulating on the internets a few years ago:&lt;/p&gt;
&lt;p&gt;That video is from Futari&amp;rsquo;s Ultra Mode, which has insane amounts of bullets and is insanely hard. Thankfully there are non-Ultra modes that mere mortals can enjoy.&lt;/p&gt;
&lt;p&gt;Ever since I got the game I have been very slowly chipping away at a 1CC of Original mode. 1CC is short for &lt;strong&gt;1&lt;/strong&gt; &lt;strong&gt;C&lt;/strong&gt;redit &lt;strong&gt;C&lt;/strong&gt;lear, which means that you beat the game without continuing. It&amp;rsquo;s easy to &amp;ldquo;beat&amp;rdquo; shooting games if you just continue over and over, but that&amp;rsquo;s not how it&amp;rsquo;s done.&lt;/p&gt;
&lt;p&gt;Today, Friday May 20th 2011, I 1CC&amp;rsquo;d Mushihimesama Futari on Original Mode!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/mushi1cc_hu_8ce39db3fece4f69.jpg" width="600" height="278" /&gt;
&lt;/figure&gt;
&lt;p&gt;This 1CC was Ver. 1.5 Original Mode using Palm with Abnormal Shot type. Final score: 189,352,383.&lt;/p&gt;
&lt;p&gt;Oh yea!&lt;/p&gt;</description></item><item><title>Xbox 360 to JAMMA Progress</title><link>https://pdp.dev/posts/xbox-360-to-jamma-progress/</link><pubDate>Sat, 21 May 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/xbox-360-to-jamma-progress/</guid><description>&lt;p&gt;After a lot of soldering and tinkering, I&amp;rsquo;ve got my 360 hooked up to my Astro City. Oh man oh man oh man!&lt;/p&gt;
&lt;p&gt;I got a &lt;a href="http://www.jammaboards.com/store/jamma-fingerboard/prod_1.html?ccSID285e73f64c04744fc5f33ff68f529742=5ed66449bb0b8f9d425a012dd489e53c"&gt;JAMMA fingerboard&lt;/a&gt; from &lt;a href="http://jammaboards.com"&gt;jammaboards.com&lt;/a&gt;. &lt;a href="http://en.wikipedia.org/wiki/Japan_Amusement_Machinery_Manufacturers_Association"&gt;JAMMA&lt;/a&gt; is a standard that most arcade cabinets and boards use (after about 1985) and a fingerboard enables you to wire up components to a JAMMA connector. My cabinet has a JAMMA connector, so to hook up my 360 I need to supply video, joystick, and sound signals to that connector.&lt;/p&gt;
&lt;p&gt;For the video signal, I hooked my Ultracade UVC up to the video and power pins. Straightforward stuff.&lt;/p&gt;
&lt;p&gt;Up next was controls. This was a total pain since I decided to rip apart a wired 360 controller and solder onto the contacts. I&amp;rsquo;ve done this before when building joysticks and it&amp;rsquo;s a lot of work. Thankfully, I was able to get it wired up.&lt;/p&gt;
&lt;p&gt;Finally, sound. I needed an amp since with JAMMA the game board is responsible for amplifying the sound signal. I ordered an &lt;a href="http://www.amazon.com/gp/product/B0012KZNP4"&gt;amp off Amazon&lt;/a&gt; and wired it up. Worked like a charm!&lt;/p&gt;
&lt;p&gt;Champion the cat approves!&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1258_hu_32bf0d847779e0ba.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;So while it all works, it ain&amp;rsquo;t pretty:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/360jamma_hu_55619a7e47092e68.jpg" width="600" height="448" /&gt;
&lt;/figure&gt;
&lt;p&gt;I need to figure out how to contain this mess&amp;hellip;.&lt;/p&gt;</description></item><item><title>1943</title><link>https://pdp.dev/posts/1943/</link><pubDate>Thu, 19 May 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/1943/</guid><description>&lt;p&gt;Now that I&amp;rsquo;m an arcade cabinet owner (squeeee!) I am thinking about what PCBs to buy. While I&amp;rsquo;d like some Cave/Raizing/Taito stuff, I figured I&amp;rsquo;d start with something common and nostalgic: &lt;a href="http://en.wikipedia.org/wiki/1943:_The_Battle_of_Midway"&gt;1943&lt;/a&gt;&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/1943pcb1_hu_e4604f11083877f7.jpg" width="600" height="448" /&gt;
&lt;/figure&gt;
&lt;p&gt;The PCB is actually two boards connected with ribbon cables. It&amp;rsquo;s awesomely large.&lt;/p&gt;
&lt;p&gt;I played this game a lot when I was younger. I had (and beat) the &lt;a href="http://www.youtube.com/watch?v=fK5CJ-bDoqU"&gt;NES version&lt;/a&gt; and played it in the arcade as well.&lt;/p&gt;
&lt;p&gt;The wonderful thing about 1943 was that I could exploit the fact that my dad was really into World War II. He still is, however now I have my own money so I don&amp;rsquo;t need to leverage his interests to get him to buy video games. Back then, I needed all the help I could get to convince him to buy a game, and &lt;a href="http://en.wikipedia.org/wiki/P-38_Lightning"&gt;P-38s&lt;/a&gt; helped a &lt;em&gt;lot&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;So he bought us the game, my brother and I would play it, and while we dodged bullets he&amp;rsquo;d try to turn it into a history lesson. He&amp;rsquo;d try to tell us about &lt;a href="http://en.wikipedia.org/wiki/Battle_of_Midway"&gt;The Battle of Midway&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Richard_Bong"&gt;Richard Bong&lt;/a&gt; and we&amp;rsquo;d sit there with our mouths open staring at the screen. However, apparently it did rub off somewhat because I know enough to name drop Richard Bong.&lt;/p&gt;
&lt;p&gt;There are some great memories there, plus it&amp;rsquo;s a good game and can be easily had for a reasonable price.&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/1943_hu_af321f52d1ba8bd0.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;Let the collecting begin&amp;hellip;&lt;/p&gt;</description></item><item><title>Sideways Monitor Iterations</title><link>https://pdp.dev/posts/sideways-monitor-iterations/</link><pubDate>Mon, 16 May 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/sideways-monitor-iterations/</guid><description>&lt;p&gt;Before I got an arcade cabinet, I had done many things to approximate one while playing shooting games. In remembrance of these setups, I thought I&amp;rsquo;d share them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mark I&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1212_hu_28c67c88b2827463.jpg" width="450" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;Dotronix monitor I got on craigslist for $10.&lt;/p&gt;
&lt;p&gt;This is just a big VGA monitor running at 640x480. It looked pretty good for what it was, but after I got the &lt;a href="http://en.wikipedia.org/wiki/Ketsui:_Kizuna_Jigoku_Tachi"&gt;Ketsui&lt;/a&gt; port I needed scanlines.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mark II&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1357_hu_64b7dbda7e6c2004.jpg" width="450" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;Ultracade UVC with my old Amiga Monitor.&lt;/p&gt;
&lt;p&gt;Scanlines! This looked totally awesome. Unfortunately, the blue pin (that&amp;rsquo;s pin #5) on the RGB input, which had been flaky for years, stopped working and everything turned yellow. I tried to fix it, but couldn&amp;rsquo;t, so I had to move on.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mark III&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_0752_hu_c4dab63b026c04a4.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;Ultracade UVC with Sony PVM.&lt;/p&gt;
&lt;p&gt;The Amiga monitor looked a lot better, but this was pretty decent and was what I used for a while.&lt;/p&gt;
&lt;p&gt;These setups served me well, but now that I&amp;rsquo;ve reached the TRUE LAST BOSS and gotten a proper cabinet, I look forward to reducing the number of sideways monitors in our house.&lt;/p&gt;</description></item><item><title>Sega Astro City</title><link>https://pdp.dev/posts/sega-astro-city/</link><pubDate>Mon, 09 May 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/sega-astro-city/</guid><description>&lt;p&gt;Yesterday, I got this:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/IMG_1241_hu_412af074d738b96c.jpg" width="448" height="600" /&gt;
&lt;/figure&gt;
&lt;p&gt;This is a Sega Astro City cabinet and it is &lt;strong&gt;in my house&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve wanted an arcade cabinet for a long time, and since I dig shoot &amp;rsquo;em ups (or &amp;ldquo;&lt;a href="http://en.wikipedia.org/wiki/Shoot_'em_up"&gt;shmups&lt;/a&gt;&amp;rdquo;) I&amp;rsquo;ve more specifically wanted a Japanese style candy cabinet. These are not easy to come by since if you can&amp;rsquo;t find one nearby, getting one shipped is really expensive. I had pretty much given up hope of finding one locally, but then something great happened.&lt;/p&gt;
&lt;p&gt;There used to be an arcade here in Seattle that had candy cabs and shooters. The arcade is unfortunately no longer there but I got to know the insanely nice and genuine guy who ran it and owned all the cabinets. He was looking to sell an Astro City and remembered that I wanted a cab, so he asked if I was interested.&lt;/p&gt;
&lt;p&gt;HELL YES!&lt;/p&gt;
&lt;p&gt;Not only was this machine from someone I knew and trusted, but I had actually played on it when it was in the arcade. Plus he offered to deliver it and help me get it set up, which is perfect since I&amp;rsquo;m a total n00b at this point.&lt;/p&gt;
&lt;p&gt;He brought it over and we got it inside and hooked up. I don&amp;rsquo;t have any boards yet so he let me borrow a &lt;a href="http://en.wikipedia.org/wiki/Vasara_(video_game)"&gt;Vasara&lt;/a&gt; board that I might buy if it turns out I like it. I didn&amp;rsquo;t at first, but now it&amp;rsquo;s growing on me.&lt;/p&gt;
&lt;p&gt;Next I gotta start tracking down PCBs and making it so I can hook up my Japanese 360 so I can play Cave ports.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s on!&lt;/p&gt;</description></item><item><title>Emacs Color Themes</title><link>https://pdp.dev/posts/emacs-color-themes/</link><pubDate>Sun, 13 Feb 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/emacs-color-themes/</guid><description>&lt;p&gt;I use Emacs. A lot.&lt;/p&gt;
&lt;p&gt;I decided to post my &lt;a href="http://www.nongnu.org/color-theme/"&gt;color-theme&lt;/a&gt; themes on github for all to see. &lt;a href="https://github.com/wnka/emacs-color-themes"&gt;They are available here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are two that I flip back and forth between every so often. Currently I&amp;rsquo;m using this brown-ish theme:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/brown_hu_91fa66f247f1635d.jpg" width="431" height="365" /&gt;
&lt;/figure&gt;
&lt;p&gt;When I get bored with that one, I use this neon theme:&lt;/p&gt;
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/neon_hu_e4c4f0c9735c9d1.jpg" width="431" height="364" /&gt;
&lt;/figure&gt;
&lt;p&gt;That neon one might look familiar because it&amp;rsquo;s based on the &lt;a href="http://www.monokai.nl/blog/2006/07/15/textmate-color-theme/"&gt;Monokai&lt;/a&gt; theme for TextMate. I based mine on this &lt;a href="http://jaguilar.posterous.com/i-get-so-tired-of-searching-fo"&gt;port to Emacs&lt;/a&gt; and then added things like settings for &lt;a href="https://github.com/byplayer/egg"&gt;egg-mode&lt;/a&gt; and &lt;a href="http://orgmode.org/"&gt;org-mode&lt;/a&gt; since I use those modes &lt;em&gt;a lot&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</description></item><item><title>Gawker Status</title><link>https://pdp.dev/posts/gawker-status/</link><pubDate>Sun, 06 Feb 2011 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gawker-status/</guid><description>&lt;p&gt;Back in 2005, I wasn&amp;rsquo;t happy at my job and was worried about getting stuck. I wanted to create something that I could point people to and say &amp;lsquo;I wrote that! Hire me!&amp;rsquo;&lt;/p&gt;
&lt;p&gt;The first version of Gawker went live on February 4th, 2006. That&amp;rsquo;s five years ago! I uploaded it to SourceForge and notified MacUpdate and VersionTracker. The response that I got was more than I ever imagined, it got featured on websites like &lt;a href="http://www.tuaw.com/2006/05/01/gawker-record-share-combine-time-lapse-movies-with-an-isight/"&gt;tuaw.com&lt;/a&gt; and I started getting a lot of e-mails from people that enjoyed using it. I still get e-mails from people that enjoy using it, and this &amp;lsquo;fanmail&amp;rsquo; is so rewarding and so appreciated.&lt;/p&gt;
&lt;p&gt;This plan worked and I am now working at a great company. This is the main reason why Gawker development has stagnated. The other reason is that in 2006 when I stopped focusing on it, I felt that more features to Gawker would be mostly unnecessary. It does what it claims: it makes time-lapse movies.&lt;/p&gt;
&lt;p&gt;That is not to say there aren&amp;rsquo;t improvements that could be made. Things have changed since 2006: HD video is now commonplace, Mac applications have very different UI styling, and people downloads apps through the App Store. I have thought about this quite a bit and there are plenty of things that could be done to improve Gawker, however I don&amp;rsquo;t have any plans to make any improvements.&lt;/p&gt;
&lt;p&gt;I just wanted to say thank you to every single person who ever used Gawker. Cheers!&lt;/p&gt;</description></item><item><title>Gawker 0.8.3</title><link>https://pdp.dev/posts/gawker-0-8-3/</link><pubDate>Mon, 07 Dec 2009 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gawker-0-8-3/</guid><description>&lt;p&gt;Gawker 0.8.3 has been &lt;a href="http://gawker.sourceforge.net/Download.html"&gt;released&lt;/a&gt;. This release improves support for UVC webcams and fixes an issue that caused Desktop Recording to stop working on Snow Leopard.&lt;/p&gt;
&lt;p&gt;The source code for this version is in the &lt;a href="http://gawker.git.sourceforge.net/git/gitweb.cgi?p=gawker/gawker;a=summary"&gt;git repository&lt;/a&gt; and has been tagged “v0.8.3.rel″.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;</description></item><item><title>Gawker 0.8.2</title><link>https://pdp.dev/posts/gawker-0-8-2/</link><pubDate>Sun, 12 Jul 2009 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gawker-0-8-2/</guid><description>&lt;p&gt;Gawker 0.8.2 has been &lt;a href="http://gawker.sourceforge.net/Download.html"&gt;released&lt;/a&gt;. This release fixes a bug that was introduced in 0.8.1 that caused desktop recording to not work correctly. Sorry &amp;lsquo;bout that!&lt;/p&gt;
&lt;p&gt;The source code for this version is in the &lt;a href="http://gawker.git.sourceforge.net"&gt;git repository&lt;/a&gt; and has been tagged “v0.8.2″.&lt;/p&gt;
&lt;p&gt;If you have Gawker 0.8.1 the new version will be picked up by &amp;lsquo;Check for Updates&amp;rsquo;, otherwise please &lt;a href="http://gawker.sourceforge.net/Download.html"&gt;download it manually&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;</description></item><item><title>Use Macam to Improve Gawker's Camera Support</title><link>https://pdp.dev/posts/use-macam-to-improve-gawkers-camera-support/</link><pubDate>Tue, 07 Jul 2009 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/use-macam-to-improve-gawkers-camera-support/</guid><description>&lt;p&gt;&lt;a href="http://webcam-osx.sourceforge.net/"&gt;Macam&lt;/a&gt; is a wonderful library that greatly improves the support for USB webcams in Mac OS X. The list of supported cameras is available &lt;a href="http://webcam-osx.sourceforge.net/cameras/index.php"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Gawker can take advantage of Macam, so check it out if you&amp;rsquo;re trying to get your USB webcam to work with Gawker. Just install the macam.component as directed and you&amp;rsquo;re set!&lt;/p&gt;</description></item><item><title>Gawker 0.8.1</title><link>https://pdp.dev/posts/gawker-0-8-1/</link><pubDate>Mon, 06 Jul 2009 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gawker-0-8-1/</guid><description>&lt;p&gt;Gawker 0.8.1 has just been &lt;a href="http://gawker.sourceforge.net/Download.html"&gt;released&lt;/a&gt;. This is the first release in a bit over 3 years! Time flies! I had figured that the recent crashing issue related to the stale update feed should be fixed as that was just extremely sloppy. The feed is now hosted on sourceforge.net which solves these problems. Big thanks to &lt;a href="http://moird.com/"&gt;Daniel (Moird) Myers&lt;/a&gt; for his help with getting this working and sorting out the details.&lt;/p&gt;
&lt;p&gt;Since the update feed is now hosted in a new place, &amp;lsquo;Check for Updates&amp;rsquo; from within Gawker will not be able to grab this new version. Please &lt;a href="http://gawker.sourceforge.net/Download.html"&gt;download it manually&lt;/a&gt;. Future versions will be picked up.&lt;/p&gt;
&lt;p&gt;This release also contains a fix for a bug that caused temporary files created by Gawker during recording to not be cleaned up. These files get created in /var/tmp/ and have names like tmp.0.*. You may want to check for these and clean them up if you&amp;rsquo;ve been using Gawker 0.8 and earlier.&lt;/p&gt;
&lt;p&gt;The source code has been moved to git and is available &lt;a href="http://gawker.git.sourceforge.net"&gt;here&lt;/a&gt;. The code for this version has been tagged &amp;ldquo;v0.8.1&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;I am hoping to blow the dust off of Gawker and continue development. There&amp;rsquo;s not much new in this release but it&amp;rsquo;s been a good way to jog my memory and get back into the swing of things.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re interested in contributing or have any feedback, please drop me a line. Thanks!&lt;/p&gt;</description></item><item><title>If Gawker Crashes on Startup</title><link>https://pdp.dev/posts/if-gawker-crashes-on-startup/</link><pubDate>Sun, 07 Jun 2009 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/if-gawker-crashes-on-startup/</guid><description>&lt;p&gt;Some folks have been reporting recently that Gawker crashes on startup. This is related to the &amp;ldquo;Check for updates&amp;rdquo; feature which no longer works because where I was hosting the app feed for updates no longer exists since I cancelled my .mac account. Try disabling this so that it won&amp;rsquo;t check for updates and you should be good to go. If it crashes before you can get to the Preferences, delete your Preferences file and start Gawker, on first launch it&amp;rsquo;ll ask you if you want to check for updates on startup. The Preferences file is located under your home directory at:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Library/Preferences/com.wnka.Gawker.plist
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hope that helps, sorry for the inconvenience. I am without a Mac currently, if I get a chance I may release a new version that does not check for updates as I am not planning on making any in the near future.&lt;/p&gt;
&lt;p&gt;Cheers-&lt;/p&gt;</description></item><item><title>Snail Racing</title><link>https://pdp.dev/posts/snail-racing/</link><pubDate>Wed, 28 Jun 2006 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/snail-racing/</guid><description>&lt;p&gt;&lt;a href="http://www.evilmadscientist.com/article.php/GawkerMovies"&gt;Evil Mad Scientist Laboratories - Escargot Grand Prix&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.makezine.com/blog/archive/2006/06/escargot_grand_prix_diy_time_l.html"&gt;MAKE: Blog: Escargot Grand Prix - DIY Time lapse snail races&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windell Oskay of &lt;a href="http://www.evilmadscientist.com"&gt;evilmadscientist.com&lt;/a&gt; created a really cool movie with Gawker that enabled some snails to give the appearance of going fast.  Awesome stuff!  The blog at &lt;a href="http://www.makezine.com"&gt;Make&lt;/a&gt; picked up on this and, much to my surprise, Gawker showed up on their site.  Thanks to Windell and thanks to the folks at Make!&lt;/p&gt;</description></item><item><title>You May Now Give Me Money</title><link>https://pdp.dev/posts/you-may-now-give-me-money/</link><pubDate>Wed, 28 Jun 2006 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/you-may-now-give-me-money/</guid><description>&lt;p&gt;I added a PayPal donate button to the Gawker website so you may now commence with the giving of money to me. Feel free to donate as much (or as little) as you would like. Or donate nothing. It&amp;rsquo;s all up to you.&lt;/p&gt;
&lt;p&gt;I hadn&amp;rsquo;t thought of doing this before, but a Gawker user (fan?) suggested I do it, so it&amp;rsquo;s done. Of course, don&amp;rsquo;t feel obligated to donate anything, but if you use Gawker and enjoy it, make a donation!&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;</description></item><item><title>Gawker 0.8</title><link>https://pdp.dev/posts/gawker-08/</link><pubDate>Fri, 16 Jun 2006 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gawker-08/</guid><description>&lt;p&gt;Gawker 0.8 has been released.  New stuff includes scheduling recordings, ability to password protect shared cameras, improved timestamp appearance and user interface improvements.  A lot of little things in this one, mainly having to do with the interface and making things a little more friendly.  I&amp;rsquo;m not really much of a GUI designer so it was fun to sit down and think how things should be done. Lots of trial and error but it lead to some additional Cocoa knowledge which is a good thing.  I&amp;rsquo;d appreciate any feedback as to things I&amp;rsquo;m doing wrong/right.&lt;/p&gt;
&lt;p&gt;I decided to move the development blog onto wordpress since iWeb really wasn&amp;rsquo;t cuttin it on that front.  I&amp;rsquo;m glad to finally have comments.&lt;/p&gt;</description></item><item><title>Gawker from Python</title><link>https://pdp.dev/posts/gawker-from-python/</link><pubDate>Wed, 14 Jun 2006 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gawker-from-python/</guid><description>&lt;p&gt;&lt;a href="http://www.carrel.org/articles/2006/06/11/gawker-image-fetch-script"&gt;Gawker Image Fetch Script&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Andy Carrel has written a Python script that will download images from a shared Gawker webcam and write the newest image out to a file. He uses it to put his webcam of Mt. Si on his site which you can see &lt;a href="http://www.carrel.org/webcam/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I gotta say, it&amp;rsquo;s pretty cool to see someone do this and make Gawker more available to others. I have always wanted to add the capability to publish images onto a website since that is a much more robust/available sharing mechanism than the socket stuff that&amp;rsquo;s in Gawker right now. Maybe I&amp;rsquo;ll do that some day.&lt;/p&gt;
&lt;p&gt;I actually wrote a Gawker client in Visual Basic a little while back since I had to learn something about .Net. If people are interested I could post the source for that, it&amp;rsquo;s real simple, just connects and gets the images from a shared camera. Doesn&amp;rsquo;t record or anything since I didn&amp;rsquo;t want to invest that much time in it.&lt;/p&gt;
&lt;p&gt;The socket communications are really basic for Gawker, I would like to make them more robust but there are so many hours in the day.&lt;/p&gt;</description></item><item><title>Intel and PPC Argument Evaluation</title><link>https://pdp.dev/posts/intel-and-ppc-argument-evaluation/</link><pubDate>Tue, 23 May 2006 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/intel-and-ppc-argument-evaluation/</guid><description>&lt;p&gt;In Cocoa, take the following class:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;@implementation&lt;/span&gt; &lt;span class="nc"&gt;Callee&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nf"&gt;returnOne&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;NSLog&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;@&amp;#34;In returnOne&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nf"&gt;returnTwo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;NSLog&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;@&amp;#34;In returnTwo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nf"&gt;sumOfA:&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nf"&gt;andB:&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ok, so a pretty boring class. If I were to do the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-objc" data-lang="objc"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Callee&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="n"&gt;Callee&lt;/span&gt; &lt;span class="n"&gt;alloc&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;init&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;NSLog&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;@&amp;#34;Callee sum: %d&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="nl"&gt;sumOfA&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="n"&gt;returnOne&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nl"&gt;andB&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="n"&gt;returnTwo&lt;/span&gt;&lt;span class="p"&gt;]]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;What would you expect the output to be? I was shocked to find that the answer differs depends on which architecture you’re on.&lt;/p&gt;
&lt;p&gt;Intel:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-plaintext" data-lang="plaintext"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;In returnTwo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;In returnOne
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Callee sum: 3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;PPC:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-plaintext" data-lang="plaintext"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;In returnOne
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;In returnTwo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Callee sum: 3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Why is this? This behavior causes a crash in Gawker 0.7.0 on Intel&amp;hellip; it’s already fixed but I’m curious to know what causes the argument functions to get called in a different order? Anyone? Anyone? I&amp;rsquo;m guessing it has to do with endianness / optimizer / Obj-C not guaranteeing execution order.&lt;/p&gt;</description></item><item><title>Gawker 0.7.0</title><link>https://pdp.dev/posts/gawker-070/</link><pubDate>Sat, 20 May 2006 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/gawker-070/</guid><description>
&lt;figure class="left" &gt;
&lt;img src="https://pdp.dev/images/4waylarge_hu_f5f0f4b2d992a4d6.jpg" width="512" height="386" /&gt;
&lt;/figure&gt;
&lt;p&gt;I’ve always gotten a lot of requests to add support for non-iSight cameras, so I sat down and figured out a good way to do it. Hopefully it works for most folks&amp;hellip;. Gawker will now list all your available grabbers and you can enable, record, and share them independently. Version 0.7.0 also has some other new features, like desktop capturing, combining of up to 4 cameras, and a countdown until the next frame is recorded.&lt;/p&gt;
&lt;p&gt;The desktop grabbing is really for novelty purposes only, I thought it would be interesting to timelapse me working on timelapse software. The 4-way shot above is the typical scenario: me working on Gawker while listening to records as the outside world keeps on movin’.&lt;/p&gt;
&lt;p&gt;Cheers-&lt;/p&gt;</description></item><item><title>Start Time</title><link>https://pdp.dev/posts/start-time/</link><pubDate>Sat, 20 May 2006 00:00:00 +0000</pubDate><author>hello@pdp.dev (Phil Piwonka)</author><guid>https://pdp.dev/posts/start-time/</guid><description>&lt;p&gt;So, I’ve decided to do a development blog so I can write musings and whatnot about the development of Gawker. How useful this truly is will be told over time. So to kick things off, my name is Phil Piwonka and Gawker is a project I started after I read some books and found out that yes, Cocoa is slick so I wanted to get my hands dirty and write a program. Gawker started out simply enough but it grew into something that I thought other people might enjoy as well so I decided to release it Open Source&amp;hellip; this project is all about learning how to write good Cocoa code.&lt;/p&gt;
&lt;p&gt;I do this in my spare time, so development might be slow. However, the plan is to improve Gawker into something that is a solid application and have fun while doing it. Dig?&lt;/p&gt;
&lt;p&gt;Since this is all a one-man operation (so far), I haven’t time to make a rad webpage or anything and as you can see I’ve resorted to throwing something together in iWeb. Despite the limited tools and non-standard RSS weirdness, I’ll tolerate it for now.&lt;/p&gt;
&lt;p&gt;If you would like to contribute or give feedback, &lt;a href="mailto:wnka@users.sourceforge.net?subject=Gawker"&gt;contact me&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>