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.
A mini-summary / explanation of some criticisms of the Ethical Source Movement.
A summary of my thoughts on the relationship between Richard Stallman and the Free Software Movement.
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.
Sharing my opinions about Aptoide's 'play fair' campaign and some of the claims made in their argument.
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.
A basic overview of the main components of an Android app and how they interact with each other and the Android system.
Basic (but detailed) instructions for setting up a Freenode IRC account through various clients.
An in-depth tutorial explaining how to set up Travis CI to deploy signed builds to Google Play. Among other things.
How I organize my site's CSS and why.
I explain how and why (sort of) I wrote an implementation of the Traveling Salesperson Problem using Exceptional Programming standards.
TL;DR - Don't work for free.
A small command-line utility I wrote with Go that I had a lot of fun with.
A short breakdown of a really really big library I wrote to credit contributors and libraries used in my Android projects.
I made a blog.
The Person Behind the Screen has feelings too. And they hurt.
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 email@example.com, or cord...ed (?) in the Discord server below. For convenience, one of the channels in the server is mirrored to matrix.org and Telegram.
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.sh • af.codes • akshathjain.com • linkedin.com/in/alexandrepiveteau • github.com/AlexLionne • github.com/Andrew-Quebe • github.com/AniketB669 • github.com/benrucker • github.com/Briceronie • blog.sqisland.com • github.com/chug2k • github.com/codebleu13 • github.com/crazeeadil • crutchcorn.dev • github.com/danielhickman • darinsdesign.ml • petersoboyejo.com/ • github.com/epicstar • erikboesen.com • heinrichreimer.com • twitter.com/hector6872 • github.com/i-abh-esc-wq • solus-project.com/ • jacksonhayes.xyz • jahir.xyz/ • jakewharton.com • jlelse.dev • github.com/jnsdrtlf • justinkruit.com • github.com/k0shk0sh • kabouzeid.com/ • kartikarora.me • kutsankaplan.com • lyramsr.co/ • martpie.io • github.com/MatthiasRobbers • www.maxkeppeler.com • dirtyunicorns.com • github.com/mcburton • mikepenz.com • sasikanth.dev/ • github.com/nitroo • twitter.com/pancodemakes • pddstudio.com • github.com/RadekBledowski • riccardobusetti.xyz • github.com/rickclephas • saket.me • github.com/silverword • sprngr.com • chrisbravata.me • github.com/TheGrayWolf81 • tik.dev • by.collaby.net/ • timbremer.com • tommyemo.net • brittanymartin.dev/ • philippeloctaux.com • twitter.com/zaclittleberry • github.com/Zatoner • vukash.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.
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 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.
Latest blog post
A mini-summary / explanation of some criticisms of the Ethical Source Movement.
Find me in places
A bad pun