Thursday, September 30, 2010
Saturday, September 25, 2010
Jimmy Gibs, you're a zombie!?
Finally saw the zombie Jimmy Gibbs at the shopping mall tonight. After whacking it across the head with a crow bar outside the Dead Center stage 5 safe room, I couldn't help but think how much it reminded me of Bill Murray in Zombieland!
I've read about the zombie of Jimmy Gibbs haunting the last part of Dead Center, assumably hanging around near his stock car before the survivors have to gas it up and punch through a zombie horde with it. But I never expected to see it, let along hiding in the back corner, coming out of the safe room lol. Unlike the common infected (zombies) that repeatedly spawn on the map, he just wears his white racing suit.
Guess he shouldn't have been busy signing autographs when the zombie apocalypse started, or something like that lol.
I've read about the zombie of Jimmy Gibbs haunting the last part of Dead Center, assumably hanging around near his stock car before the survivors have to gas it up and punch through a zombie horde with it. But I never expected to see it, let along hiding in the back corner, coming out of the safe room lol. Unlike the common infected (zombies) that repeatedly spawn on the map, he just wears his white racing suit.
Guess he shouldn't have been busy signing autographs when the zombie apocalypse started, or something like that lol.
Thursday, September 23, 2010
Perhaps, how not to do Open Source Software!
In grepping my feeds, I noticed something interesting about Diaspora finally hitting some recent publicity since my last check in. For those not in the know, Diaspora is meant to be a replacement for Facebook. The idea is good, basically take everything you could bitch about privacy issues on FB, fix it and roll it out with a distributed system that gives you as much control as possible over your stuff. I agree with Mark Zuckerberg (the FB guy) that Diaspora is a cool idea, really it is because of the decentralisation.
From what I've been reading about their first code drop however, I must say that it does not seem to be off to a very good start. A system that, to my knowledge touts privacy and security (compared to Facebook) as one of it's strong points, obviously should not premier with more leaky holes than a Windows 98 demonstration. As much as I would like to crack a joke at that old relic, I can't help but think how well Bill Gates took that incident in public. Old farts and fellow history lovers might see the inner-humour in that comparison. (Yes I used '98.)
Being able to get a lot more eyes on target and the freedom in which fixes may flow, is one virtue of open source development, especially if you have enough people with a vested "Interest" in the projects outcome. There are many people who would like to see something like Diaspora succeed, and among them surely, more than a couple people willing to contribute aid towards that end. In a closed source environment, problems like that found in Diaspora would have only been findable by playing around with the release, and consequentially only fixed by the original developers a long time after attacks went wild. Like wise investors would be a different sort. Yes, even power users do glance at how their software works, let along crackers. Of those who really are looking closely, most are probably the dregs of the Internet or paid for the job, and either way it would be bad to bank business on the kindness of others. To my knowledge the only profit in finding exploits, is what you can slurp out of saps before it gets patched.
In the first article I checked out, some of the (now fixed) defects highlighted from Disporas code base were just blaringly, "WHAT THE FUCK WERE YOU THINKING!?" kind of problems. In the least, several of them are on my heads internal list of "No, No" to check before wrapping up. It makes me think the masterminds behind implementing the thing, were woefully unprepared for the task: web development is no easy task—and it is best if you take an anal approach to security early on, in my honest opinion.
The thing that irks me however, is who should be fixing those kind of things? Most of what I've seen highlighted should have been fixed before the code even left the developers workstation, if you go by my coding ethic. That gives my mind a moment to think about student-programmers, but this isn't a rant; yet. Any way you slice it however, it is no the whole wide world of Open Sources job to be fixing everybody else's code! Before you put your name on it, geeze, make sure it smells like a roll before you get rolled. I don't mean to say anything against the developers... but this is looking like the start of an epic failure. Sadly.
From what I've been reading about their first code drop however, I must say that it does not seem to be off to a very good start. A system that, to my knowledge touts privacy and security (compared to Facebook) as one of it's strong points, obviously should not premier with more leaky holes than a Windows 98 demonstration. As much as I would like to crack a joke at that old relic, I can't help but think how well Bill Gates took that incident in public. Old farts and fellow history lovers might see the inner-humour in that comparison. (Yes I used '98.)
Being able to get a lot more eyes on target and the freedom in which fixes may flow, is one virtue of open source development, especially if you have enough people with a vested "Interest" in the projects outcome. There are many people who would like to see something like Diaspora succeed, and among them surely, more than a couple people willing to contribute aid towards that end. In a closed source environment, problems like that found in Diaspora would have only been findable by playing around with the release, and consequentially only fixed by the original developers a long time after attacks went wild. Like wise investors would be a different sort. Yes, even power users do glance at how their software works, let along crackers. Of those who really are looking closely, most are probably the dregs of the Internet or paid for the job, and either way it would be bad to bank business on the kindness of others. To my knowledge the only profit in finding exploits, is what you can slurp out of saps before it gets patched.
In the first article I checked out, some of the (now fixed) defects highlighted from Disporas code base were just blaringly, "WHAT THE FUCK WERE YOU THINKING!?" kind of problems. In the least, several of them are on my heads internal list of "No, No" to check before wrapping up. It makes me think the masterminds behind implementing the thing, were woefully unprepared for the task: web development is no easy task—and it is best if you take an anal approach to security early on, in my honest opinion.
The thing that irks me however, is who should be fixing those kind of things? Most of what I've seen highlighted should have been fixed before the code even left the developers workstation, if you go by my coding ethic. That gives my mind a moment to think about student-programmers, but this isn't a rant; yet. Any way you slice it however, it is no the whole wide world of Open Sources job to be fixing everybody else's code! Before you put your name on it, geeze, make sure it smells like a roll before you get rolled. I don't mean to say anything against the developers... but this is looking like the start of an epic failure. Sadly.
A reminder of why I don't miss Ruby
About two minutes if thumbing around the official documentation for Ruby's standard library, I quickly realised it would be faster to Google how to use the module for MD5/SHA* stuff than read the official stuff:
def encrypt_password
# This is just a place holder implementation for now
require 'digest'
self.password = Digest::SHA512.hexdigest(password)
end
Monday, September 20, 2010
I've been reading a rather worrisome article, talking about a proposal for an Internet treaty. Can't say the same for my fellow netizens, but that is a damn scary idea! Politics and the control of the 'net, should have no association IMHO. One might be able to argue that politics is an essential part of every aspect of our existence, whether we accept it or not, while I think it's more so a crock.
The older I get, the more the good things fade away into the history books.
The older I get, the more the good things fade away into the history books.
Today I was woken up bright and early, to deal with the not so unusual affair that my mothers computer isn't working correctly 8=). Of course, never ask a luser for details, you will only get an answer that leads to twenty plus possibilities depending on the missing context information \o/.
In this case, the one useful bit of information: that doesn't have to do with my mother's inability to read error messages, was that there was a power bleep eariler this morning. Something that I have noticed about the equipment here, if the power is out for minutes or hours, it usually retains it's settings. Ditto for the occasional power cycle. If the power however, goes out briefly and then quickly back on, the fuckers tend to reset to "Factory defaults". In this particular case both the router and modem did that. Normally that's not so bad, since the *********** modem our ISP issued just requires an old copy of IE to get to the setup page. In abusing it through both the last bit of battery power on my laptop, and carting ma's computer down here, I found the relevant portion of the P.O.S.ASP pages were locked out, even when you have the magic key \o/. I.e. the only way to get their fucking modem working with our rat fucking router, courtesy of their changes: was to call and deal with a voice recognition program and get the bloody thing reset (so much the damn reset button working) and keyed in again. All of this, I did manually ages ago when we changed to this ISP. Something about being locked out of crap that was paid for ten times over, because other people are to fucking numb to know what the fuck they're doing, I personally find insulting. Especially when if you consider how little security checks the machine had on "Doing it". Can anyone say D.O.S. with a dirty mind?
On the upside, I managed to calm down for a bit and got to spend time playing around with several API docs, as well as finally setting up F#. I'm interested to see how well that works, hehe ;). I've also gotten in some COD6 time, mostly Free For All mode. Modern Warfare 2 in Team Death Match has about as much to do with modern warfare, as Free For All has to do with a bunch of trainees at BUD/S doing Log PT. For those that don't comprehend, unless you're the Terminator, one man can't toat one of those huge ass logs, and if you try pretending war is like COD6, your ass will be grass fast in the real world, and it might just be blown off by your squad lol.
For the most part, I gave up on many adversarial games some years back. In 90% of games, even in "Team" modes, the only benefit is only part of the server is out for your blood. I only care about structured team games, the kind that have some basis in being serious. In a reasonable game, you'll either get maps that reward skilled tacticians (Delta Force games used to be great for scout sniping for example) or make it possible for team games to actually become team games, when enough like minded folk are present. BF2 and even COD:UO being examples.
For the most part, when I want an adversarial game, I usually go for Quake Live FFA or Urban Terror TDM/FFA. The former is a frag fest like four times faster than Modern Warfare 2 and the former only about twice as fast a pace, but has the advantage that sniping is still practical once you go into TDM. COD6 plays almost the same in TDM as FFA, except you have to discriminate your targets first.
In this case, the one useful bit of information: that doesn't have to do with my mother's inability to read error messages, was that there was a power bleep eariler this morning. Something that I have noticed about the equipment here, if the power is out for minutes or hours, it usually retains it's settings. Ditto for the occasional power cycle. If the power however, goes out briefly and then quickly back on, the fuckers tend to reset to "Factory defaults". In this particular case both the router and modem did that. Normally that's not so bad, since the *********** modem our ISP issued just requires an old copy of IE to get to the setup page. In abusing it through both the last bit of battery power on my laptop, and carting ma's computer down here, I found the relevant portion of the P.O.S.ASP pages were locked out, even when you have the magic key \o/. I.e. the only way to get their fucking modem working with our rat fucking router, courtesy of their changes: was to call and deal with a voice recognition program and get the bloody thing reset (so much the damn reset button working) and keyed in again. All of this, I did manually ages ago when we changed to this ISP. Something about being locked out of crap that was paid for ten times over, because other people are to fucking numb to know what the fuck they're doing, I personally find insulting. Especially when if you consider how little security checks the machine had on "Doing it". Can anyone say D.O.S. with a dirty mind?
On the upside, I managed to calm down for a bit and got to spend time playing around with several API docs, as well as finally setting up F#. I'm interested to see how well that works, hehe ;). I've also gotten in some COD6 time, mostly Free For All mode. Modern Warfare 2 in Team Death Match has about as much to do with modern warfare, as Free For All has to do with a bunch of trainees at BUD/S doing Log PT. For those that don't comprehend, unless you're the Terminator, one man can't toat one of those huge ass logs, and if you try pretending war is like COD6, your ass will be grass fast in the real world, and it might just be blown off by your squad lol.
For the most part, I gave up on many adversarial games some years back. In 90% of games, even in "Team" modes, the only benefit is only part of the server is out for your blood. I only care about structured team games, the kind that have some basis in being serious. In a reasonable game, you'll either get maps that reward skilled tacticians (Delta Force games used to be great for scout sniping for example) or make it possible for team games to actually become team games, when enough like minded folk are present. BF2 and even COD:UO being examples.
For the most part, when I want an adversarial game, I usually go for Quake Live FFA or Urban Terror TDM/FFA. The former is a frag fest like four times faster than Modern Warfare 2 and the former only about twice as fast a pace, but has the advantage that sniping is still practical once you go into TDM. COD6 plays almost the same in TDM as FFA, except you have to discriminate your targets first.
Sunday, September 19, 2010
Programming: Things We Should Take For Granted
Since an anniversary is coming up, and I've accumulated a nice chunk of experience in the years since I started learning how to program—I've been reflecting on what languages have thought me, about getting stuff done. This is also, obviously a rant.
That's the cardinal rule. I don't give a shit if it has more fan boys than Apple, or if it's the most brilliant idea since they blamed the invention of fire on Prometheus. It has to be useful for getting stuff done!
Here's some nick nacks that you should expect from programming languages since the 1970s, oh how little we have moved forward...
Basically anonymous functions. This means we can write higher order functions, in other words functions can take and return functions. We can even do part of this in C through the use of function pointers (and C++ also has function objects, which are nicer if more verbose). But we can't define those functions on the fly, right there and then, making things harder. C++ and Java will at long fucking last be gaining a solution to this, if we live long enough to see it happen. Most languages worth learning have made doing all this pretty easy.
This usually means lexical closures, which in tern makes the aforementioned anonymous functions a prerequisite for happiness in normal cases. They could also cook up something different but equivalent to that for a change, but alas don't count on that! So the anon' func' thing is where it's at for now. If the language lacks closures, it's obviously a fucking moron, or it had better be old. C at least has that excuse. What about you Java? The road to 7 is a sick joke. Anyway as I was saying, if you have both serious scoping and a way to define executable blocks without a name, you ought to be able to treat it just like anything else that has a value. Here's an example in pseudo code:
You can expect either of two things to happen here:
The latter is the norm. I rather think the former is better, if you also provide means of doing the latter, syntactically; this makes the closing over of data more explicit. In terms of how it would look, think about the static and new keywords in many staticly typed OO languages and copy constructors, then you'll get some sort of idea. I blame my point of view on this on spending to much time with Python. Ditto for my thoughts on memory allocation, courtesy of C.
While we're at it, if the vaguely EcmaScript like pseudo code above was a real language: you should expect that function x {} and test1(), test()2 for ... to be sugar for the relevant snippets out of the above, or else you ought to break out the tar and feathers! I wrote them as I did to make it painfully obvious what's happening to people still struggling at var x = function {}. Kudios if you figured out why I wrote do { } for instead of for {}. If you're laughing after reading this, after reading the above paragraph, yippe :-). If you're now scrolling back up, then sorry.
Which is so sorely missed in most compiled languages. There should be no need to define the relationship between modules or how to build it, it should be inferable from the source code. So should the type of most things, if the Lisp, SML, C#, and C++0x people are anyone to listen to. Building a cross platform C or C++ app is a bitch. Java is gay. Most dynamic languages are fine, so long as you keep everything in that language and have no C/C++ extensions to build. The closest that is possible to this "Just shuddup & build it" concept in most main stream languages, depends on dedicated build infrastructures built on top of make tools (FreeBSD, Go, etc) or IDEs. Either case is a crock of shit until it comes as part of the language, not a language implementation or a home brewed system. Build tools like CMake and SCons can kiss my ass. It's basically a no win situation. JVM/CLI-languages seem to take a stab at things but still fail flat; Go manages better.
Dependency management also complicates things, because building your dependencies and using them becomes part of building your project. Most dynamic languages have gown some method of doing this, compiled ones are still acting like it's the 70s. For what it's worth, Google's goinstall is the least painful solution I've encountered. Ruby's gems would come in second place if it wasn't for Microsoft Windows and C/C++ issues cropping in here and there. Python eggs and Perl modules are related.
Here's an example of brain damage:
Which should be enough to tell the compiler how to use Foo. Not just that you can type new Bar() instead of new Foo.Bar(), should you wish to do so. Compiling the above would look something like:
Which is a lazy crock of shit excuse for not getting creative with C#'s syntax (See also the /r:alias=file syntax in Microsoft's compiler documentation for an interesting idea). The only thing that a using statement lacks for being able to tell the compiler, is what file is being referenced, i.e. where to find the Foo namespace at run time. Some languages like Java (and many .NET developers seem to agree) impose a convention about organising namespaces and file systems. It's one way, but I don't care for it.
What is so fucking hard about this:
in order to say that Foo is found in Foo-2.1.dll instead of Foo.dll. If that sounds like weird syntax, just look closer at P/Invoke, how Java does packages, and Pythons import as syntax.
So obviously we can use the languages syntax to provide whatever linking info should be needed at compile time; figuring out where to find the needed files at compile and run time is left as an exercise for the reader (and easily thunk about if you know a few language implementations).
In short, beyond exporting an environment variable saying where extra to look for dependencies at compile/runtime, we should not have to be arsed about any of that bull shit. If you're smart, you will have noted most of what I just talked about has to do with the compiling and linking against dependencies, not building them. Good point. If we're talking about building things without a hassle, we also have to talk about building dependencies.
Well guess what folks, if you can build a program without having to bitch fuck about with linking to your libraries, you shouldn't have to worry about building them either. That's the sense behind the above. What's so hard about issuing multiple commands (one per dependency and then again for your program) or doing it recursively. Simple. But no, just about every programming language has to suck at this. Some language implementations (Visual C++) make a respectable crack at it, so long as you rely on their system. Being outside the language standards, such things can suck my rebel dick before I'll consider them in this context.
Let's take a fairly typical language as an example. C# and Java for starters, and to the lesser extent of C and C++ as far as their standards allow, we can infer a few things by looking at source code. Simply put if the main method required for a program is not there, obviously the bundle of files refer to a library or libraries. If it is there, you're building a program. Bingo, we have a weener! Now if we're making life easier, you might ask about a case where the code is laid out in the file system in a way that makes that all harder to figure out. Well guess what, that means you laid it out wrong, or you shouldn't be caring about the static versus dynamic linking stuff. D'uh.
Just about every language has had serious scoping built in from day one, or has grown it over the years, like FORTRAN and COBOL. Some languages get a bit better at it, C# for example is very good at it. C++ and Python get the job done but are a bit faulty, since you can circumvent the scoping in certain cases; although I reckon that's possible in any language that can compile down to a lingual level below such scoping concepts. Some might also wonder why I had listed PHP 5.3 earlier when talking about "Serious scoping", well 5.3 basically fixes the main faults PHP had, the only problem is in common practice PHP is more often written like an unstructured BASIC. Die idiots Die. Languages like Java and Ruby basically run it fairly typical. By contrast Perl mostly puts it in your hands by abusing lexical scope. I love Perl.
In terms of anonymous functions, Perl, Lisp, and SML are excellent at it and modern C# manages quite nicely (if you don't mind the type system). Where as C, C++, and Java are just fucking retards on this subject. Python and Ruby also make things someone icky: functions are not first class objects in Ruby, so you have to deal with Proc to have much fun; like wise Pythons lambda's are limited, so you usually have to result to Pascalesque scope abuse to manage something useful, in the way of nesting things in the scope. Lisp is queen here, Perl and JavaScript are also very sexy beasts when getting into anonymous functions.
In terms of lexical closures across languages, I'll just leave it to the text books.
As far as being able to shout "Just shuddup & build it!", they all suck!!! Most of the build related stuff is not iron clad defined by the C99/C++03 standards documents, and you are a fucking moron if you expect the entire world to use any given tool X to build their C/C++ software \o/. That rules out things like Visual Studio (vcbuild/msbuild), Make, and all the wide world of build tools you can think of. The most common dynamic languages in the main stream are better. In order of least to most suckyness Perl, Ruby, and Python make the process less painful; my reason for rating them thus is because of extension modules. PHP and Java, I'm not even going to rate. They provide tools to help you build and distribute your extension modules and your native modules. The only gripes come from the principal language implementations being implemented in C. For pure modules (E.g. no C extensions), they are excellent! The least painful language that I've gotten to use, has been Go - which has the best thing since CPAN. Which is still harder than it should be \o/.
The question I wonder, is if it took until like the 2000s to get closures going strong after the serious scoping stuff took off by the late 1960s/early 1970s; will I have to survive until the 2030s-2050s to be able to bask in the wake of just being able to build stuff in peace? Most likely old friend C will still be there, but other languages should reach main stream in another 30+ years... not just the ones we have now. That, or we could go back to lisp.... hehehe.
That's the cardinal rule. I don't give a shit if it has more fan boys than Apple, or if it's the most brilliant idea since they blamed the invention of fire on Prometheus. It has to be useful for getting stuff done!
Here's some nick nacks that you should expect from programming languages since the 1970s, oh how little we have moved forward...
Serious Scoping
The ability to define modular scopes. In most cases this simply has to do with managing namespaces, either via built in language constructs (C++, PHP5.3, C#) or the natural order of modules in general (C, Java, Python), but really it's trivial. It kind of has to do with building out of the whole 'scope' concept in general. In other wards, we could say that a namespace is a kind of scope. Looking at the Wikipedia page, it seems someone agrees with that notion. Using this lingual functionality, you essentially have object oriented programming at your disposal: sans the the 'tors hidden behind the curtain. Some languages even thrown those in, making OOP a real snap. While the inheritance model is popular and the less well known prototyping model is interesting, they are not required for achieving the core aims of object oriented programming; at least not the ones touted ;).
Anonymous Executable Code Blocks
Basically anonymous functions. This means we can write higher order functions, in other words functions can take and return functions. We can even do part of this in C through the use of function pointers (and C++ also has function objects, which are nicer if more verbose). But we can't define those functions on the fly, right there and then, making things harder. C++ and Java will at long fucking last be gaining a solution to this, if we live long enough to see it happen. Most languages worth learning have made doing all this pretty easy.
Abuse of Lexical Scoping
This usually means lexical closures, which in tern makes the aforementioned anonymous functions a prerequisite for happiness in normal cases. They could also cook up something different but equivalent to that for a change, but alas don't count on that! So the anon' func' thing is where it's at for now. If the language lacks closures, it's obviously a fucking moron, or it had better be old. C at least has that excuse. What about you Java? The road to 7 is a sick joke. Anyway as I was saying, if you have both serious scoping and a way to define executable blocks without a name, you ought to be able to treat it just like anything else that has a value. Here's an example in pseudo code:
var x = function { var y = 0 return function { y = y+1; return y } } test1 = x() test2 = x() do { test1(); test2() } for 0 to 5
You can expect either of two things to happen here:
- Every function returned by x will increment the instance of y stored in x.
- Every function returned by x will get it's own private copy of y.
The latter is the norm. I rather think the former is better, if you also provide means of doing the latter, syntactically; this makes the closing over of data more explicit. In terms of how it would look, think about the static and new keywords in many staticly typed OO languages and copy constructors, then you'll get some sort of idea. I blame my point of view on this on spending to much time with Python. Ditto for my thoughts on memory allocation, courtesy of C.
While we're at it, if the vaguely EcmaScript like pseudo code above was a real language: you should expect that function x {} and test1(), test()2 for ... to be sugar for the relevant snippets out of the above, or else you ought to break out the tar and feathers! I wrote them as I did to make it painfully obvious what's happening to people still struggling at var x = function {}. Kudios if you figured out why I wrote do { } for instead of for {}. If you're laughing after reading this, after reading the above paragraph, yippe :-). If you're now scrolling back up, then sorry.
Just shuddup & build it!
Which is so sorely missed in most compiled languages. There should be no need to define the relationship between modules or how to build it, it should be inferable from the source code. So should the type of most things, if the Lisp, SML, C#, and C++0x people are anyone to listen to. Building a cross platform C or C++ app is a bitch. Java is gay. Most dynamic languages are fine, so long as you keep everything in that language and have no C/C++ extensions to build. The closest that is possible to this "Just shuddup & build it" concept in most main stream languages, depends on dedicated build infrastructures built on top of make tools (FreeBSD, Go, etc) or IDEs. Either case is a crock of shit until it comes as part of the language, not a language implementation or a home brewed system. Build tools like CMake and SCons can kiss my ass. It's basically a no win situation. JVM/CLI-languages seem to take a stab at things but still fail flat; Go manages better.
Dependency management also complicates things, because building your dependencies and using them becomes part of building your project. Most dynamic languages have gown some method of doing this, compiled ones are still acting like it's the 70s. For what it's worth, Google's goinstall is the least painful solution I've encountered. Ruby's gems would come in second place if it wasn't for Microsoft Windows and C/C++ issues cropping in here and there. Python eggs and Perl modules are related.
Here's an example of brain damage:
using Foo; class X { public test() { var x = new Foo.Bar(); // do something to x } }
Which should be enough to tell the compiler how to use Foo. Not just that you can type new Bar() instead of new Foo.Bar(), should you wish to do so. Compiling the above would look something like:
dot-net> csc -r:Foo.dll /r:SomeDependencyOfFoo.dll mono$ mcs -r:Foo.dll -r:SomeDependencyOfFoo.dll
Which is a lazy crock of shit excuse for not getting creative with C#'s syntax (See also the /r:alias=file syntax in Microsoft's compiler documentation for an interesting idea). The only thing that a using statement lacks for being able to tell the compiler, is what file is being referenced, i.e. where to find the Foo namespace at run time. Some languages like Java (and many .NET developers seem to agree) impose a convention about organising namespaces and file systems. It's one way, but I don't care for it.
What is so fucking hard about this:
using "Foo-2.1" as Foo;
in order to say that Foo is found in Foo-2.1.dll instead of Foo.dll. If that sounds like weird syntax, just look closer at P/Invoke, how Java does packages, and Pythons import as syntax.
So obviously we can use the languages syntax to provide whatever linking info should be needed at compile time; figuring out where to find the needed files at compile and run time is left as an exercise for the reader (and easily thunk about if you know a few language implementations).
In short, beyond exporting an environment variable saying where extra to look for dependencies at compile/runtime, we should not have to be arsed about any of that bull shit. If you're smart, you will have noted most of what I just talked about has to do with the compiling and linking against dependencies, not building them. Good point. If we're talking about building things without a hassle, we also have to talk about building dependencies.
Well guess what folks, if you can build a program without having to bitch fuck about with linking to your libraries, you shouldn't have to worry about building them either. That's the sense behind the above. What's so hard about issuing multiple commands (one per dependency and then again for your program) or doing it recursively. Simple. But no, just about every programming language has to suck at this. Some language implementations (Visual C++) make a respectable crack at it, so long as you rely on their system. Being outside the language standards, such things can suck my rebel dick before I'll consider them in this context.
Let's take a fairly typical language as an example. C# and Java for starters, and to the lesser extent of C and C++ as far as their standards allow, we can infer a few things by looking at source code. Simply put if the main method required for a program is not there, obviously the bundle of files refer to a library or libraries. If it is there, you're building a program. Bingo, we have a weener! Now if we're making life easier, you might ask about a case where the code is laid out in the file system in a way that makes that all harder to figure out. Well guess what, that means you laid it out wrong, or you shouldn't be caring about the static versus dynamic linking stuff. D'uh.
Run down of the Main Stream
Just about every language has had serious scoping built in from day one, or has grown it over the years, like FORTRAN and COBOL. Some languages get a bit better at it, C# for example is very good at it. C++ and Python get the job done but are a bit faulty, since you can circumvent the scoping in certain cases; although I reckon that's possible in any language that can compile down to a lingual level below such scoping concepts. Some might also wonder why I had listed PHP 5.3 earlier when talking about "Serious scoping", well 5.3 basically fixes the main faults PHP had, the only problem is in common practice PHP is more often written like an unstructured BASIC. Die idiots Die. Languages like Java and Ruby basically run it fairly typical. By contrast Perl mostly puts it in your hands by abusing lexical scope. I love Perl.
In terms of anonymous functions, Perl, Lisp, and SML are excellent at it and modern C# manages quite nicely (if you don't mind the type system). Where as C, C++, and Java are just fucking retards on this subject. Python and Ruby also make things someone icky: functions are not first class objects in Ruby, so you have to deal with Proc to have much fun; like wise Pythons lambda's are limited, so you usually have to result to Pascalesque scope abuse to manage something useful, in the way of nesting things in the scope. Lisp is queen here, Perl and JavaScript are also very sexy beasts when getting into anonymous functions.
In terms of lexical closures across languages, I'll just leave it to the text books.
As far as being able to shout "Just shuddup & build it!", they all suck!!! Most of the build related stuff is not iron clad defined by the C99/C++03 standards documents, and you are a fucking moron if you expect the entire world to use any given tool X to build their C/C++ software \o/. That rules out things like Visual Studio (vcbuild/msbuild), Make, and all the wide world of build tools you can think of. The most common dynamic languages in the main stream are better. In order of least to most suckyness Perl, Ruby, and Python make the process less painful; my reason for rating them thus is because of extension modules. PHP and Java, I'm not even going to rate. They provide tools to help you build and distribute your extension modules and your native modules. The only gripes come from the principal language implementations being implemented in C. For pure modules (E.g. no C extensions), they are excellent! The least painful language that I've gotten to use, has been Go - which has the best thing since CPAN. Which is still harder than it should be \o/.
The question I wonder, is if it took until like the 2000s to get closures going strong after the serious scoping stuff took off by the late 1960s/early 1970s; will I have to survive until the 2030s-2050s to be able to bask in the wake of just being able to build stuff in peace? Most likely old friend C will still be there, but other languages should reach main stream in another 30+ years... not just the ones we have now. That, or we could go back to lisp.... hehehe.
Friday, September 17, 2010
Just saw last years Sherlock Holmes flick, and I must say, that it's both stimulating and bloody brilliant! While Basil Rathbone's portrayals typically come to mind when I think of Holmes, I must admit that I loved the take spun on the original duo ;).
Can you ask for more than the master detective and the dear doctor, pitted against a super-genius and the black arts? Even better the films constructed so you can follow it, even with varying levels of intellect. Of course the obvious question is who the heck is Blackwood but it makes sense. Unless you're able to connect the Holmesian dots in your brains background thread, rather then wait for Irene Adler to spell it out at the end: even the biggest surprise is revealed, superbly I might add.
Although I do enjoy a stimulating mystery, I've never been a big fan of Sherlock Holmes or the genre. I do however, admire such a mind :-). I reckon that would be obvious, for anyone knowing parts of mine lol.
Can you ask for more than the master detective and the dear doctor, pitted against a super-genius and the black arts? Even better the films constructed so you can follow it, even with varying levels of intellect. Of course the obvious question is who the heck is Blackwood but it makes sense. Unless you're able to connect the Holmesian dots in your brains background thread, rather then wait for Irene Adler to spell it out at the end: even the biggest surprise is revealed, superbly I might add.
Although I do enjoy a stimulating mystery, I've never been a big fan of Sherlock Holmes or the genre. I do however, admire such a mind :-). I reckon that would be obvious, for anyone knowing parts of mine lol.
A downside to being a super geek
In reading this page, I can't help but think about these two sentences:
We thought, "Sheesh, people are too busy running their businesses to learn how to code HTML emails. Email marketing is so easy, a monkey could be doing it for them.To a geek like me, that is like saying, "Sheesh, people are to busy running their businesses to learn how to write". I admit, many people are 'that' busy or just lazy - they pay someone to write it for them. That's how life is.
But for the love of Pete's sister, you should still learn how to write!
Anyone who thinks HTML is hard stuff, should power off their computer, stand up, and check themselves for brain damage. Because learning to how to write down your A, B, and Cs back in school was ten thousand times harder. Seriously.
For those who are merely ignorant, HTML is the system of writing used to write web pages. Just like most of us used to use cursive for writing letters, before everyone got into e-mail and text messaging. The difference is HTML actually is actually the minimal effort needed to learn it, where as it is very debatable if the (comparatively) large amount of time needed to learn cursive is worth adding to your répertoire. That's not even counting trying to read someone else' handwriting!
Tuesday, September 14, 2010
Another day at the races
Well, I've completed the last part of my job hunt that requires me hoofing it across the city! Across two days, I've compiled a list of just about every business in my city, omitting those that obviously dead weights, like hair & nails salons. I'm not qualified for their work, nor have I any sense in trying to sell them on computerising things lol. My intention is to cross reference all the info into a data store on my computer, than have a program compile it down into an order of contact:
- Which ones to cold call and offering my "Services" as a super geek.
- Which ones to apply for online out of necessity.
- Which ones to walk in and apply.
- Which ones to call and see if they are hiring.
Believe it or not, more companies have moved their application processes into the clouds than you would think, to the extent that the only way to apply is by a computer. For how shitty web sites tend to be and how little point I see in a kiosk subbing for one, I actually prefer walking in and dealing with a paper application. O.K. maybe I am old fashioned in some ways, even if I usually groan at the notion of hard copy >_>.
On Friday I collected about half the city using a mixture of car and foot travel, the main central hubs for work in this rattle trap. By that, I mean it's a city where people live and most commute, be it for work or pleasure lol. Today I took off on foot and got the other half. I think this year, I have seen more of this place on foot than I have seen in 10 years of riding in cars. Tonight or tomorrow I'll get a program thrown together for the data entry procedure; which is a trivial task for my programming skills.
Somehow it figures that have nearly 5 hours of marching almost continuously, it's an hour of sitting with my feet up at home that makes my legs stiff as a board! On the upside though, I absolutely love my new boots and the boonie hat really keeps me cool :-D. Then again, anything under 40 C is practically like air conditioning for me lolololol.
Monday, September 13, 2010
According to the BBC, it seems that some people think modern technology is making people stupid. I think they were already stupid ;).
The Internet in particular tasks us with the acquisition and evaluation of knowledge, something that separates me from Joe Blow from kokomo, is my super power to quickly gather and parse massive amounts of info, evaluate the details, and push forward using it.
The Internet in particular tasks us with the acquisition and evaluation of knowledge, something that separates me from Joe Blow from kokomo, is my super power to quickly gather and parse massive amounts of info, evaluate the details, and push forward using it.
Sunday, September 12, 2010
Chain of Command
Caught most of an interesting film today, called Chain of Command. The jist of it, is during talks at sea with Taiwan, the U.S. president is kidnapped in order to use his football to attack China. Since President Eisenhower, there's been an attaché case that an aide carries for the C' in C' in case of all heck breaking lose. Basically it's a way for our President to say nuke the bastards and do it yesterday.
So, during a meeting with the president of Taiwan, the secret service detail is wiped out... except for one luckly stiff who walked off to take a leak before the shooting started. To bad he didn't take the nuclear football along lol. One lone secret service agent on football duty, has to outsmart a bunch of AK knock off packing goons, stop the ship, rescue the president, and recover the football. Of course being a day where it doesn't pay to get out of bed, agent Connelly ends up in Hong Kong when things get even worse. To top it all of, the bastards manage to launch an American ICBM against Beijing, causing the Chinese to retaliate with an "Eye for an eye", targeting D.C. Both cities get toasted in short terminator'esque clips.
Finding himself with the lead villain holding the president hostage on his 12, and a traitorous agent on his flank, our hero does exactly what I would've done: remember the first rule of a no win situation—change the rules! So he shoots the president in the leg, and caps the two bad guys while getting himself shot in the process. Since the Commander in Chief is killed during subsequent cross fire, the poor sap has to find his way back to the states with the football.
Mean while the Chinese have decided to drop nukes all over the U.S.A. believing that our arsenal is hopelessly in terrorist hands. I don't know how high tech the nuclear football has become, other than that it isn't nearly so powerful as in this film... even we're not nuts enough to give one person the ability to launch nukes. But seriously, I would hope that if the President had that much power to trigger a launch, that Standard Operating Procedure would mean: if the president is compromised, cut off the footballs ability to order or launch a strike! For corn sake...!!
The movies ending, however is quite American at heart: after regaining control of our launch systems, the Vice President tells the Chinese to blow their missiles and they refuse, thinking it's a bluff. That being an obvious problem, as acting C-in-C she orders a stage one nuclear strike against China and threatens to take it to the next level unless the Chinese self destruct their missiles in flight, ours will be sprouting mushrooms all over their lawn ^_^. Obviously the bastards in charge are forced to back down, when they see a mass of American warheads touch off, and their one minute deadline ticks past fast, hehe.
That's how the United States of America is, you fuck with us and you won't have a pot left to piss in. ;)
So, during a meeting with the president of Taiwan, the secret service detail is wiped out... except for one luckly stiff who walked off to take a leak before the shooting started. To bad he didn't take the nuclear football along lol. One lone secret service agent on football duty, has to outsmart a bunch of AK knock off packing goons, stop the ship, rescue the president, and recover the football. Of course being a day where it doesn't pay to get out of bed, agent Connelly ends up in Hong Kong when things get even worse. To top it all of, the bastards manage to launch an American ICBM against Beijing, causing the Chinese to retaliate with an "Eye for an eye", targeting D.C. Both cities get toasted in short terminator'esque clips.
Finding himself with the lead villain holding the president hostage on his 12, and a traitorous agent on his flank, our hero does exactly what I would've done: remember the first rule of a no win situation—change the rules! So he shoots the president in the leg, and caps the two bad guys while getting himself shot in the process. Since the Commander in Chief is killed during subsequent cross fire, the poor sap has to find his way back to the states with the football.
Mean while the Chinese have decided to drop nukes all over the U.S.A. believing that our arsenal is hopelessly in terrorist hands. I don't know how high tech the nuclear football has become, other than that it isn't nearly so powerful as in this film... even we're not nuts enough to give one person the ability to launch nukes. But seriously, I would hope that if the President had that much power to trigger a launch, that Standard Operating Procedure would mean: if the president is compromised, cut off the footballs ability to order or launch a strike! For corn sake...!!
The movies ending, however is quite American at heart: after regaining control of our launch systems, the Vice President tells the Chinese to blow their missiles and they refuse, thinking it's a bluff. That being an obvious problem, as acting C-in-C she orders a stage one nuclear strike against China and threatens to take it to the next level unless the Chinese self destruct their missiles in flight, ours will be sprouting mushrooms all over their lawn ^_^. Obviously the bastards in charge are forced to back down, when they see a mass of American warheads touch off, and their one minute deadline ticks past fast, hehe.
That's how the United States of America is, you fuck with us and you won't have a pot left to piss in. ;)
Thursday, September 9, 2010
Army boots; good hat; new belt. Yippie-kai-yay!
Today has been a productive day! Spent the first part of the day waiting in a doctors office, reading notes on SML. Ma had to go in early over something with her meds. After that, we took about an hours ride to an army/navy surplus shop located in the same city, as Doc Holiday was born in, interestingly.
While the selection on some things could have been better, the prices there were awesome: typically 30%-50% less than what the ones in Atlanta are displaying in their e-stores, not to mention several estores in general. It was also nice that most things are stocked in ACU/Woodland camo depending on the age, plus black or navy blue and olive drab variants. Despite what some people (like airsoft players) may choose, I refuse to wear an army camo uniform and ACU-patterned gear without enlisting. I would consider it disrespectful, even if it's cheaper than going to Walmart for civilian cloths. Something like combat boots on the other hand are a different story!
They only cost about half of what most places have had to offer, and I have been wanting military style boots for ages. I have never had *real* decent footwear in my life and well, when I am seen looking for shoes, it usually means the ones I'm wearing just redefined the words "Riding a dead horse". In this case, I currently have a large cache of "Hand me down" sneakers: experience has lead me to believe military boots would do way better. The army/navy surplus store had the type of jungle boots that I had wanted but these ones were just such a better fit for me, and just a wee bit more in price than the black leathers. The fact that the only shoes I ever loved were lace-less black suede shoes, means that I know exactly how durable that material can be—plus unlike the black leather Jungle and Tactical boots they had stocked, these suckers don't need polishing!!! My new boots are probably not going to take wet weather in the way I would like, but I have seen suede take some heavy punishment, so at least I know the bloody things will last in the environments I frequent. I've also learned the hardway not to let very heavy things land on my toes lol. In comparing the leather blacks and the tan suede's, both had sole structures that would likely out live my feet: unlike most of the sneakers I've had to make do with. That is the part that usually gives out on me first, wearing down to a couple of millimetre worth of outsole between me and the ground; well give or take wearing a shoe until what's left of the outsole splits off from the rest of the shoe xD. Also in favour of the suede boots is the gripping insole pad and the type of nylon is a much more breathable kind than the regular jungles have. I guess being made for Temperate Weather has its upsides; it's not like I'm going swimming in them either. Unfortunately the only socks they had to go with it were an order of magnitude larger than my size, so I ended up buying a pair from Walmart. Usually I skip socks as a matter of comfort, I'm in shoes to much; in this case however I want decent socks lol. The ones I've just gotten will have to do...
In poking around at what they had, including the packs, MOLLE gear, and tactical vests, I found boonie hats in just about every colour and camo an American could possibly dream of finding lol. Was a little more expensive than what I wanted to pay but I used to have one and found it worked well in wet weather. I reckon it ought to be good for walking under the hot sun too, so I bought myself an OD boonie hat! Been wanting to find a new one because my old stopped fitting a couple years back. In Georgia, most of the time I don't wear a hat unless it's raining but that should probably change, at least when out for a long walk. When I was a child, I liked umbrellas for wet weather because you can sword fight with them in between outings in the storm. Dripping rain coats are also not my bag and I'm to old to have fun otherwise in the rain. A good hat is all I want when it is pouring down rain! I'm kind of weird about rainy weather, love being out in it, long as my feet stay drier than walking in a puddle.
While we were in the store, I also nabbed a dark web belt to supplement my grandfathers. As I got heavier in weight over the years, I gave up on 'regular' belts and adapted an heirloom instead. Grandpa's web belt has been able to keep pace with my waist, even after dropping several jean sizes lol. It was something he picked up in World War II during his time in the Navy, and despite being over 65 years old, it still kicks the ass of any other belt I have ever encountered. As long as it keeps my pants up and is quick to put on/take off, I'm happy beltwise. I just don't want to be bothered! The one I bought for $5 has a cheaper belt buckle and lacks the strange character (I assume a Japanese character or some meaningful symbol from the look of it) on my grandfathers but this one has the actual belt itself made from a more modern nylon. It's like a fraction of the quality of my grandfathers' web belt but, unlike grandpa's I don't have to worry about wearing out a family heirloom!
On the way back home, of course we had to stop at Walmart for ma to do grocery shopping >_>. My mother also had to point out that I took longer to shop for boots than she took at the doctors lolololol. Tomorrow is a trip to the pharmacy and some more shopping, so hopefully I'll get to break in my new boots. That reminds me, I need to wash the socks!
While the selection on some things could have been better, the prices there were awesome: typically 30%-50% less than what the ones in Atlanta are displaying in their e-stores, not to mention several estores in general. It was also nice that most things are stocked in ACU/Woodland camo depending on the age, plus black or navy blue and olive drab variants. Despite what some people (like airsoft players) may choose, I refuse to wear an army camo uniform and ACU-patterned gear without enlisting. I would consider it disrespectful, even if it's cheaper than going to Walmart for civilian cloths. Something like combat boots on the other hand are a different story!
They only cost about half of what most places have had to offer, and I have been wanting military style boots for ages. I have never had *real* decent footwear in my life and well, when I am seen looking for shoes, it usually means the ones I'm wearing just redefined the words "Riding a dead horse". In this case, I currently have a large cache of "Hand me down" sneakers: experience has lead me to believe military boots would do way better. The army/navy surplus store had the type of jungle boots that I had wanted but these ones were just such a better fit for me, and just a wee bit more in price than the black leathers. The fact that the only shoes I ever loved were lace-less black suede shoes, means that I know exactly how durable that material can be—plus unlike the black leather Jungle and Tactical boots they had stocked, these suckers don't need polishing!!! My new boots are probably not going to take wet weather in the way I would like, but I have seen suede take some heavy punishment, so at least I know the bloody things will last in the environments I frequent. I've also learned the hardway not to let very heavy things land on my toes lol. In comparing the leather blacks and the tan suede's, both had sole structures that would likely out live my feet: unlike most of the sneakers I've had to make do with. That is the part that usually gives out on me first, wearing down to a couple of millimetre worth of outsole between me and the ground; well give or take wearing a shoe until what's left of the outsole splits off from the rest of the shoe xD. Also in favour of the suede boots is the gripping insole pad and the type of nylon is a much more breathable kind than the regular jungles have. I guess being made for Temperate Weather has its upsides; it's not like I'm going swimming in them either. Unfortunately the only socks they had to go with it were an order of magnitude larger than my size, so I ended up buying a pair from Walmart. Usually I skip socks as a matter of comfort, I'm in shoes to much; in this case however I want decent socks lol. The ones I've just gotten will have to do...
In poking around at what they had, including the packs, MOLLE gear, and tactical vests, I found boonie hats in just about every colour and camo an American could possibly dream of finding lol. Was a little more expensive than what I wanted to pay but I used to have one and found it worked well in wet weather. I reckon it ought to be good for walking under the hot sun too, so I bought myself an OD boonie hat! Been wanting to find a new one because my old stopped fitting a couple years back. In Georgia, most of the time I don't wear a hat unless it's raining but that should probably change, at least when out for a long walk. When I was a child, I liked umbrellas for wet weather because you can sword fight with them in between outings in the storm. Dripping rain coats are also not my bag and I'm to old to have fun otherwise in the rain. A good hat is all I want when it is pouring down rain! I'm kind of weird about rainy weather, love being out in it, long as my feet stay drier than walking in a puddle.
While we were in the store, I also nabbed a dark web belt to supplement my grandfathers. As I got heavier in weight over the years, I gave up on 'regular' belts and adapted an heirloom instead. Grandpa's web belt has been able to keep pace with my waist, even after dropping several jean sizes lol. It was something he picked up in World War II during his time in the Navy, and despite being over 65 years old, it still kicks the ass of any other belt I have ever encountered. As long as it keeps my pants up and is quick to put on/take off, I'm happy beltwise. I just don't want to be bothered! The one I bought for $5 has a cheaper belt buckle and lacks the strange character (I assume a Japanese character or some meaningful symbol from the look of it) on my grandfathers but this one has the actual belt itself made from a more modern nylon. It's like a fraction of the quality of my grandfathers' web belt but, unlike grandpa's I don't have to worry about wearing out a family heirloom!
On the way back home, of course we had to stop at Walmart for ma to do grocery shopping >_>. My mother also had to point out that I took longer to shop for boots than she took at the doctors lolololol. Tomorrow is a trip to the pharmacy and some more shopping, so hopefully I'll get to break in my new boots. That reminds me, I need to wash the socks!
Somehow it figures, that after getting through *almost* 5 out of 5 levels on advanced, barely taking any scratches, and shooting zombie A through on to the finale! Instead of high tailing it to the rescue boat, I take care of a lazzo'ed teammate and end up mobbed in zombies he limps clear.
Of course all 3 of my teammates have to leave me for dead, when they could just through a pipe bomb to distract the zombies and someone pick me up lol. Nooblets 8=)
Of course all 3 of my teammates have to leave me for dead, when they could just through a pipe bomb to distract the zombies and someone pick me up lol. Nooblets 8=)
Wednesday, September 8, 2010
Tuesday, September 7, 2010
Monday, September 6, 2010
Stoking the fires of war
Well, today sets a new precedent in my family's affairs: blocking my mother on all digital medium ^_^.
First notch on the list:
End result:
In my point of view: my legal rights as a human being and a citizen of the U.S. state of Georgia are being impugned by a hateful control freak. I don't know any polite synonyms for control freak. Case in point, if as a citizen of the state of Georgia in the United States of America, am allowed to exercise freedom of speech within the scope of what is legally acceptable, I ought to be able to do the same on the Internet without being threatened by my mother.
If I have to take much more of this bullshit, I'm going down to the local courthouse and finding out how to litigate this matter. You don't screw with geeks.
First notch on the list:
For years (i.e. since gaining steady 'net access) I have enjoyed the Internet, as it is well beyond my mothers competency to exert much control over what I can and what I cannot do. This includes censoring my freedom of speech.Second notch on the list:
Rarely being able to say a damn thing without having my words taken out of context and turned against me ad nauseam, whenever my choice of words were not "Agreeable" enough to my mother's mood.Third notch on the list:
Being regularly threatened with physical harm, property destruction, and discrimination whenever I refuse to comply with her orders to not express in voice or text what I feel, think, or reason about beyond the scope of my brains own internal monologue. I consider attempting to exert that level of control against someone (i.e. me) who has reached the age of majority, to be a violation of that persons (i.e. my) rights as an American citizen. In plain English my mother is trying to gag me from saying anything she doesn't like. If the government is forbidden from enacting laws doing such a thing by the first amendment to the U.S. constitution, I rather doubt rather doubt my mother has the legal right to do something similar in this household.Recent events:
Being verbally attacked (see third notch) for having written this, which you can bet is nothing my mother hasn't gotten told worse to her face over the years. One of my friends found my mother's threats over that journal entry, to be rather ludicrous (to describe her reaction with my own words). Another incident (see third notch, above) involved this comment on my Facebook wall: "I find my families lack of logical comprehension disturbing." Which is also very true, because most of my (immediate) family has very dim comprehension of logic. I often tell my mother to learn English when she annoys me, by not comprehending very simple ideas, like if you do X then Y will follow. I've taken enough crap that I'm tired of being threatened.
End result:
I've blocked my mothers Facebook account, her e-mail address, and will add any other digital forms as appropriate. Whether or not I will continue to speak to her in person, is a matter for me to think over thoroughly.
In my point of view: my legal rights as a human being and a citizen of the U.S. state of Georgia are being impugned by a hateful control freak. I don't know any polite synonyms for control freak. Case in point, if as a citizen of the state of Georgia in the United States of America, am allowed to exercise freedom of speech within the scope of what is legally acceptable, I ought to be able to do the same on the Internet without being threatened by my mother.
If I have to take much more of this bullshit, I'm going down to the local courthouse and finding out how to litigate this matter. You don't screw with geeks.
Fresh USB
While standing in the checkout line in Big Lots today, something caught my eye: $9.50 each for HP branded 4GB USB flash drives. Now I'm a stingy son of a bitch if there ever was one about luxury items (and when you have a network, I call UFDs a luxury), but that was a nice deal.
The last time I bought a UFD, I paid something like six times that much for a little 512MB stick at Circuit City, that's 1/8th the capacity of what I just got for ten bucks lol. Somethings are just to good to pass up :-/. Hopefully unlike my previous one, it won't end up getting destroyed.... or becoming the dogs new chew toy.
The last time I bought a UFD, I paid something like six times that much for a little 512MB stick at Circuit City, that's 1/8th the capacity of what I just got for ten bucks lol. Somethings are just to good to pass up :-/. Hopefully unlike my previous one, it won't end up getting destroyed.... or becoming the dogs new chew toy.
Sunday, September 5, 2010
Fun with linenoise
Well, it's been a fairly productive night; I've managed to conclude the days research, take care of a few odds and ends, plus wrap up a few changes to linenoise. It's essentially a micro-library for giving console programs capabilities for line editing,like GNU readline—sans the migraine headache.
On/off I've been tinkering with it since mid August. The linenoise API has almost everything you could want except for a few minor things, and it is insanely easy to use. As to what's lacking: some common keybindings, direct access to the loaded history, and a completion hook. None of which is hard to add. Since it's so damn nicer to use than readline, but lacking a few keybindings that I've come to rely on; I've been adding them to my own fork on github. Pull requests periodically sent to the author of course. It will likely be my first choice whenever requiring line editing support in one of my applications.
Two things that interest me also, is a Windows port and implementing completion. The former is a bit of work, where as the latter is only an intellectual issue: what keystroke to use. Using tab is an issue, in that one has to be able to figure out when to insert a tab and when to trigger completion. Something more like the (real) korn shells "escape escape" provides the simplest means.
Linenoise is just one of the many things on the back burner that I would like to bring closer to the front flame.
On/off I've been tinkering with it since mid August. The linenoise API has almost everything you could want except for a few minor things, and it is insanely easy to use. As to what's lacking: some common keybindings, direct access to the loaded history, and a completion hook. None of which is hard to add. Since it's so damn nicer to use than readline, but lacking a few keybindings that I've come to rely on; I've been adding them to my own fork on github. Pull requests periodically sent to the author of course. It will likely be my first choice whenever requiring line editing support in one of my applications.
Two things that interest me also, is a Windows port and implementing completion. The former is a bit of work, where as the latter is only an intellectual issue: what keystroke to use. Using tab is an issue, in that one has to be able to figure out when to insert a tab and when to trigger completion. Something more like the (real) korn shells "escape escape" provides the simplest means.
Linenoise is just one of the many things on the back burner that I would like to bring closer to the front flame.
Saturday, September 4, 2010
Misc thoughts of a lazy programmer
Since opening a chequeing account, I've maintained a simple text file in my home directory, that takes the format:
where the entries track the actual flow of money, not what's in the chequeing account and what's on my person at any given time. That's the banks and my job ;p. Basically from this file, I know when I've spent or received money, how much, and approximately why. A quick compile of that against my bank balance and petty cash results in an error check: if the sums don't match, something didn't make it into my records! Since the file provides an obvious backtrace, it's trivial to check things against memory/receipts for anything that's been missed.
Now being a lazy S.O.B. why should I manually write out the entries in vim and do the math in CL? Well, arguably I could just implement a program to do all this for me :-).
Some people utilise spreadsheets, which is more work than it needs to be, until they become more advanced or more thoroughly programmable, not to mention. Namely I'm to lazy to use things like =DATE() and argue locales when I could use something else. There is also a ton of financial software in the world, but reading the manual tends to take longer than writing it, and many are overkill.
My thoughts? Either a small local program or web app would be perfecto. Finding one of the latter should be as easy as using Google or taking 20 minutes to write one. Decisions, decisions :-).
The thing I have against "Canned webapps" that some business runs, is the lack of control: it's impossible to hack the code quite the way as something home brewed.
YYYY-MM-DD +nn.nn // comment about this credit YYYY-MM-DD -n.nn // comment about this debit
where the entries track the actual flow of money, not what's in the chequeing account and what's on my person at any given time. That's the banks and my job ;p. Basically from this file, I know when I've spent or received money, how much, and approximately why. A quick compile of that against my bank balance and petty cash results in an error check: if the sums don't match, something didn't make it into my records! Since the file provides an obvious backtrace, it's trivial to check things against memory/receipts for anything that's been missed.
Now being a lazy S.O.B. why should I manually write out the entries in vim and do the math in CL? Well, arguably I could just implement a program to do all this for me :-).
Some people utilise spreadsheets, which is more work than it needs to be, until they become more advanced or more thoroughly programmable, not to mention. Namely I'm to lazy to use things like =DATE() and argue locales when I could use something else. There is also a ton of financial software in the world, but reading the manual tends to take longer than writing it, and many are overkill.
My thoughts? Either a small local program or web app would be perfecto. Finding one of the latter should be as easy as using Google or taking 20 minutes to write one. Decisions, decisions :-).
The thing I have against "Canned webapps" that some business runs, is the lack of control: it's impossible to hack the code quite the way as something home brewed.
Friday, September 3, 2010
This is a possible travesty! It seems t hat the wear and tear on my laptop is catching up to either the AC jack or adapter. Unless the thing is sitting just right it switches from AC to battery power... from so much as twisting a few degrees does it.
It's been doing it all day, but right now seems to be working fine.... wtf?
It's been doing it all day, but right now seems to be working fine.... wtf?
Spidey01 and Miles
No, I haven't died yet, I just haven't been online much this past week ;p. One of my oldest and dearest friends on the 'net, decided to spend his holiday here in Georgia. So I've been absent from the computer like 90% of the time, instead of on the computer that much. After something Cara said a while back, I've been trying to be less omni-presently online anyway... but it's been a while since I've been offline this much. For most of the decade I have probably spent more hours online than off, that's just how life has been :-/.
During my all to much time on the computer, I have developed a number of relationships and crossed paths with many people around the world. Some of which are very important to me. Among these is a young genius from Germany known by the name of Miles. He and I go back as far as cica 2006. I was one of his instructors when he was an [SAS] recruit, he was once even being groomed as my prospective 'replacement', and we've often worked together on various projects. The light armour vest in the SWAT skins is largely his handy work btw. We have also seem our fair share of differences over the years, both in and out of [SAS] but have remained friends through it all. Even though we haven't always seen eye to eye about everything, you could be sure if I ended up in the brig, Miles would have been sitting right next to me lol. I still remember during the trainers war that nearly split the clan in two, when Miles set aside his own interests and was the only one to come to my aid. You're never gonna live that one down buddy!
After countless warnings that he would probably be bored senseless among other likely problems of spending his holiday here, it was finally sorted that he would be staying with us rather than booking a hotel. The apartment also ended up cleaner than I've seen it in nearly ten years, and ma did most of the effort: if I had to do it, a lot more stuff would have been thrown out unceremoniously and start a thermonuclear war. The conditions I'm stuck living in are not the best, but hey, if he wanted to take a crack at it who am I to complain \o/.
The family F.O.R.D. was also removed from play by way of my mother and the mechanic: water pump needed replacing. Ended up asking our pastor to help pick him up from the airport in Atlanta, as an alternative to having to make like an Asian taxi driver dragging a cart. Picking Miles up also showed me that the traffic on the I-85 going into Atlanta isn't as bad as it used to be in the earlier 2000s, meaning that gmaps listed travel times are now respectable enough for planning purposes. Because my mothers utter lack of comprehension for scheduling algorithms, I also ran out of prep time! Luckily there was just enough time to dig up maps of the concourses and main building at the last minute; so we decided to link up in the atrium, which is near where the two terminals join outside the main security funnel. After arriving the pastor and I set up shop in a spot where we could establish over watch of the checkpoint and baggage claim areas. In the end ma's cell phone rings in my pocket and Miles walks up from behind me; beats him having to page Spidey01 to the information desk. Ha, that indeed would have been funny xD.
This was the first time I've ever met the face behind the text/voice/pictures behind someone I know from the Internet. Wasn't anxious about meeting my friend 'for the first time', so much as how many ways that law writing bastard Murphy might put a monkey wrench into his holiday. We've known each other for a good while, including our real names. Our ride 'home' was largely spent catching up, looking at photos and feasting on a bag of erdbeerschnüre :-). That reminds me, there's still some left!!! What a friend, who brings snacks :-D. Finally got to see him meet my mother and the dogs, been wondering what that would be like lol. It was also a little bit odd using real names instead of call signs, but I would say we got along reasonably well; also I couldn't help but smile when he nearly called me Spidey in front of my mother xD. It was also nice to hear how well his spoken English has held up, except for the word "Eggs" the only times I had trouble understanding Miles was an issue of volume. I guess nether of us are really loud mouths unless provoked lol.
Since the cars water pump had yet to arrive, and ahem, getting around our area of Georgia without a car is one of those, "You may try surviving a zombie apocalypse without weapons" kind of affairs, renting a car was a necessity. I think after walking around down town here, Miles can comprehend that legs first lol. Hunting down the nearest car rental company was easy, finding their branch wasn't half as simple; blasted Google map! Plus ma was pissed they didn't have any cars available when we showed up; we had to come back later. Not to mention the process of renting a car in America is almost as invasive as talking to The Government. Beyond that it was a great experience working with Enterprise rent a car. Thus I ended up behind the wheel of a Chevy Cobalt for the week. Despite having more microchips than my desktop computer, it's handling was very close to what I'm used to driving. I actually liked that Chevy because unlike my brothers car, it actually fits my taste: handling more like a car than a hair trigger. The former being ideal for a more urban'ish setting and the latter for abusing the laws governing free/express ways. To each their own I guess. The amount of standard issue tech' stuffed away in modern (cica 2010) cars is also kind of amazing for me, considering that I still remember when power windows and locks were sort of luxury features; I can't help but feel old.... :-/.
After a quick meal Friday night, we hit the local cinema for a go at a film called Inception. It's a very interesting, if complex thriller about inserting an idea into some exec's mind via shared dreaming. For me it's even more engaging a film because I have problems sleeping and often experience some really awesome^H^H^H^H^H^H^Hludicrous dreams. Miles also got to experience the difference in movie popcorn on this side of the pond. I'm sure Miles also got a closer look at my fouled up sleeping patterns.
On Saturday we joined an Airsoft event on the other side of town. Of course I have no idea how Google came up with that, since iirc Miles had Googled for paint ball lol. I've always been interested in such things, but for finacial reasons have never had the chance to try airsoft before. We packed a cooler with about 4 litres of H2O and a pair of foot long sandwiches. I've got to admit, that Miles is one hell of a sandwich maker ;). Lacking any airsoft equipment, we had to rent a set of G36C AEGs and paintball masks, on top of that we were like 20 minutes late. The afternoon was spent alternating between airsoft games and leaning against an open trunk: hydrating, eating, and loading BBs. The games were split between deathmatch/objective respawn games in the backwoods and no-respawn attack/defend ops in a field with obstacles and light buildings.
Moving tactically was fun, and having to RTB through thick brush every time you get shot is enough of an effort that you want to avoid being hit! Not as much as in real live warfare where getting hit may mean death but still enough to take it very seriously. It's been a few years since I've done that kinda stuff phsyically, let along been through woods. The simulated G36Cs had plenty of ammo per mag (drat) but using the peep sights while wearing a PB mask was a bit more probmatic; I preferred using the stock and semi-auto from a supported position. Most of the things I know apply much more cleanly to airsoft than online gaming, come to think of it! Despite best efforts at sure safety during the day: I still managed to fall down a hill, knocking my mask and glasses clean off; scratching up my right forearm by trying to force myself through thick foliage with my carbine leading the way, only to find half of it was full of thorns!; Being used as a "Walking shield" by one of our living teammates, as I was walking to the deadbox after getting shot; almost getting strangled by a piece of tree while 2-man carrying an objective crate back to base, only to get shot a few moments after extricating myself lol; and getting shot in the Adam's Apple while covering Miles' assault up a hill, all because the OP4 assigned to assault our teams' position obviously had a few campers who survived past end game phase 8=). It was loads of fun with the airsoft stuff and I can't thank Miles enough for that afternoon. Interestingly, while I'm largely chained to a computer non stop, I seemed to hold up to the prolonged exertion better than Miles did lol. We also learned that long sleeves are a Good Thing(tm) for such a game. A canteen or water bladder isn't a bad idea either but the games only ran like 20 minutes a piece. Someday I need to build up an airsoft kit and go back (y), and remember the long sleeves!
Played a couple games of chess overnight, allowing me to test two different strategies on him: blob and dynamic. The former being designed to curb attacks rather than seek a decisive action, and the latter based on a fast, dynamic take over by high value pieces. The second game saw what has to be one of the worst opening plays I've ever made, but it served it's purpose well: get my most useful pieces ready. It was a close game until I finally screwed up. Gotta admit that playing chess IRL is easier, because Mal.exe can't distract me with the subject of cleavage. Miles and I have played chess over the Internet a few times, but it was great to be able to get my chess board out of mothballs for a change. I rarely get to play, and I do enjoy chess very much, when my brains in fit shape.
Sunday morning was a visit to our old church. I think Miles was happy he didn't get hearing damage from the loud music xD. It's not a, eh, quiet place. Curiosity seemed to get the better of him, although I would not call my friend a church goer by nature. The evening was spent in an arcade, where we almost beat The House of the Dead but were defeated by the final boss. I must admit failure drills work well against zombies, especially if you aim using the light guns sights and close one eye from time to time. With like 6 shots between reloads, you also learn how to trust and cover your teammate in a game like that. Ironically I had just been thinking about that game like the week before.
Since Miles never had Jaw Breakers, Monday morning I called up the local candy shop and we took a ride down to Fuzziwigs in between grocery shopping. After enjoying a few gobstoppers, we walked around the area for a bit. Miles decided to pick up a copy of Prince of Persia: Warrior Within; so we spent part of the afternoon playing that over a round of non-alcoholic beer and substitute twinkies. I think that is probably the most alcohol he has had in a while and I rarely drink but hey, it was bound to happen eventually :-o. Perhaps the choice in beer, might also have gotten my mother to figure out that drinking a bar dry wasn't on the agenda for us two. The non-alcoholic beer wasn't bad actually, and it's nice to be able to taste the actual beer rather than the alcohol content; last 'drink' that I had was a brandy my mother convinced me to try, which I didn't care for, just for that reason: it had a taste on par with the smell of rubbing alcohol. Given the choice, I'd take the NA beer instead. Then again, given the choice I'd likely be drinking water anyway, lol. Later on we took to the arcade and beat Time Crisis 3, it only took most of $20 in tokens. Blasted clawed goons... Before calling it a night, we hit the billiards table and played a game of the eight ball; only thing is after so many years, I'm totally useless with a real cue! That however is just the way life's cookie crumbles. After Miles went to bed, I took a while to master more of PoP:WW, until my mother broke my concentration 8=).
Tuesday was mostly a waste of petrol, when we went exploring the next city. That night we hit the cinema again and watched Avatar after a feat at Golden Corral. I cannot say that I enjoy the "3D" thing but I seriously enjoyed the film andn it has a spectacular visual style. O.K. so I love sci fi, sue me! I also believe that the solution to many problems lay between the cold steel of mans high technology and the biological nature of the Na'vi existence. My P.O.V. on that may partially be to blame on readings about Kashyyyk, but that's a different matter. Miles also knew that my last outing to a movie theatre was 2005s Episode III, so I reckon he couldn't help but cram the cinema into things lol.
Wednesday I woke up to Miles having fixed breakfast, a concoction roughly being toast, bacon, egg, and beans layered respectively. It was delicous! On Wednesdays I often go without eating until supper time, so it was even better timed on his part. It wasn't long before my mother started barking for me to get dressed at 11:30. I calculated what time was actually needed: about 15 minutes to get dressed and load the car, another 35 for driving to work. That left 10 minutes to spare for getting to work on time at 13:00. Ma was late getting dressed and we still got to work with almost 10 minutes to spare. That goes to show I know a thing or two! Miles decided that he was coming to work and helping with the cleaning job. We got out about an hour earlier because of his help and ma wanted to hit a grocery store on the way back home. Miles did me the biggest favour: he found the twinkies while we were shopping xD xD xD. After getting home, we had to break open the box; there is nothing like a real hostess twinkie. Spent the night chatting and laughing through Down Periscope. A most excellent comedy pitting a WWII diesel submarine against the modern navy: sometimes thinkin' like pirate owns.
Thursday was the trip back to the airport for his flight home. It was also the first (and so far only) time that I've gotten to drive on the interstate. My mother's paranoid about such things. IMHO it's no worse than driving the main highway here, only big difference is there is a lot less traffic and higher speed limits. I made sure that Miles got checked in and ready to pass through the security check point before wishing him a safe trip home. Getting around the airport is actually pretty easy (for me), so it is hard to get lost, it's just a matter of figuring out where you need to be :-o.
This journal entry is already quite long, so I guess I'll call it a night instead of keep pumping memory and trying to put it in semi-comprehensible order. Don't think I will ever forget Miles coming to the U.S.A. either, so I guess I don't need to worry about updating my journal. If he has no objections, maybe I'll insert the picture of us into this entry for good measure.
Either way, I think it's almost time for a quick rest and some zombie slaying.
During my all to much time on the computer, I have developed a number of relationships and crossed paths with many people around the world. Some of which are very important to me. Among these is a young genius from Germany known by the name of Miles. He and I go back as far as cica 2006. I was one of his instructors when he was an [SAS] recruit, he was once even being groomed as my prospective 'replacement', and we've often worked together on various projects. The light armour vest in the SWAT skins is largely his handy work btw. We have also seem our fair share of differences over the years, both in and out of [SAS] but have remained friends through it all. Even though we haven't always seen eye to eye about everything, you could be sure if I ended up in the brig, Miles would have been sitting right next to me lol. I still remember during the trainers war that nearly split the clan in two, when Miles set aside his own interests and was the only one to come to my aid. You're never gonna live that one down buddy!
After countless warnings that he would probably be bored senseless among other likely problems of spending his holiday here, it was finally sorted that he would be staying with us rather than booking a hotel. The apartment also ended up cleaner than I've seen it in nearly ten years, and ma did most of the effort: if I had to do it, a lot more stuff would have been thrown out unceremoniously and start a thermonuclear war. The conditions I'm stuck living in are not the best, but hey, if he wanted to take a crack at it who am I to complain \o/.
The family F.O.R.D. was also removed from play by way of my mother and the mechanic: water pump needed replacing. Ended up asking our pastor to help pick him up from the airport in Atlanta, as an alternative to having to make like an Asian taxi driver dragging a cart. Picking Miles up also showed me that the traffic on the I-85 going into Atlanta isn't as bad as it used to be in the earlier 2000s, meaning that gmaps listed travel times are now respectable enough for planning purposes. Because my mothers utter lack of comprehension for scheduling algorithms, I also ran out of prep time! Luckily there was just enough time to dig up maps of the concourses and main building at the last minute; so we decided to link up in the atrium, which is near where the two terminals join outside the main security funnel. After arriving the pastor and I set up shop in a spot where we could establish over watch of the checkpoint and baggage claim areas. In the end ma's cell phone rings in my pocket and Miles walks up from behind me; beats him having to page Spidey01 to the information desk. Ha, that indeed would have been funny xD.
This was the first time I've ever met the face behind the text/voice/pictures behind someone I know from the Internet. Wasn't anxious about meeting my friend 'for the first time', so much as how many ways that law writing bastard Murphy might put a monkey wrench into his holiday. We've known each other for a good while, including our real names. Our ride 'home' was largely spent catching up, looking at photos and feasting on a bag of erdbeerschnüre :-). That reminds me, there's still some left!!! What a friend, who brings snacks :-D. Finally got to see him meet my mother and the dogs, been wondering what that would be like lol. It was also a little bit odd using real names instead of call signs, but I would say we got along reasonably well; also I couldn't help but smile when he nearly called me Spidey in front of my mother xD. It was also nice to hear how well his spoken English has held up, except for the word "Eggs" the only times I had trouble understanding Miles was an issue of volume. I guess nether of us are really loud mouths unless provoked lol.
Since the cars water pump had yet to arrive, and ahem, getting around our area of Georgia without a car is one of those, "You may try surviving a zombie apocalypse without weapons" kind of affairs, renting a car was a necessity. I think after walking around down town here, Miles can comprehend that legs first lol. Hunting down the nearest car rental company was easy, finding their branch wasn't half as simple; blasted Google map! Plus ma was pissed they didn't have any cars available when we showed up; we had to come back later. Not to mention the process of renting a car in America is almost as invasive as talking to The Government. Beyond that it was a great experience working with Enterprise rent a car. Thus I ended up behind the wheel of a Chevy Cobalt for the week. Despite having more microchips than my desktop computer, it's handling was very close to what I'm used to driving. I actually liked that Chevy because unlike my brothers car, it actually fits my taste: handling more like a car than a hair trigger. The former being ideal for a more urban'ish setting and the latter for abusing the laws governing free/express ways. To each their own I guess. The amount of standard issue tech' stuffed away in modern (cica 2010) cars is also kind of amazing for me, considering that I still remember when power windows and locks were sort of luxury features; I can't help but feel old.... :-/.
After a quick meal Friday night, we hit the local cinema for a go at a film called Inception. It's a very interesting, if complex thriller about inserting an idea into some exec's mind via shared dreaming. For me it's even more engaging a film because I have problems sleeping and often experience some really awesome^H^H^H^H^H^H^Hludicrous dreams. Miles also got to experience the difference in movie popcorn on this side of the pond. I'm sure Miles also got a closer look at my fouled up sleeping patterns.
On Saturday we joined an Airsoft event on the other side of town. Of course I have no idea how Google came up with that, since iirc Miles had Googled for paint ball lol. I've always been interested in such things, but for finacial reasons have never had the chance to try airsoft before. We packed a cooler with about 4 litres of H2O and a pair of foot long sandwiches. I've got to admit, that Miles is one hell of a sandwich maker ;). Lacking any airsoft equipment, we had to rent a set of G36C AEGs and paintball masks, on top of that we were like 20 minutes late. The afternoon was spent alternating between airsoft games and leaning against an open trunk: hydrating, eating, and loading BBs. The games were split between deathmatch/objective respawn games in the backwoods and no-respawn attack/defend ops in a field with obstacles and light buildings.
Moving tactically was fun, and having to RTB through thick brush every time you get shot is enough of an effort that you want to avoid being hit! Not as much as in real live warfare where getting hit may mean death but still enough to take it very seriously. It's been a few years since I've done that kinda stuff phsyically, let along been through woods. The simulated G36Cs had plenty of ammo per mag (drat) but using the peep sights while wearing a PB mask was a bit more probmatic; I preferred using the stock and semi-auto from a supported position. Most of the things I know apply much more cleanly to airsoft than online gaming, come to think of it! Despite best efforts at sure safety during the day: I still managed to fall down a hill, knocking my mask and glasses clean off; scratching up my right forearm by trying to force myself through thick foliage with my carbine leading the way, only to find half of it was full of thorns!; Being used as a "Walking shield" by one of our living teammates, as I was walking to the deadbox after getting shot; almost getting strangled by a piece of tree while 2-man carrying an objective crate back to base, only to get shot a few moments after extricating myself lol; and getting shot in the Adam's Apple while covering Miles' assault up a hill, all because the OP4 assigned to assault our teams' position obviously had a few campers who survived past end game phase 8=). It was loads of fun with the airsoft stuff and I can't thank Miles enough for that afternoon. Interestingly, while I'm largely chained to a computer non stop, I seemed to hold up to the prolonged exertion better than Miles did lol. We also learned that long sleeves are a Good Thing(tm) for such a game. A canteen or water bladder isn't a bad idea either but the games only ran like 20 minutes a piece. Someday I need to build up an airsoft kit and go back (y), and remember the long sleeves!
Played a couple games of chess overnight, allowing me to test two different strategies on him: blob and dynamic. The former being designed to curb attacks rather than seek a decisive action, and the latter based on a fast, dynamic take over by high value pieces. The second game saw what has to be one of the worst opening plays I've ever made, but it served it's purpose well: get my most useful pieces ready. It was a close game until I finally screwed up. Gotta admit that playing chess IRL is easier, because Mal.exe can't distract me with the subject of cleavage. Miles and I have played chess over the Internet a few times, but it was great to be able to get my chess board out of mothballs for a change. I rarely get to play, and I do enjoy chess very much, when my brains in fit shape.
Sunday morning was a visit to our old church. I think Miles was happy he didn't get hearing damage from the loud music xD. It's not a, eh, quiet place. Curiosity seemed to get the better of him, although I would not call my friend a church goer by nature. The evening was spent in an arcade, where we almost beat The House of the Dead but were defeated by the final boss. I must admit failure drills work well against zombies, especially if you aim using the light guns sights and close one eye from time to time. With like 6 shots between reloads, you also learn how to trust and cover your teammate in a game like that. Ironically I had just been thinking about that game like the week before.
Since Miles never had Jaw Breakers, Monday morning I called up the local candy shop and we took a ride down to Fuzziwigs in between grocery shopping. After enjoying a few gobstoppers, we walked around the area for a bit. Miles decided to pick up a copy of Prince of Persia: Warrior Within; so we spent part of the afternoon playing that over a round of non-alcoholic beer and substitute twinkies. I think that is probably the most alcohol he has had in a while and I rarely drink but hey, it was bound to happen eventually :-o. Perhaps the choice in beer, might also have gotten my mother to figure out that drinking a bar dry wasn't on the agenda for us two. The non-alcoholic beer wasn't bad actually, and it's nice to be able to taste the actual beer rather than the alcohol content; last 'drink' that I had was a brandy my mother convinced me to try, which I didn't care for, just for that reason: it had a taste on par with the smell of rubbing alcohol. Given the choice, I'd take the NA beer instead. Then again, given the choice I'd likely be drinking water anyway, lol. Later on we took to the arcade and beat Time Crisis 3, it only took most of $20 in tokens. Blasted clawed goons... Before calling it a night, we hit the billiards table and played a game of the eight ball; only thing is after so many years, I'm totally useless with a real cue! That however is just the way life's cookie crumbles. After Miles went to bed, I took a while to master more of PoP:WW, until my mother broke my concentration 8=).
Tuesday was mostly a waste of petrol, when we went exploring the next city. That night we hit the cinema again and watched Avatar after a feat at Golden Corral. I cannot say that I enjoy the "3D" thing but I seriously enjoyed the film andn it has a spectacular visual style. O.K. so I love sci fi, sue me! I also believe that the solution to many problems lay between the cold steel of mans high technology and the biological nature of the Na'vi existence. My P.O.V. on that may partially be to blame on readings about Kashyyyk, but that's a different matter. Miles also knew that my last outing to a movie theatre was 2005s Episode III, so I reckon he couldn't help but cram the cinema into things lol.
Wednesday I woke up to Miles having fixed breakfast, a concoction roughly being toast, bacon, egg, and beans layered respectively. It was delicous! On Wednesdays I often go without eating until supper time, so it was even better timed on his part. It wasn't long before my mother started barking for me to get dressed at 11:30. I calculated what time was actually needed: about 15 minutes to get dressed and load the car, another 35 for driving to work. That left 10 minutes to spare for getting to work on time at 13:00. Ma was late getting dressed and we still got to work with almost 10 minutes to spare. That goes to show I know a thing or two! Miles decided that he was coming to work and helping with the cleaning job. We got out about an hour earlier because of his help and ma wanted to hit a grocery store on the way back home. Miles did me the biggest favour: he found the twinkies while we were shopping xD xD xD. After getting home, we had to break open the box; there is nothing like a real hostess twinkie. Spent the night chatting and laughing through Down Periscope. A most excellent comedy pitting a WWII diesel submarine against the modern navy: sometimes thinkin' like pirate owns.
Thursday was the trip back to the airport for his flight home. It was also the first (and so far only) time that I've gotten to drive on the interstate. My mother's paranoid about such things. IMHO it's no worse than driving the main highway here, only big difference is there is a lot less traffic and higher speed limits. I made sure that Miles got checked in and ready to pass through the security check point before wishing him a safe trip home. Getting around the airport is actually pretty easy (for me), so it is hard to get lost, it's just a matter of figuring out where you need to be :-o.
This journal entry is already quite long, so I guess I'll call it a night instead of keep pumping memory and trying to put it in semi-comprehensible order. Don't think I will ever forget Miles coming to the U.S.A. either, so I guess I don't need to worry about updating my journal. If he has no objections, maybe I'll insert the picture of us into this entry for good measure.
Either way, I think it's almost time for a quick rest and some zombie slaying.
Subscribe to:
Posts (Atom)