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

2020

  Animating SVG Icons on the Web   AIGHT: a Low-effort Productivity Tool   Ethics of Artificial Intelligence

2019

  Federated Social Networks   Ethical Source and Subjectivity   Free Software and RMS   Open Source in Education   JavaScript: Productivity over Proof   Thoughts About Aptoide's 'Play Fair' Campaign   Right to Repair   🔗 Introduction to Android: Contexts, Intents, and the Activity lifecycle | unicorn-utterances.com   🔗 Joining Freenode IRC: A Guide | unicorn-utterances.com

2018

  🔗 Continuous Integration with Travis CI for Android | unicorn-utterances.com   CSS Submodules   Exceptional Traveler   Pricing Models   AAAAAAAAAAAAAAAAAAAAAAAHHH   Client-Side JavaScript   Attribouter   Hello World

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 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 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.

Scripts

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.

Websites

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 Fennifith.github.io 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.

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 me@jfenn.me, or cord...ed (?) in the Discord server below.

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!

ajd.shaf.codesakshathjain.comlinkedin.com/in/alexandrepiveteaugithub.com/AlexLionnegithub.com/benruckerdirtyunicorns.comgithub.com/Briceronieblog.sqisland.comgithub.com/chug2kgithub.com/codebleu13github.com/crazeeadilcrutchcorn.devgithub.com/danielhickmandarinsdesign.mlpetersoboyejo.com/github.com/epicstarerikboesen.comheinrichreimer.euabhattacharyea.devtwitter.com/hector6872solus-project.com/jacksonhayes.tvjahir.dev/jakewharton.comjlelse.devgithub.com/jnsdrtlfjustinkruit.complay.google.com/store/apps/details?id=com.fastaccess.githubkabouzeid.com/kartikarora.mekutsankaplan.comdankim.orglyramsr.co/martpie.iogithub.com/MatthiasRobberswww.maxkeppeler.comdirtyunicorns.comgithub.com/mcburtonmikepenz.comsasikanth.dev/github.com/nitrootwitter.com/pancodemakesgithub.com/PDDStudiobrittanymartin.dev/riccardobusetti.xyzgithub.com/rickclephassaket.megithub.com/silverwordsprngr.comchrisbravata.megithub.com/TheGrayWolf81tik.devby.collaby.net/timbremer.comtommyemo.netvukash.in/philippeloctaux.comtwitter.com/zaclittleberrygithub.com/Zatonervukash.in/

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.

My profile picture.

About me.

My name is James Fenn, and I am currently studying Computer Science at the University of Pittsburgh. 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.

https://jfenn.me/ (Double Dot Labs)


Latest blog post

Animating SVG Icons on the Web May 9 2020
A small breakdown of the process I used to create a couple interactive icons for a web project.
arrow_forward More blog posts...

Recent projects

Project icon Metronome Android A lightweight, well designed metronome app for Android.
Project icon Attribouter A lightweight "about screen" library to allow quick but customizable attribution in Android apps.
Project icon Alarmio A simple alarm clock focused on design, readability, and internet radio.
Project icon Android Utils A bunch of util classes that I use in almost every project I write.

arrow_forward More projects...

Find me in places

Fediverse · Gitea · GitHub · Google Play · Instagram · Keybase · LinkedIn · Twitch · Twitter

A bad pun

Please enable JavaScript in your browser.