I follow quite a few blogs, podcasts, and YouTube channels related to software engineering, and a common theme I've noticed between several of the producers of the more inspirational content I follow is that they recommend doing something to get yourself out there, be it maintaining a blog, speaking at conferences, starting a podcast, etc. So that's exactly what I plan to do.
While I don’t have a Chromebook, I recently bought a Samsung Dex, which for those of you who aren’t aware of what that is, it basically allows you to take your Samsung phone, dock it, connect a mouse, keyboard, and external monitor, and use the phone as if it were a desktop computer. Seeing as I still actively develop and use Simple Markdown, I wanted to take a look at how I could make it compatible with Dex so that I could give it a go. Much to my surprise, Android emulators have the multi-window functionality built-in. Samsung has provided us with a neat little guide to take a standard emulator and convert it for desktop use, but I’ll give you the quick points below.
I barely managed to squeeze these updates into the end of January, despite a busy post-holiday season for me. Simple Markdown is still not polished enough for me to call it a 1.0 release yet, as there are still plenty of rough edges to smooth out, and a few new features I'd like to add. In this update, version 0.3.1, you can expect the following
A few months ago, I published an app called SimpleMarkdown, which, as you can probably guess from the title, is a markdown editor. I had a strange bug that I couldn't quite figure out no matter how much I searched it and eventually I had to put it on the back burner as I got overwhelmed with work. Gotta pay the bills somehow. Anyways, what was happening was the app would randomly crash due to a memory leak that was happening in the WebView, which is what I use to render the preview of the markdown. I couldn't quite pin what was causing it, but you can see the full stack trace in the GitHub issue. The exception message was as follows
In my post on Progressive Web Apps, I opened by saying that I had always wanted to get into Android development but hadn't "taken the time to learn Java and get to it". So, I decided enough is enough and I want to pursue my goals. I recently read through Donn Felker's 5-day newsletter on how to become a World-class developer, and one of the things he recommends is to write an app, even if it's already been done before, to practice and also to have something to put into your portfolio. (Side note: even if you don't want to be an Android dev or even a dev, I'm sure you can get something out of Donn Felker's blog and newsletter. You should definitely check him out). So, that's exactly what I did. Donn also recommends getting out into the community, whether that be through blogging, Meetups, conferences, whatever. It's not so easy for me to get to Meetups or conferences down here in Mexico, so that leaves me to blog for now.
Anyone who has used a Chromebook knows the downsides of doing so. As a standard user, there probably aren't many, unless you're an iPhone user or a Microsoft Office user (though even Office has online web app versions of its products). As a developer, however, the lack of tools that are easily available is rather disdaining. Now, you can enter dev mode and use crouton, or wipe your Chromebook and replace ChromeOS with Linux, but these have their drawbacks.
One of the features of macOS that I really appreciate is the ability to have the Mac announce the hour. I find it incredibly helpful to stay on schedule and keep track of time. Unfortunately, on Windows and Linux, this isn't as simple to set up. On Windows, the only method I have found involves using Windows Task Scheduler to run a VBScript/PowerShell script/.bat file/.exe file, which can be a nuisance and in my experience doesn't work very well and isn't convenient to configure (I don't really care to have the hour announced at 2am). On Linux, you can use the saytime package, though I'm not sure it's available on all distros, so you could use the espeak package, combined with the date package, and come up with a cron job that runs on your preferred intervals, which isn't so bad but still a bit of an inconvenience to set up. To make things simpler for those of us who aren't on macOS, I wrote a Chrome extension to do just that!
For the longest time, I've wanted to get into Android development. While I haven't yet taken the time to learn Java and get to it, I have been looking into progressive web apps. They're actually rather exciting. Essentially, they seek to make web apps feel like native apps, to improve the user experience and increase conversions. I'm not really selling anything but I do like to provide a positive user experience to anyone who is interested in what I have to say, so I've taken the time to set this up. I'll go over a couple of steps I took to make my interval timer app a progressive web app.
For the longest time, I have neglected to put my vim configuration under some sort of version control. I suppose it's not been a top priority for me to maintain the configuration that I've taken so much care to set up until now. Since I started using vim about a year ago, I've really only kept my configuration, along with the plugins that I like, stored on a backup drive and on my server. This is of course not the greatest set up. I admittedly haven't been using vim as much lately because I've sort of viewed it as inferior to the likes of PHPStorm or even SublimeText. Curiosity got the best of me though, and I decided to do some research into whether or not vim could handle some of the functions that my GUI code editors can. To my surprise, vim is more than capable of handling all the tasks I currently use the other editors for, and even has a few goodies that I didn't think of.
A week ago I had a bit of downtime, because I decided to switch hosts. Previously, I was using DigitalOcean, with a droplet running Ubuntu 14.04. I paid $10 a month for a 30GB SSD, 1 CPU core, and 1GB of RAM. This used to be alright for me, because I was just running this website, which doesn’t really get a lot of traffic. Recently however, this hadn’t quite sufficed. I’ve been really researching the best way to move some of my work to the cloud. Ideally, I’d like to have a separate server for this, but in the meantime, I’ve been testing out different methods to do so here, and I’m using up too many resources to be able to run both this website and my tests. Because of this, I went ahead and switched over to Linode. With Linode, I get 24GB SSD storage, a 1 core CPU, and 2 GB of RAM at the same price. For me, having a bit more RAM was more important than the 6GB of storage that I lost. I’m nowhere near the limit anyways, so for now, this will do.
In this mini-tutorial, I'm going to show you how to customize the prompt to have a colorful Geeko greet you each time you open up the terminal. For someone who spends the majority of their day in the terminal like myself, it's fun to customize it. I personally use zsh as my shell, but I've also tested this in bash with no troubles whatsoever. To begin, I found an image of Geeko on Google and Googled an image to ASCII art converter. There are plenty of them out there, so find one you like. Copy the output and save that to a file. I've got this here
I have a tendency to play around with my system, which has been both very good and very bad for me. On one hand, I have learned so much from tinkering and inspecting files and breaking things, that I probably would not have otherwise learned. On the other hand, I do occasionally break the system beyond repair, which requires a fresh start and a couple hours of time to run the installation and follow up with re-setting all of my configurations. Since I tend to do this quite a bit, I figured it would be a good idea to just go ahead and automate this process. I have a small set of programs that I always need, and a small set of configuration files to go with them. By automating the installation and configuration of them, I give myself a lot more free time since I don't have to manage these processes myself. Not to mention, this puts me in a good spot for upgrade time, which is about every 3 years for Debian. Each time a new release comes out, my post-installation setup will only take me about 5 minutes of actual attention required.
For the past couple of weeks, I'd noticed that my site was randomly crashing due to MySQL failing on the server. In case any of you saw it, this is what was causing the "Error establishing connection to database" page (which I will customize for the future when I have a spare moment.) This seemed incredibly odd to me because my site is very low traffic, so it shouldn't be having issues like this. I had recently installed the Jetpack plugin for WordPress, and shortly after that, I started noticing all of my problems. As a result, I mistakenly blamed the plugin for my woes and immediately removed it. The problems persisted, however, which led me to do some research. At first glance, many blog authors and commenters suggested simply increasing the memory on the server. Considering that 30 hits in a single day is quite an accomplishment for me at this time, I didn't think that was the case, and I wasn't about to start paying more on my server bill if it wasn't completely necessary.
When Amazon first released the Kindle, I wasn't overly impressed. My opinion of it at the time was that it was an over-simplified tablet, capable of nothing more than opening eBooks. My tablet can do that, and it can surf the web, play games, and watch movies. What could be so great about a tablet that couldn't do anything except read? Fast-forward a few years, and I land a new job where learning is law and there's a culture of reading. So much so, that they sent me a Kindle with access to their Kindle library. At first, it seemed a bit unnecessary to me. I even mentioned that I have the Kindle app on my tablet and computer, so I could already get full access to their library and just read from there, but they insisted and got me the Kindle anyways.
If you've been following my site at all, you'll now notice that it, along with the apps hosted on it, are encrypted via SSL! I decided to take the time to set it up because I take security and privacy very seriously. Even though I'm the primary user on my site, and the one posting the most data, I still have left a few areas for readers to give their two cents, and as this StackOverflow user points out, connections should be encrypted anytime you transmit information that shouldn't be made public. E-mail addresses, for example, are not something you want to freely give out, unless you don't mind having your inbox filled with spam and potentially getting it and any accounts you have set up with it hacked. Anyways, here's how I got it to work
- Linux is great if you are on older hardware, just getting started, or like the most control over your system.
- OSX is great if you appreciate quality design can get past the price.
- Windows is great if you like to have a wide variety of choices and/or are on a budget.
My apartment doesn't have wireless internet, but I do have ethernet access. In the past, I've used my laptop to create a wireless access point so that I could use my phone and tablet without worrying about running through my cellular data, but that was inconvenient because it basically turned my laptop into a desktop. A Raspberry Pi solved that issue for me.
After much consideration, I've decided to take the workout generator I've been developing open source. I've always viewed it as a learning experience for myself, and a canvas of sorts on which I could develop my skills. With it being open source, I hope that other interested developers will join in and help me create something incredible, and that I can learn a thing or two from the code they contribute.