DriveDroid – Install and Boot Windows, Linux, or BSD using Android Device as USB Drive

DriveDroid is an extremely useful Android utility application that allows rooted Android Phones to act as USB Mass Storage or a virtual CD-ROM drive. This can come in handy for booting PCs or emulating a USB drive of your own chosen size. The app only works on phones with root. I’ve personally tested DriveDroid on my rooted LG Nexsus 5X using Android 8.1 Oreo and Android 9.0 Pie and can confirm it is functional for installing BSD, Linux, and Windows.

Most phones emulate a USB stick when using DriveDroid. This is baked into the kernel of your phone. This means that only images that are compatible with USB sticks can be used. All IMG files will work, but not all ISO files will.

DriveDroid http://softwarebakery.com/projects/drivedroid

Installing/Booting Linux ISO from Android

Booting into live Linux environments or installers is clearly the main use for DriveDroid and it works exactly as you’d expect. You can use the included ISO download tool included in the application to get a verity of popular distributions. I was happy to see Void Linux made the list of easily downloadable ISO’s as it’s a personal favorite distribution of mine. The distributions I tried include: Ubuntu 19.04, Manjaro XFCE 18.1, and Debian 10 “Buster” Net Install. All Booted both UEFI and BIOS without issue simply selecting the ISO file in the app. I would suggest downloading your ISO’s from your fastest mirror using your phones browser. This allows for faster speeds and the ability to resume the download if it’s interrupted.

Installing Windows using Android as Installation Media/USB Drive

To install Windows from DriveDroid you need to create the installation media the same way you with a traditional USB drive. You can emulate a standard mass storage USB drive of any size using an image file with DriveDroid but you need to first create an image to be used. I wasn’t able to use the blank image creation tool inside of the app but there is a simple work around.
Open any terminal emulator on your Android device and issue the dd command with a target of /dev/zero.

dd if=/dev/zero of=MyDrive.img bs=1m count=5120

Note: The of location is where the output file will be created. This example command will create a blank 5GB image in your working directory.

This will create a new empty image file that can be written to like any standard flash drive or thumb stick. If you don’t have access to a PC to burn the ISO using the Windows Media Creation Tool or WoeUSB on Linux you can download my pre-created image for Windows 10 Build 1903 (May 2019 Update) here or from the Internet Archive here: https://archive.org/details/windowsx641903may2019img

Loom Review 2019

It had been some time since I listened to this talk at GDC 2015 by Brian Moriarty.

I had previous exposure to Moriarty from his inclusion in The Witness and his under apprecaited talk about that.

These two thoughtful talks understandably made me curious about Moriarty’s work in games so I decided to play Loom. A game where he acted as project lead.

This isn’t a deep dive review but I would like to share some of my thoughts around the game. You can view my complete play through here: https://www.youtube.com/watch?v=rgJw69q16ew

Loom Island opening visuals. The aesthetic the entire game should have followed.

Let’s start positive. I enjoyed the opening. The voice over is good. The interface is fairly intuitive and much simpler than other SCUMM (LucasArts adventure games system from Maniac Mansion) games. The game begins on the uncreatively named Loom Island. The atmosphere here is the best in the game which makes adventuring a little disappointing afterward. The puzzles are pretty simple. The fun part is understanding what each of the “drafts” you learn do. I think the game would have been improved from an atmospheric sense if the drafts used rune style glyphs instead of musical notes. It feels much more like playing a song, which of course you’re actually doing, than “weaving a draft”. The story really doesn’t make a lot of sense at all at any point in the game. The introduction is cryptic. You know it’s your birthday and for some reason all the other people from the island turn into swans and run away. They don’t explain why. They just say Loom Child something something. Can they see the future? Why didn’t they tell you about your past? Why didn’t they let him near a distaff (the ocarina of the game) ? These things are never explained.

After leaving the island you see a whirlpool in the water that can’t be passed without learning the “f” chord. I left the island the first time without this so I needed to go back. Going back seems strange because there’s an outro cinematic. Why make a big deal about me leaving if I can just row back? Anyway I went back, got the “f” chord by spinning some straw into gold which is a Rumpelstiltskin thing. It was fun remembering that but if you’d never heard the fairytale or forgetten that part then this might not make sense. I then left the island a second time, watched the same outro cinematic, defused the whirlpool and got to the other island.

Bobbin finds a cup made of diamond in the guild of makers. AMAZING.

On this island there is a.. city? town? mound of green glass? It introduces some characters who you don’t care about and foreshadows some war or something. There’s also a chalice made of diamond which Bobbin, oh ya you play as a hobbit name Bobbin “He’s not a hobbit!” you say? why does he sound like a hobbit and have a hobbit name? Probably just LotR stuck in their heads. Did people think hobbits had a slight British cadence before the films? Whatever. Bobbin points out that the diamond chalice in the glass guild is strange. All the art in the green glass guild is horrific for gameplay. You can’t tell where you can walk. I think I was just lucky moving through this part of the game in the intended way. This is definitely where most players would be stuck if they do get stuck.

The game moves along from here to a forest. You meet some shepherds who aren’t weavers like Bobbin but they can do some magic. It must be the same magic weavers from Loom use but for some reason Bobbin who has never practiced before today is way better at the spells than them so Bobbin’s weaver friends are implied to be much more magical I guess.

You then get picked up by a dragon and from here the game really falls apart. You don’t care about what’s going on. You don’t care about any of the people you’ve met. There’s something about this green hatted guy who gets his head knocked off wanting to raise the dead or something. It’s just not interesting at all.

Bobbin meets his mother who is a swan from outer space.

You enter a rip in space which brings you to the Loom dimension. Maleficent from sleeping beauty was in there and she wants to take over the world now. You meet mother goose in outer space and then play Simon says with Maleficent before turning yourself into a Swan and flying off second star to the right, and straight on till morning.

They obviously set up a lot to be explained in sequals which of course never happened because this game was trash. The game had potential to be cool if it carried its asethetic from Loom Island forward. Just artistically it would have had a lot more to show. The story which is very much the focus was the worst part of the game. The only part of this game I’ll remember a year from now is the name Bobbin Threadbare and there’s a magic song to turn green things white and white things green.

It’s a bad game. The talks are still good though. I recommend those.

GDC 15 https://www.youtube.com/watch?v=z1aVDael-KM
Brian Moriarty – I Saw What I Did There + The Secret of Psalm 46 https://www.youtube.com/watch?v=KBJbsEjNb8k

Reading/Writing Data from the League of Legends Client

I went on a very fruitful journey of learning about the League of Legends client or LCU API to try and find how I might go about making an automatic team searching tool for champion select. OP.GG already has an extension that does this but due to some seriously strange reasons it appears that the Korean server has different rules about how you are allowed to interface with the client. Because I am in fact in Korea and would like to use this I decided to make a work around. Anyway. I’ve solve both issues and I thought I could be of use to some future explorers of the League client that may be interested in communicating with it.

Rift Explorer

https://github.com/Pupix/rift-explorer

This is a great tool that helped me a lot in this exercise. The public documentation for the client interfacing API seems to be a little bit shrouded. It appears that they have
publicly acknowledged that this API https://developer.riotgames.com/league-client-apis.html you can read more about this history of interfacing with the client here https://riot-api-libraries.readthedocs.io/en/latest/lcu.html

GET and POST Requests

Rift Explorer will give you lots of options for things to look at with a few GET and POST requests. When I was testing I created a custom game lobby and read the state of the chat room and champion select. After messing around with the application I wanted to see if I was able to get the same JSON data that Rift Explorer was able to get using Chrome to create the request.

The League of Legends client hosts a local web server which is able to be found by using the data found inside of the lock file located in C:\Riot Games\League of Legends\lockfile (or where ever you might be running the executable from). This file is created when you are running the game and includes the port number which the server was created on and the password to interface with the server. This was a little confusing to find at first but using this issue https://github.com/Pupix/rift-explorer/issues/4#issuecomment-348681824 by navigating to localhost:(lockfile port) and using the username “riot” and the generated password in the lockfile you can now make requests with Chrome or any HTTP agent you like.

OP.GG extension modifications

All of your extensions for Chrome are located in C:\Users[login_name]\AppData\Local\Google\Chrome\User Data\Default\Extensions
from here you can read any Javascript or check out all the files that an extension comes with. Thankfully the OP.GG extension isn’t obfuscated so digging through the code is incredibly easy. There a check to see if you’re on the Korean Server for your region. In this case the lobby information will not be displayed.

Although you are technically able to modify the files that are located here in AppData, Chrome checks out the integrity of these files to see if they have been modified. Because of this we need to uninstall the official extension in favor of our own offline version. Since the extension is fully locally stored you can simply make a copy of the folder and place it somewhere nice like your documents and modify anything. For example I’d like to modify the part where I’m not able to use the extension here in Korea. By simply bypassing this check the application now works perfectly.

Project Ideas

When checking out some of the options inside of the client API there are a lot of ideas for projects popping into mind. One of those would be a rewritten version of the OP.GG extension as a desktop app in C# or something. Another idea is an automatic ready check accepter. There was always talk about some kind of app or high ELO players to have on their phone so that if they walked away from their PC for a second while the queue popped they’d be able to accept the game remotely. There is a post function for accepting the match in the API so something like this would be really easy to make actually.

Ultralight Design

Hello world! I had a talk about this on stream today and thought I might expand my thinking here. This website is, after all, a perfect example of what I’d like to highlight in light weight design.

If you’re a normal person you likely have never read an ultra minimalist website. I can offer you two examples from the top of my head. I will not explicitly be defining what the do right but present content forward pages correctly.

First we have MotherFuckingWebsite which I assure you is not at all adult other that it’s arousing design and powerful wrangling of the English language. https://motherfuckingwebsite.com offers all the information you need about it’s design philosophy on its main page and it is worth a read. The core design principle is to focus on what’s already built into HTML5 instead of needlessly loading libraries. I can also recommend this video which highlights the speed improvements that are available when moving out of heavy and unnecessary JS and into HTML and CSS https://youtu.be/VUwyYhNO63I

Secondly I’d like to tip my fedora to you all and say that the Arch wiki is not only one of the worlds most exquisite repositories of information but also a paragon of content focused design. https://wiki.archlinux.org/index.php/Installation_guide I have linked the install guide as an example page but all follow this same simple layout and beautiful indexing. Although this isn’t specifically a design consideration I also appreciate their Code of Conducts resource on answering questions http://www.catb.org/~esr/faqs/smart-questions.html this page also follows our design rules coincidentally!

Many “old” projects like Debian have a get repository of information in archived versions of their mailing lists. If you are a computer hobbyist you’ve likely stumbled into a handful of these through frantic googling. One of the great parts of these websites is their indexability. It seems web crawlers absolutely love the way the information is presented so straightforward instead of being needlessly distributed through flashy graphics, animated menus, or slideshow-like pages with nearly no information to inflate traffic. It’s all just right there. A truly tranquil feeling passes over the body when the pages load so quickly and the information is so readable. As if asking a classmate which page to turn to and they not only provide the number but also the paragraph and line to begin from. Excellent.

There is a learning curve to pushing yourself to correctly chew through such dense information. Often pages like these read like a research paper and that is daunting to the uninitiated. Research papers are one of my favorite ways to get useful information as the abstract will offer a far different and likely more nuanced summary than any news article attempting to spin their work ever could. Likely, most would load the PDF file in their browser and immediately close it due to its alien dual column structure. I would like to push more people to return to the source and away from the colorful and distracting stylization of information for the layperson.

Content is king and a website shouldn’t take 13 seconds to load for any reason. Information density is not for everyone but may be for you. It surely is for me. Take a stand against not only radio edit songs but also the dilution of quality information. Thanks!

Blog Relaunch

Well well well. Look who’s back to writing a blog that no one will ever read or care about. That’s right! Lil’ Cropster.

As you can see I’ve gone and touched up some of the loading issues and improved the site a little. Goal is the same as it always way. Create more content and hopefully attract more eyeballs to look at it. A growing list of topics continue to overflow from my notes application and “like a bee thats gathered too much honey, needs hands out stretched to take it” or something, whatever Zarathustra said.

I spent some time last year writing a few posts for this which, after careful cringe analysis, seem to actually be good! Hopefully after I private all my posts and scrub this blog from the internet again in the coming months when I have some kind of internal crisis I will look at these posts during the 2020 relaunch with pride.