Frisky

This is Frisky. She’s one of the most wonderful puppies in the world. She was found, abandoned, by the Fremont Dog Park and taken in by her new owner (I dont know his name… um… “Frisky’s Dad”) right then and there (he couldnt let a puppy go on without a home.) Soon as we get a place where we can have more than one dog… I’m totally stealing her! She’s wonderful. Playful, energetic, loving… LOVES to rough house and to get pets. She’s about a year old. Totally my favorite dog park buddy!

Dude, You’ve been hacked!

While investigating a breakin on a freinds server I came across this pretty damn cool little utility: The RootKit Hunter

It’s a spiffly little piece of work, and it helped considerably. This server, for reasons I can’t say, couldnt be simply wiped and reloaded in a short time span… and HAD to, for a particular service that it performed, stay up for the duration of the week. This little tool helped considerably in cleaning the server out relatively well.

Still, when possible, wipe and reload after a hack attempt is the BEST choice. Cleaning is an imprecise art at best.

Things are looking up for apache (no, not the web server)

Apache, who had suffered tissue damage (muscles), and had several inflamed internal organs, and had (possibly) a fracture in her pelvic bone, is recovering. The vet put her on steroids to help with the pain and inflamation. We’re now weening her off of the steroids (she’s now down to one every other day.) And after two more weeks we should be able to let her roam freely again. She’s been confined to a single room for, gosh, 3 weeks now? And she’s hating it. She’s an in/out cat and she really likes to roam the neighborhood. She’s also been eating a lot (because of the steroids) so she’s plumped a little bit. Apache is, however, back to her normal self with us (very effectionate, purring like a little kitty-motor-car) She’s a very good kitty, and I’m glad shes on the road to recovery. Poor thing

Information overload and search vs relevance

Increasingly people are having less of a problem finding the information, and are now having more of a problem managing that information. Often times I find myself frustrated at people who cant find what they want via a search engine, and then a matter of seconds later (with the same search engine) I’ve pulled up a list of highly relevant information for them. The problem isnt that they dont know how to search… the problem is that they dont know how to apply relevance.

As an example… A dog lover who hits the internet for the first time might pop over to google and search for “training bitches” You can imagine what they might find. Any tech savvy person would have searched for “Dog training bitches” It’s amazing what a little bit of relevance will do when used properly! The problem is that most people arent tech savvy, and most people dont think in terms of relevance!

As an engineer, and as an ops guy I’m constantly aware of the relevance of what I’m doing as well as how it affects the neural network of aparati around whatever mode or framework that I am operating inside (be it reality, an application, or google.) My grandmother is not.

Of course when people think search and relevance they think spyware, and understandably so. But would it really be so difficult to build an application which was really able to exploit relevance in such a way as to be easy to even the worst novice? I could imagine several ways, all of which would get me booed off my soap box… and the ones that wouldnt wouldnt please the techophiles…

Maybe thats the problem. The divide between the eleetist users and the novice users is shrinking, causing the real eleetist folk to dig in their heels and resist anything which would help close that divide even faster (especially when privacy is mentioned). But until grandma can use the web just as well as I can… the job isnt done…

Web 2.0? hardly. Think 0.75

Paying it forward… To yourself

I’m a pretty lucky guy. Today, when I told my boss “I need to spend a sizeable chunk of time doing this right (that is re-doing it since we’ve solidified on concepts and semantics since the proof of concept version of this code)” he understood that it was important. He gave me the rest of the day to refactor that code.

It would play to my ego to think that since I’m such a wonderful engineer my word was taken as it should be — as the absolute unabashed unbiased truth. Unfortunately I’m not the golden child of engineers; and fortunately I don’t view myself in that way (nor do I wish to do so.) The reality is that Scott took my advice, weighed it, and gave me the chance to pay it forward.

So, four and a half hours of work today allows for a time savings of 75% any time we want to write a new feature for a particular (and important) area. The truth of the matter is that we may not put in more than one feature there before release, but the company that I work for has turned its mind to planning and true agility.

It’s sad to think that a large percentage of companies would have (at this point: pushing towards an initial release, and tantilizingly close) simply written it off as not immediately important. While it’s true that getting to the goal is hugely important, it’s also true that getting there with a torch that no longer supports a flame really defeats the purpose.

So even as tension mounts with personal and business life colliding (as is oft the case with startups), not to mention business relationships stressed by the sheer exhaustion of effort, Scott still seriously considers my advice and allows a fair amount of freedom in my momentum.

Maybe it’s because hes a macro, as opposed to micro, manager. Maybe it’s because we’ve worked together for so long. Maybe it’s because I’ve never let my employer (him or otherwise) down. Heh… Maybe it was just a good day on the other end of the IM session. Whatever it was… Thanks

DK

7 Things You Should NEVER do at the dog park

    1. Never bring your dog in on a leash
    2. Never loose track of your dog
    3. Never hold just one of two excited dogs back
    4. Never give food to a dog without the owners permission
    5. Never assume that other people know what they are doing
    6. Never EVER being a dog that is agressive (or unsocialized)
    7. Never bring a dog who is not obedient to the dog park

    1. Never bring your dog into the dog park on a leash. It’s safe to assume that a large percentage of “incidents” at a dog park are caused by people who’ve brought their dog all the way into the dog park on a leash. An owner who is nervous or fears for their dog will pull back on the leash and draw the dog into an upright position. Chest and head up, shoulders back, is a dominant and or aggressive position. This forces the other dog to iether bend to the leashed dog and be submissive, or prove its own dominance. If you fear for your dog pick it up and walk out of the park.

    2. Never loose track of your dog at the dog park. First it’s irresponsible for you to leave your dogs droppings lying around the park. Second It’s not anybody elses responsibility to dog-sit your dog. And most importantly if your dog gets in a fight at the other end of the dog park you might not be able to get there until its too late.

    3. Never hold just one dog back. If you feel that playing has gotten too excited, or that there could be problems between your dog and another, holding just one dog back is akin to holding your sons arms so that he cant hit while the school bully pummels him… If you cant hold the other dog back for some reason, pick up your dog and leave the park.

    4. Never give another persons dog any type of food unless they say it’s ok. Dogs, like people, can have alergies. If a dog is alergic to an ingredient in the treat you just gave them it could do anything from making them itch to killing them. Dont do it.

    5. Not everyone is an expert in regards to their dogs. Whether its because the neighbor/friend/child brought the dog to the park, or because they are new to the dog park, or any other reason. Dont assume that people will be responsible for you. Aways be alert and aware and ready to deal with any problems.

    6. Bringing an aggressive or unsocialized dog to the park is a bad thing. If the dog is aggressive then leave it at home. period. always. If the dog is unsocialized that you dont KNOW if it’s aggressive. Try finding a playmate or two, or take him on a trip to the pet store to see how he behaves first.

    7. If your dog doesnt obey off leash then work on obedience first. While this isnt absolutely necessary it is very important, and could even save your dogs life. If he wont come when called how can you prevent him from getting in the middle of a fight and injured? Unless you run faster than he does, you cant!

academically interesting…

I completely relate to Joe Stagner, who just wrote Trying to grok Ruby on Rails and says “Rails is what I would describe as academically interesting. […] But I kept asking myself “so what”?” Well, Joe, I would say that you grok it perfectly well. It’s definately an excersize in “old hat” as you say.

There is nothing truly new or unique about it. This is much like we’re seeing with all web development. Got a bunch of young fresh smart guys (and I’m serious, this is NOT a put down of anyones skills) who have a, genuinely, good Idea and say “Hey look what I just figured out I can do!” Unfortunately it’s like an uneducated person coming up with the theory of evolution: Yes its a good idea, yes you’re very smart and probably right… but… no… it’s not new…”

The monkeys may, eventually (and given enough time), pound out Shakespear but it was still good old William who really invented it.

Building and using large scale arrays

Here’s a real world example of what I was talking about earlier (using all parts of an array as relevant data) This is a small piece of some blogging related code I wrote earlier this week for Ookles (this is a part of a code package that will be made generally available when it’s ready)
[coolcode]

function get_html_metadata($url) {
/*
Example usage/test code

$test_urls[]=”http://jwz.livejournal.com/”;
$test_urls[]=”http://fuzzyblog.wordpress.com/”;
foreach ( $test_urls as $url ) {
$meta_tags=o_get_meta_tags($url);
foreach ( $meta_tags as $tag_type => $val ) {
echo “Tag Type: {$tag_type}
“;
foreach ( $val as $tag_type_number => $val ) {
echo “\t#{$tag_type_number}
“;
foreach ( $val as $tag_meta_key => $val ) {
echo “\t\t{$tag_meta_key}:\t”;
foreach ( $val as $tag__meta_value ) {
echo “{$tag__meta_value} “;
}
echo ”
“;
}
}
}
}

*/
$data=trim(file_get_contents($url));
$data=str_replace(chr(10), ”, $data);
$data=str_replace(‘/>’, ‘>’, $data);
$data=str_replace(‘>’, ‘>’.chr(10), $data);
$data=explode(chr(10), $data);
$meta_array=array();
// Loop through the different tags matching only tags with an = sign in them
foreach ( $data as $line ) {
if (ereg(‘<([^ ]+)[ ]+(.*=.*)>‘, $line, $r) ) {
$meta_type=$r[1];
$meta_counter[$meta_type]++;
$current_meta_counter=$meta_counter[$meta_type];
$mini_data=str_replace(‘=”‘, ‘=’, $r[2]);
$mini_data=str_replace(“='”, ‘=’,$mini_data);
$mini_data=str_replace(‘”‘, chr(10), $mini_data);
$mini_data=str_replace(“‘”, chr(10), $mini_data);
$mini_data=explode(chr(10), trim($mini_data));
// for debugging: $meta_array[$meta_type][$current_meta_counter][‘original’][]=$r[0];
foreach ( $mini_data as $val ) {
$val=explode(‘=’, trim($val));
$meta_key=$val[0];
$meta_val=$val[1];
// build our array
$meta_array[$meta_type][$current_meta_counter][$meta_key][]=$meta_val;
}
}
}
if ( count($meta_array) > 0 ) {
return($meta_array);
} else {
return(FALSE);
}
}
[/coolcode]