From negative to positive
My net worth has officially went from negative to positive. I still have 11K in student loans to pay off, but they still have 3 months of grace period left on them, so I plan on leaving them be for the meantime. I’ve actually lost some money on my investments. But that’s alright, as I kinda expected to lose in the beginning as I learn how to invest. My main source of income is still my biweekly paycheck, though I am looking to sell some things I don’t use anymore to get more money to pay down my debt.
In order to achieve the 99K challenge, I need to find some way to augment my income (I physically won’t make it in a year if I just rely on my salary). One way to do so would be to start a side-business, and software as a side-business is extremely attractive. Why is software one of the best side-businesses? Well, in order to figure out we need only to look at a regular businesses that sell physical products.
Let’s say you own a donut shop. In order to make a profit with your business, you need to buy ingredients to produce donuts (1). Then, you have to bake the donuts (2). After making the donuts, you would have to sell the donuts in a shop, or ship your product to your customers (3). Boom, you now have to deal with 3 costs you must incur each time you want to make a profit selling donuts. With software, the story is a bit different.
You program or hire a developer to create your software– costing you time / money (1). Now that your software has been produced, you can sell it any number of times depending on how many people want to purchase it. You have a one-time fixed cost and can continue to profit off the software without buying materials, manufacturing a new good, or incurring shipping costs (since it cost nearly nothing to send data).
Thus, software based businesses have really high margins, meaning that a large percentage of their revenue is profit. For example, if a piece of software costs $100, the company that produced it could keep upwards of $80 of that sale as pure profit because there are so few cost associated with producing an additional unit of software.
The last reason I’m considering software is because I believe I can produce it, and it’s not as hard as it may seem because there are tons of forums and guides online (although it is not easy by any means).
Apple IOS development
I have some experience creating software, but I have never created software with the intent of monetizing it. As a result, I’ve decided to invest some time in learning how to code in swift, apples developer language.
The main issue I had with swift is that the editor the language uses, xcode, only runs on apple based devices. This means that we windows users cannot directly run xcode. We have to take an alternative route by installing a virtual machine onto our PC that has a MAC operating system on it. Fortunately, a guide for doing so is available on techviewer.com. Unfortunately, the guide doesn’t address how to deal with your computer bursting with errors and warnings, so make sure you have google available before attempting to defy the laws of nature and run a mac on your windows.
After the virtual machine is installed, your mac operating system will need to perform updates before you can install xcode. This took me about an hour to complete. After all was said and done, I was ready to finally get started coding in swift! There was just one problem: I had absolutely no idea how to do anything in swift.
Apple has a terribly outdated guide that anyone can use to learn the basics of swift. It’s pretty difficult to work through since apple updated swift to version 3, and a lot of the steps outlined in the guide have version errors. However, after googling like a madman and much trail through error, I worked through it and created a mini-app that lets you rate pictures about nature. Here’s what it looks like:
The app simply stores pictures you’ve taken along with a picture title and rating value (in the form of golden apples). If you click on any image in the list, (Picture 1), the app will take you to a zoomed in version, (Picture 2). Here, you can change the rating (apples), the title, or even the picture. Should you find yourself dissatisfied with your creation, you can always press “Restart the world” and nuke the screen (Picture 3). If for some reason you want to start learning swift yourself, here’s a link to a zip file containing all of the chapters completed (courtesy of Ian Wilson). Should you find yourself stuck on the tutorial, just download one of these chapters and compare your code.
Ultimately, however, I don’t think its wise to try and create a project solo. Completing projects often involve non-linear tasks coupled with critical thinking. As a result, it’s really easy to get stuck on one part of a project. Getting stuck is dangerous because it brings progress down to a halt. Whenever a team is working together on a project, there is a team to support each other person whenever an individual gets stuck. As a result, teams are able to solve problems and get “unstuck” much faster than an individual.
In my case, I knew the difficulties of soloing projects first hand from trying to create an automatic axon tracing program. Thus, I went on to find a team. I had two requirements for my teammates:
Reliability: I want teammates that would follow through on their promises. For example, if a teammate promised me they could meet at 1PM on a saturday, they would make every effort to be present and keep that promise. Basically, this means that my ideal teammates words are worth their weight in gold.
Competence: I want teammates that can learn from their mistakes and research what they don’t know how to do to the point that they can meaningfully contribute to the project.
Ultimately, I chose my teammates not based on talent but on what I needed in order to work efficiently. And, since none of us seem to have any inherent talent when it comes to software, we can create the results of talent through our teamwork.
In order to sharpen our skills and get use to working together as a team, we decided to plan a practice app. The app’s name is BoxRoom, (BR), and this is what the tentative logo looks like:
BR is an app available for IOS that enables users to design custom box shaped rooms. The app allows you to design a rectangular room of variable size as well as create objects to represent furniture in your room. The app also saves your rooms so that you can export and share the rooms you have created. Essentially, the app is a sandbox for room creation.
BR is a good app to start off with because it requires us to master 3 basic principles that will be useful for later projects.
- We have to learn how take gesture inputs from a mobile device and output actions based on what the user is doing on the screen
- We must learn how to save and load data inside of the IOS environment
- We need to learn how to integrate a graphical user-interface with hard back-end code.
All three of these principles are absolutely essential for just about any software endeavor. Hopefully, BR gives my team and I the opportunity to work well together and master these principles.
I’m Probably Naive
Embarking upon the software path may very well be many times more difficult than I perceive. I haven’t thoroughly explored software enough to predict whether or not I can go from an idea to a finished product. But in this case, I take my ignorance as a strength, for not knowing lets me easily and foolheartedly take my first step.