One of the lifestyle changes I’ve been wanting to make in 2019 is to reduce my consumption and to live in a way that is more considered and careful. I’ve already written about how I’m doing that when it comes to information and media consumption. In more material ways I’m trying to do things like take more public transport, eat out less, and reduce the amount of food and non-recyclable waste that I produce. I’m also trying to reduce the computational resources I use, and by extension the energy, human and natural resources used.

I’ve been a happy Linode user for several years now. I started using what was then their lowest tier at $20 a month to host some of my websites and small web applications. Over the years, I’ve been paying the same amount per month but been getting upgraded to more powerful virtual servers, until I got up to their Linode 4GB Standard tier: 4GB of RAM, 2 CPU cores, 80 GB of SSD storage and 4TB of network transfer. If that sounds like overkill for serving a few small websites, you’re probably right.

Linode is starting to migrate users from a monthly billing plan to an hourly billing plan. In the process of reading about the plan differences (spoiler: not much for small users like myself), I decided to re-evaluate how much computation I actually needed and used. The above mentioned specs were far more than what I needed, or could see myself needing in the near future. So I downgraded to the current lowest Linode configuration, the Nanode: just 1GB of RAM, 1 CPU core, 25 GB of SSD storage and 1TB of network transfer. That should be more than enough for my needs, and will cost me just $5 a month.

I could probably go even lower and do most of my hosting out of GitHub Pages, or an Amazon S3 bucket, but I find it useful to have an actual virtual server to run arbitrary programs on if I need to. I am planning on making some more changes to my computing usage in the near future. Currently the VPS runs Arch Linux with a fairly large list of userspace tools (including a full OCaml compilation stack). The lower specs will probably make compiling things on this VPS annoyingly slow, so in the future I’ll be compiling on my local Linux machine and just moving binaries over. I will also be switching over to using Alpine Linux to run an even lighter system. Also, this blog currently runs on WordPress.com. That has worked out pretty well, but for a number of reasons I think it’s time to part ways. I’ll go into those reasons in depth in a future post, and I will be moving the blog over to said Linode VPS over the next few weeks.

Now, I’m fully aware that this doesn’t make a huge impact on anything in the grand scheme of things. And yes, part of doing this a reason to just geek out on UNIX sysadmin-y things that I don’t do much these days. But still, I do believe that if a few minor changes can make a positive effect on the world (no matter how small), then it is worth investing the time and energy to make those changes.

Advertisements

Quick Notes on the OnePlus One

I’ve been a happy owner and user of a Nexus 4 for about two years (and the Nexus S before that), but in the last few months, my phone was starting to show its age. I was barely getting a full day’s usage out of the battery and after the Lollipop updates, things seemed generally more sluggish in general. It was time for an update, and following my usual habit of a skipping at least a generation when it comes to tech, I was really hoping to get a Nexus 6. Unfortunately, the $650+ price point placed it more than a little out of my reach. I’ve never owned a non-Nexus smartphone, but it seemed like it was finally time to move on to something else.

There’s been a lot of hype and news about the OnePlus One that I won’t bother recapping here. In short, the OnePlus One is a reasonably priced, state-of-the-art Android smartphone that comes unlocked and runs a version of the CyanogenMod ROM. It’s not stock Android like the Nexus line, but there’s no bloatware either and it works just fine with the full suite of Google Apps and (as far as I can tell) most popular Android apps in general. After being invite only for several months, you can now buy one from the OnePlus website, but only on Tuesdays. I’ve had mine for about two weeks now and thoroughly enjoy it. Yesterday a friend of mine asked me about my experiences about the device. I thought I’d collect all the points I made in that conversation and share them here.

For starters, I really like the device. It’s much snappier as compared to my Nexus 4, the large screen is gorgeous and the design in general is well executed. I got the 64GB “Black Sandstone” version. As the name suggests, the back of the phone has a black, sandstone-like texture that makes the device quite pleasant to hold. Time will tell if the texture holds up with daily wear and tear. The battery life is really good—I can easily get almost two days of moderate use on a full charge, and well over a day even with heavy usage. It’s really nice to know that I have a good few hours of usage left even if I forget to plug it in overnight.

I was a little concerned about the large 5.5″ screen, which is pretty massive compared to smartphone screens I’m used to. However, after a few weeks, I’ve gotten used to it and it feels really comfortable to use on a daily basis. By and large, I can use it with one hand (even for input using the swipe keyboard), but it is definitely easier to use with two hands. In fact, the device is light and slim enough that compared to my Nexus 4, it actually feels lighter and less of a burden to carry around. I do a lot of reading on my iPad Air (RSS, websites and Instapaper) but I’ve barely used it over the last two weeks. I’ve been testing out the One as a tablet replacement, at least for format-independent reading, and it’s been working out quite well so far.

I only have two main gripes about the One. First the CyanogenMod ROM that it’s using is still based on KitKat and I got used to Lollipop on the Nexus 4. But in all fairness, there’s nothing I seriously miss or can’t live without. And there’s a Lollipop-based ROM in the works. Second, the swipe keyboard seems noticeably less accurate than what I’ve gotten used to. However, that might just be because I still have the muscle memory of using the swipe keyboard on a smaller phone.

In summary, I think the OnePlus One is currently the best option for an unlocked, reasonably priced smartphone, especially given how expensive the Nexus 6 is.

A week with the Nexus 4

I bought my first smartphone about a year and a half ago. It was the straight-from-Google version of the Samsung Nexus S, meaning that it came without any carrier-installed crapware and no contract. However, it was already over a year old and a generation behind the times when I got it. That meant that it was already slower than the current state of art and came with the older Android 2.2 (which I upgraded a few months later to Ice Cream Sandwich). Overall it was a good phone, but has been gradually showing it’s age. It was having trouble using newer apps and the upgrade to Ice Cream Sandwich had been awkward enough that I didn’t even try to update it to Jelly Bean. I had been using T-mobile as my carrier and though I had one of their contract-free prepaid Monthly4G plans, I had carelessly bought the version of the phone with the wrong radio chipset, meaning I only got EDGE service most of the time.

The thought to upgrade to a new phone had been at the back of my mind for a few months. But the announcement of the Galaxy S4 as Google’s next flagship device made me take a look at the available options. While the S4 looks great, I wasn’t about to shell out $650 for a new phone. However, it turned out that the current flagship phone — the Nexus 4 — is available for $350 and it’s only a few months old. It was available unlocked and a quick search of the Intertubes suggested that it worked well on T-mobile’s network.

Google Nexus 4
The Google Nexus 4

The Nexus 4 is a good, solid device and is definitely a big step up from the Nexus S. The 1280 x 768,  4.7-inch display looks great, it’s slimmer and the 8MP camera is a much better than what the Nexus S. It also comes with Android 4.2 (Jelly Bean) and is fast enough to run heavy duty modern apps without skipping a beat. It doesn’t have LTE, but on T-Mobile’s HSPA+ network the speeds I do get are more than sufficient for my needs. The battery life is better than what I’m used to — I can generally end a busy day with about 15-20% to spare. Admittedly, I don’t stream a lot of video or upload lots of photos, so your mileage will probably vary.

On my Nexus S I rarely installed apps and never really explored the Android ecosystem (or rather, the Google Play store). But with a newer phone with an up-to-date version of Android, it was time to go exploring. I was pleasantly surprised to find that Android apps seem to be developing a UI style that is quite different from the iOS counterparts (though not quite as different as Windows Phone). Apps from both large companies (such as Twitter) and smaller operations (like Astrid) sport a sharp, clean and mostly gradient-free design that I personally feel pretty refreshing. I also really like the Google+ app, though I can’t say I use it all that much and I’m looking forward to the new Gmail app. If you need more evidence that Android apps can be just as good looking as their counterparts on other platforms, check out Android Niceties. Sharing between applications and services is also so much nicer and painless than on iOS, though there are some bad apples (I’m looking at you, Feedly).

There are a few quibbles I have about the Nexus 4, but they’re not major and definitely not show-stoppers. For starters, the back of the phone is glass, not plastic or metal. I don’t have a history of breaking screens, but I will sometimes put down my phone pretty roughly on a table and I’m afraid I’ll end up cracking the back soon. Secondly, the headphone jack is on top of the phone. This is probably a good idea if you’re charging and listening to music at the same time, but makes it’s a bit awkward for listening on earphones with the phone in your pocket. With the Nexus S (which had the jack at the bottom) it was quite natural to put the phone in your pocket bottom-up and then turn your hand as you pulled it out to see the screen upright. The corresponding motion with the jack on the bottom seems rather more convoluted, but it might just be muscle memory that will get reprogrammed with time. Finally, (and this isn’t unique to the Nexus 4) I’m yet to find a Android to-do or task management app that is flexible enough as OmniFocus on OS X and Android.

All that being said, I am very happy with the Nexus 4. I really liked the Nexus S when I first got it and I’ve always liked Android. The Nexus 4 is a significant upgrade and I pretty impressed by the current state of the Android ecosystem. Barring unforeseen problems (or a very cheap upgrade option) I fully expect to hold on to this as my primary mobile device for the next few years. I don’t have any experiences with other Android devices (or other smartphones for that matter) so I can’t really compare, but I’m willing to take a chance and say you can’t get much better than a clean stock Android (especially if you use Google services as much as I do). As a final happy ending, I managed to hand off my Nexus S to a friend who decided to move up from a dumb phone. That makes one less unused device for me to keep around.

Amazon has good customer service

Last week I realized I didn’t have a single usable USB Flash drive. So what do I do? I hope on Amazon and order myself one of course. I got this nice Kingston 32GB drive that looked small enough to fit on my keyring and spent a few minutes in awe of the fact that this tiny thing had more capacity than my first computer’s hard drive (a paltry 20GB).

I ordered it on April 15 at night and since I have Amazon Prime, I got an estimated delivery date of April 18. Unfortunately, the 18th came and went and there was no sign of the package showing up. The tracker on Amazon said that the package had “left the seller” on April 16 but had made on progress since then. Since this was the first time Amazon had been late with a package, I decided to give them some slack and wait a few more days. On Monday, April 21, there was still no sign of the package so I decided to contact and see if I could get some answers.

Once I found the Amazon Contact Us page I was glad to see that there was a live chat option along with the usual phone and email option. The chat experience was really smooth. After some simple questions to narrow down the problem I was talking to a real human (I think) within a few minutes. Once I told them what the problem was, they checked on the package status and immediately offered me a free replacement or refund, without even asking. I went with the replacement and today the package showed up at my doorstep. The process was smooth and quick and entirely without fuss. It’s definitely one of (if not the) smoothest customer service experience I’ve ever had.

It wasn’t perfect: the orders page has options to Track, Return/Replace Items, Leave Package/Delivery Feedback or Write a Review. There’s no way to say that the package delivery seems stuck. Under the Delivery Feedback I can say that I haven’t received the package, but it just tells me to leave more feedback when I get it. It would be great to actually have an option to say that there’s something’s wrong with the delivery and I want Amazon to look into it. Secondly, while the whole contact process was smooth, it was hard to find the contact page in the first place. There doesn’t seem to be a contact button or link on the main Amazon page or site and there’s nothing of the sort on the Track Orders page either. I had to Google for “Amazon contact” to find the page. It was smooth sailing after that point, but it’s definitely something I wish was smoother.

Anyways, the point is that I had a smooth customer service experience with Amazon and though there are rough spots, it was very good on the whole. Now I’m going to stop talking about my first world problems and get back to hacking in OCaml.

Rules for Computing Happiness Revisited

About a year and half ago I wrote down some Rules for Computing Happiness. I based the list off of a similar list by Alex Payne. But in the year and half since then a lot has changed in my life. I graduated from college and finished a year as a graduate student at Cornell University’s computer science running experiments. I’ve also finally joined the world of smartphone users. I spend the greater part of the day writing programs and scripts and spend an increasing amount of time on remote machines. In the light of all those changes I think it’s a good idea for me to revisit the rules I laid down and see how much they’ve changed (or stayed the same). Here goes:

1. Use as few physical machines as possible

This one’s a keeper. I now use only two physical machines: my personal Macbook Air and my powerful Linux desktop at work. I use a combination of Git, Dropbox and Chrome tied to my Google account to keep things in sync between them. In reality the work I do on each doesn’t much overlap so there isn’t a pressing need to keep them in sync.

2. Keep work and play separate

Another keeper. I don’t have any social media apps on my work machine, I generally keep IM closed and I’m busy and in the flow enough that I don’t feel the need to randomly open up Reddit or Hacker News. I should be honest and say that this isn’t a purely (or even mostly) technical thing – in fact it probably has more to do with my shifting perspectives on what’s important. I have my phone near me if anyone really needs to get in touch with me. Since I’m a grad student I have a lot on my plate that is important but little that is urgent so my phone rarely gets used.

3. Get a Linux machine for programming. Use multiple monitors and a tiling window manager

I’m a bit less sure of this one and I’m partly afraid that I’m just plain biased. I do most of my programming on my Linux machine, but I do a decent amount on my Macbook Air too (especially experimental web stuff). I mostly use the UNIX in each so I’ve become fairly agnostic to what skin I’m running on top. I’ve never programmed on Windows so I don’t have anything to add on that matter.

However, I do use two monitors on a regular basis and going back to one can be annoying. I tried using Unity for a while and while it’s not bad, I keep going back to XMonad. It’s clean separation of physical monitors and virtual desktops makes using multiple monitors very flexible and efficient and I always find myself missing it when I’m on a different environment. By contrast, the way OS X does it is complete rubbish, especially if one of your windows is in fullscreen mode.

4. Get a Macbook for non-programming tasks

I’ve had my Macbook Air for over a year now and I love it. It’s the best laptop I’ve owned and probably the best computer ever. I only use a handful of userspace apps but they’re high quality ones like Reeder and OmniFocus. Homebrew is definitely the missing package manager for OS X and makes any programming I do a lot easier.

5. Keep a backup server, either physical or virtual

I’m still running a small Linode VPS that serves my personal website and acts as the syncpoint for my Git repos. I haven’t had any destructive crashes in the past year so I haven’t really felt the need for a backup, but it does offer peace of mind.

6. Learn and customize your tools

Yes, but do realize that it’s not the point.

7. Use public computers as little as you need to

Since I have both a great portable machine and a great workstation I haven’t had to use public computers at all. My desire to work in coffee shops and libraries has also been decresing steadily and I now prefer to work in a private office or a quiet shared workspace.

8. Pay for good software if you need it, but only after you’ve tried it out for a while

I’ve bought software like OmniFocus and Reeder and by and large I don’t regret it. I’m currently considering getting iA Writer. It’s cheap enough that I rarely think twice about gettting something that would make my job easier. However they “trying out” part is harder. My biggest gripe about the Mac App Store is no way to try out apps for a period of time (or stop using them and get a refund).

9. Keep information in open formats, preferably plain text

Yep. The only non-plain text format I interact with regularly is PDFs, only because that’s how most academic papers are distributed. I hold out hope that one day the academic community will move to publishing in hypertext.

10. Use version control on all projects

All my source code, my research data, my configs, my public and private writing are in version control. It not only makes it easy to go back and get something I may have overwritten, it also makes backup easier.