Saturday, December 30, 2017

Skirts In Space

This post is sort of a part two to my previous one. I reiterate: I love retro future. When I think back, I've always liked sci-fi, but it wasn't until the family went back to Disney Land a few years ago and I waited in line for Space Mountain that I realized I absolutely love sci-fi and specifically retro sci-fi.
 
While I was waiting for an hour or two, in the heart of Tomorrowland I had plenty of time to look at what Disneyland had envisioned 1984 as. I imagined myself in the utopia of the 1960's-1970's. I world where the future was full of promise and technology existed simply because it was cool.
 
I DO love modern sci-fi as well, but I don't like how it ALL is dystopian... and is so eager to cast corporations as the ultimate evil when it is death by government that has racked up BY FAR the most murders in the 20th century. I have no problem using sci-fi as escapism. It doean't always have to be horror or political commentary.

As such, I have zero beef with miniskirts in space. Why can't the future be sexy? I'm cool with putting the guys in tight space shirts, why not? Let the future be sexy and fun. It's fiction. Make it what you want it to be. Why not create a future world that we all want to be in, not just worlds we fear?
 
Call me sexist all you want. I'm totally down for miniskirts in space.

Friday, December 29, 2017

A Thing For Its Own Sake

This is probably just me, and I'm sure I've touched on it before, but it seems like there is very little that we do simply for its own sake anymore. Maybe we've killed fun with our 'enlightenment'.

Still my favorite piece of graffitti:
A society that makes every form of recreation illegal, makes its own destruction the only possible recreation.

I love retro futurism because it seems to exist for its own sake. I'm sure it actually didn't (Maybe we were trying to show the communists how advanced we were), but looking at it from the future it sure seems to. Hovering cars, because future. Space age martini parties in flawlessly perfect suburbs, because future! Robots, rockets, cities in the sky, all because the future is amazing.

Or art. Pushing your ability at realism, or diving deeper into abstraction, or fully exploring an idea or vision. Hyper realism, because art. Abstraction, because art. Visions, surrealism, other worlds in images, because art!
Technology for the future's sake. Not because it's 'green' or responsible or whatever. Just because it's cool.
 
Art for art's sake. Not to piss people off or essentially be political satire.
And what about chatting for chatting sake? Good luck being on ANY social feed without being flooded with politics and other irritating topics.
Social media for chatting sake.

I think we need to quit taking ourselves so seriously and allow ourselves to have some fun... because it's fun.

Thursday, December 28, 2017

Working Out Algorithms

Knowing common algorithms is a major advantage for developers. Algorithms are powerful tools in our belts. If there is a complex or difficult to solve problem, knowing a proven algorithm that will solve it would immensely speed up the development cycle. Do I know many algorithms? Not many. Sadly.
But in my binary watchface I needed an algorithm for determining which squares need to be lit. I could do it by 'brute force' using a ton of ifs etc. But I wanted something more elegant (Although I hadn't really bothered to make the rect objects themselves very elegant - they're all hardcoded, not created programmatically).
I was hoping I could use bitwise checks, like:
if (2 & hr2 > 0) ...
if (4 & hr2 > 0) ...
If I had been more familiar with bitwise operations I would have never entertained the idea. I didn't work. I hit the internet but didn't find much. So I had to work out my own.
I need to get my binary valued squares to equal that column's time (Or battery) value. So I decided to create a variable to hold the sum. Then I started with the largest value. If adding that goes over the column's value, do nothing. Otherwise, add it and light up that square. Then move on to the next lesser value (From 8 to 4 to 2 to 1).
That was it. So much easier than I thought it would be. Thus is the beauty of algorithms.

VIM Cheat Sheet In Person

I just got one of my own VIM cheat sheet shirts. I have to say that it turned out better than I could have expected. I applaud Zazzle! The small text is very clear and it doesn't feel like the old custom shirts (like the ink is nothing more than a sticker put on it). We'll see how it stands up to time.

Wednesday, December 27, 2017

Fit Adventure Begins

My wife bought me a Fibit Ionic for Christmas. She's well aware of my frustrations with the lack of support for the Smartwatch3, and the horrible task of developing Android apps. I really have no idea how professional Android devs do it. I was doing the simplest of tasks and in spite of months of effort, failed to get a single watch running on the Smartwatch3. I'm sure it's just me although I was working on numerous boxes, fresh Linux Mint boxes, fresh Kubuntu boxes.
Before getting the Ionic I read a bit about developing for it. Javascript, Json, Svg based. So it should be nice and easy to create the watch layouts etc.

After getting the Ionic I looked further into it. The development studio is web-based so that alleviates the local dev env setup headache that android studio was until I got to know it. I created a watchface from the template. The project was so much simpler than Android projects - which makes sense since my target is one device and one device only... so far.

There's no emulator. Another headache removed - but a problem if you don't own a watch yourself. I don't mind testing on my Ionic. Sadly it seems the only way to use your watches is to load it in the studio and run it. Then your watch is set to that watchface until you change it. Switching watchfaces in general will be a nightmare as Fitbit adds more to their firmware and eventually their store. Hopefully they add a 'my watchfaces' or way to favorite apps and watchfaces.
Anyway, my first day with the Ionic I had successfully coded a terminal style watchface. A couple days later I successfully built a binary watchface. It has a settings companion but so far I've been unable to figure out how to access it, hehe.

The Ionic is more limited than a full on smartwatch but so far I really like it... And it looks super scifi - especially with my binary watchface :)

Monday, December 25, 2017

RIP Space Watch

I'm sad. My 01TheOne X watch is dead. It was one of the most scifi looking watches I own. Such amazing design! ... Wasted.
When I found the watch online I had to have it. It looked like Space Mountain. It had so many visual elements I was looking for. In fact it would have made a killer smart watch. It was large, square, and had cool transparent blue elements. It even ticked like a Swatch.
When it arrived it looked even cooler in person! It was well built, had a tough rubber strap, solid body, it was great!
But I found that I rarely wore it. The biggest problem was readability. It doesn't have a light in it and unless you are in decent light good luck seeing the time. But when it's on your wrist you feel like the pilot of a sweet 1980's spaceship.
After maybe half a year it went blank. The battery was already dead? Considering how small the digital display was, this seemed odd. I opened it to remove the batteries until I was ready to buy more. At that point I learned that it requires not one, not even two, but THREE batteries. Ugh. I just took it in to get two of the three replaced. I didn't really need it to tick at this point.
But when the batteries were replaced it still didn't work. It turns out the circuit board points were corroded. What? After less than a year? And I took amazingly good care of the watch. I was very sad. It has now become a neat looking bracelet.
The whole ordeal has soured me on novelty watches. So now when I'm hunting for scifi looking watches I look for surf watches. And my options are very limited. Diesel no longer makes any of their killer square scifi watches. The Stark lines are all discontinued and Tokyo Flash makes me nervous - they are novelty watches.
Rip Curl makes some cool watches, but I already have their green crystal Rifles watch (Now my fav scifi watch), and the others are either not quite as cool, or they're $100s of dollars. Nixon's clear Comp watches are cool, but I have one of those also. The FitBit Ionic is very 01TheOne X looking, but it is muktiple $100s also. Everything else is round, or VERY cheap.
The hunt continues. RIP Space Watch.

Thursday, December 21, 2017

Reaper Subprojects

When making highly technical dance music one technique is to build a synth riff, EQ'd and effected up. Then the riff is frozen, chopped up, effected more, reversed, etc. Maybe that gets frozen and the tweaking and trashing repeats. At each iteration, the musician listens for gold nuggets. The best clips get utilized in the song.

In Reaper there is an amazing tools that makes this technique super-powered. A synth can be added to a project, if it makes the sounds the musician wants, a riff can be written. That track can then be 'opened in a subproject'. The subproject opens in a new tab. Effects can then be added to the track. When the project is saved the riff is rendered as a wave. At any time the riff in the main project can be double clicked to open the subproject. Notes can be changed and effects tweaked etc. When it is saved the riff is re-rendered.

It's amazing, and makes the whole process much less painful, and adds complete flexibility.

Mad Busy

Life is interesting. I love Reggie Watts' video sign off:
'Life. It just keeps happening.'
Busy-ness is a strange thing to me. We think of ourselves as busier than previous generations, but are we? We are certainly doing more, but that's because we can. We can 'cook' a meal in a couple minutes (Science Oven!), we can fire off 'letters' to people (And have them receive the letters) in seconds, minutes at most. We can wash the entire household's laundry in a day, WHILE we do other stuff.
I don't think we're more busy now, I think we're faster. So maybe we're more hectic today than ever before. Surely people have always bemoaned:
"Ugh there just isn't enough time in the day."
Or have always responded to "How's it going?" with:
"Super busy. Just constantly doing stuff."
But in the past that busy-ness was working the farm 14+ hours a day. Writing a letter for an hour, then seeing it off. Walking / riding a horse to a colleague's house to discuss business. Preparing meals for hours per day. Drawing water from the well.
I think you get the idea. When we have down time what's the first thing we do? Completely book that time with something else. I'll bet that's what people int the past did as well. Pretty sure we'll always be mad busy.

Tuesday, December 19, 2017

Improving Logic

As I go about building a game in my text-based game engine I am keeping my eyes open for pain points. One has quickly manifested. I tried to work with it but it really needs to be fixed.

The trouble is with the Logic Blocks. I have logic grouped into LogiSets and the entire set must evaluate to true or its parent will not fire. There is rudamentary OR capability, but working with logic is a pain. It works fine for single or basic checks, but quickly breaks down when even moderately complex checks need to be made.

So I broke down and updated the Logic blocks to allow an eval multiline element. In the eval logic can be defined more like simplified code:

attribute@torch:lit!=true
or
location@torch!={room}

In that example the first line checks the torch's attributes, checking that the lit attribute is not true. If that check is true or - The last line checks the torch's location to see if the torch is not in the current room.

Logic lines can can also be linked by 'and'. In time I will expand on this to make it more powerful, but it is a definite improvement over defining logic elements and using properties to define the logic, and clunkier 'linking'.

Saturday, December 16, 2017

Grab Your Clipboard, This is Important

I don't know how it is with MacOS's but in Windows I find the lack of - really - ANY clipboard management troubling. In Linux, your distro likely ships with a decent clipboard manager, however the (I believe this is an old Unix behavior) whole copy what you select thing drives me nuts - and so far I've yet to find a 100% way to avoid it.

Anyway, back to Windows. I've always held jobs that required me to be on Windows. And I would imagine work machines are a vast majority of Microsoft's business. And a lot of companies - smartly - restrict what you install on your work machine. Why in the world would you not put some decent built in tools in your OS? I find being able to - via hotkey - access, edit, and select from historical clipboard contents to be invaluable. Without such a tool, I have to have notpad instances (Notepad, you're next) loaded up with passwords, urls, code snippets, other stuff that I need to re-copy to my clipboard.

What year is this? You don't have a clipboard manager, stock, in your OS?

And Notepad. Has Notepad not changed since 95 (or even earlier)? You can't even give it tabs capability? And that Find dialog. Seriously? I like vintage, but if that's why Notepad is unchanged, where is my Space Cadet Pinball? People will say 'it has - wordpad'. Wordpad is a rich text editor. So if we are dealing with plain text I find it even worse than Notepad. Others say it's supposed to be a 'just good enough' editor. Buuut - it's not even just good enough if I can't get it to open large plain text logs. Maybe your 'just good enough' tools need to be upgraded to 'actually just good enough' tools?

So when I log onto servers I am stuck using a text editor that can only open one file at a time, craahes if I try opening huge log files, and doesn't REALLY know where words start and end - so I'm either mousing around or navigating letter by letter. Seriously, what year is this?

Friday, December 15, 2017

Inbox Minimalism

At work I'm reading and writing email all day, of course. And I am so grateful for the 'unread' filter. Without that madness would rapidly ensue. I am very obsessive about having an empty inbox. But for work I have to keep every drop of water in the ocean, so I just filter them out so my inbox looks empty. Ahh. Car making a weird noise, turn the radio up.

Home email is another matter altogether. My personal email is like my personal land line. Pretty much everything that comes in, I don't care about. I got tired of deleting dozens of dumb emails every day, so I started doing something about it. I'm no IT guy, I'm not rolling my own email servers etc. Just free mail accounts through Thunderbird. But every time I would get an email I didn't want I took the time to unsubscribe.

Within a week or two I was down to about 5-6 emails per day. That is across about seven email accounts. So now all I get is an occasional Reaper Blog notice, prayer chain updates, and occasional spam that I have to unsub from.
Ahhh. Much better.

Wednesday, December 13, 2017

Keyboard Power!

I know I have written about command-based launchers before, as well as other topics mentioned below - but I just realized how thorough my migration into the terminal is. I spend nearly all my computer time in terminals, Windows command prompts, VIM, GnuRoot. Even my phone's default launcher - T-UI - is a terminal. I launch phone apps etc by issuing commands.

Really the only time I'm reaching over for my mouse is when I have to do something on a website that uses JS in such a way that QuteBrowser's mouseless tools don't work. Or sometimes my workday tools like Outlook, Skype etc require some mousing.

I love being able to work without having to interrupt the flow to reach over and mouse around, then go back to typing. - This is why I dislike Apple's OS's, I was never able to get away from having to mouse to do nearly everything. Last time I was on a OSX, I couldn't even close dialogs etc w/out mousing. I tried Escape, nope. I tried tabbing to the Cancel button to hit Enter, nope. It was so frustrating. Of course it was probably that I just didn't know how to configure my OS, never the less my first impression was made.

All hail the keyboard!

On my phone I enter the first few letters of the app I want to launch, hints show up (The tab key is sadly buried in most mobile keyboards) and I touch the one I want. - Or I can be really hardcore and just type the full name out.

On my personal boxes I set up my global hotkeys to use Krunner as my launcher. I type the first few letters of the app I want and tab down to the desired result and hit enter. Or in some cases I just launch from the terminal, and have some bashrc entries to make this even easier (As in the case of Reaper which I run via Wine).

On my work boxes I have shortcuts in my home Dir. These allow me to enter the shortcut's name into the run prompt.

So on every machine I have, I kick off apps, not by clicking an icon etc, but by entering text into a launcher or terminal... that is - when I need an app outside the terminal.

I love it.

Tuesday, December 12, 2017

Fluxbox! Because BlackArch

I do some pretty ridiculous things sometimes. And right now is a perfect example. I run Linux Mint KDE, because I love the distro's simplicity and KDE's flexibility. But I love the look of BlackArch Linux.
So, not knowing anything about it - on a granular level, I installed it in VirtualBox. And found out it runs fluxbox. Having toyed with openbox a little, I guessed flux might also be config file-driven. I found the theme file - but couldn't get a file manager installed. Wrestled with pacman for a while.
Then it dawned on me - there's probably a website w/ all the BlackArch files available. Sure enough, found a Git repo and snagged the theme. After some tweaking of the keys config, and a couple others I have a hardcore looking, super minimal black and red theme on my computer. We'll see if fluxbox grows on me.

Be a Follower

Ok so I have a simulator coded that allows me to test my AI flocking and path finding. It's basic, but allows me to test my intended behaviors before translating it over into the real game.
At this point I have a spattering of random enemies in random locations. A random 'notice the player' distance is set. All of the enemies within the notice distance from the player swarm the player. However my task is to make this less taxing on the game. So as I implement path finding I will have to update my logic so that only one or two enemies actually pursue the player, others near those 'leaders' follow them. For this to happen I will need to utilize some of the behaviors of flocking. I will also have to utilize an efficient path finding algorithm.
Once this is in place I can code the behaviors of the 'non-pursuing' enemies.
More to come.

Saturday, December 9, 2017

Move Your Player, Man

I am working on an arcade style game in Java, and using it, initially, to build a flocking/stalking simulator for a zombie game. The code will ultimately be translated to C# and plugged into Unity. But I am far more versed in Java so I want to build it there and avoid the Unity learning curve. When we go to implement it, I'll work with the Unity developer.
I am working on player movement, because the same movement class will drive the enemies. I ran into the same problem I had with The Swarm - my previous arcade game. When a direction key is pressed, then another direction is pressed, the key up events for these wreak havoc and you end up with the player sitting still. I came up with an amazing and SO simple solution for this and the results are everything I hoped for.
The movement class has:
- speedX / speedY
- x / y
Then I added:
- moveX / moveY
The last two work with the key presses. (Since it's Java up is negative, down is positive) If the player hits the left direction key, moveX is assigned -1, if the right direction key is pressed moveX is assigned 1. Then the moveX and moveY values are multiplied by the speed and added to the x and y.
In the key release, if the left key is released and the moveX is negative, I set moveX to 0, if the right key is released and the moveX is positive I set moveX to 0.
What's great about this is I can easily set movements in eight directions. When we go to implement it, of course it will need to be expanded and improved for a much more complex game but it will allow us to work out the routing and flocking algorithms.

Friday, December 8, 2017

Ok .NET Core is Cool

I've never toyed with .NET Core before. And just in doing the setup, creation of a new console app and runming it - I have to say .NET Core is pretty cool! It isn't an IDE, but rather a console application. It creates some basic projects for you via templates and is able to build and run your projects. The templates appear to be primarily web-based, with a console app template in there as well.
Sad to say, since I've always built in Visual Studio, I don't actually know how to create much beyond these templates. It's amazing how helpful IDE tools like intellisense are, yet at the same time they prevent you from truly learning the language etc. I've spent years building .NET websites - nothing super complicated, but I was in C# every day. Yet I know Java far better than C# because I've always hand coded Java in VIM - without the aid of intellisense or real time syntax/object validation. I set up the manifest file and project structure. I know what files I need to create and where. In VS it was all done for me. Apart from the IDE I'm a noob.
In light of this, .NET Core is even cooler!

How I Roll Blogger

I use Blogger because it's easy. Of course. I can spin up a simple blog with minimal effort. All I'm really interested in is sharing my nerdy thoughts and networking with people who are smarter than I am (I firmly believe I will become smarter via osmosis) - AKA all of you.
I typically write all my posts on my phone, in VIM then publish them via the official Blogger app. I don't have a need for much beyond that. But if you've left me a comment you may notice that my reaponses are slow. That's because thr Blogger app has no concept of comments.
Due to the lack of comment ability in the official Blogger app, I've decided to try some other clients. The first one I'm trying is Bloggeroid. So far it seems - interesting. I don't like the way you have to re-load your post if you save it. I am an obsessive saver so that's not going to work for me - but I do write in VIM so maybe it's Ok. The cool thing is it does have a comments interface, so I should be able to stay on top of them.
I also use Blogger Stats on my phone to look at the numbers. When I don't get direct feedback I can see which topics seem to be of the most interest etc and keep that in mind. I'm not sure about how accurate it is, but good enough for my purposes.

Tuesday, December 5, 2017

Official RM RF Shirts

I created a couple of 'official' rm -rf / tshirts. A command only and sudo version. If you want one, you can get em here via Zazzle:

Monday, December 4, 2017

The Beauty of Macros

I've written about them before but macros are a thing of beauty. One of the coolest aspects of editors like VIM is that everything in the editor is done via command, which means it can be called by a macro.

I don't know if they have since been restored, but I find Microsoft's removal of macros from Visual Studio perplexing. Why would you remove such a powerful tool - that you already had nailed down - from your dev environment?

Anyway...

Macros are something I've been overlooking in my Java console projects. Like VIM everything in my software is driven by commands. - So I could allow users to create and use macros. World Weaver touches on this in the admin utility. Game authors can create macro files (Text files that contain WW commands - either player commands like 'examine the torch' - or admin commands like '_move secret_escape_room"), then call them via the file name:
_macro escapedungeon

This feature has saved me a LOT of time, making tedious tasks much more tolerable. Now I need to revisit my other projects and see if macros would make sense there also.

Saturday, December 2, 2017

Cleaning Up Mud

When you are trying to make filthy music one challenge is keeping it untamed yet crisp and clean. When you are making filthy, bass heavy music you have a similar challenge. Not only are you fighting to keep it clean, but you have to really keep an eye on your frequencies. They are vying for a small range and you are pushing the sounds to the limit. It is so easy to end up with audio mud.
Mud is your enemy, no matter your musical goal. Even if you are making noisecore, if your music is muddy it becomes boring and uninteresting. It is the audio equivalent of beige.

Whatever genre, whatever sound you are after (Unless perhaps you are a shoegazer / wall of sound musician) you want brilliant colors, not beige.
Before I begin, remember I am no expert by any means. I am just a hobbyist musician. So take this article with a grain of salt.

When fighting mud you have three major tools at your disposal.

Frequency Analyzers
As their name implies, frequency analyzers help you see which frequencies your sounds are occupying. They do not alter your sounds, but they help you see where sounds are trampling each other. I personally don't use these, I'll explain why in the next section.

Equalizers
I put an equalizer on every single track in my songs. They are invaluable. My EQ of choice is EasyQ which is a parametric EQ. Using this I can easily see which frequencies I'm limiting and which I'm boosting. I use EasyQ so much that I have a good idea how I'll need to EQ different types of sounds. It serves as a pseudo frequency analyzer.

Sidechain Compression
Sidechain compression is also an invaluable tool (And in Reaper it's super easy to do). The idea is you route the output of a sound, like a kick drum, to other sounds that will be occupying a similar frequency range. Whenever the kick hits, it compresses the other sound so it essentially takes the backseat for a moment. Sidechaining is amazing and when you listen for it you'll hear it everywhere, often it is overdone intentionally to give songs a very unique sound. But yeah, it's surprising how much it can clean up a bass heavy song.

Obviously there are many other tools and techniques out there, but EQ'ing and sidechaining are my go to's.

5 VST Effects I Use in Every Song

VSTs are so great. I have a massive collection of free instruments and FX that I've tracked down. There are SOO many to choose from... B...