anders tonfeldt


The must have Android apps

2014-06-07 20:02

I'm planning on leaving the Android ecoscape once my current phone breaks down, or a tempting offer comes along. But until then I'm mostly content with the functionality itself. Recently flushed my Note 2 entirely and slapped on the last nightly cyanogenmod, a process that was surprisingly smooth despite Samsung's bootloader and Knox.

Once everything was back up and running I trimmed the fat, a lot of the apps I had previously kept installed simply weren't interesting enough to re-download. Here's a list of the ones that were, and thus are the apps I can't live without.

K9 - E-mail client deluxe.
Baconreader - Reddit, oh thou art a beast.
Firefox - Them plugins.
Inoreader - I was using selfoss for months, but this is smoother.
Orbot - Tor, can't live without you.

Simpletasks cloudless - todo.txt, perfectly executed.
Analytics - For now, at least.
Whitepapers link - Scanning of specially marked papers.
Bankdroid - Not sure about internationally, but fantastic bank widget.
ezPDF - Pretty much reads everything I throw at it. Always has.
Keepass2android - Works perfectly with KeePassX.
Officesuite pro - Handy at (rare) times.
Foldersync - Works fantastically with encfs shares.

Beyondpod - Podcast perfection.
Chromecast - For, well, our chromecast.
Netflix - For now, there's finally cropping up alternatives.
Quickpic - Everything an image viewer should be, and nothing else.
Spotify - What are these MP3s you speak of?
VLC - Really not the best, just a personal favourite.

Sleep as android - Best alarm clock I've ever found.
Solid explorer - Unsurpassed file manager and network share access.
Tasker - Automation, automation, automation.
Appsales - For the cheapskate within.
Skånetrafiken - Swedish public transport system.
Twilight - Dims and reddens your screen, to preserve your eyes.
Fing - Network mapper. Glorified ping tool, but it works great.

Muzei - Wallpaper downloader for classical art.
Minimalistic text - Use it mostly for tasker variables.
Widget locker - Because other lock screens are terrible.

This will likely be my final list. I did install some additional apps, but they aren't what I'd call essential. Hopefully you'll find some new favourites in this list.


Recursion, flooding the stack

2014-05-29 15:02

Recursion is essential to most types of programming (imperative vs functional is an entirely other topic, maybe for another day) but it's generally not understood even by people who use it for looping every other day. In fact, the act of mentioning the stack can result in blank stares every now and then.

Stumbled across a rather helpful video when I attempted to explain it to a mate of mine. I might add that we've been cutting code together for over a decade and the fact that he didn't know what the stack was, or how it functioned, never really came up. That shows you just how much we've abstracted ourselves from machine code, and how ineffective we've become in order to save time.


Interview with Joe Dever

2014-05-27 09:57

Despite his success I can't help but think Dever is selling himself short, or he's just really humble. His work, and the legacy he mentions, sent ripples that have grown to tsunamis over the decades. Some developers had mentioned they were inspired by the lone wolf saga, but at this point even the ones that never read them are implementing his ideas and concepts as established fantasy tropes. If there's one person in fantasy I'd like to meet, it's this man.

Android - Blood on the snow
iOS - Blood on the snow


Offline remote backups

2014-05-26 09:17

I've got 1.1 TB of data that I mirror and backup every single day. This is data that would cripple me, either professionally or emotionally, if lost. No, it doesn't contain the bloated dvdrip collection I made since we've found we rarely use it at all.. and it took me two months to rip our entire dvd collection. Even with automation. Good grief that was time wasted.

It doesn't include our music files, all carefully ripped from the merged cd collection when Becka and I moved in together, all stored in flac of course. No, we never use that, not since Spotify.

So what exactly does it contain if it's that large? Photos taken after the advent of digital cameras, and scans of photos even older still. Videos of birthdays, Christmas dinners, etc. That means the only visual motion medium record of my father and grandfather since they've both passed. If I were to lose those.. All the code, websites, games, applications, writing and projects in general I've created during my 27 year stint with computers.

Google Drive's new pricing is.. tempting. 1TB for $9.99 per month is pretty much perfect with some slimming down. Unfortunately, the time it would take to make the initial backup to Drive's slow as molasses servers was just too daunting, if you factor in how many changes there will be to the archive during the weeks it'll take to upload it and you're left with pure frustration.

You might call some of us paranoid about not wanting Google to search through, digest and then hand out our private, financial data to foreign intelligence agencies. But you damn well should be paranoid about criminal elements doing the same, especially since people have a nasty habit of leaving sensitive information like credit card numbers in plain-text files.

I've cleaned up the shattered remains of people's digital and financial existences after a completely harmless third party site, let's say a forum about soccer, was hacked. The attackers checked what e-mails were being used for the accounts, oh hey look, a @gmail.com e-mail. Then they cracked the password hashes, which is extremely simple to do these days if the password is weak. Then like the snap of your fingers they had access to my mate's Google account. Not because Google was hacked, not because the soccer site was somehow nefarious. But because the person maintaining the forum wasn't that security savvy and my mate used the same password for every bloody site.

Encryption, heavy encryption, isn't just for the paranoid but for the people who are willing to be a little inconvenienced every day and in return avoid having their lives ruined by identity theft when the day comes. EncFS has major problems that they're hoping to solve for v2. But it works right now, it can be used right now. It's free and is compatible with all file-based cloud services, drive, dropbox, box, etc. You should already be using it.

So just how did I end up making backups? My local server does a mirroring of the backup archives to a separate disc every night, this disc is encrypted with EncFS. The disc rests in an open usb-cradle on my desk. Whenever I leave home I pop the disc out, plop it into a rubber protective case and deposit it in a safe, secure location outside of my home.

It's an off-site, complete backup that is encrypted to the point where the sun would burn out before anyone manages to decipher it in case they happened to stumble across the disc. I'm safe from the eventual fire striking our apartment, burglaries are covered. But it's a pain in the arse and requires absolute discipline whenever you plan to leave home. That one time you say "meh, nothing will happen" and leave the disc at home. That's when it will happen.

I will be making a couple of follow-up posts with how-tos on, well, how to actually implement this in the most frictionless way I've found. The one thing you should start doing right now, this very second, is simply: use different passwords for all of your online accounts. All of them. KeePassX will help you do that, and there's LastPass for the less suspicious. Start there.


Javascript, PHP, Python. Pain.

2014-05-24 21:38

Ever since I suffocated my dreams of being an indie game developer about a year ago and left (was chased out) to pursue other interests (ran like a yellow bellied coward) I've been dealing mostly with data analysis / content discovery. In fact, I recently stealth-launched the first site to reach a somewhat functional state, Let's Play Nexus. It works and I use it myself on a daily basis to find new videos, it's sort of awesome to realize you've designed something not just for others but yourself as well. Which is surprisingly uncommon for programmers I suspect.

LPN isn't done, in fact it's lacking several key features, which is why I haven't promoted it at all. But I've sent it to some Let's Players that I enjoy and received a ton of positive feedback. In general it appears people like sites that help other people find out about their own work, who would have known?

I found this fact very encouraging, especially since I'm working on half a dozen other similar sites but for other topics. Now, parsing big data from YouTube has been.. challenging. And I haven't really started yet. The sheer quantity of data that Google throws at you is staggering, making sense of it daunting. But the major issue hasn't at all been related to the process of developing the site, its back-end or even cobbling together the lifeboat to prevent myself from drowning in all the data. No, it's been choosing how to implement it.

C was my language of choice for the longest time. But as the web grew the mass of protocols and formats grew with it. Learning each one and implementing it in c was.. a lot of work. At some point I gave up and decided to drink the Kool-aid. I switched to PHP. And I hated it. But I hated it less than the alternatives and despite some major hassles with certain builds / configurations by certain providers the whole thing generally worked.

It's been many years since I ran a site beyond my blog, in fact my blog was down for many years (ahem). During that time I found it very relaxing to not have to worry about vulnerabilities cropping up in libraries, extensions and scripts. In fact, I've intentionally decided to not rely upon third party server-side tech or scripts this time around. My blog is powered by Pelican and runs locally, outputs flat html which my local server then synchronizes to this host. Works great. In fact, it works so great that I wrote my backend for Let's Play Nexus in Python and designed it for local use.

Yes, it parses all that data, outputs flat files and I then sync them to the server. My sync process is fairly intelligent so little data is sent each time, the menu is javascript driven so updating it, the banners and such won't require rendering all the files again. It works beyond my expectations. But it has limitations, severe limitations, as all web developers will know. Some can be bridged, for instance I recently added a javascript table sorting to my consumption lists after a mate asked me to do so. Visitors can sort the table every which way without any server-side scripting or tech required. But that's just a drop in the ocean, there's so many things that would just be a line or two in PHP that I just can't do properly using only client-side scripting.

But I don't want to go back to the problems of yesteryear. I really, really don't want to venture back into the snake-pit that is PHP (and please, no, asp containers with vb, c#, et alles is just as unappealing). What do I do then? I've experimented with Python and it's fantastic for small web applications (and almost every type of non-web application, of course). But using it to build a CMS-like environment? Man, that was painful. node.js is very attractive, but it's really designed for real-time applications and offers no real benefits without the previously mentioned drawbacks.

Services like disqus help you add dynamic aspects to sites. Of course, the observant reader will note that it opens up an entirely other fiendish trap since you're basically giving a third party your data and hoping they don't go out of business / terminate your account. But with some care you can maintain local backups of all that data. Good grief this entire thing is rubbing me the wrong way.

I suspect this particular subject will crop up regularly on my blog if I continue doing web development. A solution has to be devised but what form it will take is currently shrouded in a haze of alternatives, each worse than the next. And to think I started out with the noblest of intentions.


How to migrate from Keepass2 to KeepassX

2014-05-19 09:16

I've got some bad news for you, if you're using Keepass2 in the new second generation kepass2 database format and you want to migrate to KeepassX in linux then you're in for a bad day.

KeepassX has no way of importing the new generation database and Keepass2 does not support exporting it to anything usable under linux. It appears their support of the first generation database format is dependent on the client running windows. I crawled through every script and work-around you can find on the net and none of them worked reliably.

That's that, pretty much. There's no native way. However, our old friend wine to the rescue yet again. You can download the windows version of Keepass2 and run it with wine with nary a problem (you might require .net in the wine prefix), export your data to a first generation database and then import that with KeepassX. It'll work as expected. Just don't go blind trying to google for a native way to do it, I did.


Netflix in linux with pipelight

2014-05-17 10:06

Despite Netflix' honest attempt to lock out anything that isn't windows or osx, and running the abomination that is silverlight, it has been running just fine in linux for quite some time. Before we had netflix-desktop which was basically a standalone version of firefox running under wine.

These days we use pipelight, which is a firefox plugin for your native browser using wine to run the windows version of the plugins. It's smoother and doesn't require running a separate app, the flipside being that it runs constantly in the browser you use for daily use. Your choice.

Now, there's tons of how-tos and tutorials for this subject out there but they all lack one rather vital bit of information so I figured I'd throw my hat into the ring. Took me a solid hour to figure out just what the problem was. This will be designed for Ubuntu 14.04 LTS users but you can adapt it to fit whatever distribution you're using.

First let's install pipelight itself.

1. sudo add-apt-repository ppa:pipelight/stable  
2. sudo apt-get update  
3. sudo apt-get install --install-recommends pipelight-multi  
4. sudo pipelight-plugin --update  

Now let's install the silverlight plugin.

1. sudo pipelight-plugin --enable silverlight5.0  

I recommend you stick with 5.0 even though 5.1 is out because Microsoft tried adding driver verification to that one. Guessing it's to please their MPAA masters, but who knows for sure. 5.1 caused me a variety of issues while 5.0 worked just fine for everything I tried it on.

If the sites you visit use both silverlight and flash (hey ho, back to the future of days gone past) then you will want to enable the windows version of flash as well. But please check that you really need it before doing so.

1. sudo pipelight-plugin --enable flash  

Finally we need to change our user agent. This is the part that pisses me off. I get it, Netflix is checking what browser you're using to customize the experience to fit your viewer. But that starts smelling like bs after the next step.

1. Install uacontrol https://addons.mozilla.org/en-us/firefox/addon/uacontrol/  
2. Restart firefox.  
3. Click the earth-icon and UAControl options.  
4. Add site.  
5. Site: netflix.com  
6. Custom: Firefox 15/Windows: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120427 Firefox/15.0a1  

Now then, go to netflix. Looking good right? What? You're getting DRM errors when the movie is trying to start? Yeah, that's the thing. They correctly identify silverlight, they think you're running windows and firefox and customize the site to fit your experience.. But UAControl doesn't change the UA for javascript requests. So they're checking multiple times to make sure you're really ready to eat that DRM. No matter, we can fix that.

1. https://addons.mozilla.org/en-us/firefox/addon/user-agent-js-fixer/?src=search  
2. No configuration, just restart firefox.  

Finally! Try some netflix goodness. Does it work? Great! You're done. Unfortunately, I ran into even more problems but if you're done at this point then you're done.

Silverlight uses javascript to communicate. There's tons of calls going back and forth. The DRM bit of silverlight desperately wants to connect to certain elements to validate itself, in a futile attempt I might add since if you can see it you can record it. If you're running any of the following addons then make sure to disable them one by one until you find the one that's blocking something silverlight is trying to reach.

1. Disconnect  
2. Ghostery  
3. Adblock plus  
4. HTTPS Everywhere  
5. many, many more  

Basically, if your addons are locking out parts of the web then try disabling them. Figure out which one is causing the problem and then take the appropriate steps. That should be it.


Casual games are detrimental?

2014-05-15 10:58

I recently made a comment on the excellent blog of Jeff Vogel of Spiderweb software fame. He made a blog post about casual games and how self-elected and self-governed "cultral elites" want to somehow "fix" the casual games market. I agree with him that they're mostly a bunch of tossers, yet somehow I find myself relating (strongly) to what they're saying. My comment turned out to be.. epic, length-wise. So I figured I'd post it here as well.

This post will risk becoming preachy, but I'll attempt to balance it since I do fundamentally agree with you.

You're right. Just about your entire post is a representation of how I see it as well. Who the hell are we to say what others are supposed to play and not play? I grew up with interactive text adventures and have felt generally snobby about the adventure game genre ever since. On the large part I believe the complexity and depth declined sharply with the introduction of graphics and with only relatively few exceptions (but there are -many- exceptions to this "rule") remains a hollowed out husk of its former glory days.

Sierra and early lucasart games aren't the fathers of the genre, they're the grand-children of the genre. There's been a lot of talk about "cow clickers" lately and, while I did find the graphical interfaces beautiful (they were), that's how I came to see the graphical games after being sorely disappointed by them.

Yet, who the heck am I to tell anyone what the height of adventure games was? If you enjoyed them then isn't that enough? Does anyone even care that I sit here dreaming of the days of "proper adventure games" when Broken Age is being released? This applies across the board, everyone has their own defacto standard that they compare everything else to. If your opinion differs from mine then you're obviously WRONG! And on the internet!

Now then, herein lies my problem. I just don't like the vast majority of these casual games. Every time I finish a game on mobile devices I've got a real problem finding anything to replace it. The revival of gamebooks kept me occupied for quite some time, but now I've gone through all of them and they were "casual" to begin with compared to "proper" interactive fiction. But that is my problem, not a problem of those that fleetingly install whatever is currently trending and having a great time with them.

I also, as much as it pains me to say it, think it's detrimental to the longterm viability of the industry. It conditions the target audience to go for instant gratification and nothing else. You want to see that level pop, you want to finish that hand of cards, then you want your reward and you want to continue. Winning, tiger blood style! That's fine. But the term "tl;dr" comes to mind.

The conditioning of not just these casual games but also the websites, movies and tv-shows with constant quick cuts and minute long storylines encourage this mentality. Arguing about the value of reading above playing games (even though they're not mutually exclusive) goes beyond the scope of this post. But having people say "lol, tl;dr" to a book or game because it contains more than a couple of pages of text? Yeah, I don't see that as positive. At all. For anyone.

We both know what the target audience of your games is, it isn't the candy crush youths of today who wouldn't even grace them with a glance. When an entire genre (or genres), developers and their work is dismissed by a "tl;dr" then it -is- negative. It has nothing to do with RPGs being superior to cowclickers, it's just that nobody should ever judge anything until they know what they're talking about. With knowledge and experience comes wisdom. But would they have been your target audience to begin with, whether candy crush existed or not? Chicken and the egg.

Does this mean we're morally/ethically/whatevery obliged to do something about it? No, that isn't our right or responsibility. But with every person we condition other genres and game types are being relegated into the area of "nope". Is that a good thing or not? Zork was the candy crush saga of the 80s, but is one superior to the other? It's impossible for me to be the judge of that since I'm naturally biased. I'm just tired of seeing my favourite past-time vanish before me, game by game, year by year, and it's making me grumpy. Grumble grumble..


Android and brand loyalty

2014-05-12 14:59

There are choices out there. Whoever says there's only android and ios is, to put it frankly, wrong. However, they're entirely right that if you want the richest and most varied offering of applications then yes, those are the two you should go for. Absolutely.

I've recently taken the choice to leave the android sphere, I'm still going to keep a 7" android tablet around for games but my current phone (Note 2) will be my last android phone. When mates heard my rumbling about leaving the os the very first thing they asked was: "Is it because of the fragmentation?"

No, it isn't. Fragmentation of the android platform has become an empty, misleading buzz-term. It has never represented a problem for me neither as a developer or user. I'm leaving for a reason that is causally related to brand loyalty: it doesn't appeal to me any more.

Android/Samsung/Google, in no particular order, subjected me and my better half to: Knox root-witch-hunt, abandoned devices without security upgrades, the terribad filesystem on the original galaxy s, MANDATORY HDCP on hdmi-out at all times even when viewing our own photos, google being shown as leaking data to anyone who wants it, locked bootloaders, bloatware, proprietary restore systems when their own OTA upgrades fail and, finally, an interface that I just don't find intuitive.

I had brand loyalty to both android/google and samsung. When it was time to pick a new phone it wasn't a matter of picking the os or the brand, it was just a matter of figuring out which of the new samsung phones I wanted. Once you remove the brand loyalty I'm left with an os that tries its very hardest to disassociate itself from all the aspects of linux that I find the most valuable and versatile. And a manufacturer that does everything it can to reduce the amount of choice you have when using a product that is based on the most open of choices. I'm done.

So, what am I switching to? I'm interested in both the Jolla and Ubuntu phones, right now it could go either way and will depend a lot on the hardware. Project Ara fundamentally solves the hardware conundrum, assuming I can run something other than android on it.

How do I harmonize my previous statement about apps with the consideration of using the newest phone os'es? Because they run applications I've used since before either android, ios and windows mobile even existed. The killer apps for them don't need to be written, because they already have been.


<< 1 >>


RSS Feed