Home

Welcome to my homepage. I became blind at birth from retinopathy of prematurity. I developed an early interest in computers and radio. I use Linux, MacOS, and iOS. I have an extra class amateur radio license. I practice Qigong daily. I consider myself a Taoist. I don't eat meat, and have a genetic sensitivity to gluten. For the rest, you'll have to read my articles.

Replacing AirPlay with the Raspberry Pi

September 13, 2017

A number of years ago I decided to use AirPlay to stream audio through my condo. I picked the best solution for the time but had issues since day one. For a number of years I tolerated them, but I recently had enough. I have switched to a Linux-based solution using the Raspberry Pi and Snapcast. It works and sounds better, and uses open source software. It costs around the same, but potentially does more.

As soon as I began using AirPlay I realized that I would have to find my own ways of doing things. I have a lot of files in OGG Vorbis and FLAC formats, neither of which Apple supports. I also enjoy using the Music Player Daemon, and would far rather have used that than iTunes.

I wrote a simple article detailing how to play an MP3 stream. A few months later I wrote a more detailed article complete with shell script to make MPD work as an app running in Airfoil, a commercial product from Rogue Amoeba. This solution worked, but I always battled one thing or the other. My Apple TV would drop out. Sometimes sources would disconnect. It never ended.

One day I woke up to find that my Apple TV had updated its operating system. I felt pretty certain I had disabled automatic updates as everyone should. The update broke Airfoil and they did not have an immediate fix. I now had no audio for my analog stereo in the living room. I shuffled my Airport Expresses around, but I knew the end had drawn near.

I had such a great experience switching to Linux for my daily computing needs that I figured why not try it for whole house audio. I first considered PulseAudio over RTP, but read reports of mixed success and battles with network traffic. After a lot of searching and comparing I settled on Snapcast. The server simply takes raw PCM audio from a FIFO pipe and broadcasts it using FLAC. Clients then receive the synchronized stream and output it to an amplifier or speakers.

For hardware I used a Raspberry Pi. I ordered four, one for each of the AirPlay devices. I had one Apple TV and three Airport Expresses. The Pi has low quality audio, so I used the HiFiBerry. It took me a little to figure out which case to use. I recommend the stainless steel model. Better yet, just get the combo. As the tables below show, I ended up spending about the same abount of money for something with much more potential.

Cost of AirPlay Devices

Name Price Quantity Total
Apple TV 149.00 1 149.00
AirPort Express 99.00 3 297.00
Airfoil 29 1 29
Total     475.00

Cost of my Open Source Solution

Name Price Quantity Total
HifiBerry DAC+ Standard 28.90 3 86.70
HifiBerry DAC+ Pro 39.90 1 39.90
Raspberry Pi 39.90 4 159.60
Steel Case 24.90 4 99.60
SD Card (8 GB) 12.90 4 51.60
Power Supply 12.90 4 51.60
Total   489.00  

After a short amount of waiting my parts arrived. I installed the Snapcast server on my desktop. I installed the client on my desktop and on my Linux laptop to test it. I also installed the Android client on a tablet, and that came through in a pinch. The software worked flawlessly. To get MPD outputting to Snapcast I inserted the following in /etc/mpd.conf:

audio_output {
    type            "fifo"
    name            "Snapcast"
    path            "/tmp/snapfifo"
    format          "48000:16:2"
    mixer_type      "software"
}

When it comes to software I can solve any problem I need to, but when it comes to assembling hardware I feel like a bumbling fool. The blog claims you can do it in less than a minute, but it took a few attempts for me. The process involves connecting a board to each of the two parts of the case, then sliding them together and screwing everything into place. I eventually figured it out very late at night while rocking out to some eighties music. Truth to tell one still remains open to the elements, crudely connected to my beautiful boombox I’ve had since childhood. It seemed somehow fitting.

I installed the Snapcast client and everything went smoothly. The crown jewel came when I assembled the computer for my living room stereo using the HiFiBerry DAC+ Pro with its gold plated connectors. The lossless audio stream sounds stunning!

Now I have a little Linux powered computer in each area of my condo. I currently use them to stream audio everywhere, but they can do anything I can conceive of. This begins my journey to have an open source house. I wouldn’t want it any other way.

My New Blog

August 17, 2017

“That which has been spoiled through neglect can be rejuvenated through effort.” - I Ching

Welcome to my new blog! I decided to migrate from WordPress to Jekyll. In a month of work I migrated my two WordPress sites, and have something cleaner, more secure, and for me infinitely more accessible. I love it in every way.

I have used WordPress ever since I started this blog. For a long time it never occurred to me to use an alternative. I put up with the web interface. Finding WP CLI helped a lot, as it provided a command line interface. I could write articles in MacJournal. I found a theme I liked. I got someone else to design my professional site. I figured I could put up with all of this. Then I got hacked.

According to wordpress.com, their software powers 28% of the web. This makes it a high profile target. It involves lots of complicated interacting parts and generates each page dynamically as requested. It does this by using a language called PHP. A 2015 study found that over 78% of PHP installations have security issues. Hackers constantly find ways to exploit outdated WordPress versions and especially plugins. I also learned much later from a WordPress expert that “Deactivating” a plugin does not make it unavailable. Delete your unused plugins!

I dealt with the attack swiftly and effectively, but in the meantime my server had sent out a horrifying amount of spam. The outgoing mail queue had 37,000 messages when I halted the web server. I cleaned the database and site’s files. I also had to remove myself from several spam blacklists, a problem which has continued to plague me.

While all of this went on, I had begun my retreat into Linux. I had security on my mind. I had heard of Jekyll through Ruby newsletters and finally decided to check it out. Basically, it lets you build a static web site by editing textfiles. I fell in love.

In contrast to dynamic sites like WordPress, static sites don’t have any changing content. For a long time we had nothing but static sites. They load quickly and have a far lower security risk. Not only that, editing Markdown to do everything completely fit with the way I do things. I could just load everything into Emacs. I found a great theme called Minimal Mistakes, and even submitted a pull request to improve the accessibility of header images, like the one you see on my front page. I knew I had found my new platform.

I spent a month or so working on migrating everything over, writing articles, and getting everything ready. I used the Jekyll-Exporter plugin to export my WordPress posts into markdown and it worked well. I went through and edited all of the front matter, which I expected to do anyway, so it didn’t matter. For my contact form I use Formspree though I may replace it with an in house solution. I also tried a locally hosted search, but ultimately opted to go with DuckDuckGo, which I use and support.

As for comments, I had to think about this. Most people use Disqus, but I really did not like the idea of going through all of this work only to have my prized comments hosted on a third party server. Ultimately I chose to use ISSO. I copied the code snippet into the comment-providers/custom.html file and it worked perfectly.

To deploy, I set up a post receive hook. It took a little fiddling, but I finally got it. I had to modify the example to use bundler, which means that it now updates all of the required gems every time it rebuilds the site as well. After editing my content and viewing it on the local server, I simply use Magit to push the changes with C-xg p p then sit back and wait for my server to rebuild the entire site. Perfect!

Over time I ended up with two WordPress installations, so this change had twice the impact. I redid my professional page using Collections. This makes it trivial to modify the items without touching the structure of the page. Everything about Jekyll has worked exactly as I expected. I only needed to resize my image, and my friend Meg from Snack like a Local helped with that. I also want to give a tip of the hat to the WordPress Accessibility team. They do some good work.

I hope you enjoy my new site. It took a lot of work building it, but I built it myself. It has all of the features of my previous two WordPress installations in one clean static site. I also expect that it will lead to an increase in blogging.

Back to my Open Source Roots

August 09, 2017

So much has happened, I hardly know where to begin. I haven’t written any articles in a while and have pretty much stayed off social media, except for an occasional Frank Zappa quote or some random bit of interesting information. I decided to not comment on politics because I didn’t want to offend a portion of my readers. Suffice to say that I suspected that Trump would win as soon as he didn’t raise his hand to pledge his loyalty to the republican party. When he did win a lot of people around me freaked out but I remained mostly calm, having long suspected it. I felt really good with myself and my world view. In other words, something had to change.

Wikileaks released Vault 7, a small portion of an archive of leaked documents detailing CIA hacking tools. I remember reading about Echelon in the nineties and people called me a kook, so this news did not shock me. I began looking through the documents, and found mini tutorials about how to do basic hacking and security tasks in Linux. I have ran Linux systems for over ten years, and it all checked out. I only surveyed a small amount, but enough to convince me.

Amid these revelations, people asked an important question.

How do we know if a piece of technology spies on us?

Any Linux enthusiast already knows the answer: through the use of free open source software. It got me thinking about my own choices. This converged with something else that I could no longer ignore.

I could no longer use my Mac productively. When I rejoined the Apple family I felt so happy. I knew I had entered a walled garden, but it worked well with my newly discovered iPhone, and provided accessibility to a modern graphical desktop. I found Mac equivalents of my beloved Emacs and other open source tools and left them behind. A few years passed. I remained mostly productive and felt mostly happy, yet something didn’t feel quite right as time went on.

Looking back, it seemed apparent right from the beginning. I wrote a very popular article about getting MPD to work with AirPlay. I wanted to learn to write apps, but I wanted to use tools I already knew, so chose RubyMotion. I installed Homebrew to get Mac versions of open source programs. I always had an open Terminal window. I could never let go of my open source roots.

In case you don’t know, a blind person uses a screen reader, which makes a computer talk. Every operating system has one or several. Windows has the commercial JAWS and NVDA, an open source alternative. All of Apple’s products have versions of VoiceOver. Android has Talkback, also open source. Linux has Speakup for the console, and Orca for its graphical environments.

I had become to grow less and less impressed with the Mac’s version of VoiceOver. The audio had occasional dropouts and lags. Many disabled audio ducking because of this, but it didn’t solve everything. The Quick Nav feature had issues toggling while navigating web pages. The default voice named Alex sounded amazing, but had some annoying pronunciation issues. For example, it dropped the “s” from Philly Touch Tours, the business I co-founded, making it sound like “Philly Touch Tour”. Terminal has never had good accessibility, but since it doesn’t fall into Apple’s 90/10 rule I didn’t expect that to improve. Sadly, neither did anything else.

In the months leading up to the release of Vault 7, I had tried getting Orca working. I had used Speakup at the console for years, but wanted to explore the Linux equivalent of an environment like Mac or Windows. One weekend the pieces all came together. I think it involved battling with PulseAudio. I chose the Mate desktop, a fork of an older version of the popular Gnome desktop of which Orca makes up a part. I had tried this about ten years before and things felt kind of clunky. I prepared to feel under impressed and regard it as something done for pure hack value.

I first browsed my own site with Firefox. It loaded quickly and beautifully. I visited some common sites, including Amazon. It never crashed. It never sputtered. It worked perfectly.

I wondered if I could realistically switch back to Linux for my day to day computer use. Over the next few weeks I systematically replaced all of my Mac applications with Linux alternatives. I use Thunderbird for email and calendars. I replaced all of my Apple TV’s and AirPort expresses with Raspberry Pi’s running Snapcast, a subject which deserves its own post. I use Emacs for a lot of other things, which I do anyway. I use Evil to get superior Vim keybindings. I should especially mention Org Mode, your life in plain text!

When my MacBook Air finally died, I had a choice to make. Should I go with what I know and buy another MacBook, or try something new and go with my Linux solution? I researched my options. None of the MacBooks have particularly good reviews from professional sources. A Linux laptop from ZAReason would cost less. I had bought my awesome desktop system from them. I threw an i Ching reading. I got the hexagram of Revolution. I chose the ZAReason Linux laptop. A few sharp-eyed friends have already noticed. Now as it stands I only use my Mac for Apple things, such as writing apps, iMessage, and iCloud. I do everything else in Linux. I have never looked back.

I would like to make one thing clear however. Apple has shown us that any corporation can make all of their products accessible. They have an accessibility department which they involve in all of their other projects. The ability to use the same hardware and software as our able bodied peers has immense social and psychological value. Steve Jobs had a vision of making a computer which anyone can use and he succeeded. Tim Cook has stated that Apple cares about more than a return on investment. I wish every corporation would follow their example. My decision to use Linux has my primary desktop and my subsequent choices have nothing to do with the valuable service which Apple has done, or the outstanding treatment I have received from them. I simply cannot continue productively using my Mac with VoiceOver due to long standing bugs and a closed archetecture.

Returning to my open source roots brings up a lot of wonderful old thoughts. I have always wanted to find ways to help people with disabilities. Free software and affordable hardware seem like natural choices, and this has finally become possible. I can do all of the basic tasks I could do on my Mac in Linux, yet nobody talks about it. I feel like I have discovered this wonderful secret thing, and I strongly encourage anyone interested in accessibility to give Linux a try. You have nothing to lose - it costs nothing!

Can a Blind Person Brew Kombucha?

August 02, 2017

I love Kombucha! Ever since I first tried it at Whole Foods I had wanted to learn more. When I learned that Inspired Brews would have a brewing class, I decided to sign up. I enjoyed the class, and just finished successfully brewing my first batch.

For the uninitiated, kombucha refers to a fermented drink made with a beneficial bacteria, similar to yogurt. This bacteria, however, thrives on tea and sugar, which I find quite funny. I feel like I have more in common with it than with most humans. After brewing, flavoring makes the drink fizzy, like soda or beer. It has lots of amazing health benefits as well. Personally I believe it helps with mood support for clinical depression, as serotonin production occurs in the gut.

I started adding a few bottles to every Instacart order. One day after floating at Halcyon Floats I got into a chat with the owner. She mentioned that a local brewery called Inspired Brews made them a custom blend called Float Away. Of course I wanted a bottle or two or three. This caused me to check out their web site, which caused me to find the class.

I arrived having no idea what to expect. I didn’t even know if I found the right place, but it smelled like kombucha, so I figured so, and soon found Jessa, the owner. She introduced me to her assistant Alexandra, and others started filing in. The event had food provided by Grateful Plate, which I enjoyed. I will have to try making bi bim bop stuffed mushrooms sometime. We also got free cups of kombucha. I chose one with pineapple.

The class began and we all gave introductions. A lot of people use kombucha for stomach issues. Next we had a lecture. I learned a lot of useful information. We don’t know the exact origin of the brew, and since you need the culture to make the brew, and the brew to make the culture, we don’t quite know how the whole thing even started, like the chicken and the egg. This gives it a mystical feel for me. Kombucha also has a link to the community. She encouraged us to use local fruits and herbs as flavoring. I recalled when speaking in Belgium, that they found it weird that Americans insist on eating all foods all year round.

“Why would you want strawberries in the middle of January?”

The bacteria, which I now knew as SCOBY, standing for Symbiotic Culture of Bacteria and Yeast, continues to grow. Eventually you have to give some away, or find another way to use it. This means that in time, you can give to others without depriving yourself. It made me think of the field of bio-mimicry. What can we learn about human communities and information exchange from this humble culture?

I wondered about safety concerns. Jessa said that if left uncovered, the starter jar will attract tons of fruit flies. I thought of The Winnebago Man delivering a profane rant about flies.

She also brought up mold. If the SCOBY becomes contaminated, it will grow mold, which can make you sick. Obviously I didn’t want that. She said that I can tell from the smell, plus a sighted person can easily verify. In reality, a blind person with any sense will have a sighted helper come by their home periodically to help with cleaning and the like, so this does not present an obstacle. I felt confident that I could do this without dying.

The lecture ended and we gathered our supplies, which we would get to take home to get us started. We received a wide mouth 32 ounce jar, a SCOBY, and a swing top bottle for storing the final product. We also got a funnel and some linen. We would go through the entire brewing process.

First, we put our SCOBY into our jars. Another student described it as looking like a jellyfish. It landed in the jar with a plop. I didn’t get a chance to touch it, but would later. Next, we added cool tea. You can’t pour in boiling tea or it will kill the bacteria. After covering the jar and securing it with a lid, I had my first batch of starter.

After brewing between five and seven days, the drink enters the second stage. This involves pouring the starter into the swing top jar, and adding flavoring. The sugars in the fruits and herbs give the carbonation. They thoughtfully had starter already brewed for us to try this part without waiting. For a flavor, they selected ginger peach with rose petals, which sounded wonderful. I cut up 3/4 of a peach, minced some ginger, and crushed some dried rose petals. I added them directly to the bottle. Done.

I took everything home and waited. Jessa even sent me the printed flier in a pdf file. Three days later the time had come. After dealing with the initial carbonation which she warned me about, I had a bottle of kombucha, exactly like what I would buy in the store, but even better. I had a glass and felt ecstatic. Something about brewing it myself added some extra oomph. I could hardly believe that I had done it.

Tonight I made my next batch of starter, continuing the process. I got to feel my SCOBY, and it didn’t feel as gross as I expected. It does have a jellyfish-like shape and a slimy rubbery texture. I could also feel the new layer forming on top. I did this after washing my hands for thirty seconds under very hot water as instructed. For my first flavoring, I decided to try raspberry ginger, with a little turmeric root thrown in as well. Why not.

A few years ago I tried to enjoy alcohol, but I realized that it just gave me a headache. I stopped drinking almost three years ago and have never regretted it. Some bars have begun offering kombucha as an alternative, and I encourage this trend. I miss having something special to drink on social occasions. I also miss the seasonal local element, and kombucha brings that back in a wonderful way.

I can now brew this amazing health elixir myself. Inspired Brews has me feeling very inspired. Can a blind person brew kombucha? Absolutely!

Fake News from my Real Senses

July 28, 2017

I had a fascinating experience while floating. For those who don’t know, floating means spending time in a sensory deprivation tank, floating in water with epsom salt. I go to Halcyon Floats once a month. It helps me stay centered in our stupid always-on society.

The float started, but I felt disturbed. I had issues with the silicon earplugs, as I prefer the rubber ones. They seem to provide better soundproofing for me. This comes down to a purely personal taste.

Time passed…

Suddenly I felt a buzzing vibration and the water start to move. I realized that the filter had turned on, which happens at the end of a session. Had that much time passed already?

“Don’t worry,” I said to myself, “it’s just fake news.”

I continued relaxing but the vibration grew stronger and the movement of the water continued. I wondered exactly how long I had spent in the tank. I bolted upright and removed the earplugs, making them useless. I discovered quiet surroundings and calm water. I had hallucinated the whole thing!

Some time later, the filter came on for real. It felt totally different. This underscored the experience. I believe that I entered the vibrational state, and almost left my body. It felt like jerking awake while falling asleep, which you have likely experienced. I didn’t realize how deeply I had gotten into the float.

I believed that I had only entered a light trance, when in fact I had entered something much deeper. You really should try floating sometime.

Turn the Page

Search my Weird Life