RSS

Category Archives: State of the Moment

A Studio, A Temple

I have a beautiful place carved out of the emptiness that was before. Two desks, one metal, the other dark cherry, formed into an “L”, my desktop on one and my Raspberry Pis, electronics, and embedded systems on the other. A space for my coffee, two surge protectors, an X-Box controller for the times when a mouse doesn’t do the job. A top-notch soldering pen, poised on the glass desk between my two monitors, unplugged and with plenty of space for safety of course.

This place used to be a living room, which we did little living in. I’ve adopted it, and adapted it, into a workspace. The thing about a studio is that it is, by definition, a temple to one’s mind. Nothing goes here that I wouldn’t have bouncing around in my head, whilst I’m trying to actually get something done. This place is my mind space.

I have a whiteboard on the wall now; four feet by three feet, with a complete collection of four-color markers (two black, one each in red, green, and blue) and an eraser, with a cleaning spray. I do use it. I’ve been mapping my thoughts to it for some time. It’s good when a paper pad (which every engineer should, still, always have) just isn’t enough. It doesn’t have the advantage of graph paper, but some occasions require something more than a note. Right now, I’m weighing the advantages and disadvantages between using LWJGL or JavaFX for a programming project. I would not have found it to be as easy without the marker board.

The floor bothers me. It’s an awful blue carpet, one which may never have been that attractive and hasn’t gotten any better with age. I’m hoping to replace it with some stone tile, something in a nice tan color. Not just linoleum, nothing too cheap. That would be reckless and self-sabotaging; I can wait to afford it. A nice wheat color would blend well with the furniture. The walls are a subtle greenish white, hard to tell in the lamplight late in the evening. I might paint them, it wouldn’t take long. Something bright, nothing that would contrast with the flags and the artwork hanging on them, or the statues and idols poised throughout the shelves.

When I enter this space, I become someone new; someone I need to be. I have OpenGL/CL/AL projects going on the desktop, bioelectrics going on the steel desk, and little room for doubt or distraction. My office used to be a plastic desk in the kitchen, where I would pound out every ounce of inspiration my mind had until I ran out of strength. I’m stronger in here. This place is, indeed, a sacred one to me.

 
Leave a comment

Posted by on January 26, 2016 in Innovation, State of the Moment

 

Tags: , , , , , ,

Never Stop Running

Never Stop Running

You know that burning feeling you get, in the center of your chest, your very core, when you just need to get something magnificent done? Not just a frequent thing like doing laundry, or cleaning the house, but something life vindicating? Because I’ve got that lately. I’ve spent the past month taking care of all of the heat that the part-time is getting, purely for the sake of this; January should be just boring enough to finish everything off.

I say I’m a systems engineer, but generally only when I want to change subjects. The long answer is that I build machines that build universes. I have a degree that redefined what it means to be “hard-earned”; in the fields of Physics and Neuroscience. I’ve been programming since I was a tyke. I’ve been writing since I was ten years old. All of this ultimately accumulates toward the same end goal. The whole point of building simulators is to answer “what if”. Stories, games, the entertainment of the future; it’s all in systems and simulation. Everything is and always has been about that.

Back in the 1960s and 70s, before the personal computer was standing up and walking on two feet, aerospace companies like Boeing used to build tiny scale models of their aircraft before the actual prototype was ever constructed. The idea was, given that a specific part goes out and needs to be replaced on such-and-such an aeroplane, what are we going to have to pull way to get to it? What would be the cost model? If half of the aeroplane had to be pulled apart to get to a specific gearbox, then the lifetime of that gearbox might be the lifetime of the aeroplane. The design might be too expensive to fix.

Were these micro-models expensive? Absolutely. However, they were much cheaper than figuring this out only after the aircraft was built. They were worth every penny, and every replacement model was worth every penny in turn. I look at this chop-shop job, and I remind myself that. It’s my funding and my micro-model.

Yesterday, I finished off the better part of a detailed three dimensional collision detection system, with an outline to covering four dimensions if the need ever arises. It’s as modular and expandable as it can get. It was harder than it sounded, it was twice as much fun, and it’s completely self-validating. When I’m done with this, all I’ll need to worry about is penning, sculpting, composing, and storyboarding.

That, my friends, is the best Christmas present ever. Happy Solstice!

[Note: image is a rambled selfie with tonight’s desert, an orange chocolate mousse with raspberries and freshly whipped cream]

 
Leave a comment

Posted by on December 26, 2015 in State of the Moment, Uncategorized

 

Tags: , , , , , ,

Nothing’s Scarier than Imminent Success.

It’s been an interesting few weeks, but then, it’s also been an interesting few months. On the other hand, I could probably continue that line of thought, until the time span was so broad there was nothing left to hold it relative to.

The last few years have been very rough, but also fortuitous. I actually got my degree in Physics and Neuroscience, with the idea that I would someday work in neuroprosthetics. (Note to misguided Grammar Nazis: the subjects are capitalized as proper nouns when they are also unique department names. You’re welcome.) Unfortunately I also graduated in 2006, the beginning of a very dark time, and have yet to hold a physics job of any kind. The closest I’ve gotten to neuroscience was a brief stint as a substitute teacher for some elementary school special needs classes.

I basically jumped, for lack of any option, right back into programming when I got out. This isn’t to say that I haven’t had quite a few jobs that were once thought to be meant for teenagers along the way. At least five pharmacies, a hardware store, a few groceries. I am in the woeful state of having a mother who has a complete detachment from the workforce that I am confronted with; a father who really helps but has limited understanding of how one gets published today, and the limitations placed on the amount of money that I can actually make; and a brother who is nought but treacherous.

To give you an idea of what I mean by “treacherous”, I worked for him for eight months after he begged me for help on a cloud computing company that he wanted to put together, deferring applying to grad school. My sister and mother had already taken the hint and ceased contact with him, I naïvely thought that perhaps I could reunite my family through further contact and arbitration. He provided a long list of people who were supposedly behind him on it. In eight months, I could get direct contact with none of those people. Additionally, I discovered that his software patent was entirely fabricated. At the end of those eight months, he “terminated” me, I never saw a dime of the promised pay.

I quietly took note of the extent of his evil, hung up the phone, and disowned him. In the mean time, I took the GREs and got within the uncertainty limit of a perfect score on the math section. I applied to MIT, and had everything going for me, until I discovered that during that time, during my work for this play-house company, along with a not-yet-mentioned struggle with neuropathy from a medication I was on, my debt with my student loans reached a critical point. I had defaulted. My school would no longer provide transcripts. The days got even darker.

Every darkness does have its dawn, if you’re willing to work and wait long enough. I hooked up with the wonderful Sparo Vigil, here in New Mexico, and grabbed a part time job working for Home Depot. It wasn’t a high point of my life, but it made me enough to get along, and even pay back a small part of my student loans. I continued to program, working for myself, and established a sequence of frameworks to make the job easier. My cumulative experience in education and software led me to game development, and my training in the scientific method showed me a path to creating an ideal environment, and sequence of products built in that environment, with a legitimate positive change brought about in the world.

This framework is together; it works beautifully. Today, I’m going to use it for the first time, and create a finished (if not market-worthy) product. It will lift me out of the bog that I am in. I have to admit, that’s a little frightening.

If things had continued to be low, and dirty, and hard, then at least I would have a response for it. I would have a plan for how to move forward, to keep my head above the water. My ideals have been set much higher than that, though. I left the Home Depot job some time ago, maybe a year; I have Sparo to thank for keeping me afloat while I worked on the framework and my writing. Things are about to be much better, and I’m not sure how to take that.

It’s not that every little detail is finished, it’s that I’m at version 1.0. I have a system by which I can rapidly go from idea to product, possibly in an afternoon (though early on, I imagine the exception will be the rule). The rest is going to be an extensive amount of linear algebra and differential geometry, digital signal processing techniques and their implementation, modernizing of my design patterns, and writing a bridge to the Steamworks API. After that, publishing, and marketing. Later on, probably expansion of the framework interface into other languages, like Python, Ruby, and Scala. I’m looking forward to all of these things.

I’m looking forward.

I had almost forgotten how thrilling that can be.

 
Leave a comment

Posted by on March 30, 2015 in State of the Moment

 

Tags: , , ,

So What the Hell Happened!?

Jesus Christ I need to get back to this blog.

Okay, long, in-depth story which will hopefully be funnier to read than it was to live through. Happy ending, I promise.

My wonderful lover has opted to buy us both new computers; starting with barebones kits. That’s not as a big a deal to a physicist, and possibly also witch apparently. I just upgraded from something that ran well because I oiled it and cleaned it every single day (metaphorically) to something that would probably run well if I poured orange juice on it. However, first there was its construction.

Usually, I deal with latent static charge by simply contacting the metal chassis and grounding myself. In this case, given the exposure time, it seemed wise to go ahead and get one of the anti-static grounding straps for my wrist.

As a man who has built several complete devices transistor by transistor, including my share of audio equipment, this didn’t feel like it would be a big deal. The only issue with building a computer is that you have to subject yourself to the whims of the hardware designers, and operating system designers, when those whims may have nothing to do with what you’re accustomed to and, occasionally, don’t even make any sense. It went more like this. I’ll be brief.

1. Find metal hex nuts for case, install them. Line up motherboard, attach screws. Notice that you didn’t line it up right, and it isn’t grounded. Remove screws. Remove and move hex nuts. Line up properly. Attach screws. Notice that you once again have it out of alignment, detach screws, board, and nuts. Line everything up, double check each of the available screw holes. Screw it in, one by one. Properly attach motherboard, except for the fact that you were supposed to do the backplate first. Ignore freaking backplate.

2. Line up the processor properly, check. Double check that you’ve lined up the processor properly, check. Ease processor into socket. Notice that it went in a lot easier than last time, and pray to the computer building gods (who would that be? Brigid?) that you didn’t just break anything. Seal processor down with lever. Struggle to attach cooling unit. Struggle more. Attach argumentative cooling unit.

2 ½. Look around, try and find the fan plug. Not find the fan plug. Find something that looks like it might do the job, even though it has an extra pin. Connect. Double check that that actually makes any sense. Does make sense, great. Pop in memory. Attach faceplate cables. Completely overlook the faceplate fan.

3. Attach power supply to case. Attach power cables to motherboard, one by one. Wrap a motherload of electrical tape around the non-modular power supply’s dangling cables. Keep graphics card on standby. Spend an hour trying to figure out where the SSD is even supposed to go in this tower case. Finally find out, on account of girlfriend’s keen eye, install it. Notice that you just installed it backwards. Slide it out, install it again. Pop SATA 3 cables on.

~4. Plug in keyboard, mouse, monitor, turn it on, get to BIOS. Pat self on back. Select “optimize”, because what harm could that do? (Hint: Quite a bit, as it turns out.) On a whim, select option to search for hidden processor cores. Save changes. Restart. Notice that nothing is happening, save for the blue LED lamp, and you can’t even get to BIOS.

4. Punch self in kidney.

Well, to be fair, I slid my Hitachi 2TB from my old computer in at that point too. I knew I could boot. This mistake was actually made after I went back into BIOS settings, just to ensure that everything was in order, without doing nearly enough research.

3 again. Take deep, deep breath. Count to ten. Look up BIOS, try and find reset jumper; fail. With girlfriend’s assistance, because you know they don’t make them to come out easy, remove all power cables and pop the CMOS battery out. Push power button for thirty full seconds, drain all capacitors completely. Pop battery back in. (This is what you do when you can’t even find the jumper; it’s just as effective. Just don’t do it without good cause.) Pray to Morrigan, Celtic goddess of battle and change, for wisdom. Turn computer on, notice that it’s nice and alive again.

4. Never, ever, ever do that again.

At this point I could boot to my 2 TB easily enough. Unfortunately, while Ubuntu immediately noticed all the awesome new hardware, thanked me for it in its own Unixy way, and went to town like a child at a ball pit; Windows did something quite different. Windows is keyed not to users, but to motherboards. When it noticed that it was on the wrong motherboard, it immediately assumed that it was pirated, and rather than presenting me with some eloquent message about how I’m a pirate asshole (which I am not) and refusing to run, it flashed a blue screen covered in gibberish UTF-8,  and restarted, before I ever got to the desktop.

As it turns out, this OEM software was licensed entirely to my last machine. I did not realize that, but I was thoroughly pissed off at the underhandedness of a deal like that. In any case, whilst there may be a way to confuse Windows into thinking it’s on the same machine; I am not a pirate, and I needed to get a non-preinstalled copy of Windows 7. That cost us about a third of what the machines did.

(For those who are curious, I did find the secondary fan socket and plug in the faceplate fan later.)

Once it arrived, I plugged it onto the 120 GB SATA 3 SSD. It took quite a while to install, I unplugged every other drive first just to be safe, and afterward, I could successfully boot to WIndows 7. (I refuse to buy Windows 8.) The problem was, now I couldn’t get back over to Linux, where all of my work was. GRUB would not load. It hadn’t changed, but the system wouldn’t see it.

Next up, I tried boot-repair, but it kept telling me, even when running on its own LiveUSB, that I was running a program like Synaptic in the background. That could not make less sense. So, I cut out an even slice at the end of the SSD, of about 17 GB, and popped a new root partition of Ubuntu on there. The install worked flawlessly; but the machine still couldn’t see it.

So, I spent quite a while bouncing from forum to forum, trying to figure out why my BIOS was not detecting GRUB. I reinstalled it on the HDD to be safe, and removed my SSD partition. (Ubuntu installs in maybe twenty minutes anyway.) Eventually, I discovered that the culprit might be this Infinity 2.2 TB feature, a feature that allows you to boot from drives that are larger than 2.2 TB. That’s a progressive feature, but I don’t actually own one of those and I’m not likely to pick a 4 TB up any time soon. When I disabled it, GRUB popped up.

However, GRUB couldn’t find Windows. Minor loss as an engineer, but I will ultimately need it for unit-testing and I have a lot of games written exclusively for Windows that I would like to play. I found myself at an impasse; GRUB didn’t see Windows, and Infinity only saw Windows. I would still like it if I could find a way to get GRUB to recognize Windows; but I messed with the partition flags a bit when I was trying to get SSD GRUB to boot and I imagine that the problem might be there.

So, at this point, on the occasion that I do want Windows, I simply hit F11 on boot, select 2.2 TB Infinity as my boot device, punch a key to select a disk, and pick the SSD. The funny thing is, even after that, and even with Windows on the SATA 3 SSD, Ubuntu still boots faster; off of a SATA 2, mind you.

So, I’m back in business. I haven’t forgotten about the builder tutorial at all, but I have been lightly sidetracked with another project involving easing the interface between Java and GLSL. (The builder so far has, in fact, been quite useful for that.) I’ve also noticed a number of chunks in my builder tutorial that could be optimized by migrating them fully to NIO/NIO-2; as there aren’t any old java.io packages holding me back. (NIO is blisteringly faster.)

Add constructing the other machine afterward and you can seen why I’ve been away. I have suspended nothing on this blog, and it’s good to be back to it. We’re just about to get to the fun part in the builder tutorial, and I’m looking forward to it. (Especially on this beast.)

 
Leave a comment

Posted by on February 23, 2015 in Programming, State of the Moment

 

Tags: , , , , , , , , ,

Warrant

I’ve been thinking a lot lately. I’ve also been a little down with a notorious stomach bug, which hasn’t really put me in the mood to write. Vomiting and heartburn does not put one in a pensive mood, and cognitive fatigue can be so very real. Thankfully, I’m over it.

All the same, the one topic that did keep coming to mind is the nature of my work, and why I do it. I can dispel a few illusions right here; I have been published but I don’t write for the sake of getting published; I program but not for the sake of making a lot of money off of my programming, either. (Not that there isn’t a strong chance of that happening.)

I used to actually believe that the right to call oneself a writer came from publication. Later on, I distilled that down to a writer simply being one who writes; but that isn’t strictly true either. It’s more like being one who is fully capable of writing, and for one reason or another, has the impulse to do it from time to time. For “programmer”, I can say the same. In fact, I can say it for virtually any adjective expressing a craft.

It brought to mind the first time that I ever wrote. I was eight or nine, not in such a good situation, running out of books, and wanting to escape. So, on an impulse, I tried to write a novel. It was much more difficult than my ten-year-old brain had imagined that it would be, and I only got a few pages down before stopping. (I had, for the first time in my life, encountered the phenomenon known as “writer’s block”.) It wasn’t about publication back then, either, though. I think part of the story may have been written in crayon.

Don’t get me wrong, I do intend to publish my entire quartet eventually. My most likely route will be through Amazon’s self-publishing services, depending on how they’re standing at the time. The reality remains that few writers, regardless of the quality of their work, make an enormous amount early on. There are a few people who seem to believe that after publication, due to the apparent quality of my work, I will instantly rise to the status of a one-percenter. (Obviously they don’t know me that well.) It’s undue pressure, and rather distasteful.

It doesn’t help to try and explain to them that the software project I’ve got running in the background is like trying to build a jetliner all by myself; especially given that most of the people who I meet throughout my day have never written a line of Python in their lives. It’s outside of their realm; like trying to describe music to someone with little or no musical taste, or a painting to someone art-blind. It’s also inconvenient.

The thing that all of this comes back to is the notion of the future; of imagining things happening that may or may not even happen at all, which I may or may not ever have any say in anyway. I’ve been guilty of this before. Such talents of imagination are better spent on fictional characters than my own life; at least in that instance I have some control. Thinking about the future is the origin of two things; hope, and fear. When you fall on fear more than hope, it’s time to put it away for a while.

The truth is, I am right where I want to be right now. I live in a beautiful town, I have a wonderful girlfriend, I have an excellent set of tools right in front of me. I have peace of mind. I have a fully equipped kitchen, and a set of friends who truly care about me. I have an awesome hair cut and some sleek jewelry. I have a fucking Keurig, too, which is like a having robot barista in my kitchen. Why does this treasure need to exist in the future? Am I worried it will go somewhere?

There will always be a worse day to come. When the bad day comes, there will be a better one following it. It’s the principle of the yin and the yang. How I look at it is the only choice I get, and it’s as arbitrary as anything else, except that I prefer to think of the permanence of the good days. The last bad day might be said to be the day that I die, and when it happens, I will be able to look back on my life, and say that I have truly lived it to the fullest. I have no say in these things, I need no say in them. I’m cool with it.

The whole idea with creative work is to see to it that it feels more like a game than a job anyway. For me, programming, and writing (including on the blog) usually feel very much like games. They keep my mind active and involved and growing. When they start to feel like a task, it’s an impediment worthy of the same dread as writer’s block.

I haven’t experienced writer’s block in a very, very long time. I figured it out, I learned the signs of its approach, and I learned how to undo it. (In fact, that might make a good non-fiction book right there.) There isn’t any reason why I can’t overcome this new problem as well. Like curing a disease, it begins with understanding it.

I declare here and now that these books will not be written for the sake of publication; they will be written for an audience. They will be written to be good and correct stories, with interesting characters and ethical storytelling. “Good enough” is not good enough for me when it comes to my writing. The same can be said for my code.

Jesus, it can definitely be said for the code.

My real work will always be back here. I am at peace here, it is my circle and my temple. And every day, when I’m finished, I have pushed my mountain one further step; when I’m done, I will have delivered a mountain. That is my warrant.

 
Leave a comment

Posted by on December 15, 2014 in Meta-Media, State of the Moment

 

Tags: , , , , , , , , , , , , , , , ,

So What in Hell am I Doing???

Okay, it’s been like a week since the last chunk in Software Language Engineering. It’s going to be at least a week before the next update, too, which will—spoiler alert—also involve altering some of the last edition for the sake of clarity and code ethics.

So why have I been taking so freakin’ long with it?

A bunch of things, which I will have the dignity to specifically name, came up. One, writing. I’m still a little slow at it at the moment, but I had a bunch of great ideas that had to go in the books. While I’m typically hesitant to stop with a Java project for any length of time, lest I forget what I was doing, the same rule tragically applies to my other love, literature.

On top of that, I have begun a brief project in game development which has not been chronicled for the blog. It is, on the bright side, finished already. (It is a lot easier than writing a compiler, let alone a compiler/interpreter framework.) It might eventually make it into another tutorial, after I’m finished with my new-and-improved compiler tutorial, as this could easily extend into applying GLSL through Java.

Anybody who has ever been a solopreneur or even a hobbyist programmer knows that this is already enough to set me off balance, and I wish that was it, but it unfortunately is not. Not a million distractions, just a few. I’ve also done a lot of cooking lately for my girlfriend’s birthday, inclusive of a pistachio-orange chiffon birthday cake, tiramisu (as of tonight), and other fancied things such as a Cajun-Indian fusion-food split pea soup. One of these days, I might put those up on the blog, too; but they aren’t sufficiently chronicled and scripted into recipes. I’ve made a few interesting friends on Google+, which have led me to a sequence of (cool headed) debates, discussions, and for some, half-hour-long lectures on such things as the Michelson-Morley experiment and protolanguages & linguistic anthropology. (Mostly history related things.)

The worst part is, I really have been enjoying myself. I do have to apologize, as I cannot, with a straight face, say that the delay has been due to an inconvenience; only a set of distractions. At the same time, I can promise you this: the next lecture will introduce a method of circumventing common applications of reflection using a combination of maps and enumerations; which are very handy when you are dealing with a static set of classes which cannot be expected to change. I will have a fully functioning AST parser by my next chapter, concluding what I consider to be “part one” of the tutorial. Part two will be about taking that syntax tree and transforming it into another language, be it another protocol or a machine code. (I will not be discussing the bulk of machine commands for an amd64 processor, probably ever; but there’s a chance I’ll talk about the structure of portable executables. That’s .exe files—pronounced “eksies”. I might touch on a few other binaries, too.) I can also promise you that I’m going to enjoy bringing it to you.

It might be another day or two before I can dive into the code again, full-force; but I’ll have it together soon. There is a point in one’s knowledge of a subject, at which it can only be furthered through sharing that knowledge with others. I’ve been there for a while in this area.

Thanks for all of your patience!

—Mick

 
Leave a comment

Posted by on December 2, 2014 in State of the Moment

 

Tags: , , , , , ,

The Inevitable Fall of Science Journalism

Know what? I’m saying this as a former science journalist. Science journalism, for the public, needs to take a bow and get off the stage. It can’t be done right. Here’s why.

Point one. The majority of science papers are not just sophisticated, they really are boring. Extremely boring. It takes a long sequence of studies and a gauntlet of peer review to prove anything interesting.

Point two. They have a language of their own, not simply limited to the nature of the paper, but to the field. A physicist with no training in biology cannot read a biology paper. This is what field journals are for. It takes years to develop a proficiency in a field, often not just in reading papers but in practicing the subject.

Point three. Journalism is about appealing to a mass audience, and there’s nothing innately wrong with that. However, when a science writer is straining to come up with a front-page story, and happens to notice a few buzz words he can keep on hand whilst whittling the report down to a sixth-grade level (sometimes seventh or eighth for some papers), he creates a report that provides undue emphasis on on either minor, or largely inaccurate, findings. Thus, urban legends are born, and they steal time from real issues that these media outlets are more than prepared enough to cover.

This leads to other awful things like the fabled “evil liberal science conspiracy”, where the inability of an average and untrained man to understand the terminology used in a scientific field is misconstrued as scientists lying to them.

You know what? You don’t even need college anymore. There are numerous MOOCs (Massively Open Online Courses) on the internet, from accredited universities, available for free to anyone who will take them. If you want to keep up, great! I applaud you! Join one of those forums, watch the videos, read the material, do the labs and the homework, get the language. EdX.org and MIT’s Open Courseware are two perfect places to start, so seriously, go for it. But don’t trust the “science” section in your local paper.

You can only “dumb it down” so much before it becomes a sensationalist lie. Click counts or no.

 
Leave a comment

Posted by on August 6, 2014 in State of the Moment

 

Tags: , , , , , , , , , , , , , , , , , , , , , , , ,