<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description></description><title>Paul Tagliamonte</title><generator>Tumblr (3.0; @paultag)</generator><link>https://blog.pault.ag/</link><item><title>Open to work!</title><description>&lt;p&gt;I decided to leave my job (Principal Software Engineer) after 4 years. I have no idea what I want to do next, so I&amp;rsquo;ve been having loads of chats to try and work that out.&lt;/p&gt;

&lt;p&gt;I like working in mission focused organizations, working to fix problems across the stack, from interpersonal down to the operating system. I enjoy &amp;ldquo;going where I&amp;rsquo;m rare&amp;rdquo;, places that don&amp;rsquo;t always get the most attention. At my last job, I most enjoyed working to drive engineering standards for all products across the company, mentoring engineers across all teams and seniority levels, and serving as an advisor for senior leadership as we grew the engineering team from 3 to 150 people.&lt;/p&gt;

&lt;p&gt;If you have a role that you think I&amp;rsquo;d like to hear about, I&amp;rsquo;d love to hear about it at jobs{}pault.ag (where the {} is an @ sign).&lt;/p&gt;</description><link>https://blog.pault.ag/post/716775061205434368</link><guid>https://blog.pault.ag/post/716775061205434368</guid><pubDate>Mon, 08 May 2023 14:19:26 -0400</pubDate></item><item><title>Be careful when using vxlan!</title><description>&lt;p&gt;I&amp;rsquo;ve spent a bit of time playing with
&lt;a href="https://en.wikipedia.org/wiki/Virtual_Extensible_LAN" target="_blank"&gt;vxlan&lt;/a&gt; - which is very neat, but also incredibly insecure by default.&lt;/p&gt;&lt;p&gt;When using vxlan, be very careful to understand how the host is connected to the internet. The kernel will listen on all interfaces for packets, which means hosts accessable to VMs it&amp;rsquo;s hosting (e.g., by bridged interface or a private LAN will accept packets from VMs and inject them into arbitrary VLANs, even ones it&amp;rsquo;s not on.&lt;/p&gt;&lt;p&gt;I reported this to the &lt;a href="https://lore.kernel.org/netdev/CAO6P2QTXwKKgh6PHXxM4cN3YOAEmdbCTD8RMHtR+rgHcUs03Pw@mail.gmail.com/" target="_blank"&gt;kernel mailing list&lt;/a&gt; to no reply with more technical details.&lt;/p&gt;&lt;p&gt;The tl;dr is:&lt;/p&gt;&lt;pre&gt;  $ ip link add vevx0a type veth peer name vevx0z
  $ ip addr add 169.254.0.2/31 dev vevx0a
  $ ip addr add 169.254.0.3/31 dev vevx0z
  $ ip link add vxlan0 type vxlan id 42 \
    local 169.254.0.2 dev vevx0a dstport 4789
  $ # Note the above 'dev' and 'local' ip are set here
  $ ip addr add 10.10.10.1/24 dev vxlan0
&lt;/pre&gt;&lt;p&gt;
results in vxlan0 listening on &lt;b&gt;all&lt;/b&gt; interfaces, not just &lt;code&gt;vevx0z&lt;/code&gt; or &lt;code&gt;vevx0a&lt;/code&gt;. To prove it to myself, I spun up a docker container (using a completely different network bridge &amp;ndash; with no connection to any of the interfaces above), and ran a Go program to send VXLAN UDP packets to my bridge host:
&lt;/p&gt;&lt;pre&gt;$ docker run -it --rm -v $(pwd):/mnt debian:unstable /mnt/spam 172.17.0.1:4789
$
&lt;/pre&gt;&lt;p&gt;
which results in packets getting injected into my vxlan interface
&lt;/p&gt;&lt;pre&gt;$ sudo tcpdump -e -i vxlan0
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on vxlan0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
21:30:15.746754 de:ad:be:ef:00:01 (oui Unknown) &amp;gt; Broadcast, ethertype IPv4 (0x0800), length 64: truncated-ip - 27706 bytes missing! 33.0.0.0 &amp;gt; localhost: ip-proto-114
21:30:15.746773 de:ad:be:ef:00:01 (oui Unknown) &amp;gt; Broadcast, ethertype IPv4 (0x0800), length 64: truncated-ip - 27706 bytes missing! 33.0.0.0 &amp;gt; localhost: ip-proto-114
21:30:15.746787 de:ad:be:ef:00:01 (oui Unknown) &amp;gt; Broadcast, ethertype IPv4 (0x0800), length 64: truncated-ip - 27706 bytes missing! 33.0.0.0 &amp;gt; localhost: ip-proto-114
21:30:15.746801 de:ad:be:ef:00:01 (oui Unknown) &amp;gt; Broadcast, ethertype IPv4 (0x0800), length 64: truncated-ip - 27706 bytes missing! 33.0.0.0 &amp;gt; localhost: ip-proto-114
21:30:15.746815 de:ad:be:ef:00:01 (oui Unknown) &amp;gt; Broadcast, ethertype IPv4 (0x0800), length 64: truncated-ip - 27706 bytes missing! 33.0.0.0 &amp;gt; localhost: ip-proto-114
21:30:15.746827 de:ad:be:ef:00:01 (oui Unknown) &amp;gt; Broadcast, ethertype IPv4 (0x0800), length 64: truncated-ip - 27706 bytes missing! 33.0.0.0 &amp;gt; localhost: ip-proto-114
21:30:15.746870 de:ad:be:ef:00:01 (oui Unknown) &amp;gt; Broadcast, ethertype IPv4 (0x0800), length 64: truncated-ip - 27706 bytes missing! 33.0.0.0 &amp;gt; localhost: ip-proto-114
21:30:15.746885 de:ad:be:ef:00:01 (oui Unknown) &amp;gt; Broadcast, ethertype IPv4 (0x0800), length 64: truncated-ip - 27706 bytes missing! 33.0.0.0 &amp;gt; localhost: ip-proto-114
21:30:15.746899 de:ad:be:ef:00:01 (oui Unknown) &amp;gt; Broadcast, ethertype IPv4 (0x0800), length 64: truncated-ip - 27706 bytes missing! 33.0.0.0 &amp;gt; localhost: ip-proto-114
21:30:15.746913 de:ad:be:ef:00:01 (oui Unknown) &amp;gt; Broadcast, ethertype IPv4 (0x0800), length 64: truncated-ip - 27706 bytes missing! 33.0.0.0 &amp;gt; localhost: ip-proto-114
10 packets captured
10 packets received by filter
0 packets dropped by kernel
&lt;/pre&gt;&lt;p&gt;(the program in question is the following:)&lt;/p&gt;&lt;pre&gt;  package main

  import (
      "net"
      "os"
      "github.com/mdlayher/ethernet"
      "github.com/mdlayher/vxlan"
  )
  func main() {
      conn, err := net.Dial("udp", os.Args[1])
      if err != nil { panic(err) }
      for i := 0; i &amp;lt; 10; i++ {
          vxf := &amp;amp;vxlan.Frame{
              VNI: vxlan.VNI(42),
              Ethernet: &amp;amp;ethernet.Frame{
                  Source:      net.HardwareAddr{0xDE, 0xAD, 0xBE,
0xEF, 0x00, 0x01},
                  Destination: net.HardwareAddr{0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF},
                  EtherType:   ethernet.EtherTypeIPv4,
                  Payload:     []byte("Hello, World!"),
              },
          }
          frb, err := vxf.MarshalBinary()
          if err != nil { panic(err) }
          _, err = conn.Write(frb)
          if err != nil { panic(err) }
      }
  }
&lt;/pre&gt;&lt;p&gt;When using vxlan, be absolutely sure all hosts that can address any interface on the host are authorized to send arbitrary packets into any VLAN that box can send to, or there&amp;rsquo;s very careful and specific controls and firewalling. Note this includes public interfaces (e.g., dual-homed private network / internet boxes), or any type of dual-homing (VPNs, etc).&lt;/p&gt;</description><link>https://blog.pault.ag/post/668518326195109888</link><guid>https://blog.pault.ag/post/668518326195109888</guid><pubDate>Sun, 21 Nov 2021 21:39:17 -0500</pubDate></item><item><title>DNSync MAC Addresses</title><description>&lt;p&gt;I&amp;rsquo;ve been hacking on a project on and off for my LAN called &lt;a href="https://github.com/paultag/dnsync" target="_blank"&gt;DNSync&lt;/a&gt;. This will take a DNSMasq leases file and sync it to Amazon Route 53.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve added a new feature, which will create A reccords for each MAC address on the LAN.&lt;/p&gt;

&lt;p&gt;Since DNSync won&amp;rsquo;t touch CNAME records, I use CNAME records (manually) to point to the auto-synced A records for services on my LAN (such as my Projector, etc).&lt;/p&gt;

&lt;p&gt;Since It&amp;rsquo;s easy for two machines to have the same name, I&amp;rsquo;ve decided to add A records for each MAC as well as their client name. They take the fomm of something like &lt;code&gt;ab-cd-ef-ab-cd-ef.by-mac.paultag.house.&lt;/code&gt;, which is harder to accedentally collide.&lt;/p&gt;</description><link>https://blog.pault.ag/post/154359559628</link><guid>https://blog.pault.ag/post/154359559628</guid><pubDate>Sun, 11 Dec 2016 22:30:27 -0500</pubDate><category>route53</category><category>dnsync</category></item><item><title>DNSync</title><description>&lt;p&gt;While setting up my new network at my house, I figured I&amp;rsquo;d do things right and set up an IPSec VPN (and a few other fancy bits). One thing that became annoying when I wasn&amp;rsquo;t on my LAN was I&amp;rsquo;d have to fiddle with the DNS Resolver to resolve names of machines on the LAN.&lt;/p&gt;

&lt;p&gt;Since I hate fiddling with options when I need things to just work, the easiest way out was to make the DNS names actually resolve on the public internet.&lt;/p&gt;

&lt;p&gt;A day or two later, some Golang glue, and AWS Route 53, and I wrote code that would sit on my &lt;code&gt;dnsmasq.leases&lt;code&gt;, watch &lt;code&gt;inotify&lt;/code&gt; for &lt;code&gt;IN_MODIFY&lt;/code&gt; signals, and sync the records to AWS Route 53.&lt;/code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I pushed it up to my GitHub as &lt;a href="https://github.com/paultag/dnsync" target="_blank"&gt;DNSync&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;PRs welcome!&lt;/p&gt;</description><link>https://blog.pault.ag/post/150602026418</link><guid>https://blog.pault.ag/post/150602026418</guid><pubDate>Sun, 18 Sep 2016 17:00:08 -0400</pubDate><category>DNSync</category><category>Route 53</category><category>AWS</category><category>DNSMasq</category></item><item><title>go-haversine</title><description>&lt;p&gt;In the spirit of blogging about some of the code i&amp;rsquo;ve written in the past year or two, I wrote a small utility library called &lt;a href="https://github.com/paultag/go-haversine" target="_blank"&gt;go-haversine&lt;/a&gt;, which uses the &lt;a href="https://en.wikipedia.org/wiki/Haversine_formula" target="_blank"&gt;Haversine Forumla&lt;/a&gt; to compute the distance between two points.&lt;/p&gt;

&lt;p&gt;This is super helpful when working with GPS data - but remember, this assumes everything&amp;rsquo;s squarely on the face of the planet.&lt;/p&gt;</description><link>https://blog.pault.ag/post/149961211913</link><guid>https://blog.pault.ag/post/149961211913</guid><pubDate>Sun, 04 Sep 2016 22:52:41 -0400</pubDate></item><item><title>go-wmata - golang bindings to the DC metro system</title><description>&lt;p&gt;A few weeks ago, I hacked up &lt;a href="https://github.com/paultag/go-wmata" target="_blank"&gt;go-wmata&lt;/a&gt;, some golang bindings to the WMATA API. This is super handy if you are in the DC area, and want to interface to the WMATA data.&lt;/p&gt;

&lt;p&gt;As a proof of concept, I wrote a &lt;a href="http://justyo.co/" target="_blank"&gt;yo&lt;/a&gt; bot called &lt;code&gt;@WMATA&lt;/code&gt;, where it returns the closest station if you Yo it your location. For hilarity, feel free to &lt;code&gt;Yo&lt;/code&gt; it from outside DC.&lt;/p&gt;

&lt;p&gt;For added fun, and puns, I wrote a &lt;code&gt;dbus&lt;/code&gt; proxy for the API as weel, at &lt;a href="https://github.com/paultag/wmata-dbus/" target="_blank"&gt;wmata-dbus&lt;/a&gt;, so you can query the next train over dbus. One thought was to make a GNOME Shell extension to tell me when the next train is. I&amp;rsquo;d love help with this (or pointers on how to learn how to do this right).&lt;/p&gt;</description><link>https://blog.pault.ag/post/149299962228</link><guid>https://blog.pault.ag/post/149299962228</guid><pubDate>Sun, 21 Aug 2016 22:16:16 -0400</pubDate><category>wmata</category></item><item><title>Minica - lightweight TLS for everyone!</title><description>&lt;p&gt;A while back, I found myself in need of some TLS certificates set up and issued for a testing environment.&lt;/p&gt;

&lt;p&gt;I remembered there was some code for issuing TLS certs in Docker, so I yanked some of that code and made a sensable CLI API over it.&lt;/p&gt;

&lt;p&gt;Thus was born &lt;a href="https://github.com/paultag/minica" target="_blank"&gt;minica&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Something as simple as &lt;code&gt;minica tag@domain.tls domain.tld&lt;/code&gt; will issue two TLS certs (one with a Client EKU, and one server) issued from a single CA.&lt;/p&gt;

&lt;p&gt;Next time you&amp;rsquo;re in need of a few TLS keys (without having to worry about stuff like revocation or anything), this might be the quickest way out!&lt;/p&gt;</description><link>https://blog.pault.ag/post/148956352918</link><guid>https://blog.pault.ag/post/148956352918</guid><pubDate>Sun, 14 Aug 2016 20:40:28 -0400</pubDate><category>tls</category></item><item><title>HOPE 11</title><description>&lt;p&gt;I&amp;rsquo;ll be at HOPE 11 this year - if anyone else will be around, feel free to send me an email! I won&amp;rsquo;t have a phone on me (so texting only works if you use Signal!)&lt;/p&gt;

&lt;p&gt;Looking forward for a chance to see everyone soon!&lt;/p&gt;</description><link>https://blog.pault.ag/post/147794877863</link><guid>https://blog.pault.ag/post/147794877863</guid><pubDate>Fri, 22 Jul 2016 08:16:06 -0400</pubDate></item><item><title>SNIff</title><description>&lt;p&gt;A while back, I found myself in need of two webservers that would terminate TLS (with different rules). I wanted to run some custom code I&amp;rsquo;d written (which uses TLS peer authentication), and also nginx on port 443.&lt;/p&gt;

&lt;p&gt;The best way I figured out how to do this was to write a tool to sit on port 443, and parse TLS Client Hello packets, and dispatch to the correct backend depending on the SNI name.&lt;/p&gt;

&lt;p&gt;SNI, or Server Name Indication allows the client to announce (yes over cleartext!) what server it&amp;rsquo;s looking for, similar to the HTTP Host header. Sometimes, like in the case above, the Host header won&amp;rsquo;t work, since you&amp;rsquo;ve already done a TLS handshake by the time you figure out who they&amp;rsquo;re looking for.&lt;/p&gt;

&lt;p&gt;I also spun the Client Hello parser out into its own importable package, just in case someone else finds themselves in this same boat.&lt;/p&gt;

&lt;p&gt;The code&amp;rsquo;s up on &lt;a href="https://github.com/paultag/sniff" target="_blank"&gt;github.com/paultag/sniff&lt;/a&gt;!&lt;/p&gt;</description><link>https://blog.pault.ag/post/147187084743</link><guid>https://blog.pault.ag/post/147187084743</guid><pubDate>Sun, 10 Jul 2016 09:34:02 -0400</pubDate></item><item><title>Iron Blogger DC</title><description>&lt;p&gt;Back in 2014, &lt;a href="https://mako.cc" target="_blank"&gt;Mako&lt;/a&gt; ran a Boston Iron Blogger chapter, where you had to blog once a week, or you owed $5 into the pot. A while later, I ran it (along with &lt;a href="http://mmillions.wordpress.com" target="_blank"&gt;Molly&lt;/a&gt; and &lt;a href="http://journal.wjsullivan.net" target="_blank"&gt;Johns&lt;/a&gt;), and things were great.&lt;/p&gt;

&lt;p&gt;When I moved to DC, I had already talked with &lt;a href="https://tomlee.wtf/" target="_blank"&gt;Tom Lee&lt;/a&gt; and &lt;a href="https://konklone.com/" target="_blank"&gt;Eric Mill&lt;/a&gt; about running a DC Iron Blogger chapter, but it hasn&amp;rsquo;t happened in the year and a half I&amp;rsquo;ve been in DC.&lt;/p&gt;

&lt;p&gt;This week, I make good on that, with a fantastic group set up at &lt;a href="https://dc.iron-blogger.com/planet/" target="_blank"&gt;dc.iron-blogger.com&lt;/a&gt;; with more to come (I&amp;rsquo;m sure!).&lt;/p&gt;

&lt;p&gt;Looking forward to many parties and though provoking blog posts in my future. I&amp;rsquo;m also quite pleased I&amp;rsquo;ll be resuming my blogging. Hi, again, planet Debian!&lt;/p&gt;</description><link>https://blog.pault.ag/post/145182682418</link><guid>https://blog.pault.ag/post/145182682418</guid><pubDate>Mon, 30 May 2016 21:37:59 -0400</pubDate><category>iron blogger</category></item><item><title>Soylent Sherry Negroni</title><description>&lt;p&gt;&lt;a href="http://soylent.green/post/120400911662/soylent-sherry-negroni" class="tumblr_blog" target="_blank"&gt;paultagskitchen&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;div&gt;&lt;img src="http://i.imgur.com/cArBSzE.jpg" alt="DELICIOUS COCKTAIL PHOTO"/&gt;&lt;h1&gt;Ingredients&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;1 tsp soylent&lt;/li&gt;
  &lt;li&gt;1 tsp simple syrup&lt;/li&gt;
  &lt;li&gt;1 oz Palo Cortado sherry&lt;/li&gt;
  &lt;li&gt;½ oz Rosso Vermouth&lt;/li&gt;
  &lt;li&gt;½ oz Campari&lt;/li&gt;
&lt;/ul&gt;&lt;h1&gt;Assembly&lt;/h1&gt;

&lt;p&gt;Combine Soylent and Simple Syrup. Create what I’m going to start to call “Soylent Syrup”. Enjoy that one, folks.&lt;/p&gt;

&lt;p&gt;Add ice to a rocks glass, pour Soylent Syrup over ice. Add Sherry, Vermouth and Campari. Stir. Garnish with an orange twist.&lt;/p&gt;

&lt;p&gt;Big thanks to &lt;a href="http://mjg59.dreamwidth.org/" target="_blank"&gt;Matthew Garrett&lt;/a&gt; for sparking this one.&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;</description><link>https://blog.pault.ag/post/120401049263</link><guid>https://blog.pault.ag/post/120401049263</guid><pubDate>Sun, 31 May 2015 21:21:37 -0400</pubDate></item><item><title>Oatmeal Raisin Cookies</title><description>&lt;a href="http://soylent.green/post/115264525077/oatmeal-raisin-cookies"&gt;Oatmeal Raisin Cookies&lt;/a&gt;: &lt;p&gt;&lt;a href="http://soylent.green/post/115264525077/oatmeal-raisin-cookies" class="tumblr_blog" target="_blank"&gt;paultagskitchen&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;div&gt;&lt;img src="http://i.imgur.com/Oq9vaSo.jpg" alt="DELICIOUS COOKIE PHOTO"/&gt;&lt;h1&gt;Ingredients&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;¾ cups soylent&lt;/li&gt; &lt;li&gt;1 ½ cups rolled oats&lt;/li&gt; &lt;li&gt;½ cup sugar (white &amp; dark brown)&lt;/li&gt; &lt;li&gt;¼ cup flour&lt;/li&gt; &lt;li&gt;¾ cup raisins&lt;/li&gt; &lt;li&gt;½ tsp baking soda &amp; powder&lt;/li&gt; &lt;li&gt;½ tsp salt&lt;/li&gt; &lt;li&gt;1 stick butter (roomtemp - NOT melted. Don’t even try that. Stop. You. I see you.)&lt;/li&gt; &lt;li&gt;1 egg&lt;/li&gt; &lt;li&gt;1 tsp vanilla&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Assembly&lt;/h1&gt; &lt;p&gt;Combine butter,…&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;</description><link>https://blog.pault.ag/post/115300085818</link><guid>https://blog.pault.ag/post/115300085818</guid><pubDate>Thu, 02 Apr 2015 10:54:00 -0400</pubDate></item><item><title>BOS -&gt; DC</title><description>&lt;p&gt;Hello, World&lt;/p&gt;

&lt;p&gt;Been a while since my last blog post - things have been a bit hectic lately, and I&amp;rsquo;ve not really had the time.&lt;/p&gt;

&lt;p&gt;Now that things have settled down a bit &amp;ndash; I&amp;rsquo;m in DC! I&amp;rsquo;ve moved down south to join the rest of my colleagues at &lt;a href="https://sunlightfoundation.com/" target="_blank"&gt;Sunlight&lt;/a&gt; to head up our State &amp;amp; Local team.&lt;/p&gt;

&lt;p&gt;Leaving behind the brilliant Free Software community in Boston won&amp;rsquo;t be easy, but I&amp;rsquo;m hoping to find a similar community here in DC.&lt;/p&gt;</description><link>https://blog.pault.ag/post/102836319628</link><guid>https://blog.pault.ag/post/102836319628</guid><pubDate>Sun, 16 Nov 2014 21:06:54 -0500</pubDate><category>life changes</category><category>move</category></item><item><title>On my way to DebConf 14</title><description>&lt;p&gt;Slowly, but I&amp;rsquo;ll be in by Tonight, PST (early morning EST!)&lt;/p&gt;

&lt;p&gt;Hope to see everyone soon!&lt;/p&gt;</description><link>https://blog.pault.ag/post/95465376443</link><guid>https://blog.pault.ag/post/95465376443</guid><pubDate>Fri, 22 Aug 2014 11:33:46 -0400</pubDate><category>debian</category><category>debconf</category><category>life</category></item><item><title>PyGotham 2014</title><description>&lt;p&gt;I&amp;rsquo;ll be there this year!&lt;/p&gt;

&lt;p&gt;Talks look amazing, I can&amp;rsquo;t wait to hit up all the talks. Looks really well organized! Talk schedule has a bunch that I want to hit, I hope they&amp;rsquo;re recorded to watch later!&lt;/p&gt;

&lt;p&gt;If anyone&amp;rsquo;s heading to PyGotham, let me know, I&amp;rsquo;ll be there both days, likely floating around the talks.&lt;/p&gt;</description><link>https://blog.pault.ag/post/94837704633</link><guid>https://blog.pault.ag/post/94837704633</guid><pubDate>Fri, 15 Aug 2014 14:54:19 -0400</pubDate><category>pygotham</category><category>python</category></item><item><title>DebConf 14</title><description>&lt;p&gt;I&amp;rsquo;ll be giving a short talk on Debian and Docker!&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ll prepare some slides to give a brief talk about Debian and Docker, then open it up to have a normal session to talk over what Docker is and isn&amp;rsquo;t, and how we can use it in Debian better.&lt;/p&gt;

&lt;p&gt;Hope to see y'all in Portland!&lt;/p&gt;</description><link>https://blog.pault.ag/post/94387887653</link><guid>https://blog.pault.ag/post/94387887653</guid><pubDate>Sun, 10 Aug 2014 21:06:28 -0400</pubDate><category>debconf</category><category>debian</category><category>docker</category></item><item><title>Plymouth Bootsplashes</title><description>&lt;p&gt;Why oh why are they so hard to write?&lt;/p&gt;

&lt;p&gt;Even using the built in modules it is insanely hard to debug. Playing a bootsplash in X sucks and my machine boots too fast to test it on reboot.&lt;/p&gt;

&lt;p&gt;Basically, euch. All I wanted was a hackers zebra on boot :(&lt;/p&gt;</description><link>https://blog.pault.ag/post/92362711868</link><guid>https://blog.pault.ag/post/92362711868</guid><pubDate>Sun, 20 Jul 2014 17:02:53 -0400</pubDate></item><item><title>Satuday's the new Sunday</title><description>&lt;p&gt;Hello, World!&lt;/p&gt;

&lt;p&gt;For those of you who enforce my Sundays on me (keep doing that, thank you!), I&amp;rsquo;ll be changing my Saturdays with my Sundays.&lt;/p&gt;

&lt;p&gt;That&amp;rsquo;s right! In this new brave world, I&amp;rsquo;ll be taking Saturdays off, not Sundays. Feel free to pester me all day on Sunday, now!&lt;/p&gt;

&lt;p&gt;This means, as a logical result, I will not be around tomorrow, Saturday.&lt;/p&gt;

&lt;p&gt;Much love.&lt;/p&gt;</description><link>https://blog.pault.ag/post/91501261178</link><guid>https://blog.pault.ag/post/91501261178</guid><pubDate>Fri, 11 Jul 2014 20:41:26 -0400</pubDate><category>sundays</category><category>saturdays</category></item><item><title>Dell XPS 13</title><description>&lt;p&gt;More hardware adventures.&lt;/p&gt;

&lt;p&gt;I got my Dell XPS13. Amazing.&lt;/p&gt;

&lt;p&gt;The good news: This MacBook Air clone is &lt;b&gt;clearly&lt;/b&gt; an Air competitor, and easily slightly better in nearly every regard except for the battery.&lt;/p&gt;

&lt;p&gt;&lt;br/&gt;
The bad news is that the Intel Wireless card needs non-free (I&amp;rsquo;ll be replacing that shortly), and the touchpad&amp;rsquo;s driver isn&amp;rsquo;t totally implemented until Kernel 3.16. I&amp;rsquo;m currently building a 3.14 kernel with the patch to send to the kind Debian kernel people. We&amp;rsquo;ll see if that works. Ubuntu Trusty already has the patch, but it didn&amp;rsquo;t get upstreamed. That kinda sucks.&lt;/p&gt;

&lt;p&gt;It also shipped with UEFI disabled, and was defaulting to boot in &amp;lsquo;legacy&amp;rsquo; mode. It shipped with Ubuntu, a bit disappointed to not see Ubuntu keys on the machine.&lt;/p&gt;

&lt;p&gt;Touchscreen works; in short -stunning. I think I found my new travel buddy. Debian unstable runs great, stable had some issues.&lt;/p&gt;</description><link>https://blog.pault.ag/post/91313017593</link><guid>https://blog.pault.ag/post/91313017593</guid><pubDate>Wed, 09 Jul 2014 22:38:08 -0400</pubDate><category>debian</category><category>dell</category><category>xps13</category></item><item><title>Apple Hardware: Part II</title><description>&lt;p&gt;A few interesting things happened after I got a macbook air.
&lt;br/&gt;&lt;br/&gt;
Firstly, I got a lot of shit from my peers and friends about it. This was funny to me, nothing really bothered &lt;b&gt;me&lt;/b&gt; about it, but I can see this becoming really tiresome at events like hackathons or conferences.
&lt;br/&gt;&lt;br/&gt;
As a byproduct, there&amp;rsquo;s a strong feeling in the hardcore F/OSS world that Apple hardware is the incarnation of evil.
&lt;br/&gt;&lt;br/&gt;
As a result of both of the above, hardcore F/OSS (and Distro hackers) don&amp;rsquo;t buy apple hardware.
&lt;br/&gt;&lt;br/&gt;
Therefore, GNU/Linux is complete garbage on Apple hardware. Apple&amp;rsquo;s firmware bugs don&amp;rsquo;t help, but we&amp;rsquo;re &lt;b&gt;BAD&lt;/b&gt;.
&lt;br/&gt;&lt;br/&gt;
Some might ask why this is a big deal. The fact is, this is one of the most used platforms for Open Source development (note I used that term exactly).
&lt;br/&gt;&lt;br/&gt;
Are we to damn these users to a nonfree OS because we want to maintain our purity?
&lt;br/&gt;&lt;br/&gt;
I had to give back my Air, but I still have a Mac Mini that i&amp;rsquo;ve been using for testing bugs on OSX in code I have. Very soon, my Mac Mini will be used to help fix the common bugs in the install process.
&lt;br/&gt;&lt;br/&gt;
Some things you can do:

&lt;/p&gt;&lt;ul&gt;
  &lt;li&gt;Consider not giving off an attitude to people with Apple hardware. Be welcoming.&lt;/li&gt;
  &lt;li&gt;Consider helping with supporting your favorate distro on Apple hardware. Props to Fedora for doing such a great job, in particular, &lt;a href="https://twitter.com/mjg59" target="_blank"&gt;mjg59&lt;/a&gt; and &lt;a href="http://blog.uncooperative.org/" target="_blank"&gt;Peter Jones&lt;/a&gt; for all they do with it.&lt;/li&gt;
  &lt;li&gt;Help me make Debian Apple installs one-click.&lt;/li&gt;
&lt;/ul&gt;</description><link>https://blog.pault.ag/post/90775152998</link><guid>https://blog.pault.ag/post/90775152998</guid><pubDate>Fri, 04 Jul 2014 14:05:00 -0400</pubDate><category>apple</category></item></channel></rss>
