<?xml version='1.0' encoding='UTF-8'?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0"><channel><title>Roadside Picnic</title><link>https://roadsidepicnic.net/atom.xml</link><description>Welcome, I hope you see only things that you like and nothing that you don’t like.</description><atom:link href="https://roadsidepicnic.net/atom.xml" rel="self"/><docs>http://www.rssboard.org/rss-specification</docs><generator>python-feedgen</generator><language>en</language><lastBuildDate>Wed, 22 Apr 2026 15:33:47 +0000</lastBuildDate><item><title>Cdecl, Vim, function pointers, and you - Roadside Picnic</title><link>https://roadsidepicnic.net/2025-04-08_Cdecl.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p&gt;If you’re learning C/C++ or working on a codebase with some absolutely psychotic casting, you might have come across this site&lt;/p&gt;
&lt;h3&gt;&lt;a href="https://cdecl.org/"&gt;https://cdecl.org/&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The site is nice and approachable, look at this default example:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;int (*(*foo)(const void *))[3]
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Which is then turned into something that almost resembles english.&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;declare foo as pointer to function (pointer to const void) returning pointer to array 3 of int
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;But, soon you’ll try to put one of the types in &amp;lt;stdint.h&amp;gt; into the text box and hit a roadblock&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;uint32_t (*(*foo)(const void *))[3]
syntax error
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;/p&gt;
What's the deal? Where are my beautiful int#_t style units? Unfortunately the website seems to be  using an older version of cdecl, and we've generated some new types of gibberish since that version was written.  
&lt;p&gt;Have no fear, you can get a modern up to date version, and even hook it into your vim!
Make sure you have the following installed first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;-autoconf&lt;/li&gt;
&lt;li&gt;-automake&lt;/li&gt;
&lt;li&gt;-m4&lt;/li&gt;
&lt;li&gt;-flex&lt;/li&gt;
&lt;li&gt;-bison&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Odds are that most of these are already somewhere on your linux system.&lt;/p&gt;
&lt;h4&gt;Run the following commands in a convenient directory.&lt;/h4&gt;
&lt;h4&gt;(‘$’ denotes a command you type)&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;$ git clone https://github.com/paul-j-lucas/cdecl.git
$ cd cdecl
$ ./bootstrap
$ ./configure
$ sudo make install
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h4&gt;Now try the cdecl command and you should be greeted to this screen:&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;$ cdecl
Type "help" or "?" for help
cdecl&amp;gt; 
cdecl&amp;gt; explain uint32_t (*(*foo)(const void *))[3]
declare foo as pointer to function (pointer to constant void) returning pointer to array 3 of uint32_t
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Success! This version supports the typedefs you’d expect to see in the wild, as well as allowing you to add your own typedefs, declarations, macros, and much more.&lt;/p&gt;
&lt;p&gt;The command line interface is great on it’s own, but it might be nice to access this without leaving our editor.&lt;/p&gt;
&lt;p&gt;You can get the vim plugin packaged in vimball form from this beautiful website:&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.drchip.org/astronaut/vim/index.html#VISCDECL"&gt;DRCHIP’S VISCDECL&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;But to install it, make sure you pick up the Vimball Archiver as well:&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.drchip.org/astronaut/vim/index.html#VIMBALL"&gt;DRCHIP’S VIMBALL&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h4&gt;Extract the vimball tar file and edit it’s permissions:&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;$ gunzip vimball.tar.gz
$ tar -oxvf vimball.tar
plugin/vimballPlugin.vim
autoload/vimball.vim
doc/pi_vimball.txt
$ chmod a+r autoload/vimball.vim doc/pi_vimball.txt plugin/vimballPlugin.vim
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h4&gt;You likely have pathogen managing the ~/.vim/bundle directory, so lets move the vimball plugin there&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;$ mkdir ~/.vim/bundle/Vimball
$ mv -t ~/.vim/bundle/Vimball autoload/vimball.vim doc/pi_vimball.txt plugin/vimballPlugin.vim
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h4&gt;Now make sure that the following lines are in your .vimrc file&lt;/h4&gt;
&lt;hr/&gt;
&lt;blockquote&gt;
&lt;p&gt;set nocp&lt;br/&gt;
filetype plugin on&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h4&gt;Next unzip your VisCdecl.vba.gz&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;$ gunzip VisCdecl.vba.gz
$ vim VisCdecl.vba
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, it seems like the plugin doesn’t quite work anymore, vimscript is a bit hard to debug so here’s how I managed to fix it, go to ~/.vim/ftplugin/c/VisCdecl.vim and replace the VisCdecl() with the code below:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;" ----------------------------------------------------------------
" VisCdecl: appends a comment explaining the declaration {{{1
fun! s:VisCdecl()
  if !executable("cdecl")
   redraw!
   echohl WarningMsg | echo "sorry, can't find cdecl on your system" | echohl None
   return
  endif
  let curline = getline(".")
  let curline = substitute(curline,'^',"cdecl explain \'",'') . "\'"
  let curline = substitute(curline,'\s*= .*;',';','')
  let akeep   = @a
  let @a      = curline
  let @a = trim(system(@a))
  put a
  s/^.*$/\/* &amp;amp; *\//
  norm! kJ
  let @a=akeep
endfun

" ----------------------------------------------------------------
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;Note the system() call, if that give you the heebie jeebies, you probably know enough to come up with your own fix, but this is good enough for me.&lt;/p&gt;
&lt;p&gt;This plugin is set to work on .c files, you can set a new buffer to be recognized as a .c file with&lt;/p&gt;
&lt;hr/&gt;
&lt;blockquote&gt;
&lt;p&gt;:set filetype=c&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h4&gt;To use the plugin set your cursor the line you want to translate and enter visual mode with ‘v’ or ‘V’ and press Ctrl+F1 to run VisCdecl()&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;int myint= 0; 
int myint= 0; /* declare myint as integer */
uint32_t (*(*foo)(const void *))[3] 
uint32_t (*(*foo)(const void *))[3] /* declare foo as pointer to function (pointer to constant void) returning pointer to array 3 of uint32_t */
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;Happy Coding!&lt;/p&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2025-04-08&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2025-04-08_Cdecl</guid><pubDate>Tue, 08 Apr 2025 12:00:00 +0000</pubDate></item><item><title>A trip to Montreal - Roadside Picnic</title><link>https://roadsidepicnic.net/2025-04-17_Gallery_Montreal.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p&gt;Here are photos from my stay in Quebec&lt;/p&gt;
&lt;p&gt;I had a wonderful time and couldn’t believe they really all spoke french&lt;/p&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2025-04-17&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_01.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_01.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_01.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_02.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_02.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_02.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_03.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_03.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_03.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_04.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_04.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_04.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_05.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_05.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_05.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_06.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_06.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_06.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_07.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_07.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_07.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_08.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_08.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_08.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_09.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_09.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_09.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_10.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_10.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_10.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_11.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_11.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_11.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_12.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_12.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_12.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_13.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_13.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_13.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_14.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_14.jpg" type="image/jpeg"/&gt;
&lt;img alt="Handsome guys" class="gallery-photo" src="/img/thumb/Quebec_14.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_15.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_15.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_15.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_16.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_16.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_16.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-04-17_Gallery_Montreal/Quebec_17.html"&gt;
&lt;figure class="small-figure"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Quebec_17.jpg" type="image/jpeg"/&gt;
&lt;img alt="You are looking at a beautiful image" class="gallery-photo" src="/img/thumb/Quebec_17.jpg"/&gt;
&lt;/picture&gt;
&lt;figcaption class="gallery-caption"&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/a&gt;
&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2025-04-17_Gallery_Montreal</guid><pubDate>Thu, 17 Apr 2025 12:00:00 +0000</pubDate></item><item><title>Swedish Sodas - Roadside Picnic</title><link>https://roadsidepicnic.net/2025-06-17_Gallery_Swedish_Soda.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p&gt;Here are Sodas from my stay in Sweden&lt;/p&gt;
&lt;p&gt;I had some wonderful beverages&lt;/p&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2025-06-17&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;table&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-06-17_Gallery_Swedish_Soda/Fanta_exotic-dit.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Fanta_exotic-dit.jpg" type="image/jpeg"/&gt;
&lt;img alt="Fanta zero sugar exotic taste" class="gallery-photo" src="/img/thumb/Fanta_exotic-dit.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    A refreshing breakfast soda, despite the claims of 3% juice there is not a single note of flavor that could potentially come from a real fruit. Does not taste like medicine. The EU bottle design which makes it illegal to fully remove the bottle cap scares and confuses me as an American who knows that God made grass highway medians so that we may throw plastic crap unto them. Amen. 7/10. 
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-06-17_Gallery_Swedish_Soda/Trocadero-dit.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Trocadero-dit.jpg" type="image/jpeg"/&gt;
&lt;img alt="Trocadero" class="gallery-photo" src="/img/thumb/Trocadero-dit.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    I can spot apelsin och äppel on the can, pairs extremely well with the family sized bag of tutti frutti I bought at the store. This is a full strength soda with both calories and caffeine. There is supposedly a candy of the same name and flavor, I wonder if it also contains caffeine. Overall an extremely palatable soda, one that I would recommend as a first soda for toddlers and infants, 8/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-06-17_Gallery_Swedish_Soda/Fanta_straw-kiwi-dit.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Fanta_straw-kiwi-dit.jpg" type="image/jpeg"/&gt;
&lt;img alt="Fanta strawberry kiwi taste" class="gallery-photo" src="/img/thumb/Fanta_straw-kiwi-dit.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    It's 10:30 pm and the sun is still up, this is the pink Snapple but carbonated, 9/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-06-17_Gallery_Swedish_Soda/Cuba_cola-dit.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Cuba_cola-dit.jpg" type="image/jpeg"/&gt;
&lt;img alt="Cuba Cola" class="gallery-photo" src="/img/thumb/Cuba_cola-dit.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    An extremely alright generic cola, nothing special here, 5/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2025-06-17_Gallery_Swedish_Soda/Champis-dit.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Champis-dit.jpg" type="image/jpeg"/&gt;
&lt;img alt="Champis" class="gallery-photo" src="/img/thumb/Champis-dit.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Great stuff, I think it is meant to be grape-ish, but not in the neon purple sense. The gold can makes me feel very fancy, this is a refined gentleman's soda. Maybe this is why so many guys are going around wearing newsboy caps here. 8/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2025-06-17_Gallery_Swedish_Soda</guid><pubDate>Tue, 17 Jun 2025 12:00:00 +0000</pubDate></item><item><title>Adding (Lib)notifications to programs - Roadside Picnic</title><link>https://roadsidepicnic.net/2025-09-27_Adding_(Lib)notifications_to_programs.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p&gt;If you’re using a computer with a linux OS and a popular desktop environment it likely uses libnotify to send desktop notifications from various programs.&lt;/p&gt;
&lt;p&gt;Or maybe you’re like me and installed arch with i3 you’ve wondered why signal kept crashing every time you received a message and eventually found out it needed a notification daemon, so you installed libnotify and dunst.&lt;/p&gt;
&lt;p&gt;A quick way to check if your system uses libnotify is to run the following in the command line to see if a notification appears:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;    notify-send "hello computer"
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;This command alone can be enough for simple cases. You can have your program pass a command to the shell through the system() C function which comes free with your &amp;lt;stdlib.h&amp;gt;&lt;/p&gt;
&lt;p&gt;In a complicated program you might want to make use of more of the features available in libnotify, or the string processing for safely passing user input to system may seem daunting. Whatever the reason, you end up finding yourself wanting to call libnotify’s bindings in your programs.&lt;/p&gt;
&lt;h4&gt;Prerequisites&lt;/h4&gt;
&lt;p&gt;Download the following packages from your package manager:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;    glib-2.0
    gdk-pixbuf-2.0
    libnotify
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h4&gt;Source&lt;/h4&gt;
&lt;p&gt;In a new project folder create a file named main.c and paste the following code:&lt;/p&gt;
&lt;p&gt;(Make sure to change the first agument of gdk_pixbuf_new_from_file_at_scale() to the path of a picture on your computer)&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;#include &amp;lt;libnotify/notification.h&amp;gt;
#include &amp;lt;libnotify/notify.h&amp;gt;
#include &amp;lt;gdk-pixbuf/gdk-pixbuf.h&amp;gt;

int main(void)
{
    char warning_message[] = "WARNING!";

    //load a file path with a soda at the end of it  
    GdkPixbuf * mySoda = gdk_pixbuf_new_from_file_at_scale(
            "/home/redrickSchuhart/Pictures/sweden_trip/Sodas/dithered/trocadero-dit.jpg",
            100,
            100,
            TRUE,
            (GError**) NULL);

    // initiate notify
    notify_init(warning_message);
    
    // create a new notification
    NotifyNotification * w_notify;
    w_notify = notify_notification_new(warning_message,"REFRESHING BEVERAGE AHEAD",NULL);
    notify_notification_set_icon_from_pixbuf(w_notify, mySoda);
    
    // set the timeout of the notification to 3 secs
    notify_notification_set_timeout(w_notify,8000);
    
    // set the urgency level of the notification
    notify_notification_set_urgency(w_notify,NOTIFY_URGENCY_NORMAL);

    // docs say that its fine to set this to null
    GError * error = NULL;
    notify_notification_show(w_notify,&amp;amp;error);

}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;To compile and execute your code run the following commands in the same directory:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;    gcc -o notify `pkg-config --cflags --libs glib-2.0 gdk-pixbuf-2.0 libnotify` main.c
    ./notify
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;You should now see a notification appear, congrats!&lt;/p&gt;
&lt;p&gt;pkg-config handles the nitty gritty details of getting installed package libraries to compile with your code.&lt;/p&gt;
&lt;p&gt;Check the output of our pkg-config by running the following:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;    pkg-config --cflags --libs glib-2.0 gdk-pixbuf-2.0 libnotify
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;What you see spit out by the shell is exactly what ends up substituted into your GCC command, that’s the purpose of backticks (`).&lt;/p&gt;
&lt;p&gt;Once our program has grown in size we might get tired of that long compile command. Unfortunately the backtick expansion throws a wrench in things when we try to turn this command into a makefile.&lt;/p&gt;
&lt;p&gt;Let’s restructure our project a bit, create a ./src/ folder and move our main.c to ./src/main.c, then create some more folders: src, obj, img. Add an image to use to the ./img/ folder and add a makefile to the root of the project. Your project’s directory structure should look like this:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;    ├── img
    │   └── trocadero-dit.jpg
    ├── makefile
    ├── obj
    └── src
        └── main.c

    4 directories, 3 files
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;Paste the following into your makefile:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;CC = gcc
LD = gcc
CFLAGS = -g -D_GNU_SOURCE -c -o

SDIR = src
IDIR = include/
ODIR = obj

#to compile from command line you enclose this in backticks instead `pkg-config ... `
LIBNOTIFY_FLAGS = $$(pkg-config --cflags --libs glib-2.0 gdk-pixbuf-2.0 libnotify)

notify: $(ODIR)/main.o
    $(LD) -o notify $(ODIR)/main.o $(LIBNOTIFY_FLAGS)

$(ODIR)/main.o: $(SDIR)/main.c 
    $(CC) $(SDIR)/main.c $(CFLAGS) $(ODIR)/main.o $(LIBNOTIFY_FLAGS)

.phony clean: 
    rm notify
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;The backtick expansion has been replaced with $$() to get the output of pkg-config working properly. You could also paste the flags you obtained earlier from pkg-config into LIBNOTIFY_FLAGS, but by retaining the $$(pkg-config) command your code is more likely to compile on someone else’s machine.&lt;/p&gt;
&lt;p&gt;From the command line run:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;    make notify
    ./notify 
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;And once again you should see your notification appear. Good Job.&lt;/p&gt;
&lt;p&gt;I find these notifications are helpful for longer running processes. You can alter the image, color, and duration of each notificaition. It’s even possible require a click to make them dissapear from the screen.&lt;/p&gt;
&lt;p&gt;For some more documentation on how to use these libraries, check the following links:&lt;/p&gt;
&lt;h3&gt;&lt;a href="https://www.manpagez.com/html/libnotify/libnotify-0.7.7/NotifyNotification.php"&gt;manpagez:libnotify&lt;/a&gt;&lt;/h3&gt;
&lt;h3&gt;&lt;a href="https://docs.gtk.org/gdk-pixbuf/index.html"&gt;docs.gtk:pixbuf&lt;/a&gt;&lt;/h3&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2025-09-27&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2025-09-27_Adding_(Lib)notifications_to_programs</guid><pubDate>Sat, 27 Sep 2025 12:00:00 +0000</pubDate></item><item><title>A Farewell to netrw - Roadside Picnic</title><link>https://roadsidepicnic.net/2025-11-07_A_Farewell_to_netrw.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p&gt;When I first started using vim I was advised to install the &lt;a href="https://github.com/preservim/nerdtree"&gt;NERDtree&lt;/a&gt;
plugin. As someone lacking familiarity with unix systems, and unable to do much more than &lt;code&gt;cd ..&lt;/code&gt; my way around
a terminal this was unequivocally good advice. I would like to thank the kind dork who gave it to me and
introduced me to the magic of modal editing. Learning to use vim already feels like slamming into a brick wall, taking directory traversal and navigation off the plate of a new user is a mercy and a kindness.&lt;/p&gt;
&lt;p&gt;Only after I had a much better grasp of how to edit text in my text editor of choice did I start wondering how
to target the window I wanted my file opened in. I don’t believe I ever found a solution I was happy with, but I
did find the classic vimcast article &lt;a href="http://vimcasts.org/blog/2013/01/oil-and-vinegar-split-windows-and-project-drawer/"&gt;Oil and Vinegar&lt;/a&gt;. Afterwards I removed NERDtree and forced myself to switch to netrw. For most
use-cases netrw is enough, and as the vimcast says it works better in the multi-window split based way that
most people prefer to use when editing in vim.&lt;/p&gt;
&lt;p&gt;Personally I still find netrw a bit cumbersome, copy and move operations could be more intuitive, and trying
to navigate to files that are deeply nested usually ends with me dumping the output of &lt;code&gt;find&lt;/code&gt; into a buffer.
More importantly I’m stuck in Windows Subsystem for Linux for most of the day, and netrw is painfully slow when
navigating into a folder with hundreds of files.&lt;/p&gt;
&lt;p&gt;I’ve tried some other vim plugins for file browsing (although not tpope’s &lt;a href="https://github.com/tpope/vim-vinegar"&gt;vinegar.vim&lt;/a&gt;). They all either felt like too much, or would cause an explosion of vimscript error messages when
something breaks.&lt;/p&gt;
&lt;p&gt;I’ve found a happy alternative that uses the built-in client-server functionality compiled into vim. In tmux
I always keep vim open in the first pane, and start it with the following&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;`vim --servername VIM`
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;My preferred file manager for general use is &lt;a href="https://github.com/vifm/vifm"&gt;vifm&lt;/a&gt; which lets you
change the command a selected file is open with. In &lt;code&gt;~/.config/vifm/vifmrc&lt;/code&gt; search for line &lt;code&gt;set vicmd&lt;/code&gt;
and change it to this:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;`set vicmd = vim --remote-silent`
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;Now when you try to open a file in vifm it will instead be sent to your vim running in servermode. I don’t
use them but similar changes seem possible for nnn, midnight commander, or other file managers. The &lt;code&gt;--remote-silent&lt;/code&gt; flag will let vifm still open your file locally if no vim server is found.&lt;/p&gt;
&lt;p&gt;There are some problems with the above method. Anything in your arglist gets wiped and replaced by the file
that you just opened, and whatever window your cursor was in will have it’s buffer replaced by the new file as
well. This is because the remote send command causes a &lt;code&gt;:drop&lt;/code&gt; command to be run, which is what tramples
our arglist.&lt;/p&gt;
&lt;p&gt;We can spot a partial solution in &lt;code&gt;:help remote&lt;/code&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;The rest of the command line is taken as the    
file list.  Thus any non-file arguments must    
come before this.    
You cannot edit stdin this way |--|.    
The remote Vim is raised.  If you don't want this use 
&amp;gt;    vim --remote-send "&amp;lt;C-\&amp;gt;&amp;lt;C-N&amp;gt;:n filename&amp;lt;CR&amp;gt;"    
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;That strange preface before the familiar ex command &lt;code&gt;:n&lt;/code&gt; is a magic spell that will make the next ex command
work regardless of whatever mode your server happens to be in. The command in the manual will bypass the dreaded
implicit &lt;code&gt;:drop&lt;/code&gt;, but still take over whatever window your cursor is on, if we want a truly ‘silent’ operation
we can set a custom vifm hotkey on the &lt;code&gt;R&lt;/code&gt; key.&lt;/p&gt;
&lt;h4&gt;Add the following to your &lt;code&gt;vifmrc&lt;/code&gt;:&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;"send to remote vim 
nnoremap R :!vim --remote-send \"\&amp;lt;C-\\\&amp;gt;\&amp;lt;C-N\&amp;gt;:\$argadd\ %f:p\&amp;lt;CR\&amp;gt;\&amp;lt;CR\&amp;gt;\"&amp;lt;cr&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h4&gt;Let’s break down this tremendous doozy&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;    "send to remote vim 
    nnoremap R :!
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h5&gt;This sets the &lt;code&gt;R&lt;/code&gt; key in vifm to run the following in a shell&lt;/h5&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;    `vim --remote-send`
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h5&gt;This sends the command to our remote vim instance&lt;/h5&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;    \"\&amp;lt;C-\\\&amp;gt;\&amp;lt;C-N\&amp;gt;:\$argadd\ %f:p\&amp;lt;CR\&amp;gt;\&amp;lt;CR\&amp;gt;"
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h5&gt;Almost complete gibberish, lets remove all the escape characters to make it more legible&lt;/h5&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;    "&amp;lt;C-\&amp;gt;&amp;lt;C-N&amp;gt;:$argadd %f:p&amp;lt;CR&amp;gt;&amp;lt;CR&amp;gt;"
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h5&gt;The control characters &lt;code&gt;&amp;lt;C-\&amp;gt;&amp;lt;C-N&amp;gt;&lt;/code&gt; get us out of any mode we happen to be in. &lt;code&gt;:$argadd&lt;/code&gt; is what is going to be run on the vimserver, it adds the file to the end of the arglist, leaving it intact, which also includes it in the buffer list. &lt;code&gt;%f:p&lt;/code&gt; is a macro that vifm will expand into the full path of the file selected. &lt;code&gt;&amp;lt;CR&amp;gt;&amp;lt;CR&amp;gt;&lt;/code&gt; enter key press x2 on the remote vim instance.&lt;/h5&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;    &amp;lt;cr&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h5&gt;This enter press is processed by vifm&lt;/h5&gt;
&lt;p&gt;&lt;/p&gt;
Now we're getting somewhere. This is a lot better, but aside from being a nightmare of escape sequences this 
doesn't work with multiple selected files. A better way would be to put this into a bash script and call that, 
with some help from 
&lt;a href="https://mywiki.wooledge.org/BashFAQ/050"&gt;wooledge’s BashFAQs&lt;/a&gt;
 I wrote `vifm-remote.sh`:
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash

args=(--remote-send "&amp;lt;C-\&amp;gt;&amp;lt;C-N&amp;gt;:\$argadd $* &amp;lt;CR&amp;gt;&amp;lt;CR&amp;gt;") 
vim "${args[@]}"
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h4&gt;Add the script’s location to your &lt;code&gt;$PATH&lt;/code&gt; in your &lt;code&gt;.bashrc&lt;/code&gt;&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;export PATH="/home/redrickSchuhart/Code/bash_scripts:$PATH"
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h4&gt;Then Run&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h4&gt;Replace Line in vifmrc&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;"send to remote vim 
"nnoremap R :!vim --remote-send \"\&amp;lt;C-\\\&amp;gt;\&amp;lt;C-N\&amp;gt;:\$argadd\ %f:p\&amp;lt;CR\&amp;gt;\&amp;lt;CR\&amp;gt;\"&amp;lt;cr&amp;gt;
nnoremap R :!vifm-remote.sh %f:p &amp;lt;cr&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now any selected files will be sent to your running vimserver and be silently appended to your existing arglist and
buffer list, as well as leaving your cursor and window unchanged (with the exception of exiting whatever mode the
user is currently in).&lt;/p&gt;
&lt;p&gt;This is an odd workflow which still has it’s own drawbacks. Your vim buffers will get rather long with the
full paths instead of relative paths listed, but I find it overall to be a much smoother experience.&lt;/p&gt;
&lt;p&gt;EDIT: &lt;a href="https://roadsidepicnic.net/2025-12-16_A_Farewell_to_netrw_pt2"&gt;UPDATE PT2&lt;/a&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2025-11-07&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2025-11-07_A_Farewell_to_netrw</guid><pubDate>Fri, 07 Nov 2025 12:00:00 +0000</pubDate></item><item><title>Fall 2025 Reading - Roadside Picnic</title><link>https://roadsidepicnic.net/2025-11-12_Fall_2025_Reading.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;h2&gt;Assata: An Autobiography&lt;/h2&gt;
&lt;h2&gt;By: Assata Shakur&lt;/h2&gt;
&lt;hr/&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;    I purchased my copy of this book at a thrift store years ago for a shiny
one dollar bill and felt like I was getting a great deal, even though the cover
had clearly been worked over by someone’s dog. After Assata’s death it was time
to finally give it a read.  Sadly, many of the most interesting parts of the
timeline of Assata’s life are deliberately glossed over, and a gesture is made
towards it being for the benefit of friends who may want to be kept out of the
public eye. Even still, there’s plenty of details about the various prisons and
courtrooms she was thrown into and out of and back into again. The paranoiac
left leaning readers will get a fair taste of what it’s like for the full force
of the 70’s deep-state to be aimed at destroying your life. Any other kinds of
reader will at least remember the time they had to drive on the Jersey Turnpike
and be able to associate the feelings of deep evil they
experienced with some historic loci.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="margin-bottom:36pt;"&gt;&lt;/p&gt;
&lt;h2&gt;The Fort Bragg Cartel: Drug Trafficking and Murder in the Special Forces&lt;/h2&gt;
&lt;h2&gt;By: Seth Harp&lt;/h2&gt;
&lt;hr/&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;    This one will put the fear of god into the aforementioned paranoiac
left leaning reader. The bumbling COINTELPRO era goon squads of yore have been
transmuted into the elite pipe-hitters[1] of the modern era. I borrowed my copy
off of a friend, which was for the best. By the time you’re halfway through the
book you’ll be feeling itchy at the thought of having your credit card number
linked to this purchase, even at such an honorable institution as the penguin
random house website. That might be an exaggeration, but at a certain point in
this book claims are made that the tier one operator IT network filled with the
dork equivalent of pipe-hitters[2] are capable of seeing you through your TV
screen.&lt;/li&gt;
&lt;li&gt;    I know this can’t be true. You know this can’t be true. This simply
does not make sense. Yet by the time you’re reading this, a voice in the back
of your head will say ‘Hold on, these guys are watching me through my TV?’[3].
The stuff in this book will leave you dazed. USA super soldiers with x-ray
vision who can leap over buildings in a single bound, but with one secret
weakness[4]: they’re addicted to telling their wives about all the crimes they
do and then filing for divorce. Many thanks to Seth Harp for putting himself in
the unenviable position of position of boots on the ground investigator into
the deranged underbelly of the operator pharmaceutical complex. You hate to
imagine what couldn’t make it into the finished book.  Highly recommend.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[1] Crack smokers&lt;/p&gt;
&lt;p&gt;[2] Once gain, these guys call themselves crack smokers as a compliment&lt;/p&gt;
&lt;p&gt;[3] In all fairness, the author doesn’t appear to believe this, but does quote
someone who makes this claim. This intentional leading of the audience happens
a few times and leaves you spinning if you don’t pay quite enough attention to
catch it happening.&lt;/p&gt;
&lt;p&gt;[4] I hate to repeat myself, the weakness is of course the crack smoking.&lt;/p&gt;
&lt;p style="margin-bottom:36pt;"&gt;&lt;/p&gt;
&lt;h2&gt;Hunger&lt;/h2&gt;
&lt;h2&gt;By: Knut Hamsun&lt;/h2&gt;
&lt;hr/&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;    This one I picked up during my recent trip to Sweden.  Unfortunately the
photos I took never made it through Nordpost and are trapped in the circle of
limbo reserved for Scandinavian mail that someone was too cheap to spring for
tracking numbers on. I accept this is some form of divine punishment for being
an analog film hipster. My Knut and Tove Jansson’s Sun City thankfully made it
back safely in my carry-on.&lt;/li&gt;
&lt;li&gt;    If you’ve read Dostoevsky’s Notes From the Underground this story will feel
familiar.  Where Dosto’s Underground Man is driven by self-obsession into
behaving as annoyingly as possible, Hamsun’s protagonist becomes more
schizophrenic in thought and deed as he is thrown into deeper poverty and
immiseration. The townspeople’s obliviousness to the protagonist’s anti-social
behavior and increasingly decrepit appearance, and the increasing distance
between the character and the reader lead to sickening encounters where
passer-by become trapped like bugs. During which, the protagonist is confessing
his thoughts to you and begging for pity. As the story goes on you feel the
pivot to repulsion as you shift from witness to a secondary hostage. A classic
for a reason, I’ll give myself some time before I read
Victoria.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="margin-bottom:36pt;"&gt;&lt;/p&gt;
&lt;h2&gt;Crash&lt;/h2&gt;
&lt;h2&gt;By:J.G. Ballard&lt;/h2&gt;
&lt;hr/&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;    A masterpiece. 200 pages of crashing your car, preferably into human
beings, for sexual pleasure. Every time I merge onto the highway I’m certain a
deranged car fucker is trying to kill me to get their rocks off.  The car is
evil and will make you evil, and if one of these freaks crashes into you you’ll
leave the hospital and find yourself mimetically infected with the same urges.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fun tidbit, this blog’s namesake appears in the book:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;    “— pleasant images of young couples in group intercourse around an American convertible parked in a placid meadow; a middle-aged businessman naked with his secretary in the rear seat of his Mercedes; homosexuals undressing each other at a roadside picnic; teenagers in an orgy of motorized sex on a two-tier vehicle transporter, moving in and out of the lashed-down cars;”&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2025-11-12&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2025-11-12_Fall_2025_Reading</guid><pubDate>Wed, 12 Nov 2025 12:00:00 +0000</pubDate></item><item><title>A Farewell to netrw pt2 - Roadside Picnic</title><link>https://roadsidepicnic.net/2025-12-16_A_Farewell_to_netrw_pt2.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p&gt;I’ve written a much better solution to this than what PT1 ended with, this gives you relative pathing, and appears to be more robust against filenames with ‘annoying’ characters. It does require that your system has &lt;code&gt;realpath&lt;/code&gt; installed, so in a shell make sure the following returns a version number:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;$ realpath --version
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h4&gt;Put This Line in vifmrc&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;"send to remote vim 
nnoremap R :!remoteVimSend.sh %f:p &amp;lt;cr&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h4&gt;Write the following in ~/Code/bash_scripts/remoteVimSend.sh&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash 

# enable debug 
#set -x 

# store vimserver's working directory 
vim_cwd=$(vim --remote-expr "getcwd()")

# I expect our filelist with spaces intact 
declare -a file_list=("$@")

# loop through args 
for i in "${file_list[@]}"
do
    # our relative path (if one exists)
    adj_path=$(realpath -e -q --relative-to="$vim_cwd" "$i")
    # check if not null or space
    if [ ! -z "$adj_path" -a "$adj_path" != " " ]; then 
        # build out arg command
        vim_args=(--remote-send "&amp;lt;C-\&amp;gt;&amp;lt;C-N&amp;gt;:\$argadd $(printf '%q' "$adj_path") &amp;lt;CR&amp;gt;&amp;lt;CR&amp;gt;")
        # run command 
        vim "${vim_args[@]}"
    fi
done 
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h4&gt;Add the script’s location to your &lt;code&gt;$PATH&lt;/code&gt; in your &lt;code&gt;.bashrc&lt;/code&gt;&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;export PATH="/home/redrickSchuhart/Code/bash_scripts:$PATH"
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;As before; any selected files will be sent to your running vimserver and be silently appended to your existing arglist and
buffer list, as well as leaving your cursor and window unchanged (with the exception of exiting whatever mode the
user is currently in).&lt;/p&gt;
&lt;p&gt;If any problems arise, uncomment &lt;code&gt;#set -x&lt;/code&gt; to check the debug output of the bash script and tweak as needed.&lt;/p&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2025-12-16&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2025-12-16_A_Farewell_to_netrw_pt2</guid><pubDate>Tue, 16 Dec 2025 12:00:00 +0000</pubDate></item><item><title>Brother MFC-9320CW Printing For Arch Linux - Roadside Picnic</title><link>https://roadsidepicnic.net/2025-12-17_Brother_MFC-9320CW_Printing_For_Arch_Linux.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p&gt;When I was setting up printing on my laptop, I ran into some issue where the cups test page would come out flawlessly, but trying to print via browser, or via command line (lp, lpr, a2ps, vim’s :hardcopy, etc) would result in the page being shifted down and the last ~inch being cut off.&lt;/p&gt;
&lt;p&gt;The solutions other people posted online didn’t quite fix my issue, so give this a shot if you find yourself the same scenario.&lt;/p&gt;
&lt;p&gt;Make sure you have both of these packages installed from the Arch User Repository:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;brother-9320cw-cups-bin 1.1.2-1
brother-9320cw-lpr-bin 1.1.2-1
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h4&gt;Command Line Printing&lt;/h4&gt;
&lt;p&gt;From the a2ps manual &lt;a href="https://www.gnu.org/software/a2ps/"&gt;online&lt;/a&gt; or via &lt;code&gt;man a2ps&lt;/code&gt; or &lt;code&gt;info a2ps&lt;/code&gt;:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;a2ps reads several files before the command line options. In order, they are:
1. the system configuration file (typically /usr/local/etc/a2ps.cfg) unless you have defined the environment variable ‘A2PS_CONFIG’, in which case a2ps reads the file it points to;
2. the user’s home configuration file ($HOME/.a2ps/a2psrc)
3. the local file (./.a2psrc)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;I know that I’m only ever going to be printing on letter sized paper, so I added the following to my configuration file ~/.a2ps/a2psrc:&lt;/p&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;Options: --medium=Letter

# Letter for Brother Printer
#       name        w       h       11x     lly     urx     ury
Medium: Letter      612     792     12      72      576     792     
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;h4&gt;Explained in the manual:&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;where wxh are the dimension of the sheet, and the four other stand for lower left x and y, upper right x and y

(...)

If for instance you want to use Letter as medium, then use:

Options: --medium=Letter

It is exactly the same as always giving a2ps the option ‘--medium=Letter’ at run time.
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;This is good enough for vim’s &lt;code&gt;:hardcopy&lt;/code&gt;, passing a .pdf attachment out of neomutt, and that sort of thing, if your needs are more complicated then this will work as a baseline configuration.&lt;/p&gt;
&lt;h4&gt;Printing via Browser/System Dialog&lt;/h4&gt;
&lt;hr/&gt;
&lt;p&gt;Go to the cups webGUI by connecting to &lt;code&gt;http://localhost:631&lt;/code&gt; in your browser, go to &lt;code&gt;printer&lt;/code&gt; and select yours, then in the second dropdown menu click on &lt;code&gt;set default options&lt;/code&gt; and use your linux login when challenged&lt;/p&gt;
&lt;h4&gt;Cups &amp;gt; Printer &amp;gt; Set Default Options&lt;/h4&gt;
&lt;hr/&gt;
&lt;pre&gt;&lt;code&gt;Media Size: Custom 
Width: 612 
Height: 792 
Units: Points
&lt;/code&gt;&lt;/pre&gt;
&lt;hr/&gt;
&lt;p&gt;EDIT: &lt;a href="2026-01-19_Brother_MFC-9320CW_Printing_For_Arch_Linux_pt2"&gt;UPDATE PT2&lt;/a&gt;&lt;/p&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2025-12-17&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2025-12-17_Brother_MFC-9320CW_Printing_For_Arch_Linux</guid><pubDate>Wed, 17 Dec 2025 12:00:00 +0000</pubDate></item><item><title>Brother MFC-9320CW Printing For Arch Linux pt2 - Roadside Picnic</title><link>https://roadsidepicnic.net/2026-01-21_Brother_MFC-9320CW_Printing_For_Arch_Linux_pt2.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p&gt;Despite writing my prior post only after months of satisfactory and dimensionally correct printing,  I have nonetheless jinxed myself by writing it, and shortly after my printer suddenly started eating the margins of my content again.&lt;/p&gt;
&lt;p&gt;After re-installing any packages I could see as possibly relevant (cups, AUR brother drivers, SANE scanning, etc.), following my own steps from the previous blog post, and editing PPD files manually, I was still unable to get output consistent across all applications.&lt;/p&gt;
&lt;p&gt;Here’s the magic trick&lt;/p&gt;
&lt;h4&gt;Run: &lt;code&gt;brprintconf_mfc9320cw&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;You’ll see an output like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function list : /opt/brother/Printers/mfc9320cw/inf/brmfc9320cwfunc
resource file : /opt/brother/Printers/mfc9320cw/inf/brmfc9320cwrc

Usage on MFC9320CW:
brprintconf_mfc9320cw &amp;lt;[option command] [setting]&amp;gt;...
 -md    : MediaType
   Plain     : Plain Paper
   Thin      : Thin Paper
   Thick     : Thick Paper
   Thicker   : Thicker Paper
   BOND      : Bond Paper
   Recycled  : Recycled Paper
   Env       : Envelopes
   EnvThin   : Env.Thin
   EnvThick  : Env.thick
   PostCard  : PostCard
   Label     : Label
 -pt    : PageSize
   A4        : A4
   Letter    : Letter
   Legal     : Legal
   Executive : Executive
   A5        : A5
   PRA5Rotated : A5 Long Edge
   A6        : A6
   B5        : ISO B5
   B6        : ISO B6
   JISB5     : JIS B5
   JISB6     : JIS B6
   EnvDL     : DL
   EnvC5     : C5
   Env10     : Com-10
   EnvMonarch : Monarch
   Br3x5     : 3 x 5
   BrA4Long  : A4 Long
   FanFoldGermanLegal : Folio
   EnvPRC5Rotated : DL Long Edge
   PostCard  : Hagaki
   EnvYou4   : Envelope #4
   EnvChou3  : Envelope MAX
 -inslot : InputSlot
   AutoSelect : Auto Select
   Tray1     : Tray 1
   Manual    : Manual
 -reso  : BRResolution
   Normal    : Normal(600*600dpi)
   Fine      : Fine(2400 dpi class)
 -copy  : Copies
   numerical value
 -collate : Collate
   OFF       : OFF
   ON        : ON
 -reve  : BRReverse
   OFF       : OFF
   ON        : ON
 -corm  : BRMonoColor
   Auto      : Auto
   Color     : FullColor
   Mono      : Grayscale
 -cm    : BRColorMatching
   Normal    : Normal
   Vivid     : Vivid
   None      : None
 -gray  : BRGray
   OFF       : OFF
   ON        : ON
 -ce    : BREnhanceBlkPrt
   OFF       : OFF
   ON        : ON
 -ts    : TonerSaveMode
   OFF       : OFF
   ON        : ON
 -output : BRImproveOutput
   OFF       : off
   BRLessPaperCurl : Reduce Paper Curl
   BRFixIntensity : Improve Toner Fixing
 -brit  : Brightness
   numerical value
 -cont  : Contrast
   numerical value
 -red   : RedKey
   numerical value
 -green : GreenKey
   numerical value
 -blue  : BlueKey
   numerical value
 -satu  : Saturation
   numerical value
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When I looked inside of the file /opt/brother/Printers/mfc9320cw/inf/brmfc9320cwrc I saw:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[MFC9320CW]
MediaType=Plain
PageSize=A4
InputSlot=AutoSelect
BRResolution=Normal
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note the unwelcome &lt;code&gt;PageSize=A4&lt;/code&gt;. I am a hamburger american who already set my printer default dimensions in the CUPS gui to letter sized, so this looks like our culprit.&lt;/p&gt;
&lt;h4&gt;Run this command:&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;sudo brprintconf_mfc9320cw -pt Letter
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now the inside of file /opt/brother/Printers/mfc9320cw/inf/brmfc9320cwrc shows:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[MFC9320CW]
MediaType=Plain
PageSize=Letter
InputSlot=AutoSelect
BRResolution=Normal
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And now all of a sudden chrome, firefox, zathura, etc’s print options all output with proper margins. For some reason I can’t get printing in black and white to work via the system dialog in a browser, the output remains in color. But I’ve driven myself insane enough for now. Good luck to everyone printing in the new year!&lt;/p&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2026-01-21&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2026-01-21_Brother_MFC-9320CW_Printing_For_Arch_Linux_pt2</guid><pubDate>Wed, 21 Jan 2026 12:00:00 +0000</pubDate></item><item><title>Rare Sodas - Roadside Picnic</title><link>https://roadsidepicnic.net/2026-01-25_Rare_Sodas.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p&gt;Here are some Sodas I’ve tried lately.&lt;/p&gt;
&lt;p&gt;Most of them are rare, but some are regular name brands.
Click on the soda to see their name.&lt;/p&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2026-01-25&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;table&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-01-25_Rare_Sodas/Asahi_Mitsuya_Cider.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Asahi_Mitsuya_Cider.jpg" type="image/jpeg"/&gt;
&lt;img alt="Asahi Mitsuya Cider" class="gallery-photo" src="/img/thumb/Asahi_Mitsuya_Cider.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Pretty good, huge bump purely off the container it's in, I feel like a car and I'm drinking some oil. 8/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-01-25_Rare_Sodas/Chinese_Blue_Fanta.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Chinese_Blue_Fanta.jpg" type="image/jpeg"/&gt;
&lt;img alt="Chinese Blue Fanta" class="gallery-photo" src="/img/thumb/Chinese_Blue_Fanta.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Tastes like gas station brand peach rings and a faint hint of poison. Appears to be a half diet soda with both sugar and fake sugar, 64 calories (unless the label is translated wrong and this has a serving size of 3 oz or something). I poured some out into a clear glass and the color is the sort of unreal blue that video games in the 2000s used to make the ocean. What's important is that they're trying new things over there. 5/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-01-25_Rare_Sodas/Coke_Orange_Cream_Zero_Sugar.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Coke_Orange_Cream_Zero_Sugar.jpg" type="image/jpeg"/&gt;
&lt;img alt="Coke Orange Cream Zero Sugar" class="gallery-photo" src="/img/thumb/Coke_Orange_Cream_Zero_Sugar.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Too powerful and artificial of an orange flavor. Reminds me of the one time in my life I tried orange chicken and the flavor impedance made me want to hurl. 4/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-01-25_Rare_Sodas/Dr_Pepper_Zero_Sugar.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Dr_Pepper_Zero_Sugar.jpg" type="image/jpeg"/&gt;
&lt;img alt="Dr Pepper Zero Sugar" class="gallery-photo" src="/img/thumb/Dr_Pepper_Zero_Sugar.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    The mental model I use to rate these is that a regular coke is a 10/10 on the full strength soda scale and a coke zero is a 10/10 on the diet soda scale. Despite being two different scales they are interchangeable, a 10/10 full fat soda is one that I would just as happily swap with a 10/10 diet soda, meaning I think the taste disparity is equally offset by the lack of calories. Anyone wondering what the point is probably would have confined Linnaeus to the Looney bin. 8/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-01-25_Rare_Sodas/Galvanina_Organic_Chinotto.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Galvanina_Organic_Chinotto.jpg" type="image/jpeg"/&gt;
&lt;img alt="Galvanina Organic Chinotto" class="gallery-photo" src="/img/thumb/Galvanina_Organic_Chinotto.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Poured down the drain on my second sip. I cannot believe Italians are drinking this. As much added sugar as any standard full strength soda, yet it tastes worse than drinking straight liquor. I assume it's original purpose was to strip varnish off of floors.  0/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-01-25_Rare_Sodas/Galvanina_Organic_Pomegranate.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Galvanina_Organic_Pomegranate.jpg" type="image/jpeg"/&gt;
&lt;img alt="Galvanina Organic Pomegranate" class="gallery-photo" src="/img/thumb/Galvanina_Organic_Pomegranate.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Very good stuff, the right kind of mild bitter, a non-fluorescent natural purple that makes you really believe you've paid a premium and have received a premium soda in return. 8/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-01-25_Rare_Sodas/Hello_Kitty_Sparkling_Soda_Tropical.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Hello_Kitty_Sparkling_Soda_Tropical.jpg" type="image/jpeg"/&gt;
&lt;img alt="Hello Kitty Sparkling Soda Tropical" class="gallery-photo" src="/img/thumb/Hello_Kitty_Sparkling_Soda_Tropical.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Couldn't finish the can, tastes like salty baking soda. 2/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-01-25_Rare_Sodas/Natakhtarin_Tarragon.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Natakhtarin_Tarragon.jpg" type="image/jpeg"/&gt;
&lt;img alt="Natakhtarin Tarragon" class="gallery-photo" src="/img/thumb/Natakhtarin_Tarragon.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Love these, an immediate buy wherever available. Sometimes sold as Georgian lemonade, which I find a tremendous marketing blunder. The taste resembles licorice and is best enjoyed with the delicious Georgian cheese breads that will give you day-ruining lactose intolerance. 9/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-01-25_Rare_Sodas/Sanko_Apple_Ginger_Cider.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Sanko_Apple_Ginger_Cider.jpg" type="image/jpeg"/&gt;
&lt;img alt="Sanko Apple Ginger Cider" class="gallery-photo" src="/img/thumb/Sanko_Apple_Ginger_Cider.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    This soda feels healthy, it also appears to be half-diet if the translated calorie information is to be believed. I don't quite understand the rhino mascot but the packaging is well done, the pop-tab is one of those older skinny holes so you get less soda through-put. 7/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-01-25_Rare_Sodas/Solo_Kola_Champagne.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Solo_Kola_Champagne.jpg" type="image/jpeg"/&gt;
&lt;img alt="Solo Kola Champagne" class="gallery-photo" src="/img/thumb/Solo_Kola_Champagne.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Excuse the picture, I was drinking this in a car after fleeing from a storm. There is no taste I can identify other than red, certainly not cola. The carbonation was incredibly light and it left my entire mouth cartoonishly dyed. If I was offered this drink and the alternative was no beverage, I would probably accept it about half the time. 4/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-01-25_Rare_Sodas/Solo_Pineapple.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Solo_Pineapple.jpg" type="image/jpeg"/&gt;
&lt;img alt="Solo Pineapple" class="gallery-photo" src="/img/thumb/Solo_Pineapple.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Similar to the Solo Kola Champagne this soda had incredibly light carbonation, but I think that works with the more recognizable juice flavor. 6/10
                &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2026-01-25_Rare_Sodas</guid><pubDate>Sun, 25 Jan 2026 12:00:00 +0000</pubDate></item><item><title>Winter 2025 Reading - Roadside Picnic</title><link>https://roadsidepicnic.net/2026-03-14_Winter_2025_Reading.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;h2&gt;Hezbollah: The Political Economy of Lebanon’s Party of God&lt;/h2&gt;
&lt;h2&gt;By: Joseph Daher&lt;/h2&gt;
&lt;hr/&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;    This book I purchased off the shelf entirely due to it’s title, and it
certainly makes the guys in the break room stop trying to make small-talk when
they see it. This is one I cannot recommend to anyone, but if you have a
fascination with Middle Eastern politics and unemployment statistics feel free
to ignore me. There’s definitely real information here about Iranian funding
schemes, privatization battles over telecommunication infrastructure, IMF loans
and things of that nature, but this is meant for someone with more background
knowledge than I. The book is focused on a very recent period of time, with the
early days of Hezbollah and the Lebanese Civil war covered briefly and without
significant detail.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;    The main thesis of the book is reiterated often: However religious and
theocratic a party may be, they quickly hit the hard ground of political
reality and have to start focusing on cutting real estate deals. This mode of
operation should dispel (poly-sci degree holders? news-watchers? me, the guy
reading this book? from) the idea of there being forces at play that are beyond the
scope of ‘regular’ political analysis. The beliefs of the fundamentalist should
not be doubled in the mind of the observer, when you trace out the economic
details all the way down to small-ball financial incentives for construction
developers, or even to benefits for the families of martyrs, you see the
extremely rational behaviors of a political machine, same as any other.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;    I did find it odd and hard to grasp the sort of state-within-a-state
structure that Hezbollah seems to occupy within Lebanon. They are allowed to
control their own standing army, their own infrastructure, and run parallel
social programs. The latter is something that is seen more often but the first
two boggle my western mind. Even more interesting was the Hezbollah style
costco card, it doesn’t explicitly denote party membership of the holder or the
accepting business, but can be presented at sympathetic Shia owned businesses
for a potential discount.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;h2&gt;Foma Gordeyev&lt;/h2&gt;
&lt;h2&gt;By: Maxim Gorky&lt;/h2&gt;
&lt;hr/&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;    My copy has a dramatic scowling man looking back over his shoulder. Sadly
the binding on this over 80 year old copy is giving out. I’ve done what I can
with some sort of acid free archival tape of uncertain provenance. I find myself
in this situation far too often, I’m always charmed by the editions that are
falling apart at the seams. Should anyone reading this have some book repair for
dummies advice please reach out.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;    The story of a successful merchant’s loser son. Foma Gordeyev wanders around
the Volga spending his deceased father’s money and asking ‘what’s the meaning of
it all’ until he ends up at the all-merchants riverboat party, where he promptly
snaps and goes around screaming at everyone that they’re pedophiles, they’re
ruining the country, and perhaps most importantly, they’re being annoyingly
self-congratulatory. For his troubles Foma is jumped by the entirety of Russia’s
newly established upper crust, and marched straight off the steam engine into
the nearest asylum.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;    Beautiful Stuff. I will never get tired to reading Russian literature. Gorky
is rather clear in his political leanings, with scenes of the protagonist
becoming insufferably aware of his class position, and even as a child finds a
perverse thrill in being able to rat out his father’s workers after overhearing
them gripe about working conditions. This book doesn’t hit the level of morality
tale narrative that Mother does (no slander intended against Mother, my cynicism
is no match in the face of the fictional serf book-smugglers), and the main
character isn’t behaving quite so much like a cartoon villain for the full span
of the book. Instead, the bulk of the run-time is this young man wondering what
he’s meant to be doing, with his time, with his money, with his status and
getting advice that he hates hearing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;“‘Are you going to bed?’ asked Foma as he gave her hand a tight squeeze.&lt;/h4&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;‘I’ll read a bit first.’&lt;/h4&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;‘Books are to you what vodka is to a drunk,’ he said disapprovingly.&lt;/h4&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;‘Can you suggest anything better?’“&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;h2&gt;Society Of The Spectacle + Simulacra and Simulation&lt;/h2&gt;
&lt;h2&gt;By: Guy Deboard + Jean Badrillard&lt;/h2&gt;
&lt;hr/&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;    I’m sure that I’m doing some sort of disservice to these by lumping them
together, but even though I read them one after another, they appear to be the
exact same book. I’m probably the last guy on earth to have not watched the
Matrix, but from what I’ve heard you can probably just get away with watching
the movie instead of reading the books. Hyperreality, spectacle production,
reproduction of the image, however you like to refer to it, we are
undoubtedly living in this world now. Nobody is capable of dealing with the
infinite media mill individually, and nobody can put forward a reasonable way
to slow or reverse it on a societal level. Anyone with a fragment of humanity
left in their body will intuitively grasp the theses of these books the first
time they catch an older relative blaring AI generated vertical content out of
their phone speaker.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;    Personally I have nothing but endless frustration with the types of works
that can be described as: french, post-modernist(philosophical post-modernism,
not literary post-modernism (although both heavily revolve around being mad at
the TV) which I tend to enjoy), critical-theory, etc. I have seen too many
people get limited print runs with indie publishers by playing extremely fast
and loose with the definition of ‘alienation’ and by my assessment, that
phenomenon is all down-stream of these works. The only work in this vein that I
was pretty amenable towards while reading was Bataille’s The Accursed Share.
This might just come down to him being less of a ‘household name’. I was more
willing to engage with his impractical economic framework as a pure
thought-exercise rather than as something real people believe in. That sort of
grace I do not extend to the practicing foucauldian monks that hang around the
public parks asking me for spare change.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4&gt;    “Animals have thus preceded us on the path of liberal extermination.  All the aspects of the modern treatment of animals, retrace the vicissitudes of the manipulation of humans, from experimentation to industial pressure in breeding.”&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;h2&gt;Libra&lt;/h2&gt;
&lt;h2&gt;By: Don DeLillo&lt;/h2&gt;
&lt;hr/&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;    Personally I’m a guy who likes a good conspiracy theory, but I haven’t ever
paid much attention to any of the JFK expanded universe. That stuff is for an
older crowd, and my own exposure is primarily though Dale Gribble best of
supercuts that someone put into the King of The Hill torrents. This isn’t as
much fun as White Noise and Mao II, but Lee Harvey being portrayed as some sort
of holy fool who accidentally talks himself into being mis-handled by federales
definitely has it’s moments. The most memorable parts of the book are from the
secondary characters, Oswald’s mother who is cut in at various points always
speaking as if she’s in the middle of giving a practiced testimony. The sleazy
strip club owner who closes his club out of respect for the fallen president,
and thanking God that this Oswald wasn’t a fellow Jew. The KGB agent, who is
the only person in the story to immediately catch on to the fact that he was
interrogating a moron.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;    Unfortunately Oswald and his better half are less interesting as subjects,
but then, is JFK an interesting subject in this book? Does he need to be? It’s
the act itself that’s larger than the people involved. I wont say this one
should be skipped , but if you haven’t read any of DeLillo’s works maybe start
elsewhere.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;h2&gt;The Art of Asking Your Boss for a Raise&lt;/h2&gt;
&lt;h2&gt;By: Georges Perec&lt;/h2&gt;
&lt;hr/&gt;
&lt;p style="margin-bottom:18pt;"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;    An extremely fun short book, I gave a copy to my boss at his retirement
party and it got a nice giggle to break the awkwardness surrounding a
corporate cake-cutting. I thought that the structure felt very familiar to
Italo Calvino’s If on a Winter’s Night a Traveler, and was surprised to learn
they were both part of the &lt;a href="https://en.wikipedia.org/wiki/Oulipo"&gt;Oulipo&lt;/a&gt;
writing group. Since there’s not a lot of book here I won’t try to reveal too
much, but I liked it enough to blindly buy the next Perec book I found on sale.
If you’re moved by this review, consider reading the text first before the
translator’s forward, interesting as it was I felt like it also slightly
spoiled some of the fun of the book.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2026-03-14&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2026-03-14_Winter_2025_Reading</guid><pubDate>Sat, 14 Mar 2026 12:00:00 +0000</pubDate></item><item><title>Foreign Sodas - Roadside Picnic</title><link>https://roadsidepicnic.net/2026-04-03_Foreign_Sodas.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;p&gt;A lot of sodas imported from foreign lands (and some that are just pretending to be japanese)&lt;/p&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2026-04-03&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;table&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-04-03_Foreign_Sodas/Trader_Joe's_Sparkling_White_Tea.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Trader_Joe's_Sparkling_White_Tea.jpg" type="image/jpeg"/&gt;
&lt;img alt="Trader Joe's Sparkling White Tea" class="gallery-photo" src="/img/thumb/Trader_Joe's_Sparkling_White_Tea.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    I was unable to taste any tea or pomegranate in this bev. I didn't see that this was a 10 calorie beverage, which might have made me realize that this was more of a Lacroix style drink than a true soda. The skinny airplane cans are infuriating. I am a big boy and want more soda than this. They have an implied paternal admonishment embodied in their dimensions, that you (the royal you (t: the consumer)) should be moderating your intake, and I'm not looking for that in a can. The flu I have might be the reason I can't taste this 3/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-04-03_Foreign_Sodas/Squirt_Cucumber_Lime.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Squirt_Cucumber_Lime.jpg" type="image/jpeg"/&gt;
&lt;img alt="Squirt Cucumber Lime" class="gallery-photo" src="/img/thumb/Squirt_Cucumber_Lime.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Looks like clogged sink water after washing dishes. Cured my hangover 9/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-04-03_Foreign_Sodas/1_25_Litoros_Glass_Coke_Bottle.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/1_25_Litoros_Glass_Coke_Bottle.jpg" type="image/jpeg"/&gt;
&lt;img alt="1.25 Litoros Glass Coke Bottle" class="gallery-photo" src="/img/thumb/1_25_Litoros_Glass_Coke_Bottle.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    My jaw dropped in the deli when I saw this. What a beautiful world we live in. I'm imagining strapping two of these to the beer drinking hat that spongebob wore. 9/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-04-03_Foreign_Sodas/Squirt_Regular.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Squirt_Regular.jpg" type="image/jpeg"/&gt;
&lt;img alt="Squirt Regular" class="gallery-photo" src="/img/thumb/Squirt_Regular.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    A normal 7-up style of beverage, if this was served to me poured out into a glass I would give it a 6/10 but the threathening corkscrew bottle design plus the oddly lifted backplate of glass on the rear that the manufacturing info is stamped onto are a huge plus in my book, bumping this to a 7/10 soda.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-04-03_Foreign_Sodas/Senorial_Sangria_Natural_Flavor_Soda.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Senorial_Sangria_Natural_Flavor_Soda.jpg" type="image/jpeg"/&gt;
&lt;img alt="Senorial Sañgria Natural Flavor Soda" class="gallery-photo" src="/img/thumb/Senorial_Sangria_Natural_Flavor_Soda.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Instant buy if you ever see this, it's grape soda that doesn't taste like it was make in a lab, there's a nice sourness underneath a medium sweetness. 10/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-04-03_Foreign_Sodas/Penafiel_Apple_Mineral_Water_Beverage.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Penafiel_Apple_Mineral_Water_Beverage.jpg" type="image/jpeg"/&gt;
&lt;img alt="Peñafiel Apple Mineral Water Beverage" class="gallery-photo" src="/img/thumb/Penafiel_Apple_Mineral_Water_Beverage.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Looks like cleaning liquid, the taste was alright to start but towards the end of the bottle it left me feeling a bit ill, I like the little greek style tesselation embossed into the plastic. 5/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-04-03_Foreign_Sodas/Walkers_Japanese_Sparkling_Soda_Passionfruit.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Walkers_Japanese_Sparkling_Soda_Passionfruit.jpg" type="image/jpeg"/&gt;
&lt;img alt="Walkers Japanese Sparkling Soda Passionfruit" class="gallery-photo" src="/img/thumb/Walkers_Japanese_Sparkling_Soda_Passionfruit.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    The taste of the passionfruit is so subtle that you are drinking a purely aspartame flavored beverage. The beverage being perfectly clear doesn't help out either. I like the bottle's form factor. 2/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-04-03_Foreign_Sodas/Walkers_Japanese_Sparkling_Soda_Watermelon.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Walkers_Japanese_Sparkling_Soda_Watermelon.jpg" type="image/jpeg"/&gt;
&lt;img alt="Walkers Japanese Sparkling Soda Watermelon" class="gallery-photo" src="/img/thumb/Walkers_Japanese_Sparkling_Soda_Watermelon.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Tastes like eating ice pops out of your friend's garage fridge. The smaller bottle was a good call, the flavor is overwhelming and full sized soda would push it over the edge of being sickening. 4/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-04-03_Foreign_Sodas/Kinza_Cola.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Kinza_Cola.jpg" type="image/jpeg"/&gt;
&lt;img alt="Kinza Cola" class="gallery-photo" src="/img/thumb/Kinza_Cola.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    I never buy knockoff or store brand Cola's, there's always one flavor that they get wrong and makes you wish you were just drinking a regular coke brand cola instead. I was pleasantly surprised by this, it's pretty close to the real thing taste-wise. It was cool drinking out of the Arabic can, but other than that, why bother. 8/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="border:1px solid #ddd"&gt;
&lt;td style="width: 25%"&gt;
&lt;a class="thumbnail" href="https://roadsidepicnic.net/2026-04-03_Foreign_Sodas/Lychee_Pop_Soda.html" style="border:0px"&gt;
&lt;picture&gt;
&lt;source srcset="/img/thumb/Lychee_Pop_Soda.jpg" type="image/jpeg"/&gt;
&lt;img alt="Lychee Pop Soda" class="gallery-photo" src="/img/thumb/Lychee_Pop_Soda.jpg"/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;
                    Advanced beverage technology. Instead of a regular soda tab or even the antique pull-tab, this has the entire top pulls off like a soup can, but with a pressurized pop like a gunshot and a smokey mist. This is 13 calories but the presentation and lack of chemical afterburn fooled me into thinking it was a full strength soda. The fully removable top really lets you glug this one down. There's two full peeled and pitted lychee floating around in the can, I have no idea how they stay preserved, but the can recommends refrigeration. I have to dock a point because its impossible to get these things unstuck without one bonking yourself on the nose, or god-forbid, putting your entire mouth over the rim like a toddler. 8/10.
                &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2026-04-03_Foreign_Sodas</guid><pubDate>Fri, 03 Apr 2026 12:00:00 +0000</pubDate></item><item><title>Hosting For Friends And No Profit - Roadside Picnic</title><link>https://roadsidepicnic.net/2026-04-22_Hosting_For_Friends_And_No_Profit.html</link><description>&lt;div class="span9 bs-docs-sidebar"&gt;
&lt;h1&gt;Intro&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Pretty recently there was a big debacle about discord tying your username to
your real identity. For the time being it appears they have rolled back to a
more moderate position than forcing 100% of their userbase to upload their
government ID, and everyone was glad to swallow the half-sized poison pill, but
they would have been glad to swallow the original one anyway, people are
suckers.&lt;/p&gt;
&lt;p&gt;The friends who I mainly use discord to talk to are pretty tech-savvy, and over
the years we’ve discussed the fact that there will be an inevitable paywall,
locking down of features, ad injections, or other terminal form of
enshittification and have looked into possible alternatives. This crisis gave us
a reason to make the jump, and I’d like write down some of the choices made and
their reasoning for anyone else who may need to get off that platform.
Installation instructions and guides have been better done elsewhere, so I’ll
skip most of the technical specifics.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1&gt;What is our use-case?&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Primarily, multi-user group voice calls to connect to while playing videogames
on a desktop. Additionally, some sort of group text chat where we can ask ‘any
gamers tonight?’. Ideally this text chat is accessible from mobile (split
between iOS and android users). Even more ideally, screenshots can be shared
over this text chat, some sort of chat history, although full sync isn’t
strictly required. We do screen-share sometimes, but almost entirely for
in-browser trivia games, which could be offloaded to posting screenshots in a
text chat.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1&gt;What programs can accomplish this?&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;We went with two, Prosody XMPP server for texting, and mumble server for voice
chats. For client software, the default mumble client, gajim for xmpp on
desktop, monal/conversations for xmpp on iOS/android. These were hosted on a
cheap 5€/month VPS from netcup which gives 2 vCores, 4GB ram, 128gb storage, and
a 1gbps ipv4 address in a datacenter near you.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1&gt;Why these programs?&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I have romantic nostalgia for IRC, but there’s no world in which normal people
will go back to using it. I was scared off of trying to host matrix after seeing
the install instructions, minimum resource usage, and horror stories from
others. Signal’s self hosting seems to be more theoretically possible than
something that is done by mere mortals. Jitzi meet’s self hosting looks
reasonable if we cared more about making video calls and screen-sharing.&lt;/p&gt;
&lt;p&gt;I was originally going to use snikket XMPP’s server instead of regular prosody
on account of their ‘painless’ installation, but I originally was trying to
test-run these programs on an old laptop offline, and snikket’s installation
doesn’t work for that use-case! They’ve optimized ease of deployment so much
that you end up not (easily) being able to test it out on a LAN! Fair enough for
them, that’s probably the right decision, but it forced me to switch to prosody
and deal with a much more hands on configuration. eJabbard seems like the right
choice if you expect to have thousands of users online at once, so I skipped
that option.&lt;/p&gt;
&lt;p&gt;There are supposedly ways to do group calls on XMPP, but they appear new and
poorly supported, so mumble, which is dedicated to doing video-game style voip
seemed like the safer bet. It also meant I could disregard all the STUN/TURN
stuff that XMPP can integrate with.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1&gt;What configuration did I do?&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Mumble is almost configuration-free (aside from opening a port in your firewall,
TLS/SSL certificates, yadda yadda), and works with no hassle. Prosody on the
other hand, gives you a great deal to chew on, you should watch a guide, read
the docs, and think about what you want and need before going live.&lt;/p&gt;
&lt;p&gt;For my own use-case, I didn’t use any sort of external SQL database, for the
backend. I turned off any sort of user registration, all accounts will be made
by me, ssh-ing and running the prosodyctl command. For ease of use, I enabled
cloud_notify, mam, carbons. I also set up muc, upload, and proxy, with
reasonable limits on message archive expiration and max file upload. I disabled
s2s, as well as bosh, and websocket, but if someone complains about their job
blocking XMPP traffic the latter can be useful for working around that. The
STUN/TURN stuff also seemed like a pain which mumble would cover most of for our
needs, so I didn’t bother.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1&gt;What didn’t work?&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Oddly enough, Lets Encrypt wildcard certs for Cloudflare, failed with error
messages that I couldn’t get to the bottom of. I also tried to be clever and use&lt;br/&gt;
SRV records instead of good ’ol fashion subdomains with A records. Turns out if
you do that and a different server is hosting your main web domain (cloudflare
pages), and if your wildcard certs don’t work then you screwed yourself. Go with
the standard subdomain and A record, save yourself some headache.&lt;/p&gt;
&lt;p&gt;Iphone push notifications also didn’t work, out of the box iphones will only
load old  push notifications if you open the application yourself, but you can
download and enable cloud_notify_extensions from the community module
repository to fix that. Unfortunately, this requires s2s communication to be
allowed (between your server and the server that serves apple push
notifications). You can also install the restrict_federation community module to
restrict s2s communication to the bare minimum. Thanks to the kind developers in
the official prosody xmpp chat for being helpful and responsive to questions.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1&gt;How well does the server run?&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;It’s been a few months now, I’ve had no need to do any sort of upkeep yet, the
resource usage is so low that it’s indistinguishable from the bare ubuntu server
OS, expect around 200-500MB of ram usage if you have a few people in an active
voice-call and texting. CPU, storage, and bandwidth usage are almost
non-existent on the scale of a dozenish active users. If you’ve got hundreds
of people willing to use your XMPP or mumble instance, I congratulate you on
tricking this many nerds into thinking that federation is important or whatever.&lt;/p&gt;
&lt;p&gt;I’ve had no drop-outs, lag, or downtime (that wasn’t caused by me) yet, I know
these cheap VM providers will usually throttle you, but my needs are so light
that if it’s happening I can’t perceive it. I’ve also been using the server as
an ssh proxy from time to time, and I’ll probably have it serve some git repos
down the line.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1&gt;How well do the clients run?&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;On account of being FOSS software by dorks, and for dorks, they’re all
lightweight. Gajim running on windows defaults to sending an incredibly annoying
pop-up and ding every time you get a message, that I’m learning is called a
toast notification. Turn that off right away, tell your friends to turn it off.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1&gt;Getting normal people to use these clients&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I’m enough of a nerd to have the time, money, skill to do this, and also the
firm belief that it should not be a requirement to upload my government ID to
send messages to my friend on the computer. Maybe the top 3 of my most equally
deranged computer-sniffers are willing to put up with an extremely bad user
experience because they share the same moral framework as me. I mainly figured,
my 3 friends would use this thing, 90% of my messages go to those guys, the
Norman Normals are going to fall by the wayside. I’ll send them stuff over SMS.&lt;/p&gt;
&lt;p&gt;Much to my surprise, the Norman Normals now outnumber the computer power-users
on my server. It’s almost impossible to convince someone to download 2 separate
.exes, and they definitely don’t want to hear about why it has to be 2 separate
.exes, and they will consider terminating their friendship with you if you try
to explain public/private key asymmetrical encryption to them. But if you can
get those two .exes on their computer, it’s pretty smooth sailing. The worst
hiccup was mumble-client defaulting to the wrong audio input on someone’s
computer, and I’ve had that same issue happen on discord plenty of times in the
past. I highly recommend if these are people you can hang out with, just go to
their house and download the .exes for them, it’ll take you about 3 minutes to
do, but everyone is extremely tired of already being told to install more crap
at every turn. You can just put their passwords in for them and click the enable
OMEMO button, and they’ll be happy after that.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1&gt;I, Norm Every-reader Norman don’t have the computer skills to do this&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Maybe you don’t, I do spend far too much time on the computer, and almost
entirely looking at the terminal. But before this, the entire experience I had
‘hosting’ something was running plex. I also had no understanding of what a
server was, my networking skills were on the level of getting confused every
time I had to enter the numbers of a subnet mask, in short, I’m out of my
wheelhouse here. If you’re interested enough in computers to bother reading
this I’d bet you can do it. Or if you’re friends with any dorks running their
own plex, bother them until they do it for you, they’re barely using the CPU
their machine is serving .mp4s from, what could running one more program hurt?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h1&gt;What I would like to change&lt;/h1&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I feel comforted by the fact that if I screwed up some networking then the only
thing that’s going to happen is my VPS is going to get DDOSed or have a bitcoin
miner installed on it, and probably an angry email from my host provider telling
me they’ve wiped my installation. But the end goal is to have these programs
running on my own computer in my own home, with hopefully just a remote nginx
forwarding traffic.&lt;/p&gt;
&lt;p&gt;I also would like to add a jitzi meet installation to this stack, we’ve been
using the public instance for the few times we’ve needed to screen-share, and it
works well enough, and it runs in a browser. One big shortcoming with jitzi-meet
is that it doesn’t seem to support sharing the audio output of the host’s shared
screen with other users, not a big deal for us, but it means a watch-party type
experience isn’t possible without some work-arounds.&lt;/p&gt;
&lt;p class="text-bottom-right"&gt;
&lt;span class="label label-success"&gt;∵
          Redrick Schuhart
      &lt;/span&gt;
&lt;span class="label label-success"&gt;∴ 2026-04-22&lt;/span&gt;
&lt;/p&gt;
&lt;section class="gallery"&gt;&lt;/section&gt;
&lt;/div&gt;</description><guid isPermaLink="false">https://roadsidepicnic.net/2026-04-22_Hosting_For_Friends_And_No_Profit</guid><pubDate>Wed, 22 Apr 2026 12:00:00 +0000</pubDate></item></channel></rss>