Wednesday, January 31, 2018

Re Re Rewrite

I'm hoping it is a sign of improvement, but I feel the need to rewrite my Java based console notes application. I have learned a lot from the work on the WorldWeaver IntFiction game engine. I have come up with a means of capturing multiple lines of input, so it will br much more reasonable to define multi-line notes etc.

This little program has been with me for a LONG time. It has had a few different names, purposes, and implementations. It began as a small C# app for keeping contacts and brief notes. This was before the SmartPhone. I wanted to centralize my contacts, notes and bookmarks. I wanted an application that was easy to define fields for each entry and notes for each field. It used a treeview to organize the entries. Later I gave it cool themes. A console theme, a Robotech theme and others.

Later it became nmxj (NoteMatrix Java). With that rewrite it became a Java console application. The back end was rewritten and commands expanded, multiple databases supported, and the help system improved.

Now I have a multiline feature and even better help system is in the works along with a complete rewrite to clean up the code and add more funtionality. I may look into adding macros instead of favorites and possibly templates for how entries and fields are displayed.

Treeview support will likely go away in favor off more powerful search support. Perhaps grouping and other ways of managing entries as well.

I'm like the guy in Naked Lunch who obsessively edits and rewrites his work.

Tuesday, January 30, 2018

Stuff For No One

I am still obsessively watching Computerphile videos. Recently, I saw a video on Sega game development in machine language. It was great. The conversation shifted to the hardware and software involved. The game was being coded in Windows 95 on a box from the 90's due to the need for the old style slots on the mother board.

I don't recall the specifics of the Sega box. It was a custom box, a Sega disk writer and some custom development box oslt. Which led to the question of how many people are playing the old Sega games, or developing them.

At this point in the video I started feeling a little better about my IntFiction game engine. I know I'm developing it for a niche adience, so it was nice to see someone else slaving away for a super niche audience as well.

It would be nice if I had more mainstream... profitable hobbies. But I don't. Eh. What can ya do.

Monday, January 29, 2018

The Hunt

I enjoy the hunt. Yes of course I'm talking about nerdiness. It's frustrating how tough some of my hunts are, yet if they weren't they would be boring. I've written about some of my recent hunts:

Years ago I was on the hunt for solid brass nautical jewelry. I ended up finding brass deep sea diving helmets and made some jewelry and Christmas tree ornaments with them. I tracked down a solid brass ball chain and have my personal dive helmet attached to it with brass wire. I found a decent solid brass anchor pendant also. It seems there aren't many hobbyist jewelers out there who are interested in non-costume components. And related to these, figured out how to make fiddler caps, because I couldn't find black wool fiddler caps that I liked.
Then, after a trip to Disneyland I became obsessed with Tomorrowland. So I began hunting for watches and other things that look like my idea of retro future / futurism. I have tracked down t-shirts that celebrate retro-futurism, sci-fi, Linux/Unix. It's amazing how tough it is to find cool space age looking watches. Or decent square watches in general. Turns out I'm about 5-10 years too late. I missed some amazing looking Diesel watches, Stark watches, and some smart watches.

After perusing shops in Maui I've returned to my love of dive watches. I ended up finding a very reasonably priced Armida that has everything I was looking for. I am looking around for something further up the luxery chain, I would like to have a better depth rating, and would like to see a Swiss movement in action. I like the Seiko movements, they are rugged work horses, but they are not as accurate so need adjustment often.

We'll see what hunts come next. Strangely enough I'm actually not.a huge collector. I have a few watches sitting around, a few shirts, hats etc. But once I achieve what I'm looking for, I'm done. And... I try to offload stuff so I keep the numbers down. :)

Friday, January 26, 2018

The End of the Tunnel

I am there, at last. I can see the end. Last night I coded the last two rooms of my IntFiction game Escape Apsis. I coded the logic for the *sort of* win and the win win. Now it's on to testing, fixing, and adding random events that will add excitement to the game and ensure each time it is played it's different.
I am so glad I coded admin cheat comands and the ability to creat tests (basically macros). These have both been invaluable so far, and as I begin shifting from unit tests to game-play and full game tests they will become even more important.
I could be wrong but - at least with TADS - I don't believe other IntFiction engines have buolt in testing tools. So there may be one thing my engine can offer over others.
Once I finish testing I'll shift into promoting it. Then I'll begin a web-service version of it, or a mobile port. Either way I want to allow games to be built for mobile OS's. And at some point, multi-player.

Thursday, January 25, 2018

Wrong App

My phone is now beyond its warranty, so of course I am seeing immediate decline in its performance (*ahem* conthpirathy). My battery life was by far the most troubling. I woukd charge it up to 100% and after about fifteen minutes in the car it'd be at 80% or less.
I started watching the battery charge chart and obsessively monitor what apps were using how much. The biggest offenders were Life360 (Which I can't remove, have to keep tabs on the family you know), AIMP, GnuRoot. I started going through the options for these apps, turning off features I didn't need etc.
But my battery was still getting pounded. Of these offenders onoy one is pretty much always running - AIMP. If I wasn't playing music it was sitting queued up. I turned off the options that retrieve album art or ID3 information, but it still seemed to be sucking my battery dry.
As much as I loved AIMP it was time to say good bye. I hit the store and found a free, no ads, no internet capability mp3 player called Musicolet. The difference was immediate. My phone battery life doubled or tripled. I need more apps like Musicolet!
The right apps make all the difference.

Murder Every Day

There is generally one channel on TV in my house. It doesn't change often, and when it does, the change isn't for long. I wake up to it and go to sleep to it. I'm pretty sure there's something wrong with me. There must be.

The channel is Investigation Discovery.

So yeah, I'm watching real life murder mysteries, kidnapping cases, stalking, arson, and so much more, every day. I've learned a lot.

First never do anything nice for anyone, ever. I can't count the times a person has given room and board to someone and had them turn around and murder them. Or given someone employment and they rob them, then murder them.
Neighbors are BAD. Fear Thy Neighbor has got to be the scariest show on the ID channel. It always starts out good. Neighbors arw friends, and hang out with one another. Then an errant plant somewhere pisses a neighbor off and... murder.

Never get into a car with a guy. All men are rapists and murderers. Every one.
Never trust family. And that includes spouses. They'll poison you for life insurance, or even rent money.

In essence, people are all bad and want to murder you.

Tuesday, January 23, 2018

Better Late than Never - I suppose

After all these years of making music as a hobby, I am finally making progress as far as sound quality and overall production. The most important lesson I've learned recently is:

Not Every Track Has to be Live
I have always attempted to keep every virtual synth track 'live', avoiding bouncing or freezing tracks. But this eliminates the possibility of achieving sounds that are simply impossible to get from modulation, effects, etc. Modulating a synth, freezing it, then chopping, effecting, reversing chunks of it produces results that cannot be achieved with 'live' tracks. The discovery of subprojects in Reaper makes this technique easy and enjoyable and powerful.

Along these lines...
I've always done 'post production' by simply adjusting volumes or EQs on my tracks, and that's it. With my current song, I will do just like above. I will render the song into tracked out WAVs and load them into a post-production project. There I can clean them up all the way down to the individual points on each WAV if I wanted. At that point in production those rendered tracks should be pretty stable so ideally they won't have to be re-rendered.

We'll see how it goes.

Monday, January 22, 2018

Best Mecha Ever

I grew up in the age of Transformers (Remember Gobots lol). I remember the first Transformer I ever got (And one of the best Transformers period), Soundwave. Also that Christmas I got Ravage, Frenzy, Rumble, and Ratbat for him. I used to always have one or more of these little transformable cassettes in my pockets, everywhere I went.

I remember getting Optimus Prime. I got him after about a year of standing my Tonka trucks on end, pretending they were Optimus. I later got Starscream, an insecticon and some others. As I got older Transformers became more of a game of trading. So many traded toys went through my hands. Most beat up and incomplete. I still have most of them in a storage bin.

But Transformers weren't the pinnacle of transforming robots. Just as Transformers put Gobots to shame, there were other robots that put Transformers to shame. And these other robots were spawned from a story that puts every mecha story I've personally encountered to shame. What robots do I speak of? You've probably guessed:


I am not a hardcore Robotech/Macross nerd. I have read the first few novels and seen most of the original cartoons and some of the other, newer ones. Am I an expert in Robotech canon etc? Not even remotely. But I love the parts of the story I know, and the mecha are amazing. You just can't mess with Veritech. Cyclones are cool, the SDF-1 is crrazy. It's all just so good.

Maybe it isn't the pinnacle, there's Gundam out there, Neon Genesis etc. I'm afraid I haven't really seen much of these others - but the models I've seen are pretty dang amazing.

So my robot/mecha love continues.

All My Keyboards

There are a lot of keyboards on my phone. Most of them are there because I do unconventional things on my phone - like using VIM in GnuRoot. Because of this I need keyboards with keys such as Escape, or Tab (Although I just realized / remembered GnuRoot has an Esc special key so many of the keyboards can go away.

But before I start uninstalling I'll share with you some of the developers' keyboards I've tried so far.

Behe Keyboard
This one makes me sad. It is a free open source keyboard. It has Tab, Arrow keys, and even F1-F12 keys. But at least with T-UI, the keyboard doesn't work. When I type keys nothing happens. So for now I'll have to uninstall it.

Perfect Keyboard
This is a great keyboard. The keys are easy to hit and you can make it super minimal. It has a Tab key but no escape so I haven't used it much. I did buy it though. Now that I have the GnuRoot Esc key remembered, I'm giving it a go, in fact it is the keyboard this is being written with.

Hacker's Keyboard
This one has ALL the keys, but only when you are in the correct layout. That layout mimicks a standard desktop keyboard, but unless you are on a large keyboard, good luck hitting the keys you want.

Super Keyboard
This one has a Tab key but it looks like an interface from a 1990s video game. If that is what you are after, definitely use this one.

Sunday, January 21, 2018

Underengineering

Am I the only one? Maybe I'm not a very good programmer. But so many times, when I see code snippets or scripts or packages, I end up ditching it and writing a super simple version of it. Maybe I'm missing something but it seems like there is a lot of overengineering out there.

I look at my own code and it always seems so simplistic. It looks Duplo to everyone else's Technic. But it does what it's supposed to.

I do like minimalism even in code. It seems to me if something can be done with basic tools or minimal lines of code, that would be the way to go. Not out of laziness, but readability and maintainability. If that solution proves to be too basic, then it can be expanded. And increasing complexity - I would think - would be easy to do against minimal code.

Only make it as complex as it has to be.

That seems like a sound approach to me. Keep it light and flexible. Maybe I'm wrong. Feel free to give me an ear full if you want.  :)

What You Should Be Watching

Welcome to an installment of what you should be watching. Today's post is for not only developers but for computer (or math) nerds of all kinds. And I do mean ALL kinds. From gamers, to graphics gurus, to the OS, to computer science / theory, to history.

All of the above is covered in the first entry in this list.
Computerphile (Or Numberphile for the math-ers).
I absolutely LOVE Computerphile. I can spend hours watching their videos. They cover absolutely everything related to computers, computing, and related topics. I've already mentioned things that I've learned from Computerphile in other posts. It truly is a treasure trove!

Saturday, January 20, 2018

Fluxed and Flummoxed

I am really enjoying Fluxbox. An interesting statement for a KDE fan to make. Or not. I love the customizability of KDE and Plasma works great (Well it did until the latest update). But as I believe I've written about, I love the Black Arch theme. So I went online and found that distro's file repo. I found the Fluxbox configs.
I had never used Flux before. But I wanted the BA theme. So I installed Fluxbox. It was actually pretty easy to get the theme rolled and figure out enough of the basics to get my system as I like it. There were definitely things I had to live without, but nothing terribly painful.
I'm glad I did this... I ended up back in Plasma, but decided I should check for updates and get everything current. Plasma quit working. I couldn't get logged in etc - it just froze as soin as I clicked to login or reboot etc.
So I switched my desktop to Flux and everything was good. Until the doom I encountered installing the latest Linux Mint.
I have since gone back to Fluxbox nearly exclusively. But I tried Reaper in it the other night. I hadn't yet worked with the music production app in Flux yet. The experience was... interesting. I have to run Reaper via Wine. Flux did very strange things with my windows. At times Reaper would behave as though I set it to always on top, other times it behaved properly. It all was dependent upon the windows/dialogs I had open. At one point the Reaper window moved below all the other windows and I couldn't get to it without minimizing everything else.
I'll have to look into what window management options there are for Flux. Maybe I'm missing something.

Thursday, January 18, 2018

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:


Contortions Follow Up

In my pevious article I discussed how miserably slow the inheritance step of game compilation is in my World Weaver project. It was nearly unusable. Performing this step of compilation took > minute. When coding, compiling, testing, repeat a delay of a full minute or three is surprisingly painful.

I had similar trouble when I first wrote the game compiler. What worked there was building SQL strings, one per table. Each string is a list of UNIONS. When a certain cap is reached the SQL is executed and the string cleared. This technique really helped. So I planned to do the same for inheritance.

I was pleasantly surprised to realize I could reuse the SQL strings and execute methods I had written for compiling. I went through and retrofitted inheritance. Then I went through my example game and finished updating every possible door to use inheritance. With that much inheritance the optimization would immediately be obvious.

And man it was.

With the batch statement update the inheritance step, even with ALL the doors inherited, that step in the process now takes a second or two.

Now on to the next problem - describing a room's connectors (doors etc) last and with a break before them. Easy enough? Not at all. More on that later.

Wednesday, January 17, 2018

Sqlite Contortions

I finally bit the bullet and coded inheritance. It required a lot of database interactions. I had to retrieve numerous levels of nested elements, then insert new copies of them associated with the parent that inherited them. Many of these tasks had to be done within a loop, processing one object at a time. The result is painfully slow. Inheritance takes far more time than the rest of the game's compilation.

I may have to do contortions similar to those I did to speed up the rest of the compiling process. For that I gathered up all the SQL statements then called them all in large chunks so that there are only a few connection opens and closes.

I'm hoping I can build chunks of SQL strings for inheritance as well. I do my testing and developing on a USB stick so hopefully running on an actual harddrive will go faster as well.

On a side note, inheritance is working well. It doesn't support overriding yet, I may add that later. And sadly Commands (User input handling epements) stop processing when one is matched - at least with inherited items. I need to work this out. And would like to group connector objects at the end of each descriptive output.

Tuesday, January 16, 2018

Inherit This

I really need to add inheritance of sorts to my World Weaver game engine. My demo game has far too much redundant definitions in it. For every door I have to rewrite a bunch of events, messages, and actions - or find a previous door and copy and paste. Inheritance will make this task much easier and changes to them all can be done in one place.

Unfortunately inheritance is a difficult task given how game definitions are parsed. I go through each file, parsing and inserting into the database, so I have to wait until it is done to perform inheritance. An this task involves a ton of getting lists of items, using them to get lists of child items, inserting items into the database, associated with the inheriting element. Items like Objects can have child objects, so I have to do those recursively.

All this database activity will cause the compiling of games to take a serious hit. It's just ugly. But the end result just might be worth it. Once it is in place I may be able to optimize and improve it.

Thought Puzzles

At the Kung Fu school I run we enjoy writing our own, somewhat humorous Koans and phrases. Some of my favorites:

Student: Teacher how many years will it take me to become a Kung Fu master?
Teacher: All of them.

If you are not sore after training you weren't training hard enough.
If you ARE sore after training you did it wrong.

If you think you are doing it correctly, you are doing it wrong.
If you think you are doing it wrong, you are.

If a technique is easy, you are doing it incorrectly.
If a technique is hard, you are doing it incorrectly.

A master is always right.
No one ever becomes a master.

Monday, January 15, 2018

Telling Tales

I have been spending some time recently watching programmers and computer scientists simply talking. These people are far greater in the field than I'll ever be. I'm so glad that they are gracious enough (Or someone is willing to pay them to be gracious enough) to freely share their knowledge. I love hearing old 'war' stories.

One video was a discussion on why binary was chosen for computer processing, instead of decimal which is so much easier for people to comprehend, since we use decimal every day. It's a trade off. And back in the day power and processing was at a definite premium. The discussion brought to mind similar talks regarding programming languages. There too is a trade off. Ease of programming versus absolute optimal run speed.

Even if such discussions are way over the viewer's head they have a ton to teach. I am always intrigued by the origins of things or the logic behind them. Why end lines with ;, why did C succeed so well where other languages were not so popular, why binary, and so on. Tales told by old salts shed light on all of these questions and more.

Friday, January 12, 2018

Cabin in the Woods

Every now and then it's good to spend a decent amount of time in meatspace. This weekend I am leaving civilization behind. I am leaving electricity behind. I am leaving running water behind. I will be out in the middle of the forest in a small cabin. Cold. Quiet. Fire.
I'm pretty sure I am going to end up in a horror movie! So in proper 'found footage' fashion, I am announcing my trip. Hmm there won't be much found footage to find... I will have my phone off the whole time. So if I don't return, and you find some footage (But not much), get to work - there can never be too many found footage movies.  :)

Thursday, January 11, 2018

Old Tech on New Tech

Youtube is amazing. When you begin to uncover the hidden treasures there and, via related videos and suggestions, end up going down the rabbit hole into an entire world of information and entertainment unlike anything you can get elsewhere.

I started out looking for programming videos. Cloud computing, Java, Android development. But then I became interested in C and the inner workings of computers. That led to quantum computing and physics.

Today I ended up watching interviews with guys who've been coding since the start. They were discussing why we went with binary, why C has been such a successful language, how to code game physics in machine language. My feed has become a fountain of mind blowing videos. And so far the rabbit hole is still going deeper...

So today I was learning about old computers on new computers.

So Much Doom

It has been a surprisingly long time since I've had to rebuild my computers. Well, nevermind, it wasn't that long ago. BUT the last time was by choice and not because I broke the OS etc. I was making the switch to LinuxMint. And I still love it.

But the other night it happened. I ran the updates tool, I hadn't updated my system etc in a while. Then the next time I logged in - NOTHIMG. Frozen, black screen. I had to do a hard shutdown to get it to do anything. Well I broke something so maybe it was time to install the next version of Mint.
Fluxbox worked, but not Plasma for some reason. So...
 
Two days later I finally finessed nix into clearing out my thumbdrive and getting a disktable that was proper for booting. But in the course of my struggles I truly did break something. You know how people are like:
 
"Be careful when you use dd. Set the of= correctly."

Yeah. There goes my SSD (primary drive). But I didn't realize it right away, you see the current Ubuntu, that Mint is built on won't even run from a thumb or CD if the drive designated as 0 is messed up (Some people's bios has a floppy drive entry they had to disable). But it took me a while to realize this was why my live CD/USB boot was freezing. I ripped a bunch of DVDs and re-dd'd my USB a couple dozen times with diff Mint versions etc. Thankfully I inadvertently hit F11 and dropped into the actual nix boot messages. That's how I found the 'no filesystem on 0' error messages. Prior to that it just appeared Mint was hung then eventually said 'no drive containing file system found'.

What is interesting is Mint built on earlier versions of Ubuntu had no problem with my messed up SSD. So I ran an old version of Mint and worked more with gparted and various terminal commands. I finally got the SSD put back into a state that the BIOS liked.

I installed the latest Mint... Buuut... I couldn't log in. Plasma was still giving me grief, and this time I couldn't get in to install Fluxbox.

Finally I installed the previous Mint version and am back in business.

What a nightmare.

Monday, January 8, 2018

Digging Deeper : Computers

During my Saturday 'learning from Youtube' time I ran across the following video. It is an analyzation of the machine code that results from compiling a simple C program.

I was immediately captivated. What an excellent walk through. Of course I couldn't stop there, so I dug into Ben Eater's other videos.

That led me to his Breadboard Computer project. Oh man. I've seen the videos where he discusses how his programs will work, how they are programmed in, and a walk-through of a program running. Now I'll have to go back and watch the project from the very beginning.
 
I love how these videos walk through, demonstrate, and discuss computing at a simple enough level to fully comprehend how it works.

Ben Eater, you sir are an excellent teacher. Thanks for the videos!

Friday, January 5, 2018

Viva RSS

So I started on my goal of putting together information gathering resources. I would much rather explore informative and mind blowing content rather than mindlessly Facebook (Facehole) for far too long each day.

I decided to start with RSS feeds. They are simple and I could amass all kinds of resources into one RSS client. And most likely that client could handle other source types as well. I decided to go with gReader... for no apparent reason. It just looked the most promising of the first few search results I got back.

A couple hours later... I am hooked up.

Daily puzzles, physics papers and blogs, java, linux, kernel, VIM, watches, tech nerdery. It's all flooding in. It has been forever since I've checked out RSS feeds. It's cool to see them flourishing still. I'll expand to other feed sources etc, but until then I'm diggin gReader.

Thursday, January 4, 2018

Less Work, More Work

I don't really do resolutions for the new year. I would much rather continuously improve myself, my relationships, and my home network architecture.
My setup is Ok currently, but there are some issues and definitely areas of improvement:
Permissions
I really need to improve my permissions management. I know it's a bad idea to set everything to chmod 777, but any other permission level causes cron, or even manually copying files to fail. SyncMe also has weird issues. If I restart a backup job a few times it will keep failing, then at random, succeed. So I need to work that out.
Backup / Archival
Similar to my permissions issue, I need to improve my overall backup and archival system. I need to get all my boxes (and phone) properly cron'ing. And ensure I am backing up vs mirroring etc as I would like to.
Reinstallation
Currently rebuilding isn't terribly painful but I think I will try to make the process even more automated. I have a basic shell script for all the apt installs, but there are some aliases and a couple other shell scripts I create and those are currently done manually. My goal will be a single script, kick it off and when it's done everything is as it should be. This will be a great chance to learn more about shell commands etc.
Information Farming
I would also like to start scouring for better information. Social media is dumb so I would like to build an automated information gathering solution. Even if it is a carefully crafted RSS feed, or strictly defined Twitter feed, or any number of other sources. Then every moring I can pour a bowl of cereal and fill my belly as I fill my brain.
I'm sure there will be more but that should keep me busy for a while.

Tuesday, January 2, 2018

Why Be Smart

I'm sad, I recently had to remove a person I like from my Twitter feed. I don't understand when smart people spend copious amounts of time obsessing over things they don't believe and getting down on others for their beliefs. I would much rather spend my time learning and memorizing.

All this has me pondering intelligence and knowledge. Why do we strive to become smart? Is it for others to see? Is it a status thing? Sadly sometimes this seems to be the case. I can't speak for others but as for me I enjoy learning new things and would like to become a better, more in-demand developer. I don't learn to become better than others or to impress them or to 'defeat' them.

Anyway. My head hurts from trying to understand the math behind a dice rolling probability puzzle. My maths are not strong.

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...