Crankin’ up the radio

I’ve got to admit, friends are right in that actually sleeping from time to time is a good idea.  The last few weeks has been spent on minimal sleep levels, as usual for me. Thursday night/Friday morning, I just skipped sleeping, wasn’t tired until like 1100 Friday, and that only lasted like fifteen-twnety minutes, then caught up with me half a day later. I took a friends advice and got some rest, rather than waiting until the 29th, now I’m super charged again. Guess I’ll try and take it easy for a while, rather than focusing on how much stuff I can get done in spare time.

Of course though, my idea of taking it easy is nothing like sitting on my ass, hahaha! Going to get things shifted about, go through my back log of cleaning. I would like to transition to a more normal sleep routine, but that remains to be seen. I also need to get a few things sorted on Cassius, been refining things on the one branch for a while but haven’t had time to step back and prepare it for commit; once things are sorted and I’ve selected a branch to merge into the mainline, I’ll schedule time to sit back and do a review of things. After that I’ll probably find a safe place for storing it, as safe guard against all my computers popping a cork o/. I’m one of those backup freaks lol.

Over the years, I’ve spent enough of my life running on reserves that a little quality R&R gets me pumped up. I’m also not the kind of person who likes to be idle that much, programming at least exercises my thinking muscles a little bit. Right now I feel like I could jog twenty miles, but my feet would keep me if I did that! Actually, it’s kind of funny. When I was a little kid, inside my own head I always used to refer to my energy levels as “Normal”, “Auxiliary”, “Reserve”, and “Emergency” power. As an adult, my batteries don’t recharge so fast any more, sure as hell don’t last as long either: but consistently, the endurance level is still there lol. The real question is whether or not that’ll hold through to when I’m old, grey, and lucky if I can still piss under my own steam >_>.

The things that get me tired tend to differ from “Norms”, maybe it’s because I’m insane or that I hate having nothing to work on, dunno. Either way, time to crank up the radio, get off the PC for a bit, and get stuff done.

Crazy way of relaxing, eh?

Early yesterday morning, I got an e-mail from someone interested in a rounder with some ability at rails, and asking about my availability. Decided to sleep on it after doing a quick review of the company. I wonder what’s changed, that I haven’t been getting so many doors slammed in my face :-/. Spent most of the day focused on a branch of Cassius.

Sometime after setting my laptop on the table and firing up the desktop for a quick game break between interruptions, when checking the laptop, I noticed a pop up message saying something about an incoming call. Loading the stuff on my desktop crashed the game, but well, it was worth it lol. Seems the business that had me in for an interview wants me to show up again, and it sounds like things are going to another level :-). One condition is that I get a GED, which perfectly plays to my favour: that means I can get it sooner rather than later. Since then, I’ve mostly been trying to get stuff in order via an action plan. I figure, may as well have everything sorted and ready to roll, straighten up the car, etc and maybe hit the library a bit, hehe. I like things being organised.

The real twist of my brains interest circuits, the companies name is very similar to someone I’ve known for years. Similar enough that I’m getting finger twisted, and have to re-read the names as I type them lol.

Well ma has managed to interrupt me for over a solid hour, so I’m taking a break. So much for trying to get anything done, o/.

I’ve been experimenting with exporting functions to scripts through Cassius::Engine, one branch oriented towards heavier templating, one branch towards a C++0X only solution, and one towards a more flat method for runtime (ab)use. Now if only I had 36-hour days and some time to myself, that doesn’t involve being buggered off the computer

OK, now I an officially surprised with life. Years ago I had applied to some tech jobs and was turned down via automated emails sometime later. Fast forward to the present, and I actually hear something from one of those companies lol.

Being more than a wee bit suspicious of things coming in out of the blue. Like seriously, what’s the probability? What personal info that I have revealed, can be found trivially about me by any one doing their home work decently, so I’m not worried. The thing that bought that much level of trust out of me, was being told facts about the app’ I had dropped in (when, to where, to what), that no one but me could know: assuming that such a reputable company didn’t bungle their security, and no one was sniffing packets off our wires at the time.  It’s kind of like having a message from someone with a pre shared key that you trust, enough not to redirect to /dev/null but not enough to drop the deflector screen.

The real question is whether or not it leads to a viable job offer; I’ve no idea whether or not that one job interview will bear fruit. The insane thing, lacking a B.S. I’ve largely given up applying to tech jobs a long time ago, so recently I have focused on finding “Conventional” jobs in my area rather than things worth the effort.

Every thing that has come up in the past few weeks, all of them have been tech related!!! Sometimes I really wonder if someone up there has a sense of humour, one like mine anyway. But interviews, calls, and emails, still isn’t being hired, even if it is an improvement. Computers are one of the things that know the most about out of everything I know, computers are what I’ve spent most of the decade glued to and what I’ve been using most of my life. Wouldn’t it be bloody nice, if someone hired me to do something “Interesting” with them for a change?

  • Having an occasional link on SpiderMonkey’s docs that actually throws you to MDN, is rather tiresome.
  • GDB doesn’t always like dlopen()’ing a library that depends on (p)threads, using LD_PRELOAD fixes.
  • Reading a functions documentation over again is more useful than a debugger, especially when you’re tired.
  • Lua’s C API is really spoiling me.
  • I know better than to git commit without sleep.
  • Hmm, I wonder how long it would take this old laptop to compile V8… heh, can’t be that bad.

For now my plan is grab a quick snack, check the server list, and pass out sometime around dawn, then review the files in the morning. Sometime when I’m fresh, I need to focus on an interface between C++ and the engines loaded by Cassius. The partial SpiderMonkey and unfinished V8 support can largely wait until later.

Of course, the reason why I named the base class for embedding a language ‘Engine’ rather than sometime more conventional, is in order to have a ‘Cassius::V8Engine’ in there, haha!

*groan* today is time for the drop test—dropping things on MSVCs foot and hoping I don’t feel like drop kicking it ^_^.

My life would probably be a lot easier if I just rigged a cross compiler and gave up on using a platforms more ‘native’ compilers, i.e. Visual C++ on Windows. It’s about as much a native compiler as the platform has, and I still consider it insulting that a C compiler isn’t provided as part of a Windows install lol.

Grrr, almost 0400R. I actually had planned to get to bed early but dinner kind of threw the nights schedule for a loop :-/.

Hmm, food and SpiderMonky or food and Z’s. Problem is I’m more hungry than sleeply lol. I really wish I could get work done in my sleep, or that days were at least 36 hours long.

Post dinner notes

One value that this comment has served along with my compiler, is to teach me that default parameters on a template *function* are actually a C++0x feature, and apparently not part of C++03 as I have assumed for ages.



template <typename Num=int> Num square(Num n) { return n * n; }

int main() { return square(5); }

// g++ 4.5.1 reports:
//
//      error: default template arguments may not be used in function
//             templates without -std=c++0x or -std=gnu++0x


Somehow, I always figured if you could do it on template classes it would be legal on template functions as well. Guess that’s what I get for never reading the ISO C++ 2003 standard, and it having been a number of years since I last RTFM so to speak o/. About 95% of the times I use templates, it’s at the class level anyway, and most queries I have on C++ are easily solved by reading a header file. To be honest, while the drafts for C99 make for a very nice read, I’ve always worried that digging into the C++ standards might melt my brain or put me soundly to sleep. Frankly, C standards are helpful along side SUS, but the standards for C++, well all I can say is that I’ll be happy when 0x becomes as omnipresent as C89 capable C compilers. I’m just not sure I will live that long though :-(.

What I’ve done is implemented Engine::Call() as a sequence of template functions that use the vaguely normal method overloading semantics to cope with the arguments through Push(). Nothing else has been able to maintain the desired level of type safety. Basically if Call gets 0 arguments = use the current class state, and successive versions of Call(funcname, …) doing the obvious manipulations to generate the correct state and than run it. I would rather a recursive variadic template but life sucks and C++0x isn’t every where just yet. Having to supporting late model GCC 3.x is a real possibility for Cassius to bear fruit without thinning a few hedges.

Push() is just done as a set of virtual member functions for logistical reasons. Since each Engine instance is tagged with it’s language and implementation details (as an insurance policy), the same effect could be done through a set of template  specializations and a little static_cast magic to forward it to the correct subclass without any inheritance tricks. At the price of a more stringent contract with subclasses, that would also allow for getting rid of other virtual members in the base class. I’m not what instructions a C++ compiler is likely to generate for a static_cast from parent to child class compared to what C++ virtual methods and casting things in C land will produce, but I could really care less about the cost of using virtual Push()’s versus templated Push()’s here: Call() is the one that matters at the template level. Why virtuals are used for Push() in point of fact, is to avoid a build time dependency against the backends (to be loaded at runtime), which obviously would be a circular dependency. So templated Call(), virtual Push() works more convineantly than a purely templated driven solution.

Being sublimely lazy, rather than write out a set of similar template functions for each version of Call() that’s needed to handle these successive amounts of arguments, I just wrote a Lua script to do it for me: then shoved that into the projects build scripts and adjusted the headers to include that auto generated file as needed. One of my favourite Boost libraries actually does something similar for handling a variable number arguments for a functor type class, but I’ll be damned if I’m writing them by hand!

Lately I’ve been relying on a mixture of rake (Ruby) and premake (Lua) based build systems, so it is rather nice to be able to do such things: and not kick myself later (make, vcbuild).

I love it when someone nudges my brain back into programmer mode 🙂

Spent yesterday trying to get back into the swing of things, first time I’ve actually logged on comms in a few days lol.

Last night I was watching The Others and Surrogates. The others might make some people feel creeped out but I only found its plot a bit overly clichéd. If the ending isn’t obvious by first leg of the  movie, it is by the half way point o/. It does pose an interessting thought though. What if “Disturbances” that people feel are ghosts and hauntings and all that sort of stuff, is really just a conflict of matter? Where the living and the dead have crossed paths but nether know one is dead, or perhaps it’s not death but something whacko in the space time continuum. Who knows, I still maintain that if ghosts exist, you’re more likely to die in the bath tub than experience something like Poltergeist. I don’t rule out the possibilities of ghosts, I just don’t expect to ever see one ^_^.

The surrogates on the other hand, is an interesting sci fi flick. Basically people no longer “Go out” but instead control an avatar via remote. It follows a detectives hunt for a weapon that is able to kill the human operators behind their “Surrogates”.  While not exactly a spectacular movie, it explores an interesting concept, well interesting in light of the modern Internet. Being able to do anything without risk of life and limb, is an interesting idea, but I would argue that’s part of what makes life worth living. After all, if you’re going to go sky diving , what good is it, if you can’t *really* experience it? It’s only a facsimile of the real thing. For something like a fire fighter, IMHO it would be perfect but the ideal of living every day life through a surrogate, just, doesn’t feel right to me.