print("Hello World")

Towards the beginning of the year, I learned about a really fascinating open source project that’s come to find a special place in my heart: Nextcloud.

For the uninitiated Nextcloud is an open source self hosted alternative to Dropbox, Google Drive, and to an extent Office 365. As an open source enthusiast who hadn’t really self hosted anything before beyond the occasional Blender rendering node and doesn’t love most cloud based offerings: I was intrigued to say the least. Here’s my story of me setting out into the world of cloud storage hosting for my family spread across the country.

At Linux fest northwest I got to meet the primary author of the Open Source Science Fiction Franchise "Rosecode." Since then we've been in constant contact, and I've actually become the community coordinator and have also been writing a Flask App for distributed version control (like git, but for stories and stuff). If you'd like to start reading Rosecode or get involved in the project, feel free to check out http://rosecode.io

While describing the blog series to a friend I accidentally slipped up and said “I want to write about how I’m trying to be a better Unix Loser” instead of Linux User. I think the name is going to stick around, since it’s kind of funny and I like my BSD friends.

So here’s the goal of this blog Series: Become a completely native Linux User with a full knowledge of the bash commands necessary to administer a complete compute cluster, web server, and file storage/database. There are other tools I’m going to be learning as well, since I can’t do everything inside of bash. I’m already using Nextcloud to keep track of my own data and my Family’s (more on that in another post, since that’s a fascinating topic in and of itself) which is based off apache, PHP, MySQL, and Redis. I don’t really know how to use those things. I’m almost totally reliant on the community forums, stack overflow, and github comments. It would be nice not to need to google something every time I need to make a change.

I’m also using Blender (The software a lot of my workflows and motivation surround), and Blender has it’s own Linux Command line language/interface for headless rendering and operation I want to take advantage of, and maybe even figure out some Kubernetes or Ansible deployment options (this will have to be explored further).

In terms of Terminal Emulators, I really enjoy Terminology. It’s a lesser known terminal part of a somewhat obscure desktop environment called Enlightenment. I was turned onto Enlightenment at Linux Fest Northwest this year by it’s Debian package maintainer, and while I don’t think I’ll install the full desktop environment, I really enjoy their super solid multitasking terminal emulator. It works great on all of my devices, and the tycat command is awesome. Now you can actually print out image files in the terminal: something I actually was missing from my graphical file browsers. It also has a great window paning system similar to what I’m used to in Blender that functions somewhat similar to a tiling window manager. It fits great into my workflow, and the more eyes that are on it the better it becomes.

The last thing is that I want to have sufficient programming skills to contribute to the open source projects that I love so much. I’m already learning python and getting to the point that I can start building extensions to Blender and build little quality of life programs (I calculate my budget with Python, and soon it will have SQLite integration. I also plan to build a fitness tracker and analysis program for another little device).

So with those goals in mind, let me share some of my story about where I’ve been with Linux in the past. Despite being a Linux user for the last ten years, most of that time I only knew a few commands: sudo apt-get update sudo apt-get upgrade sudo apt-get purge sudo apt-get install

Beyond those few commands, opening a terminal window was just a terrifying experience. I understood a lot of how powerful it was, and how it was an alternative for the desktop environment I was using. But it didn’t really seem worth it, especially since all through high school I basically only used my computer for Blender and Google Drive. I am proud however of how many times I was able to follow the guides for getting proprietary Nvidia drivers working way back in the days of Ubuntu 11.04 and previous.

Things are a lot better now. A lot of my file manipulations and hunting happens in the terminal with just regular bash commands. I don’t even have a terminal file browser installed on my workstation or laptop. It might be nice to get one, I don’t know yet. I haven’t delved in that far yet. I nano config files, and actually understand how those changes affect what happens for the most part. SSH I feel fairly confident about, although I know that I’ve only scratched the surface.

APT is another big one that I’m glad I’ve chosen to dive into. With fixing broken packages, PPA’s, adding experimental repos and the like, I know that here is where I’ll typically go beyond the casual Ubuntu user’s experience. But there is still so much for me to learn, especially since I know that I want to create my own packages and software.

From my local bookstore I’ve purchased “The Complete to the Linux Command Line” and since BASH commands haven’t really changed at all in the last billion years (at least not really), this is probably a good place to start.

Whether it’s going to be useful or not remains to be seen, but I have a second edition copy of “The Linux Bible” from the early 90‘s. I mostly got it as a piece of history, since it was produced by the now defunct Linux company Yggdrasil. But this was back in the days of manually setting up an X window system and before a lot of the modern convenience we have with our modern distributions. If it proves not useful, I think I’ll pick up a copy of Linux From Scratch, or do a Gentoo installation at some point. When I’m ready for it. This is not that time.

Last but not least is the book I’m almost finished with that’s proved incredibly useful for my basic understanding of computer science and programming: “Learn Python the Hard Way.” While I’ve heard from friends that it’s not as updated for Python 3 convention as it should be, it’s been an enjoyable experience so far.

So now that you have an idea of where I’m starting and where I want to go, I invite you on my journey to become a complete master with me.

Original pusblished on Medium.com (Link)Being poor sucks. It really does. There’s no way around the fact that it sucks to not have enough wealth to live the life you want to, or even afford basic amenities. But here’s my advice from when I was too poor to afford almost anything: Buy a bread machine.

The control panel for my bread machine

Bread machines line the shelves of thrift stores everywhere holding more value than almost any food processor or blender. In essence a bread machine is a magical robot where you put in the ingredients for bread and leave it alone for a few hours or so and it makes you a loaf of bread. Sound magical? You have no idea.It’s been proven over and over again that purchasing ingredients is so much cheaper than purchasing ready made food items. The only cost differential is in your time (which is a great thing to spend when you’re poor. When you don’t have money).When I moved out of my parent’s house, a lot of savings dried up very quickly but what saved my butt was having loaves of bread that cost 50 cents for ingredients and fresh and warm goodness after binging the office or finishing some programming exercises. (It also makes your house smell great)Let’s do a cost comparison. A loaf of bread (factory made, it’s the cheapest) costs about two dollars at my local grocery stores. A bread machine at my local thrift stores costs about five or ten dollars. About the same as 5 loaves of bread. It costs about 50 cents in ingredients for a loaf of bread (although it’s difficult to spend 50 cents per batch, you buy in small bulk). For two dollars you can get eight loaves of bread (50 cents in a dollar, two dollars). So you make back your money very quickly, and bread machines tend to last a very long time (I’ve had mine for about two years, and it had some family usage before then). It’s lasted me longer without repairs than most cars.Let’s calculate the saving of owning a bread machine for the past two years assuming a few things:-I eat about two loaves worth of bread a week.-There are fifty two weeks in a year.If I was buying my bread in a store, that’s about 208 bucks a year. That’s for the world’s cheapest factory bread (which isn’t really good for you).If I make it myself, I only spend about 52 dollars per year on bread. Those are insane savings. And your bread machine can make way better stuff than just factory white bread. You can make your own wheat bread, and the real value comes in the fact that you can also have it just make you dough for pizza, bagels, cinnamon rolls, dinner rolls (you get the idea). So that means better cheaper pizza, cinnamon rolls, bagels, dinner rolls (I hope you’re catching onto my idea here).So let me reiterate, if you’re stuck in poverty, limited on time, or want something better than what you can get in a store: buy a friggin’ bread machine. It’s worth all five hundred pennies.

This is a huuuge upgrade from the last computer I had. The GPU is approximately 300% faster at a similar power draw (see GT 640). The CPU is a six core twelve thread monster compared to the core 2 duo quad I've been using for the past five years. Blender rendering is so much faster. XCOM 2 was the game that made me decide I needed a new computer, and it runs beautifully on the normandy at 2560x1080 at 60hz.

Recently thelinuxgamer on youtube asked his viewership community to explain #whyiuselinux and create something based around that. I'd like to write a brief outline for my major reasons for using linux.

1. It respects my privacy and rights when using it. Linux won't make decisions for me about who to send my data to or really do anything I don't want it to. I have control over what my system can and can't do with my information. It's amazing to look at network usage and see a flat 0 unless I know I have a program open to use that.

2. It is incredibly hardware efficient. I don't have to upgrade my system as often for basic performance needs like booting or opening files quickly. Not only is the software free, the hardware costs are reduced. I can do more with less. One of my main complaints about using windows 10 was just how long I had to wait for an image to open.

3. Linux is infinitely configurable and endlessly customizable. There are options for so many different ways to have things look, behave and interact. With my media player I don't love VLC or rhythmbox so instead I use audacious. How many good options do other PC platforms have for just their music and media players? There are at least a dozen great desktop environments, hundreds of themes, and options and choices in every program that I can draw from. I love the open and non monolithic options I have for my software.

4. I don't really miss out on the games I want to play. Linux was my first PC gaming platform and franchises like XCOM, borderlands, Dota, and almost every indie game every made comes right into my steam library without a hitch. I do think linux has a future as a mainstream gaming platform.

5. I can create art. Check out my portfolio to see what has been made. Plus my new rendering workstation is almost done so you can get some more of that sweet sweet art soon. Blender, Krita, inkscape all work beautifully and natively and become tools to enable my art creation.

As much as I might be teased by friends, no one can deny that it's a great tool in my hands that works for me.

I’ve mentioned “Learn code the Hard Way” before as what’s finally helped me learn how to program, and program well. An interesting concept I’ve grown to love in the book is the mistake journal. It’s only mentioned a couple of times at the beginning, but this is it: Every time you make a mistake write it down.

This goes against conventional knowledge where we’re supposed to forget our mistakes and “Just move on.” But every line of code that I write I notice the benefits of learning this way, especially for programming. Every computer language follows strict syntax, and every program starts as broken. Knowing and keeping track of the mistakes you’ve made in the past (and taking the time and conscious effort to write them down) is great. You build a mental checklist of things that went wrong before to look out for. It’s genius really. I’d highly recommend it to anyone who is programming and struggling to remember syntax/formatting/data types. It’s a great technique.

Well, I’m still programming. The section I’m in right now is memorizing logic statements. Such as: not True = False. It honestly all feels like “All work and no play makes Johnny a dull boy” to go through the flash cards. BUT, this doesn’t just feel important, but necessary to memorize since logic and boolean commands/data types are literally everywhere in programming. It is just hard to keep track of everything.

Well, I bought my first computer. It was the aforementioned model built by samsung. 4 gig of RAM and a dual core x86 intel processor. Link.

I bought it mainly because I'm not exactly who smart phones are designed for: Bad eyes and big hands. Also because the app ecosystem on android isn't great for what I want to do. Neither is chrome OS. Enter ubuntu on chromebooks, a match made in heaven. Honestly I think all computers below the power of a two generation i3 should just ship with a lightweight linux distro (like ubuntu budgie or lubuntu, maybe even CentOS). They'd retain some market value, and are perfect for some good old linux lightweight computing. So this computer I had a couple of goals in mind: 1 Learn how to program, 2 Learn more about linux, 3 gain the freedom I've really been missing after the renderbox died (you'll see that work everywhere in the portfolio. Amazing to think that was rendered on a gt 640. Yikes. After years of that, I'm ready for my 1050 ti).

So I bought it in the morning before work a few weeks ago, and by lunchtime had ubuntu/xfce running in chroot, and got Inkscape installed. After work I got home, compiled python3.6 from source and I was on my way (of course making sure to separate 3.6 from system python). I don't think if I ever buy another laptop I'll buy one bigger than this. This little guy is amazingly small and capable. The battery lasts forever, I've never had severe slowdowns. I'm still honestly blown away by how easy it's been to use. Easily my most refreshingly easy linux install ever (although I wish it would start into xfce on boot into chromeOS).

Since then, I've been happier. I have a computer that enables me. It does what I need. It's so light I take it everywhere and its replaced my tablet as my go to reading device. It runs my 2D games like a dream (still finishing undertale and starting bastion over again). I can't wait for the next major firefox release for even snappier performance.

One last plug for what I've been learning recently: Where I'm learning Python. I'm loving the course and how it not only focuses on learning syntax, but the skills and mindset necessary to be a programmer. My favorite exercise so far has been taking a 100 line example code and fixing all of the bugs so it runs. Everything from finding spelling/formatting/mathematical errors has been fun and rewarding. The rules are no copy-pasting and you have to make it run.

I made a simple budget calculator that I'm wanting to expand out to create SQL tables eventually and do analysis on my spending habits. Weebly won't let me upload .py files, so you can just copy the contents of this txt file into a text editor and save it as a .py file to run.

A couple of exciting things. The first is an updated version of the clipart I made for ShakespeareJones Twitch.tv channel (link). This time I used a vector graphics program instead of a digital painting program. I'm very happy with this work, and it's received a lot of praise.

The second is that I've begun designing a game with a few close friends. The first artwork to show is our first tileset. Our plan is for it to be a Sci-fi stealth platformer from the perspective of a child. Here's the tileset itelf.

Lot's of work to be done on it, but I'm excited for our development cycle.

I've also signed up for CGCookie.com for their classes. It was a great decision, and I can already feel myself becoming a better artist, using better workflows, and learning so much more about how powerful the tools I'm using are. I made this today, and I'm pretty proud of it.