Update: It turns out the mysterious iOS device was due to the fact I was using purple-hangouts to connect to Google’s chat service. Since it uses undocumented APIs, it must identify itself as an iOS device. When I revoke the iOS device, my chat client disconnects and I am required to re-authenticate. I’m guessing the YouTube plays problem stem from a current issue about paused videos randomly starting in background tabs which I have experienced.
The other day I was searching through my YouTube history and discovered a ton of garbage pop music videos that I’ve never viewed. I always turn auto-play off, so the presence of these videos in my history was puzzling. I immediately checked my Google account history to look for unauthorized access. Within the list was an iOS device. I haven’t owned any Apple productions since my MacBook was stolen two years ago, so I immediately revoked access to that account and changed my password.
Using relatively new hardware on Linux systems can prove to be challenging. Last year, I ran into several challenges when I decided to use an MSI Gaming laptop as a development machine while I was backpacking around the world. Now that I’m in one place again, I’ve run into similar challenges when trying to get my LG 31MU97C-B 4k monitor working at its optimal resolution in Linux. The following guide shows the modelines that must be added via the xrandr command in order to have this monitor function at 4096x2160 at 60Hz.
Jekyll is a powerful static website generator geared towards programmers or those with technical backgrounds. It also has support for automatically building SCSS. I wanted to use Jekyll with the Foundation CSS framework, but I found that most of the tutorials available were out of date, used older versions of Jekyll or Foundation, or recommended forking an existing Github repository. The following tutorial goes through the process of adding Foundation to a Jekyll website and having Jekyll automatically build all the necessary assets. It uses Jekyll 3.0.1 and Foundation 6, and may need to be adjusted for future versions.
E-mail is completely broken and unreliable thanks to big players like Google, Microsoft and Facebook.
Shortly after the NSA spying revelations, I decided to move off of Gmail and back onto my own e-mail server. It wasn’t for privacy, as e-mail is often transmitted plain-text and has no more security than a postcard, but just a general desire to distance myself from Google services. I had run an e-mail server in the past using Postfix and Courier-IMAP back around 2005 (as well as Amavis-new, Spamassassin and ClamAV for spam and viruses). When I attempted to setup an e-mail server in 2013, the stack was pretty much identical except Dovecot now replaces Courier and additional tools such as DKIM, DMARC and SPF are now necessary for outgoing e-mail validation. However the largest challenge I faced wasn’t from my own technology stack, but with my e-mails becoming unreliable against both Google’s and Microsoft’s over-aggressive spam filters.
I’ve been writing a lot of Jekyll related posted lately, because I’ve recently switched all my websites over to Jekyll from Wordpress. My latest challenge has involved footnotes in excerpts. Kramdown, the default Markdown implementation in Jekyll, supports footnotes in Markdown, but they unfortunately show up when using post.excerpt inside Liquid templates. The following is a plug-in I wrote to strip footnotes, as well as the superscript links leading to them, for use on templates with post previews, such as an index page or RSS feed.
Do you have an old Wordpress blog? Are you migrating it to Jekyll? Tired of spam? Don’t want to moderate comments anymore, but you don’t want to lose all those comments from people who have contributed so far? The Jekyll-oldcomments gem is for you!
I wanted to create keyboard and mouse bindings for PulseAudio volume control, which was slightly more complicated than I thought it’d be. The following is a simple script, written in fish shell, that can be used to adjust PulseAudio volumes via the command line. It can be used in conjunction with xbindkeys to create both keyboard and mouse shortcuts for controlling volume and music.
Jekyll 2.5.3 doesn’t allow for source files, such as layouts or includes, to be outside/below a site’s source tree. This worked in previous versions, but was disabled per github requirements for security. I created a gem that monkey patched the relevant Ruby code within Jekyll to allow this again. The source code and installation instructions can be found in jekyll-unsanitize on Github.
A number of Java web applications and services, both open source and commercial (Alfresco, iRise, Confluence, etc.), tend to embed the entire Apache Tomcat servlet engine in their distribution packages. Atlatisan has even gone as far as only supporting their embedded Tomcat package, no longer offering a WAR/EAR file distribution. These packages contain the full Tomcat engine and configuration files and seem really overkill. In most configurations, the default setting files are never even changed. Surely there must be a way to launch Tomcat in code and only require the tomcat jars as dependencies? In the following tutorial, we’ll examine Jetty, an embedded servlet engine designed for this purpose, and show how to replicate the Jetty setup with Tomcat.
Last year I was the victim of a break in which involved me losing nearly all of my electronics. I had backups of my data, the import stuff, but since that time I had been using a work laptop for most of my personal work. I later purchased a Surface Pro2 and had it dual booting Linux, but I found the tablet/laptop difficult to deal with. The lack of a sold connection between keyboard and device made it impossible to use while sitting on a couch like a normal laptop. While visiting Melbourne I decided to purchase an MSI laptop that’s typically marketed for gamers, and turn it into my primary Linux development laptop.