X11 Must DIE

Unix, C, computing like it's 1980.

Month: December, 2014

Totally plugging other people’s blogs…

“In each of my friends there is something that only some other friend can fully bring out.” CS Lewis.

A few weeks back I mentioned Clojure, and requested some input from an internet friend of mine.  I got to thinking about this a bit, and decided that it would be a horrible disservice to not share the blogs of a couple of guys that I regularly bounce ideas off of.  Ironically, the below are both Java guys, with some Clojure experience.

http://informatica.boccaperta.com/ – gekkop

http://franksn.github.io/index.html – frank sinistra

While I can’t speak for the quality of their blogs (which are almost 99% certain to be of higher quality than my own), I can say that the authors of each are both respectable and knowledgeable people.  Seemed a shame to not give credit to them for sharing ideas with me.

Advertisements

Sharp Reality

“If anyone tells you that a certain person speaks ill of you, do not make excuses about what is said of you but answer, “He was ignorant of my other faults, else he would not have mentioned these alone.”
― Epictetus

I  believe in constantly pushing myself to do and be more than I currently am.  In doing so, I am reminded of a few facts on a regular basis.  I suck at everything.  Programming regularly with Scheme has reminded me that I am terrible at Scheme.  When I spend more time with C or common-lisp, I’m far more certain of how much I fail at those too.  Every time I do something, my blatant failure rises to the surface.  I figure that this is good, as it means I’m still human…but just instantly getting things right would be cool too.

Still, I’ve come to realize something through lifting that might be worth sharing.  The longer out from gym or competition that someone has been, the higher their perceived ability.  It never fails.  Most conversations go something like:

Random Guy:  “Hey bro, how long have you been lifting weights?”
Me: “A few years.”
Random Guy: “Cool stuff.  What do you bench?  When I was in high-school, playing football, I benched sets of 5 at #700.”
Me: “….”

Normally, this is coming from a guy that I would say without a doubt has never seen more than #225 on a bar.  It’s like the longer that they’ve been out of the art, the more weight the imagination put on their own abilities.  After a few years, they’re mentally breaking world records.

That being said, regularly doing anything is a great reminder of where our abilities really are.  As I improve at anything, I meet opposition and utter failure which tends to keep the ego in check.  Ironically, perhaps, it’s when I’m really making improvements in my own skills that I feel utterly humbled by all that I don’t know.  Maybe there’s something to that.

This is one of the biggest reasons that I instantly turn off someone who’s always talking about how awesome they are at anything.  Every once in a while, it’s true, but more often than not, it’s the inflation of ego caused by not having actually done anything at all.  The people who do the most, seem to be too busy talking about the things that aren’t working over the things that they have fixed.

I guess if there is some way to summarize this inherent babbling, it’s “Stay humble…which tends to take care of itself if you’re making progress.”

The Tai’ Chi approach to code-kata.

taichi

For those of us who can readily admit that there are areas where we personally could use improvement, I present a simple idea based on archetypes from martial arts.  Now, let me first of all state that while I’ve done a good bit of boxing, I am NOT a kung-fu master, so I am making relationships from nothing but my extensive time watching bad Hong Kong Cinema kung fu movies.  If I blow the metaphors out of their original context, you’ll just have to excuse me.

Anyhow, code-kata is not a new concept.  It’s actually a pretty solid idea, that by practicing something, you get better at it.  Almost everything works like this, and I think that kata styled programming is an excellent way to stay sharp on what you have learned.

That being said, I’ve watched enough kung-fu movies to know how the student eventually learns the secret technique that he needs to defeat the super-awesome bad guys and/or evil dragon-style master who killed his family.  He goes to the mountain or temple, meets an unlikely hermetical master (often a drunk), and through repeatedly failing learns some secret technique that allows him a leg up on the competition.  Sometimes, he/she will see a mantis fighting a spider or something, and then ‘pow’, inspirations strikes.  There is a moment of enlightenment where all of our hero’s weaknesses have been addressed because after the regular training, he was sitting quietly and contemplating something.

I would say that this is the step that kata often ignore, and for the sake of this discussion, I’ll call this the ‘tai chi’ approach.  It’s not the movement itself, but the repeated introspective practice followed by meditation on the subject that allows us to have the insight to rise above our current level.  I am not by any means suggesting that you wear silk robes to work and burn incense at your desk (unless your boss is fine with that, in which case, by all means…it seems like it would be pretty comfortable.)  What I am suggesting is that if you do use kata of some kind, to do so with a thoughtful presence, closely examining each step.  How could you make it better?  What is really happening behind the scenes?  Is there another way to do the exact same thing?

Often, it’s only after I’ve finished a project that I’ll look back and realize the problems with my own methods.  There is almost ALWAYS room for improvement, and by spending more time looking at the small parts of the small projects, the bigger projects are easier and more concise.

I’m not saying that studying is a replacement for regular practice, but that BOTH are necessary to reach enlightenment…and by enlightenment, I mean when you can spot a segfault in three-star pointers at a glance (or whatever your language of choice has to offer.)  In the end, it is the practice of solving problems that leads us to find the answer when we are finally able to still our busy minds.

“It took me ten years to discover my chi, but thirty years to learn how to use it.”
– Ma Yueh Liang

Furthering the list of things I (or (didn’t) (don’t)) know.

schemelogo

After my last post, I decided that my knowledge of the current state of any language outside of those that I might regularly use could use some refreshing.  As such, I spent some time speaking to a few schemers to figure out what I’ve been missing.  The answer, in as few words as possible, is “a lot.”

First of all, the R6RS has been ratified.

There are so many implementations that I will just link you to another wonderful page that includes a bunch of them.  If you have a question that isn’t clearly answer, there is the #scheme IRC channel on Freenode who actually has shared the previous years+ of IRC logs, which you could search through and probably learn a ton.

…and finally, I’ve learned that my own grasp of Scheme beyond basic educational writing is pretty weak.  I plan to personally ratify that, as it’s a really beautiful and simple language with some insanely powerful applications.  While I realize I’ll never know everything, it never hurts to know more than I currently do.

Fun Links!!!

((Schemers dot org) (community scheme wiki)(readscheme dot org)(community on choosing first implementation)(some wikibook with more links))