These are my blogs. I usually talk about why I make certain projects, what they are supposed to do, and how they supposedly accomplish it. I do not post often, as it takes quite a while to write these posts, but you can subscribe for updates through Feedburner.

The Blogs

JavaScript: Productivity over Proof August 2 2019
In the vast majority everyday software, nobody writes a mathematical proof of every piece of functionality. Dynamically typed languages exist for a reason, and this is not it.
Thoughts About Aptoide's 'Play Fair' Campaign June 13 2019
Sharing my opinions about Aptoide's 'play fair' campaign and some of the claims made in their argument.
Right to Repair April 14 2019
A summary of the main points surrounding the debate over Right to Repair and an argument in favour of it, with a focus on Apple devices and customer experience.
Introduction to Android: Contexts, Intents, and the Activity lifecycle | March 18 2019
A basic overview of the main components of an Android app and how they interact with each other and the Android system.
Joining Freenode IRC: A Guide | March 6 2019
Basic (but detailed) instructions for setting up a Freenode IRC account through various clients.
Continuous Integration with Travis CI for Android | November 14 2018
An in-depth tutorial explaining how to set up Travis CI to deploy signed builds to Google Play. Among other things.
CSS Submodules October 26 2018
How I organize my site's CSS and why.
Exceptional Traveler September 25 2018
I explain how and why (sort of) I wrote an implementation of the Traveling Salesperson Problem using Exceptional Programming standards.
Pricing Models September 17 2018
TL;DR - Don't work for free.
A small command-line utility I wrote with Go that I had a lot of fun with.
Client-Side JavaScript August 19 2018
Why I rewrote my site with Jekyll, rather than running a ton of client-side JavaScript that doesn't really work all of the time.
Attribouter August 17 2018
A short breakdown of a really really big library I wrote to credit contributors and libraries used in my Android projects.
Hello World July 28 2018
I made a blog.
GIVE ME FEATURE OR 1★ December 21 2016
The Person Behind the Screen has feelings too. And they hurt.

Android Apps

Project icon Alarmio A simple alarm clock focused on design, readability, and internet radio.
Project icon AP Reader A small app that displays Android Police articles without waiting for the website to load.
Project icon Bagels A live wallpaper that blurs the screen after a period of time without any actions.
Project icon Cleaner The only storage saving app that actually works! :D
Project icon Cronhub Monitor A native CronHub notification client for Android.
Project icon Feedage A basic "news reader" that sorts posts from various RSS feeds into categories.
Project icon Hack NA Notes A small sample project created for a workshop at HackNA.
Project icon Media Notification Slightly unstable attempt to replace all media notifications with Android O styled copies.
Project icon Metronome Android A lightweight, well designed metronome app for Android.
Project icon Monkey Tester Determines whether a user is a monkey, a goat, or both, based on values obtained from android's ActivityManager and UserManager.
Project icon Pasta for Spotify A material design Spotify client for Android
Project icon Plus Viewer A basic google plus client using a WebView
Project icon Port Authority Feedback Reporter A small application to make it easier for riders to report issues to the Pittsburgh Port Authority bus system.
Project icon Snowflakes Make it rain! Or um... snow.
Project icon Status A no-root status bar replacement for Android.
Project icon Wear Locker A basic lock screen that prevents accidental touches on Android Wear 2.0.

Android Libraries

Project icon Adaptive Icon View A library to allow easy implementation of pre-Oreo adaptive icon support in Android launchers.
Project icon Android Utils A bunch of util classes that I use in almost every project I write.
Project icon Attribouter A lightweight "about screen" library to allow quick but customizable attribution in Android apps.
Project icon Color Picker Dialog A simple dialog making it quick and easy to add color picking functionality to any app.
Project icon Crasher An easy to use crash reporting library for Android.
Project icon Palette Getter A library that can get the color scheme of any app.
Project icon Radial Layout A scrollable-ish view that arranges images in circles extending from the center of the screen.
Project icon Signal Strengths A library and sample application with the purpose of getting an accurate signal strength on different Android phones.
Project icon Slide Action View An Android view which provides a nice slide-to-left/right interaction.
Project icon Sunrise Sunset View A lightweight Android view used for displaying and/or editing sunrise and sunset times.
Project icon Time Date Picker A simple Android library containing several time/date pickers and dialogs.
Project icon Wear Color Picker A lightweight color picker library for Android Wear.

Android Games

Project icon Asteroid A simple Android game based on avoiding incoming asteroids
Project icon Monochrome A monochromatic pixelated adventure game.


Project icon AAH A basic cmdline program for Linux to help me do basic things I should already know. Ex: "AAH drive mount"
Project icon Asciimg A command line tool to display images in ASCII.
Project icon Markdown To Jupyter NodeJS script to execute & convert code blocks in markdown files to a JupyterLab Notebook.
Project icon Mdjavadoc A script that generates markdown javadocs for use in Jekyll and GitHub Pages.


Project icon Bugiver A small website that gives you an issue to fix when there is nothing to do.
Project icon Cellularmusic A "cellular automaton" based music generation tool, written with p5js.
Project icon My personal website.
Project icon Music A collection of my piano compositions and other music-related projects.
Project icon P5Samples Stuff I made messing around with p5js in my free time.
Project icon Photos A collection of my photography, published under the Creative Commons License.
Project icon Pixularautomaton A basic cellular automaton that makes pretty animations from images.
Project icon Scrurl Scrolling urls, a.k.a. the second worst website I've ever made.
Project icon Styles A collection of all my CSS styles, organized and documented.
Project icon Tables A simple website that makes a table/graph from a function.

Open Source

I have a strong distaste for projects that purposefully attempt to hide the way that they function from their users. There are many reasons to justify this distaste, but things such as Dark Patterns, Cryptojacking, or even old-school keyloggers stand out as the most offensive. To oppose this, I strive to make all of my projects accessible to the public so that it is possible for anyone to not only see how they are built, but also contribute to their development and benefit from their existence in other ways than just using the product. Nearly every one of my projects is published under some form of Open Source license, and I try to accept every pull request that is created (or at least provide some helpful criticism so that not all effort is wasted if it is not merged).

If you have a question about any of my projects, posts, or... really anything, I can be contacted through many of the "places" listed in /home, emailed at, or cord...ed (?) in the Discord server below. For convenience, one of the channels in the server is mirrored to and Telegram.

The Community

While I have come far since I first started, I did not gain this much knowledge by myself; many people, one way or another, have helped me to solve problems and learn new things along the way.

If you find my projects interesting and want to see more, it is definitely worth the time to check out some of their work!

Me, myself, and I

I have always been interested in technology for as long as I can remember. I still have vague memories of watching videos of the humanoid Honda ASIMO robot in awe, back when I was in elementary school, wondering how it worked. I tried to attend a few classes on "coding", but I didn't gain as much from them as I would have liked, mainly because... I can't think of any other way to say this... they were boring. So many programs exist to try and teach middle schools to use scratch or python, claiming that "coding is easy!", and "anyone can write code!", but they couldn't be further from the truth. Following instructions to make a program that says "Hello World" is easy, but it doesn't teach you anything and doesn't provide any form of an interesting result. Now, I'm not saying that all programming classes are fundamentally flawed - there are quite a few that I have since attended that were quite informative - but nothing like that was available to me at the time. The problem with following instructions when you first start programming is that there are no problems. Since you're following instructions that have already been tried and tested, you know that everything will work properly. There is no design process - testing, problem solving, and finding solutions are all skipped over. So while I did know the basics of python in middle school, I didn't make anything with it. It seemed pointless to me.

I got my first Android device (The Great Samsung Galaxy S2) when I was 13, and started making my first app on it a little over a year later. Because I was a lazy idiot, my first few projects consisted entirely of a WebView linked to a Google Sites page, but I quickly realized the limitations of this method. During the summer break of 2015, I spent hours every day scouring Stack Overflow for examples of how make an android app perform various tasks. This was especially difficult as I had no prior knowledge of the Java language and I'm pretty sure that I didn't even know I was writing Java for the first couple months. My first project was a basic app that took a paragraph as input, and make it 'bigger' by replacing words with longer phrases and/or doubling the amount of spaces between words and sentences in the document. It wasn't long after I finished this that I got my Google Play account and started working on a new app to display a collection of wallpapers made by people I had met on Google Plus.

That app has since been unpublished because it was a complete abomination with the worst code style I have ever seen in my life, and is currently collecting dust at the bottom of my GitHub profile. While making it, however, I managed to improve the app's UX a great deal and learnt a lot about consumer-focused design, making the app's functionality both easy for new users to understand and fast enough for existing users to navigate without feeling like they're wasting time.

Well, that's about all I can think of for an informal description of myself. Ever since I learnt to make Android apps, I've been bouncing around between lots of different types of projects. Some are intended for regular consumers, some for people obsessed with customization, and even a few for other developers like me.

I am currently in my freshman year of college at the University of Pittsburgh trying to figure out what on earth I want to do with my life. That said, I'm still hopelessly addicted to programming, and will keep making anything and everything I can think of in my free time.

My profile picture.

About me.

My name is James Fenn, and I am currently in my freshman year of college at the University of Pittsburgh, where I plan to study computer science. In my free time, I mostly make Android stuff and websites, but also have a bit of interest in graphic design. Nearly everything that I make is open source under some form of license (my preference is the Apache 2.0), and I usually accept pull requests in all of my projects unless stated otherwise.

The main purpose of this site is to document the work that I have done on my projects in order to make them more accessible to the public. It also serves as a basic portfolio - if you are interested in hiring me, you can find my resume here, along with a few ways to contact me.

I have also published some of my photography here, under the Creative Commons license. (Double Dot Labs)

Latest blog post

JavaScript: Productivity over Proof August 2 2019
In the vast majority everyday software, nobody writes a mathematical proof of every piece of functionality. Dynamically typed languages exist for a reason, and this is not it.
arrow_forward More blog posts...

Recent projects

Project icon Alarmio A simple alarm clock focused on design, readability, and internet radio.
Project icon Cellularmusic A "cellular automaton" based music generation tool, written with p5js.
Project icon Declarativ A declarative HTML rendering library that is definitely not JSX.
Project icon theonesean/aight aight is a command-line tool for getting todo tasks quickly.

arrow_forward More projects...

Find me in places

I bin. (Bintray)
I commit. (GitHub)
I release. (Google Play)
I plus-one. (Google Plus)
I gram. (Instagram)
I exist. (Keybase)
I link. (LinkedIn)
I toot. (Mastodon)
I publish. (Medium)
I produce. (Product Hunt)
I snoo. (Reddit)
I stack. (Stack Overflow)
I stream. (Twitch)
I tweet. (Twitter)
I design. (UpLabs)

A bad pun

Please enable JavaScript in your browser.