Blog

July 16th, 2019

In a private tape recorded interview unearthed circa 2016, an emotionally exhausted Conspiracy Guy recounts his harrowing experience at Area 51 back in the 1940s.

(Actually, this is just some lame improv I recorded from 2016. Felt like the right time to clean it up and finally post it, considering the pending Area 51 invasion!)

July 16th, 2019

So, my eyes were glazing over some WordPress PHP in my editor of choice, VSCode.

The weaving in and out of <?php, <?= and ?> tags, bouncing between PHP and HTML contexts was making my head spin.

I kept having fantasies of a time when I could highlight the PHP (or HTML) context using a different background color… but there didn’t seem to be anything like that for VSCode, at least. It’s possible I was thinking of PHPStorm, but that was a lifetime ago.

So I powered through, cleaning up the twisty templates, trying to make them as readable as possible. But I finally hit my breaking point and started looking around… and I think I found a good solution. Whether it’s a good long term solution, well, that remains to be seen.

The Highlighter extension for VSCode is where the magic happens.

This extension allows you to define custom highlighting rules to regex matches in your code.

You can probably see where this is going.

After some futzing around, I wound up with these rules in my VSCode settings config:

"highlight.regexes": {
        "(<\?php)((.|r|n)+?)(\?>)": [
            { "color": "#FF00FF", "backgroundColor": "#FF00FF40" },
            { "backgroundColor": "#FF00FF40" },
            { "color": "#FF00FF", "backgroundColor": "#FF00FF40" }
        ],
        "(<\?=)((.|r|n)+?)(\?>)": [
            { "color": "#FF00FF", "backgroundColor": "#FF00FF40" },
            { "backgroundColor": "#FF00FF40" },
            { "color": "#FF00FF", "backgroundColor": "#FF00FF40" }
        ]
    }

Your color preferences will vary, of course, but do at least note that I’m using the extended alpha value in the hex (the final octet), so you can blend your background color into your theme’s existing color!

(And yes, you can combine that down into one regex. Go ahead and do that.)

(The rainbow colored indents are part of the terrific indent-rainbow extension!)

I haven’t bounced on this very hard, so you might find some quirks here and there.

For instance, if you don’t include the closing PHP tag, ?>, it won’t match the regex. You could make the closing tag optional, but that might be undesirable…

But in any event, this seems to get me 9/10th of the way to the functionality I want, so I’m pretty happy. 😏

July 15th, 2019

I don’t have a link to it, but I remember reading about how some people essentially “reinvent” themselves multiple times over the course of their lives. They are constantly learning new things and switch careers to some other focus every decade or so, in an attempt to live a rich, varied life free of stagnation.

An interesting idea, if you can pull it off. After all, typically, people are married and have a family to take care of. And if not for a family, one’s own finances need to be secure.

Now, I’m not planning on quitting my job any time soon, mind you (I love it quite a bit), but I think the basic idea could at least be applied to one’s hobbies…

Since I was in high school in the 90s, I’ve always had a thick interest in game development. Skipping past the boring self-analysis, I came close to doing it professionally a couple times in the last decade, but otherwise it’s mostly stayed a hobby. But it was one I actively participated in during my off hours… I could cite various reasons, but suffice it to say that despite my dreams of ‘going pro’, it never took off.

Other, recent events have soured the milk on game development even further. It was probably for the best, though. All it ever did was remind me of unfinished projects, and planning for a future that wasn’t going to exist. Never mind the increasing number of horror stories from inside the industry, as people begin to feel safe about opening up about corporate abuse and general misery.

So, over the last couple months I’ve decided to pack up my game development hobby and put it into a little box in the closet. Sure, I’ll still keep tabs on industry news and people’s fun indie projects and stuff, but it’s no longer a primary interest.

What will fill the void?

Well, over the last couple years I’ve been, off and on, attending the B-Sides information security conferences along the east coast. I always had fun, but felt a bit weird going to them. It wasn’t my field. I felt like an outsider, even though it was stuff I could potentially apply to my day job. But as time went on, the wheels of further interest started turning…

Network security has always been a major weak point in my computer education. Compiler internals, hardware, software development? Sure, I love that stuff. But network administration? Server security? Subnet masks? OSI layers? I’ve had, more or less, only a scattered, surface level understanding. (No worries — I had a good handle on what to do, and what not to do, when it comes to security when working on software projects, so no worries there at least …mostly. I mean, as far as I know. Oh god, now I’m paranoid.)

So, I’ve been taking courses. I’m going all-in on educating myself about all of it. Taking part in CTF challenges. Pentesting my own internal network. Breaking into vulnerable virtual machines. (Already taught me a ton about WordPress security. Cough.) And I’ve been taking extensive notes as I go.

And you know what? I’m addicted. This is seriously fulfilling stuff. And my interest has only increased the further in I get. It’s like an infinite box of puzzles that keeps my brain active.

So now I have a primary hobby that is not only good for me, good for helping others, but also helps my day job.

I don’t want to say it’s goodbye forever to game development, but it’s going to be a long time, if ever, before that flame is reignited. And hey, maybe I’ll write up some more educational stuff here and there to help others, like me, along the way. I’d be down for that. 😎

July 6th, 2019
The Acer Spin One (SP111-33)

The Backstory

(Skip on down below for the actual details on what had to be done to get Kali Linux working on the The Acer Spin One (SP111-33).)

I’ve been on the hunt for a decent, small netbook for a while. I’d hoped to wipe ChromeOS off of the Samsung Chromebook Plus that I’d acquired — a decent little device in it’s own right — but the effort required to do it properly was simply not worth it.

(TLDR on that: there’s no ‘write-protect screw’ like other Chromebooks; instead you have to remove the battery, among other things. I’d rather keep it as is, preserve the value, and sell it in trade for a more traditional laptop!)

I went through a couple other laptops all with various concessions that I wasn’t too happy about.

My demands:

  • Small (11.6" or so)
  • Light
  • Decent battery life
  • Peppy speed
  • Runs Linux without any fuss
  • Is under $300 — cheaper the better, but I don’t want immense remorse if it’s broken, unlike a $900 (or more) beast

In my half-hearted on again, off again search you could hit most of these if you were willing to void the warranty of a Chromebook, or were willing to sacrifice any kind of aforementioned pep. It’s the ol’ "small/fast/cheap — pick two" kind of thing.

I’d been eyeballing the Acer Spin One at Walmart for a while. Not exactly the place to pick a winner, I confess, but I kind of liked how it looked and felt; it was solid as hell, with a sturdy aluminum frame. But at almost $400, I wasn’t sure if it was worth gambling on.

So I hit Walmart.com and I see there’s actually two entries; one is the Acer Spin One at the expected price. But then there’s another SKU with a slightly different model number.

As it turns out, it’s a slightly faster model, but about $100 cheaper. And it’s not solid aluminum. And it’s all black. But it’s still a super light 2-in-1 convertible laptop. They saddled it with Windows 10 S (the one you can only install from the Windows app store from). And it’s a lower res screen instead of the full HD of the more expensive model.

I get in the store, and I see them mostly side by side. The more expensive one SURE IS PRETTY in comparison. And the screen is definitely brighter and nicer to read.

They’re both locked, but that wasn’t a problem. The password was the store number, which is on the login screen.

Once I’m logged in, I load up Edge and pull up an online JS speed test. It won’t be comprehensive, but it’ll at least give me a ballpark.

The two churn through the test, neck and neck. I get some side-eye from the clerk, but I ignore him. I’m shopping, damn it!

By the end, it turns out the uglier, cheaper one actually beat the hell out of it’s more expensive brother.

Some quick googling showed people WERE installing Linux, but one guy said he had trouble with most distros except Kali (and some other one). Hey, that’s fine by me: that’s exactly what I intended to install! 😏

Maybe it didn’t QUITE hit the sub-$300 mark, but it came really close. And considering it hits the rest of the bullet points…

So I bring it home. Cortana’s happy greeting is cut short by a reboot after I insert a bootable USB stick.

There were some issues, so I’m going to outline them here for future users.

Installation

Use F2 at the boot screen (don’t hold Fn) to enter the BIOS.

Here’s what I did in there:

  • Disabled all of the secure boot stuff.
  • Set the boot drive to the USB stick (for the install; throw it back after)
  • Internal KB Numpad: Disabled (preference)
  • Function key behavior: Function Key (preference)
  • Lid Open Resume: Disabled
  • Rebooted

I kind of shotgunned my way around this whole area, so YMMV. But I think if I took the path I outlined here, first, I’d have had more immediate success.

At this point, you should have the Kali boot screen; perform a full install.

Since there’s only 64GB on the internal EMMC drive (which is enough for my purposes), I instructed the installer to wipe the entire drive. You didn’t want Windows 10 S anyway. 😎

Hardware Surprises

There’s a couple gotchas with the hardware, but most of it can be fixed easily.

Screen Rotation

During the installation process, everything is fine. But once you boot into the desktop, you’ll find yourself craning your neck sideways. The driver for the accelerometer is reporting the wrong orientation information, so the screen is rotated improperly. And if you rotate it into portrait mode, woosh, it’s in landscape.

The Quick GUI-based Fix

Turn the device on it’s side, giving a portrait orientation. It will render the desktop in a landscape orientation. Turn your head sideways and tap the user menu on the far end of the system bar along the top… (…er… right?)

Then tap the second icon on the bottom; the one right next to settings, to lock the orientation as ‘landscape’. Then you can flip the device back to it’s normal landscape orientation and it will stay in place.

Alternatively, you can run xrandr -o normal on the command line to force the rotation. You can view the current rotation state, as reported by the accelerometer, with monitor-sensor.

The Real Fix

The more involved fix goes like this (thanks to CupOfTea over on the Acer Community Forums):

Create /lib/udev/hwdb.d/61-sensor-local.hwdb

Inside that file, add:

sensor:modalias:acpi:BOSC0200*:dmi:*svn*Acer*:*pn*Spin*SP111-33*
 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1

Note the single space before ACCEL_!

The Nuclear Option

Disabling the accelerometer entirely is another possibility, but that is left as an exercise for the reader. 😏

WiFi

Wifi works great. It’s an Intel Wireless-AC 9560 that can be used for various things. Nice!

Bluetooth

As of this writing, I still haven’t gotten Bluetooth working. But I’ve had it for about half a day at this point, poking at other problem areas, so we’ll see how that goes. I’ll update this when I get it fixed.

I don’t know where the trouble lies, but the service just isn’t running on boot. Here’s what I did to start it up by default. First, call systemctl enable bluetooth.service to set it to load on boot.

After this, I was able to reboot, and my mouse connected on login. Good times. 👌

(If you’d rather not have it start automatically, you can just use systemctl start bluetooth.service to start it manually.)

Other hardware with no obvious issues

  • Audio
  • Touch screen
  • Micro SD card reader
  • On-board video – There’s some brief black and white glitching on the very top of the login screen, but you don’t see it anywhere else.
  • HDMI – worked as second monitor on a 4K display; didn’t DPI scale out of the box of course.

Sweet.

So yeah, I’m pretty jazzed about this little guy. It’s about as close to perfect as I’ll probably get for now.

I guess I’ll keep it. 😏

April 30th, 2019

Is this art? Technically.

Is it HIGH art? Probably.

My first short “film”. If you can even call it that. Just a fun side thing I’m playing with.

March 29th, 2019

It’s been a while since I’ve put together a new episode of Slack Injection. But I’ve had the itch lately, and I think I have a pretty decent workflow for putting them together (while being able to maintain a list of credits).

Hopefully that’ll mean I can do them a little more often. But you know me: I run hot and cold on everything. 😛

But enough of that. Now it is time to Surrender to the Mouse