This is one of the latest quirks I've had the displeasure of running into while upgrading an old app to the latest Android 6/Marshmallow.

The problem happens when the font fails to apply onto a TextView even though it loaded via Typeface.createFromAsset() without any errors.

Because I haven't worked on this app in many years, the problem has gone unnoticed until now.

Fortunately it's quite an easy fix and there is no need to change any code. What you actually have to do is pass the font file through the converter at http://www.freefontconverter.com and update the font file.

Initially when I created the VM I thought would be temporary. It turned out to be not so temporary.

I thought I could just get away with using GParted and resizing the blocks around, but it turned out to be more tricky than expected.

Preparation

BEFORE YOU DO ANYTHING,

MAKE A BACKUP OF YOUR VIRTUAL DRIVE!

Make sure the VM is off

Find the VDI file for the drive

Make a copy of it

For example sake, here's my 10gb guinea pig.

Expanding the size of the drive

In your host, you have to run some commands to increase the capacity of the drive before you can do anything with partitions.

Use a calculator to calculate how much space you want to allocate in MB.

For reference, 100GB = 1024mb * 100 = 102,400mb

In command prompt, run these commands:

cd %PROGRAMFILES%\VirtualBox\

VBoxmanage modifyhd "path\to\your.vdi" --resize 51,200

This will only increase the capacity of the file itself.

You can check it in the VirtualBox VM details page, but it's not actually accessible yet.

You still have more work to do.

Lo and behold, I am now 50. Oh wait I'm not, I just look it.

Create a new VM which uses LiveCD

I used a copy of LinuxMint and configured it for Live CD usage. This was purely because I already had the ISO on hand. If you don't, you can save yourself the wait and just grab a GParted LiveCD from their website.

CD/DVD drive: LinuxMint or GParted ISO file

HDD: Select the VDI drive you want to resize

Using GParted

Once you're in GParted and can see the HDD, you'll notice there's a whole lot of free space now

If it's locked (there's an icon of a vault), right click and select "Deactivate"

Resize the partition (you may need to do this in multiple steps in order to get the right structure)

Apply changes

Shut down GParted VM

Remember to test the "resized" partition before continuing!

Load up your normal VM

Test that it boots and operates as normal

Check the amount of space remaining with df -kh

Extra steps for LVM partitions

If you're not seeing the space show up in df results, to make that space accessible to the partition you'll need to run two more commands.

The MOUNTPOINT for my VM was "/dev/mapper/ubuntu--vg-root"

sudo lvextend -l +100%FREE MOUNTPOINT

sudo resize2fs MOUNTPOINT

First command expands the LVM while the second resizes the filesystem.

When I first experimented with LayerDrawables, I thought something was broken in the way I was loading drawables and initialising the LayerDrawable.

Here's what it looks like on Android 4.1 (API 16) and Android 4.4 (API 19)

For each background and border, I had a drawable defined in XML files. Upon testing the layers individually, the background was loaded fine, however the border drawable was causing the black from appearing.

The 3DS homebrew scene has been flourishing lately. I never bothered with Ironhax and was too lazy to get around to trying out Tubehax, so now that Tubehax has been patched, the only other way left for New 3DS owners to get onto homebrew is via themehax.

This will work on any 3DS, Original or New from 9.x up to 10.3.0.

*update 12/01/2016* Now supports up to 10.3.0 and updated instructions as theme/home hax is now known as menuhax.

Depending on your setup, this might be a troublesome one to figure out. You won't see any error emails coming through since it doesn't hit Django code yet, just 500 error page when trying to view the website.

With the changes to the WSGI code in Django, some of us may have forgotten to update the WSGI dispatcher which is needed to glue our project to the HTTP server.

To fix the error, you'll need to open up your WSGI dispatcher file and change the following lines:

It used to be a really simple process; click a button on Disqus admin, log into blogger, and then comments are migrated. But Disqus was left with a broken import link when Google deprecated some of their APIs. Given that it's been broken for a while, I didn't see that being fixed anytime soon.

So, I finally got some time to roll my own fix based off a bit of code I previously wrote. Now that it's been tested for a few weeks, I've decided to make it public.

This is a multi-step process but doesn't take more than a few minutes each to set up.

Exporting your existing comments

Go to your Blogger admin and then find the settings item on the left menu.

Under that, look for "Other settings"

Click "Export blog" at the top.

Save the backup file somewhere.

I don't blame you for having trouble finding it. Below is a screenshot of where to click.

Converting your comments to WXR

What you have now are comments in some God-awful XML format which you'll need to convert to Wordpress WXR format, one that Disqus can import.

Setting up Disqus on Blogger

Now that the import process has started, there's just one more thing left to do on your blog. While you wait for the import to complete, set up the Disqus plugin on your blogger so the old comments don't show anymore.

There is a page on Disqus that lets you quickly add the plugin to the site of your choice.

Click the "Add <disqus forum name> to my Blogger site" button (Step 1. You can ignore step 2 because we already did that)

Select a blog you wish to use Disqus

Click "Add widget"

Supporting Internet Explorer users

For those who wish to support Internet Explorer users, there is an extra step involved.

Check the source of your blog and search for "X-UA-Compatible" and check that it's using "EDGE". If it's not there or it's not showing "EDGE", Disqus has a decent tutorial written up here on how to add it into your Blogger template.

And that's the end of that! The Disqus widget on Blogger will handle the rest.

After checking out the data from a well known leak, I realised that MySQL poorly handles the deletion of databases and that the default configuration doesn't make it very easy to vacuum the obsolete data.

(5.6 changes the default so it's better, but still an issue)

Have no fear, twig (and the internet's collective knowledge) to the rescue!

Get a list of all databases on your server

SHOW DATABASES;

Make a backup of all the data. You're going to need it. You can skip internal databases information_schema, mysql, and performance_schema.

mysqldump -u root -p database_name > database_name.sql

If you're lazy you can just use this instead:

mysqldump -u root -p --all-databases > everything.sql

Now drop every single table EXCEPT for the internal databases; databases information_schema, mysql, and performance_schema.

DROP DATABASE database_name;

Now terminate the server process.

Open up my.cfg or my.ini (Windows)

Under "mysqld", add in "innodb_file_per_table". This changes the setting so the information for each database goes into a separate file.

Once again, thank you technology for keeping me up way past my bedtime. Hopefully this has helped you avoid the situation I'm in right now... Looking for suitable gif animations can be hard, but I've found a photo that's surmised how I feel about the way MySQL has been built.

While it's a major improvement on the more sluggy Firefox builds, it does however add a slight inconvenience for developers by restricting addon installations to signed ones. In my case, it was Firebug 3 alpha.

If you find yourself needing to install an unsigned addon, you can quickly do so by:

Type "about:config" into your address bar

Confirm OK "I'll be safe"

Filter to find "xpinstall.signatures.required"

Double click it to set the value to "false"

You shouldn't need to restart for this to take effect. Try installing the addon again, it should work this time.

Downloads

I went through the trouble of finding the APKs and saving them online for future use so you don't have to. But if you're anything like me and don't trust random downloads, then here are the links to the official sources.

At time of writing, there is a firmware N release but I found M much more stable when it comes to WIFI connectivity.

Hardware

While you're waiting for downloads, I suggest removing the camera from the stand to make it easier to access cables and sd cards.

Oh and this guide will require a micro-SD card.

Installing firmware manually and enabling RTSP without authentication

The device I had came with a old firmware which did not work with the setup app. I had to update it in order to use the camera at all.

Grab your micro-SD card and format to FAT32 (if it isn't already)

Open up the root folder of your SD card (eg. X:\ where X: is your USB drive)

Extract the contents of "1.8.5.1M_201512011815.zip" and move it to X:\

Extract the contents of "1.8.5.1M_test-rtspfix-4.zip" to X:\

Safely remove the card from your PC and put it into the camera

Plug the camera in to power it on and begin the upgrade process

After flashing orange for a few minutes, it will speak to you once done (scared the crap out of me when I heard it)

Wait until the orange light is flashing and turn it off.

Remove the SD card and restart the camera.

Setting up the camera

Before starting, make sure the camera is OFF until needed.

Download and install the "Yi Home App" APK onto your phone. At time of writing, it's International v2.20.1.0 (20151210) / Chinese v2.10.0.7 (20151224).

Log in with your Xiaomi account (or one of the various other accounts supported). If you don't have one, sign up via the app and activate via email validation.

Swipe right until you see a picture of a dog and "Let's get Started".

Click on the top-right (+) button to add a camera.

Now plug in the camera and wait until the light is flashing orange (If it flashes blue, reset the camera with a pin at the back while it's on. If you need help finding the reset button, click "I did not hear it")

Chinese version: Set it up via the QR method

International version: Pressed "I have heard waiting to connect" when you hear something in Chinese coming from the camera.

Enter in your WiFi details so your camera can connect to it.

Enter it in and click next.

Put your phone in front of the camera so it can scan the QR code on your phone. This may take a few attempts. I found that moving the phone towards the camera works well.

You'll hear it say something in Chinese once it scans the QR code.

While setting up WiFi, it'll flash blue.

Once you're on WiFi, the blue light will stop flashing.

At this point, the camera setup is finished for home monitoring.

If you only need to monitor using a PC via iSpy, then you can skip to the section "Testing Connectivity".

If you want to finish setting it up with your phone:

Click "Next" on the app and wait for the phone to connect to the camera.

You should now be able to use your IP camera!

If you ran into any problems connecting, see the section below

... for all sorts of security monitoring!

Stuck on "Connect to Camera - Please wait 2-3 minutes"

You'll get an option "app and firmware mismatch" if it takes too long and the app can't connect to the camera.

The phone switches to a QR scanning mode and you'll have to take a photo of the back of the camera to debug the cause.

The two won't pair if the camera is the Chinese model and you have the English app. Make sure you have the rigth app!

Kodi expects your files to be organised in a certain way if you want it to be displayed correctly. This isn't a big ask, but most people are incapable or lazy, so it'd be nice if it could be done automatically.

At the moment this handles movies and TV shows just fine, but anime renaming is a whole different can of worms needs a little more work.

This method relies on a particular setup, but your setup is similar then it'll work for you. If your setup is similar, then you can easily adapt it.

update 10/01/2016: Made the process work better with anime.

Basic process

When files are added to uTorrent, categorise them with a label (movie, TV show, anime, etc)

uTorrent completes a download and moves it your "completed" folder but also appends the label. (eg. C:\Downloads\Movies\)

EventGhost monitors the labelled folders for media files and copies them off to a temporary folder (so you can continue seeding)

When the file has finished copying to the temporary folder, EventGhost will start TheRenamer to rename and move the files to it's final resting place

Next time Kodi starts, it'll scan and detect the new files

For the time being, anime is copied to a temporary folder but no renaming is done.

Now under Autostart, you should have "Plugin: Directory Watcher" "Autostart" #2 and #3 (note this for naming for events)

Select "Configuration Tree" at the top

Click the "Add macro..." button in the toolbar

Select "Event Ghost > Python Script"

Paste in the following content:

This part took the longest because of the finicky nature of events and the EventGhost UI. A few people have contributed to the original script by Pako, but many of the solutions had flaws which made it unworkable for larger files (longer copy times). After months of trial, I've figured out the ideal script to handle most use cases without problems.

Note: Make sure the variables at the top of the script are correct for YOUR setup

Select the macro and rename it to "Copy Movies" (because the default is just silly)

Now right click your macro and select "Add event"

Type in "DirectoryWatcher.Created" and click ok (Note: For Movies or Anime, use DirectoryWatcher2 or DirectoryWatcher3 accordingly depending on the order you created the plugins)

Now right click your macro and select "Add action"

Change "If" to "Always"

Select "EventGhost > Jump" and select "Copy Video Files"

Repeat these steps for TV Shows and Anime if needed

Phew, that's it for EventGhost!

Setting up TheRenamer

Last piece of the puzzle is quite a useful tool. However, the UI isn't the most intuitive so I'll have to guide you through that part. I forgot which mode TheRenamer starts in, but you can switch between "TV Shows" and "Movies" modes by clicking on the middle of the screen as highlighted.

Settings for the current mode is always in the top-right corner.

TV Shows

For TV shows, set it up as shown. This configuration makes it very easy for XBMC to parse your content when organised as "C:\XBMC\TV Shows\Show Name\Season 01\Show Name S01E02.avi".

The important parts are:

Renamed format: s1e01 ticked

Fetch folder

TV shows archive (destination folder)

Moving File Structure: TV Show Folder ticked

Movies

For movies, it's much simpler. All you really need is "Movie Name (Year)" and it'd be enough to scrape correctly.

The important parts are:

Fetch folder

Movies archive (destination folder)

Auto move

The brackets around the year format

Kodi / XBMC scanning

Whenever Kodi starts up it should scan for new media files. I forgot if this was enabled by default or not, but it's definitely something I would consider setting up after all this.

TV shows and movies will work out of box with The Renamer doing its job correctly.

However, anime will need a little tweaking to read the format correctly.

Open up "%APPDATA%\Kodi\userdata\" in Windows Explorer and find advancedsettings.xml

If it doesn't exist, download this file and save it there. Then you're done.

I got used to using double click to copy a word and triple click for a line after using Putty for so long. When I switched to Cmder/ConEmu, selecting text was absolutely painful because of this missing feature.

I did a quick search online and found a bunch of Google Code tickets regarding this functionality from 2013-14, but no real solutions. Fortunately, I spotted a comment by ConEmu.Maximus5 which stated the functionality is already built into ConEmu!

After looking through the settings SEVERAL TIMES because it's so cluttered and oddly named, I eventually found the setting to enable text selection by double-click and triple-click.

By default, this behaviour is restricted to only when the ALT key is held. For what reason? I don't know, but fortunately you can change it.

Go to the settings dialog

Keys & Macro

Mark/Copy

Ensure that "Block (rectangular) selection" is enabled

Change the modifier to "<Always>"

The changes should take effect immediately.

One thing that ConEmu settings would really benefit from is a better settings screen.

Facebook's app checks for the existence of the Facebook messenger app and if not found disables the messaging capabilities on your Facebook app. That's a bit shit because I have no interest in installing that invasive, bloaty app which demands access to almost every part of my phone.

Facebook: Once they're in, you're screwed.

Fortunately for me, I found a post on XDA forums where nemoc23 figured out that all you needed to do is create a dummy app which pretends to be "com.facebook.orca" and Facebook messaging will work again.

So I was coding away at 1am on Sunday (as night owls would) and suddenly my computer switches off Aero and goes crazy with CPU usage, causing heat hot enough to cook an egg and the fan to go absolutely ballistic.

I checked out the cause and it turned out to be WinSAT.exe started up on it's own and decided to max out one of the cores. Turns out this is a task it runs periodically to rate the computer's performance.

At time of writing, I tested this with the latest version of Virtualbox v4.3.22 and Windows 10 Technical Preview Build 9926.

Correct steps to failure

Set up the 32-bit virtual machine

Select the 32-bit technical preview ISO.

Start it up and watch it burn.

BOOM!

Your PC needs a restart.

Please hold down the power button.

Error Code: 0x0000000A

Parameters:

0xFFD00000

0x000000FF

0x00000003

0x8158B5E3

The fix for it

This baffled me for some time because I thought VirtualBox was buggy or something. Oddly enough, telling Virtualbox to expect a 64-bit operating system will fix it.

I'm not sure if this is a bug within Windows 10 (because it worked fine in previous technical preview releases) or a bug with VirtualBox. Either way, hope it gets fixed before Windows 10 gets released!

Although the instructions are for Windows 7, the same should apply for Windows 8.1.

Preparing your USB installer

Insert the USB you want to use as the "install source"

Copy your Windows 7 ISO file to the desktop

In the Spotlight (magnifying glass in the top-right corner of your screen), type in "bootcamp"

Select "Boot Camp Assistant"

Click continue to pass the intro screen

Select "Create a Windows 7 or later version install disk"

Select "Install Windows 7 or later version"

It'll automatically select the ISO file for you and the destination disk, but double check it just to make sure.

Once ready, click continue

Confirm you're OK with wiping the destination USB.

Wait ages for it to copy files to USB.

At the end of that, it may ask you to plug the Macbook into a power source (if you're running on battery)

Now is a good time to ensure that you're connected to the internet. If you don't, it'll make you restart the bloody process because you're not online... Yes, it happened to me first time I tried this. You'll only get a notification with the "OK" button, no retry.

Now you'll have to wait for it to finish downloading Windows hardware drivers (about 1GB I think). This will take a really long time as well, so go play Shovel Knight or something.

Once it's done, select how much space you want to allocate your operating systems. I pretty much gave as much space as I could to Windows because there's no intention of coming back to OSX.

It'll automatically reboot into the Windows setup after it's done resizing the partitions.

Installing Windows

This step is pretty straight forward. The only thing you need to make sure is that you format the bootcamp drive appropriately.

Select "Custom (advanced)" when you get to the "Which type of installation do you want?" screen

Select the "BOOTCAMP" drive

Click "Drive options (advanced)" to reveal more options

Click "Format"

Give it time to install and prepare Windows. It'll automatically reboot once or twice during that process.

Configuring Windows

Once you're in Windows, there's a few extra steps are involved in making the operating system more tolerable for day to day use.

Assuming you still have the installation USB plugged in:

Open up Windows Explorer and go to X:\Bootcamp\ (where X: is your USB drive, labelled WININSTALL).

From there you can find the Bootcamp setup for Windows.

Run the setup

This will automatically proceed to install driver software for your hardware such as touchpad, graphics card, motherboard, webcam, etc.

It'll need to restart your computer before you can continue.

Once you're back in, look for "Boot Camp" in the start menu.

Once you're in, go to the "Keyboard" tab and tick "Use all F1, F2, etc keys as standard function keys"

Go into "Trackpad" and configure the trackpad to your liking. Look at my configuration if you're unsure what you want as "normal" settings.

That should be everything needed for you to get up and running with Windows on a Macbook.