Apr 232015

During latest round of company phone upgrades I received an iPhone 5S. As long time android guy (since original HTC Desire) I never actually tried any of iPhone devices more than a few minutes here or there. Now, after using it for a few months, I can share my thoughts.

First impression is great – iPhone 5S is built like a brick. With aluminium on back and glass top it is hard to find it a fault. Buttons are nice and firm, audio connector is best I’ve ever seen, and data connector seems like it could handle a lot. Until USB type C becomes the norm, it is probably the most comfortable power/data connector out there. I am generally not a fan of phone cases so my bias might be kicking in, but it is a sin to put such a phone in a case. And phone can handle occasional fall with grace – at least it did for me.

Turning the phone on was a bit of challenge at first since I haven’t had phone with power button on top for a while. But this was reasonably easy to get used to. What I still cannot get used to is lack of a back button. I find it extremely annoying that, once you have gone deep enough through screens, there is often no way to get back except killing application and starting from start. Yes, some of blame lies with application developers, but at least virtual back button would be nice.

Reality is that sometime you will need to reboot your phone. On Android I got half of my grays waiting for phone to shut down and then boot up. And idiotic decision to remove restart menu option in Lollipop didn’t help. I cannot even count the times I would start shutdown and forget about turning the phone back on. While iPhone doesn’t have restart either, procedure is so fast that it is refreshing.

Where I found iPhone infinitely better than any of my previous phones is e-mail. Due to nature of my work, I have multiple company mail accounts. On Android some of them required me to use special applications (e.g. Touchdown), some of them required special access to device (and probably my firstborn too), or they simply would not work at all. On iPhone they all nicely fall in line and allow usage of default Mail application. Yes, there is no technical reason why Android wouldn’t get the same treatment. However, Android allows more and IT departments jump on it. With iPhone there is only one way how things are done and they learned to accommodate.

Not all is great mind you. Keyboard application that comes by default is simply awful if you need to enter any amount of passwords. I find myself regularly switching through multiple keyboard screens in order to enter anything. Yes, fingerprint sensor can alleviate some of that pain but keyboard is definitely worst one I’ve seen in years. And yes, you can get other keyboards in Apple store and it is frightening how you can actually pay for keyboards with even worse layout.

And Store itself contains bunch of half-baked applications that cost actual money. Yes, there are many half-baked applications in Android store, heck, I even built some myself. But they are free. It doesn’t matter how crappy application is, there’s a cost associated to it in Apple’s store. And yes, there are good free applications but they are mostly coming from big companies. Small utility apps come at a cost.

And application management is crazy. Yes, there are multiple screens but you cannot put your applications there just willy-nilly. Every screen is a list and you will not put application to bottom-right before you fill every other spot. Folders are equally dumb with only nine applications allowed before you get into multi-screen folder. Design so awful that I cannot fully describe its horrors in words.

Preloaded applications are of reasonable quality but nobody will use all of them. And there is no way to remove them from screen. Don’t have Apple Watch or you don’t care for Safari? Tough luck, there is simply no way to remove them. Yes, you can put them in folder but that is as elegant as me telling my socks are suddenly clean if I turn them inside out.

And I finally understood all the jokes about Apple Maps. I tried it a couple of times and it didn’t bring me to my desired destination a single time. Best it could do was to bring me on an opposite side of a building block. With it every day is April 1st. And Siri only knows how to start that abomination – you cannot configure it to start any proper mapping application. So Apple screwed the single thing I used voice recognition for. And I don’t even want to start about Siri.

To access any content on your iPhone you will need iTunes application. That piece of software is greatest sin against humanity since WW2 ended and you need it for even the most simple operations. Wanna ringtone? Stop bitching and use iTunes. And don’t have ringtone longer than 40 seconds. And no, you cannot use MP3 files for it. After being beaten into submission by iTunes, I was really thankful to see that at least my images are accessible as a (read-only!) drive.

Would I buy iPhone for my own private use? Not a chance. Its price is simply not justifiable to me regardless of its good looks and excellent (hardware) design.

However, phone absolutely shines for business use. Ease of setting multiple e-mails without all usual IT nonsense is really refreshing and it allows you freedom I’ve never experienced on an Android device. If you ever had to deal with big company’s IT department iPhone is worth every penny.

Apr 172015

Minecraft command blockAs my kids got old enough to play Minecraft we decided that our home server had it light for far too long and that it is time we create a Minecraft world on it. Of course I decided to add myself as an operator with special powers and I was crazy enough to inform kids I can even help them move around via teleport.

It didn’t took long before I was completely swamped with teleport request. Get me to sister, get me to my home, get me to my mine, get me to an island… Having to enter coordinates every time gets boring quickly. So I decided to figure way to make it simpler. Answer was in command blocks. Just add a pressure plate and you can make them do whatever you want. Including teleport.

First order of business was to modify server.properties and set


After that I gave myself a block using

/give @p command_block

Next I tried to get block console so I can enter command and I failed. All YouTube videos seemed to get it so easy but for me there was no console. I tried everything but nothing seemed to work. Console would simply not appear. It took me few re-reads to notice that command block setup is restricted to creative mode – if you are in survivor as I was, nothing could be done. Or could it?


/gamemode c
I could switch to creative mode and set command block text to
/tp @p -16 72 186

After placing pressure plate right next to a block, I switched back to survivor

/gamemode s
and my teleport was working just fine.

PS: To get coordinates just press F3 and look at block. Its coordinates will be shown under “Looking at” (last line). Add 1 to middle coordinate and that is your destination.

Apr 122015

SeobiseuSeobiseu hasn’t been updated for a long time. It worked good enough and I simply don’t have enough time to add every little thing I might want.

But one thing started bothering me – its looks on the high-DPI screens. Single purpose of this update is to bring it to the high resolution world.

Download newest version here.

Apr 072015

OpenGraphWhen you want to share your posts on social networks, having a help with formatting cannot hurt. For that purpose I used to be a happy user of Facebook Open Graph Meta Tags for WordPress. However, with version 1.3 something went kaboom and I started getting “failed to open stream” errors. After a few attempts of repair I decided it was a time to search for a new plugin.

I tried quite a few of them and, while they all worked with Facebook, Google+ presented a challenge. Some outright didn’t support it, some supported it only in non-free version and quite a few of them were huge SEO systems that would bring my poor installation to its knees. Thus I figured it was a time to make my own. I mean, how hard can it be?

Well It was quite easy to get a basic callback working:

add_action('wp_head', 'medo_opengraph_wp_head_action');

function medo_opengraph_wp_head_action() {
    if (is_single() || is_page()) {
        $post = get_post();

        $title = $post->post_title;
        $type = 'article';
        $url = get_permalink($post);
    } else {
        $title = get_bloginfo('name');
        $type = 'website';
        $url = home_url();

    echo '<meta property="og:title" content="' . $title . '" />';
    echo '<meta property="og:type" content="' . $type . '" />';
    echo '<meta property="og:url" content="' . $url . '" />';
    echo '<meta name="twitter:title" content="' . $title . '" />'; //Twitter
    echo '<meta itemprop="name" content="' . $title . '" />'; //Google+

With this simple code I would get posts/pages having their proper title and everything else simply having a generic title alongside my main URL. But that was not really enough – my images were missing. Ignoring crazy array return parameters, code was pretty straightforward:

foreach(get_attached_media('image') as $media) {
    $imageAttrs = wp_get_attachment_image_src($media->ID, 'full');
    $image_url =  home_url($imageAttrs[0]);
    $image_type = $media->post_mime_type;
    $image_width = $imageAttrs[1];
    $image_height = $imageAttrs[2];

echo '<meta property="og:image" content="' . $image_url . '" />';
echo '<meta property="og:image:type" content="' . $image_type . '" />';
echo '<meta property="og:image:width" content="' . $image_width . '" />';
echo '<meta property="og:image:height" content="' . $image_height . '" />';
echo '<meta itemprop="image" content="' . $image_url . '" />'; //Google+

And the last one was to get excerpt for the post description. Here wp_trim_words came in really handy:

$description = $post->post_excerpt;
if (strlen($description) == 0) { $description = wp_trim_words($post->post_content); }

echo '<meta property="og:description" content="' . $description . '" />';
echo '<meta name="twitter:description" content="' . $description . '" />'; //Twitter
echo '<meta itemprop="description" content="' . $description . '" />'; //Google+

Did it went as smoothly as it could? Not really. WordPress Codex was less than helpful, rarely telling you anything more than a function syntax. Coding was more trial and error than anything else. But I cannot really complain. Even with all tryouts it took me less than two hours to get plugin working with all the functionality I needed. I would consider that a success.

And, like a masochist I am, I didn’t stop after those two hours. I got some profile options for Facebook ID in. And then I built a settings page. Made code a bit cleaner. Reordered thing or two. Before I knew it, couple of hours passed and I had something one might call a proper plugin. And it is available for download. Just unzip it in wp-content/plugins and you are golden.