usable in any place a human can be used

Showing posts with label meta. Show all posts
Showing posts with label meta. Show all posts

20100625

Out of the world

[caption id="attachment_853" align="alignright" width="400" caption="This smarmy bastard\'s finally come back to Ohio"]The sun[/caption]

I've been out of the world for a little while, approximately 40 some days. I unplugged from a lot of things to focus on some big changes in my life. There was a kind of, cliche alert, perfect storm of events that made me feel like dropping off the grid for a while and just relaxing.


First off, this blog, which brings immeasurable joy to so many (for free I might add, actually the hosting costs me money) got 1337 h4x0rz pwned. You see I made this mistake where by I tried to express myself... foolish bastard that I am. Someone decided that all the good will and popularity I had generated through months of concerted effort and promotion would be better used to sell some scummy fake AV software. I quickly fired up my ftp and an editor to find out what was going on, I was able to detect the hack right away (normally don't have giant evals at the top of my pages), some quick regex work and I was able to disable the attack within less than an hour of detecting it. But I had been compromised, and even though I had been able to address the immediate issue steps needed to be taken to protect my blog and the fine people that come and read it. I decided to take it down until I could get it cleaned up properly. I felt terrible, but I had taken steps to prevent such a hack from occurring, I couldn't figure out what had happened. Then I saw this and realized that is exactly what had happened to my site. I felt a little bit better that this wasn't my fault and I wasn't alone.


The second major thing is that I quit my job. I worked at HMB for just over 2 years, and I learned an immense amount, worked with some of the best people I've ever met, and went from Ramen Noodles on milkcrates to my comfy house and filet mignon (if Burger King is still putting filet mignon in their hamburgers). It was a fantastic place to work right out of college but towards the end I felt like it wasn't where I wanted to be in life. I found an opportunity to go work for a young media company in town that needed an experienced PHP programmer to take over for their "web guru." I'm incredibly happy to report that I took that opportunity and am currently running with it.


The third major thing is that I was burned out. My last project at HMB was difficult, difficult for me personally in every way I can think of. I realized near the end that I was at my breaking point, I was frustrated, angry, and plain unhappy. I felt like I had nothing left to give, I felt completely worn down, and I knew that something would have to give.


That's where I found myself a month and half ago, in a strange position where I was frazzled and broken but ahead of me sat this golden opportunity. I decided that I would unplug, unwind, and rebuild. I had become that proverbial Windows XP box with the 2 years expired Kapersky that was slowing to a crawl. My hardware was fine, but I needed to reformat (preferably with Ubuntu or maybe into a Hackintosh) and recover. One of the things that went on the chopping block was blogging, not intentionally at first, but once I stopped, well an object at rest tends to remain at rest...


I'm happy to announce with the relaunch of this blog that the "reformat" worked. What you see before your eyes is a fresh WordPress 3.0 install (with all the old content recovered from my numerous backups), a visual reboot (this is an out of the box cleanr right now, I'm planning on adding my own personality in gradually), but most importantly, a happy blogger typing. I've spent the last month and half settling into my new job at 614 Media Group. I'm not sure what my title is, on one piece of paper it says Web Guru, which I don't much care for, I've seen and heard "Head of Web Development and New Media" which I like, even though its a bit wordy. I can tell you though that I'm in charge of PHP development (along with iPad and iPhone development to come) and that I'm loving it. I have a swanky new office, I get to work in TextMate and git and PHP all day, it's a dream come true. I work with friendly, hip, funny people. I'm still finding my place there, but I have already figured out it's where I belong. For the first time in a long time, I'm building things, and it feels so good to build again.


I'm not really sure what else to put in this post, I plan to start up the blogging again, refreshed and reinvigorated. You can expect to see a heavier focus on PHP and Cocoa, but I will still go off on my other loves, Ruby, LISP, JavaScript, and probably fall in love with some more. And even though I'm happy and contented I will still have amusing rants (just ask Heather if you don't believe me.) I haven't decided how much I'm going to blog yet, I'm hoping for a couple posts a week, but I'm sure I have plenty of topics to cover from the time I was gone so it might be coming a bit fast and furious for a while.


In conclusion I just want to thank all the people that helped support me when I wasn't feeling at my best. My wonderful girl Heather, my dear friend Jeremiah, my family, and so many others. I also want to thank HMB for giving me a place to grow and learn, I'm still proud of the work I did there and proud of the work they do. I'm sorry I was gone for so long, if you come back and give me your eyeballs I hope to open them a little and maybe make you smile.

20100309

100th Post Review

[caption id="attachment_792" align="alignright" width="300" caption="smile for now, soon I will devour you!"]monkey and tiger[/caption]

Here we are, my 100th Post! I'm going to give you an unprecedented look behind the scenes of ihumanable.com to see the magic that is my technology blog.


This blog started on October 2nd, 2009 (158 days ago). I have had a great time writing and have more or less kept up with my goal of blogging every weekday. I want to recap the numbers so far, talk about the best parts of the last 158 days, and talk about where I plan on taking this blog in the future.


By the numbers



  • Posts: 100

  • Comments: 440 (239 rejected as spam)

  • Subscribers: 183

  • Visits: 32,395

  • Pageviews: 46,664

  • Most viewed post: hustle


Best of the blog


It is hard to sum up what has been my best experience so far blogging. This blog has always served as a dumping ground for my day to day thoughts about developing software and exploring the fantastic world of technology all around us. One of the best outcomes of this blog is getting to know other bloggers, people who you may not always agree with but that are friendly and thought-provoking. Some of the great bloggers that I've had the pleasure of communicating with more through my blog have been:



I have had a few of my blog posts go viral mostly through the amazing community at Hacker News where I occasionally submit a post. My biggest honor by far though was having hustle featured in Lifehacker. It came as a big surprise to me, I got some pingbacks and before I knew it my server was feeling the squeeze, but thankfully (and with a little help from SuperCache) it stayed up.


If I had to pick my all time favorite post though, it would be one of my snarkiest, rantiest, and at least in my humble opinion, funniest posts to date. Making a sandwich, it's not a very funny title, but if you haven't read it, click through, it will at least make you smile.


This blog has been a great source of strength and a fantastic point of release for me over the last few months. I have used it to share my triumphs as well as my despair. It has been my megaphone, my confessional, and my soapbox. This has been the home of my baby and has sparked numerous discussions and debates that have made me a better person.


Into the future


After 100 posts, is there anything left to say? Of course there is, I plan on continuing this blog for as long as people still want to read it, and probably a good while past that as well. I recently attended codemash and the one thing I remember most was sitting at a table blathering away like normal and my good friend Jose says, "I didn't understand how you could blog everyday, but now that I've spent a few days with you I understand completely." Suffice it to say, I have a lot to say and I can't wait to start saying it. I'm not sure what I will fall in love with next, but rest assured you will be kept fully informed.


Takeaway


[caption id="attachment_795" align="alignleft" width="300" caption="the blogspot version of ihumanable.com... humble beginnings"]blogspot version of ihumanable[/caption]

Here is what I want you to take away from all of this. I started this experiment in social media with a simple free blogspot blog and a twitter account. I scaled out to this WordPress install on my own domain after I got a bit of a following. Then I just wrote, and I kept writing, and I promoted what I thought was important or particularly good, and you can too. For years I wanted to blog and just kept putting it off, one excuse or another would pop up. Then one day I decided to do it, and I made a deal with myself that I would blog every weekday, and I kept that promise (with a few extenuating exceptions).


There is no time like the present, if you have something to say, fire up a free blog and start typing. At first you may just be talking to yourself, but over time people will listen, people will comment, people will come to understand you and the things that are important to you in a way that they never could otherwise. There is no reason to hold out now, go out there and make a mark, you may be barking at the moon but it's better then staying quiet and wishing you had later.


Thank you to everyone that has taken this ride with me so far, the last 100 posts have forever changed the person that I am, and I'm excited to see where the next 100 will take me.

20100308

settling in

[caption id="attachment_787" align="alignright" width="209" caption="No, no, not you Hugh Laurie"]House surrounded by prescription bottles[/caption]

Here is a rare post, something not bitching and not about technology. Let's say that this is a meta-post, a kind of explanation for why my posting has slowed down the last week and some personal news. First to address the slow down. Last week I had the luxury of experiencing business travel for a whole week!. Now to the grizzled road warriors out there who do this all the time I will come off as a whiny little boy, but I didn't have the time (nor the internet connection thank you very much Merrillville Courtyard) to do much blogging with the 10 hours of meetings daily. Don't worry though I have some good thoughts ruminating from the experience.


Secondly I have just moved into my *fanfare goes here* new house with my lovely girlfriend Heather. Having these two events juxtaposed was a bit stressful and difficult, but we pulled through. Trying to merge all of our stuff together and get everything in order is a bit trickier than just git merge matt heather. Its very much worth it though as we now have a lovely little home to call our own and my dog has a backyard to play in instead of tearing up my apartment.


This is going to be a short one today, I've been keeping busy working my 9 to 5, my side projects, traveling and blogging and releasing point-releases of Prosper. Tomorrow I will post my 100th POST!!!. I hope to make it a good one, it will be full of numbers and analytics, lessons learned, people met, and the story of how my inability to shut up has turned into a somewhat successful blog. I hope you will all enjoy it, but you'll have to wait for tomorrow.

20100223

to tweet or not to tweet

[caption id="attachment_758" align="alignright" width="300" caption="web 2.0 kids these days with their tweeters and facespaces, I used to have to text on a 12-button phone and I liked it!"]twitter bird[/caption]

Ever since I started writing ihumanable.com so many many years ago (actually it was the beginning of October) I have tweeted the birth of every new blog post. For those who follow me (see the button at the top of the page to join the elite group of @ihumanable followers) I expect that you spend most of your day with bated breath waiting for the singular moment of glory that a new ihumanable blog post is ready for your consumption. I was pointed to an article today by Shawn Blanc about how to handle the tweeting of blog posts. The logic boils down to the following




  1. Some folks don’t care a dime about my nerdy posts, but have great concern about what I eat for lunch.

  2. Some folks are already subscribed to my RSS feed and would prefer to keep it there and nowhere else.



The solution Shawn Blanc comes up with is to have two separate twitter accounts @shawnblanc for personal "what I ate for lunch" tweets and @shawnblancnet for stuff about his blog. So the question that leaps to your mind is, should you immediately start following @ihumanablecom for all the updates about the great free content / ranting with oddly captioned pictures that I produce? No, no you should not, and I'm about to tell you why.


I have an RSS feed and twitter, some people would argue that I shouldn't tweet about blog posts because what if someone is both subscribing to my feed and following me (thanks to anyone who is so devoted). This poor unlucky bastard will get the grand news of a new post in gasp 2 different places.


This argument doesn't make much sense to me. Twitter is passive, it is the un-email. You follow people you like, you see their tweets, there is no "unread count" or really anything expected at all by the tweeter from the tweetee. This is why people love to tweet, its the best part of any conversation, the part where you are talking. Look at some of the recent important tweets.


Faught an old man for a parking spot at ihopp - AmandaSollenne

A man is a man when he can offer his hand. The Who - wealthmoneynow

Straight up doing nothing. Have a dentist appointment after school. then have to go to court for 5:30. Then have a bunch of homework. Great. - JamieBaskett

Now I'm not picking on these people (I don't even know them) I just went to the public timeline to see what was currently running through the tweet stream. The point is that these are low-value easily ignored communications. If something shows up in your tweet stream that you don't care about, at most its going to waste 140 characters of mental processing power.


The second argument is that somehow people could care more about what I had for lunch than my blog. What I have for lunch is some meaningless data point about my day it means nothing to me (although today's Grinders Chicken Parmesan Stromboli was amazing). This blog which I spend all kinds of free time and energy on actually means a great deal to me. I want to be out there promoting it and if you are following me on twitter I would imagine you would want to see the things that are important to me. If not then why are you following me.


I have people following this site on RSS and people following me on Twitter and I would imagine its not a perfect overlap. When I first started this blog I had no RSS subscribers because it was fresh and new, so I promoted it with a simple (usually less than 140 characters) tweet, one per day. Now I have people following me on twitter solely because of this website, and it would be a disservice to them to stop tweeting about the blog posts now, changing the rules all up midstream.


This blog is important to me, me @ihumanable. The things I write here are an expression of the frustrations, lessons, and victories that make up my life. I could easily start an @ihumanablecom (if its not taken) twitter account and tweet new posts out through that. But that doesn't make sense to me, @ihumanable is where I tweet things about me, ihumanable.com is about me, and so tweets about ihumanable.com will continue to be broadcast through @ihumanable.


The argument against blog post tweets fails to understand the very nature of twitter, it is a passive, non-blocking, stream of information. If someone is spamming hundreds of tweets a day about pointless blather (well then they are probably using twitter) then stop following them. If someone is trying to share something that they have worked hard on and care about once a day, then I would hardly think we need to erect walls of netiquette around it.

20100215

leaving on a jetplane

[caption id="attachment_735" align="alignright" width="300" caption="Oh captain poopy-pants is cranky, he didn\'t get his FAA regulated maditory nap-time."]baby riding plane[/caption]

Well as Central Ohio prepares for another 4 to 8 inches of snow today I just printed my boarding pass for tomorrow. I'm off to the most exciting place on earth, Indiana. I will be meeting up with the newly assembled SOA team, hopefully hitting the ground running making all kinds of fun message flows and translation logic. I'm excited because when I wrote climbing a mountain on November 6th, 2009 this was the mountain I was talking about. The road to get started has been mired in difficulties so far, we've accomplished a lot just none of the programming yet. This week will hopefully be when the tools get handed over and I get the keys to dad's car, so to speak.


What this means for me is the joys of post-9/11 nudity body scanners to take a 1 hour flight to Chicago to drive 45 minutes to a small town in Indiana. What this means for you is that between the jet-lag, long hours, corporate face time, synergy backflow, and spotty hotel internet there may not be any blog posts for a while. I know that this is a sad announcement, whatever will you do without me ranting everyday about technology?! Well this is my 91st post, and if you haven't been a reader from the beginning I suggest you dive into the archives, there are a ton of fun and interesting posts back there. If you don't want to dig around in the guts of this site like a blind man searching for a nickel, then look at the top of the right-hand sidebar, those are the most popular posts by hits. Other people, sentient human beings read those posts a lot, had nice conversations about them in the comments, and in general found them to be entertaining or informative.


Unlike other blogs comments never close at ihumanable.com and I haven't become jaded enough to stop reading the comments. Every time someone has a witty thing to add to the conversation I get an email about it, I read that email, sometimes I reply in the comment thread, if you are extra special lucky you may even get an email reply.


I hope to be able to post at least once in my absence, maybe while waiting for the snow to get cleared so that we can leave, but it may not happen. Fret not though, there is a wealth to read and enjoy, most of the stuff I write isn't really time sensitive (although some of the bad jokes might be). Thank you for reading, once I take care of this pesky job that allows me to pay for the hosting that provides you with free entertainment, I will be back to write more.

20091231

goals

[caption id="attachment_507" align="alignright" width="240" caption="you have to have goals..."]lifestyle's of the rich and famous motivational poster[/caption]

It's happened again, Jeremiah Peschka has called me out to write a blog post, well you smarmy bastard, here it is. The topic of this post is goals for 2010. Its the end of 2009 and so we have time to look back and reflect, we can also look forward and plan out the next 365 days.


Personal


These are the boring goals that don't have any computers or lasers in them, they are just things I want to accomplish for me.



  • New House - In March I will be moving into my first house with my wonderful girlfriend, Heather. I want to make this house a great place to unwind after a long day, a home filled with love, and, of course, include a badass office where I can program to my heart's content. This last part has been made much more of a reality by the recent gift from my awesome coworker, Carrie Frazier, of two giant whiteboards.

  • Health - I've been focusing a lot on interpersonal relationships and side projects in the last year which has left my once not too fat body in a condition Wii Fit calls Obese. It's been far too easy to pick up a pizza or take Heather out to eat and I have paid for it by becoming a much jigglier Matt. I plan on getting back to the healthy lifestyle I once had, and dropping some of this pizza weight.

  • Ink - Jeremiah mentioned this and so should I, it's been a few years since my last tattoo and I've had an idea for a good one for a while, I plan on getting it done at some point this year, sooner rather than later.


Coding


It's been a busy year and most of my life centers around putting fingers to keyboards trying to make something worthwhile.



  • Prosper - This is my baby that I've painstakingly carved out of php for the last few months. I think it is actually getting to the point where people could use it and not have their entire project fail, it's that good. I want to focus on improving the core of prosper, building the community, and promoting the crap out of it. The ball is rolling on having my awesome friend and fantastic designer Ashley Kruso make a new logo for prosper and at some point in the next year it will move to its own domain. I already have an upcoming event to talk about it (more details in a bit).

  • Blog - This blog started out as a free blogger account, then I moved it to my own domain (which you are currently at) and it runs off of WordPress. The design started off with the zDark WordPress theme which is now heavily modified. There are some things that I've just been too lazy about to change.


    • Better dark-on-light theme - I introduced the dark-on-light theme for people that had trouble reading the light-on-dark theme. It is very much a dirty hack, it does not retheme all the elements, and it is fairly ugly. I've had a better version cooking for some time but haven't had the drive to finish it up, I will strive to do so for the coming year.

    • Wider Columns - It's no longer 1994, we can make a fluid layout with bigger wider columns. The content column is less than 600 pixels, which is pretty absurd. I plan on reworking the layout to take advantage of larger screens while still supporting people living in 800x600 town.

    • Disqus - If you read yesterday's article you may have noticed that I ragged on Disqus as being bloated and ugly. Daniel Ha from Disqus was nice enough to drop a comment on that post and we had a very pleasant email conversation. Since this is still a feature people are asking for I will look into implementing it again, I also plan on producing a how-to for WordPress integration to document it and a review of the service.


  • Ruby - I've fallen in love a lot this year, lisp, smalltalk, and ruby have been my new technology sweethearts. I've been reading and finding ruby to be an acceptable lisp and actually a a not too bad smalltalk. Ruby, especially when coupled with rails, is something I plan on learning intimately and I hope to be able to provide some cool tools for that community.

  • Git - I've been an svn man for a long time now, but I have moved on to GitHub and have been learning the ins-and-outs of git. I am going to strive to really learn git and to work in it enough over the next year to feel as comfortable with it as I do with svn.


Business


As much fun as coding is, unless someone is paying for it you are going to get awfully hungry.



  • Black Projects - I have a few black projects that I'm working on on the side. One of which has, IMHO, great potential. Within the next year I hope to have one of these live in production and at least breaking even cash-flow wise.

  • Professional presence - See what I'm doing here typing at you, making an ass out of myself, this is called blogging. Blogging is a great way to increase your visibility and presence in the world. Now I'm not just, "That guy with the glasses who says weird things," I'm "That guy with the glasses who says weird things... on the internet." Big difference. I love blogging and I want to start giving talks in real life and become more active in user groups in the next year.

  • Relationships - This blog has already connected me to some of the nicest and smartest people I've ever met. I've been building some strong relationships and friendships, this isn't just good for business its good for one's spirit. I hope to continue this trend into the coming year.


Conclusion


This has been a fantastic year for me, first one in a while I won't be sending off with a "Goodbye Stink Town!" I'm looking forward to what 2010 will bring, if the movies of the 80's are right our jetpacks and hooker-bots aren't too far off.

20091230

minimalism

[caption id="attachment_493" align="alignright" width="296" caption="minimalist staircase... looks really dangerous"]minimalism[/caption]

I am a minimalist at heart, I like simple things with clean lines and no clutter. This is one of the reasons I love my new iMac, its just a beautiful magic floating screen filled with win. Minimalism is more than just an artistic movement or an ironically expensive interior design style. Programming is by its nature minimalistic, we programmers (as I have said before) are a lazy bunch. No one wants to type the same code over and over again, so we came up with functions, and then classes, and then inheritance, and frameworks, and aspect oriented programming, and so on and so forth. We want to reduce the amount of work that we as the developer has to do.


Here is a simple windows program that pops up a hello world screen using Visual C++


[cpp]
// GT_HelloWorldWin32.cpp
// compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c

#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>

// Global variables
static TCHAR szWindowClass[] = _T("win32app");
static TCHAR szTitle[] = _T("Win32 Guided Tour Application");

HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));

if (!RegisterClassEx(&wcex)) {
MessageBox(NULL, _T("Call to RegisterClassEx failed!"), _T("Win32 Guided Tour"), NULL);
return 1;
}

hInst = hInstance; // Store instance handle in our global variable

HWND hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NULL, NULL, hInstance, NULL);

if (!hWnd) {
MessageBox(NULL, _T("Call to CreateWindow failed!"), _T("Win32 Guided Tour"), NULL);
return 1;
}

ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
PAINTSTRUCT ps;
HDC hdc;
TCHAR greeting[] = _T("Hello, World!");
switch (message) {
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 5, 5, greeting, _tcslen(greeting));
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
return 0;
}
[/cpp]

Holy Shit! This is after I stipped all the comments, removed whitespace, and reformatted to 1TB. But here is how much code you need to do something similar in C++ leveraging Qt


[cpp]
#include <QtGui>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel label("Hello, world!");
label.show();
return app.exec();
}
[/cpp]

This is great news for the developer, we can accomplish the same result with much less code. We are now much more productive and so we have freed up some precious developer time that we can spend on something else. Our code is much smaller, much more minimalist now, which is good because we are lazy. This ends up being a dual edged sword because there is now the temptation to start coding up more features, because they are so easy to implement now. We have made our code more minimalist but in doing so have enabled developers to make their applications feature bloated and anything but minimalist.


Jeff Atwood wrote a post yesterday, Responsible Open Source Code Parenting, in which he asserts that John Gruber is being a negligent open source parent.



I don't mean this as a personal criticism. John's a fantastic writer and Markdown has a (mostly) solid specification, with a strong vision statement. But the fact that there has been no improvement whatsoever to the specification or reference implementation for five years is … kind of a problem.

The question I had, and still have is why. I wrote this comment on Hacker News yesterday regarding this post



The idea that since markdown hasn't done anything in years its somehow being stewarded improperly is a bit foolish. Look at Gruber's vision statement, he wanted to make an easy-to-read easy-to-write markup.

He did it, it is done, it's called markdown. If Atwood had his way Gruber would have spent the last 5 years filling it up with features and today we would be reading a post about how Markdown went from slim and sleek to fat and bloated.

Gruber set out to do something, then he did it, now it's done. It's a minimalist approach. Atwood would have rather he spent the last 5 years allowing for "open source collaboration" that would help in "moving forward and maturing" Markdown. To what ends?


It is easy to add feature after feature to something with the belief that you are somehow adding value, but the whole world doesn't think this way. Let's illuminate this with an example.












Apple Remote Windows MCE Remote

[caption id="attachment_496" align="alignnone" width="80" caption="There are 7 buttons"]apple remote[/caption]

[caption id="attachment_497" align="alignnone" width="245" caption="The technical term is an assload of buttons"]mce remote[/caption]


That's how the Apple Remote is intended to look, it's not lacking buttons because they haven't gotten around to putting some more on, they intentionally kept it simple. Now I'm not trying to argue that one remote is superior to the other, I prefer the Apple Remote, but the important word there is prefer. Atwood makes the mistake of thinking since something hasn't changed in 5 years its a problem. What if Gruber did the cost-benefit analysis of the new features for the last 5 years and decided that it just didn't need anything else.


People have asked me if I'm going to use Disqus and although I tried it for a bit I decided to just use the simple built-in commenting system. Disqus was all kinds of bells and whistles, it is (in my opinion, which since it's my blog is the only one that counts ;) ) ugly, and it's benefit doesn't outweigh it's cost in my opinion. By the time I took out all the stuff that made Disqus feel bloated to me I realized I basically had the simple built-in comments, just hosted by a third party, so I abandoned it.


There is a cost to every feature you throw into your software, the cost is added complexity. I have decided that complexity better come with some gain for the user, otherwise I won't add widgets and gadgets and features just to add them.

20091206

you asked for it

[caption id="attachment_337" align="alignright" width="300" caption="who is this happy at work?"]who is this happy at work?[/caption]

I've been getting some feedback lately on the aesthetics of my blog, mostly its of the I-don't-like-light-text-on-a-dark-background variety. I got into a pseudo-argument about it here on Hacker News, then I realized I was being an idiot. People were telling me, I like your content, I want to read what you wrote, but because of the style choices you made it hurts to read and so I won't. So I thought long and hard about it and implemented a fix.


I wanted to first off let everyone know that this blogs theme started off as a great theme called zDark that I really enjoy. Over the last 2 months I have tweaked it and added somethings, removed others, and have gotten it to a place that I really like. Nothing is set in stone though, at the suggestion of Mark Essel I've bumped the text color from #bbbbbb to #dddddd. The point is that when someone complains about the theme, even though it's the exact wrong way for me to react, my first thought is "No one talks about my baby like that, nuh uh, no you didn't!"


After the initial offense wore off, I realized that people just don't want their eyes to hurt after reading my post, and I can understand that. That's when I resolved myself to fixing this issue, and I went looking for a solution, but not just any solution would do.


First off, I didn't want to change the default theme of the website, I really like it, and dark-on-light text hurts my eyes. Second, I wanted it to be something that stayed changed, without having to give people user accounts. Third, I wanted something that was unobtrusive yet obvious.


I fired up google and found Integrating Alternative Stylesheets in WordPress Themes it seemed like a great method for providing such functionality. It drops a cookie on the user's machine to remember the preference later, which is an appropriate use for cookies. So far this had hit points 1 and 2 of my wish list, now I just needed an unobtrusive, yet obvious user interface.


I hopped over to IconFinder (which in general is just a great resource) and started searching for some text icons. After a while I found a great dark-on-light icon and a few seconds in Paint .Net with the inverse color tool gave me a great light-on-dark icon.


Then I had to find a place to put these icons and hook up the functionality. I decided to put them above the posts in the menu bar, as can be seen in the figure below


[caption id="attachment_335" align="alignnone" width="580" caption="new style switcher"]new style switcher[/caption]

I felt like that (without the arrows and bright pink circle) would fit the third requirement of being unobtrusive yet obvious.


The only problem left was getting the damn thing to work. After pulling down the javascript from Integrating Alternative Stylesheets in WordPress Themes, I couldn't get it to work, there were some parse errors in it. A quick trip to JSLint and a little bit of work later, I actually understood how the thing worked and had it up and running. Here is my non-minified styleswitcher.js that is currently powering this functionality.


This is how I should respond to complaints, not by arguing, but by addressing the concern and coming up with a solution that makes all parties happy. The functionality is live and you can try it out right now. The dark-on-light theme is definitely a work-in-progress. I am working on some stuff for it and hope to have it somewhere nice soon. I'm thinking of doing a nature inspired theme for it, that still captures the same layout and feel as the current theme's techno-neon roots. Looking back at that sentence makes me realize the insanity of what I'm trying to do, so it may take a while. Please bear with me as I try to make the dark-on-light theme as nice as the light-on-dark. For now though, if the light-on-dark hurts your eyes, this new functionality should at least make the content readable to you.


To sum up.



  • Lesson learned, user feedback is a good thing, you shouldn't argue with it, incorporate it.

  • The new dark-on-light theme is up and running, although its kind of ugly

  • I will be releasing a more beautiful and integrated dark-on-light theme soon enough, I thank you for your patience

20091204

state of the blog

[caption id="attachment_328" align="alignleft" width="300" caption="danger danger will robinson"]danger danger will robinson[/caption]

I was having a discussion the other day with my pal Jeremiah about blogging, on-line presence, and other nerdly things (nerdly clearly a portmanteau of nerd and worldly). We talked about how one drives traffic to a site, maintains quality, and he pointed me to a smart bear. As you can imagine this only spurred more discussion about blog-promotion and self-promotion.


I got to thinking about how I promote ihumanable.com and I want to share with you my method of promoting and how its all working out.


First off I think it's important to understand my goals with ihumanable.com. You may have noticed that this site has no advertisement, in fact the pixels your eyes are gobbling up cost me money to send to you. I don't write this blog to make money off of it, so that capitalist drive to push ad-views and click-throughs doesn't exist. It's not all kumbaya and hippies though, the general idea is that this blog will help me create an identity for myself which makes me more marketable as a programmer (someone has to pay for these delicious pixels). The main reason I write this blog though is that I love to program and when I'm not doing that I love to talk about programming, this blog gives me a nice outlet for both.


Here is my formula for success



  • Read a lot - Hacker News, Coding Horror, Stack Overflow, these sites are well worn in my browser. So are Practical Common Lisp, Learn You a Haskell for Great Good!, and Learn You Some Erlang for Great Good!. Read everything you can, read voraciously all the tech, if you love to do it like I do then all the better.

  • Remember things - This goes along with the point #1, if you are reading and reading but not recalling anything, then its no help at all. I have a pretty good memory, but I've found that Delicious Bookmarks and Firefox's Awesome Bar are the most helpful additions my memory could ever use. Example: I remembered the article Jeremiah sent me but had no idea what it was, typed 'bear' into the Awesome Bar and bam, there it was, thank you Firefox.

  • Write what you know - Write about the stuff you know, take the time to learn something before posting. Post about things you've actually done, that's how this blog started wanting to share my experiences doing ruby koans.

  • Links are your friends - You might lucky enough to be interesting, but you don't have to be. Include plenty of links to the interesting things that you've read from the point #1.

  • [caption id="attachment_326" align="alignright" width="150" caption="breaking up the wall of words"]breaking up the wall of words[/caption]
  • Wall of words - People get intimidated by a wall of words, break it up with video embeds, pictures, and blockquotes

  • Promote Appropriately - Every time I post I tweet about it, I've posted a few posts on Hacker News and met with some pretty good success. I don't spam Hacker News though, I like the community and when there is something of interest, I submit it.

  • Make sharing easy - See those things at the bottom of the post, they let you submit my article to social networks, tweet about them (that one's new).

  • Make it easy to follow - See those icons at the top of the page, one let's you follow me on Twitter, one let's you subscribe to the rss feed.
  • Make it memorable - I like to try and find an image to start an article that either captures the article's content or is just memorable. I also tried to pick a domain name that would be memorable and easy to type, ihumanable.com.

  • Track readership - My hosting company keeps statistics and I use Google Analytics to track readership, this let's me know what is working and what isn't.

Those are the basic guidelines I try to follow and the results have been pretty good. I've had a general increasing trend in daily readers, and I've had a few big blockbuster days. Monday's article was on the front page of Hacker News for around 8 hours and had 1,806 pageviews. That was astonishing to me. I've had some other big jumps in the graph, but the general slope is what is even more exciting, people are starting to read regularly.


I've been posting every weekday (missed Thanksgiving and Black Friday) since October 2nd, 2009 when the blog started. I like to think that the consistent posting let's people know that they can check in everyday and get something new and fresh. This frequency is not required, but a consistent posting schedule is nice because it let's people know when more is coming and hopefully makes them look forward to the next post.


Here are the things that I've discovered that I didn't realize I would when I started.



  • Relationships - Through this blog I've met some cool new people, like Mark Essel, and improved my relationships with existing friends, Jeremiah Peschka and Rick Kierner.

  • Great Discourse - It may be the subject matter or the promotion avenues, but so far the discourse generated by my blog posts have been more than I could ever ask for. Comments are insightful and well-thought.

  • Passion - I never really wrote before and now I love it. I look forward to writing a post everyday.


That's the state of the blog right now, I'm delighted with where it is. Growth is never easy, there is so much content and so little time. If you refuse to pander, write what you know and love, promote consistently and honestly, you will find people to read your words. That's why I write, and I would have never guessed what it would mean to me.

20091016

the blog experiment

So as you know, since you are reading this blog currently, I have a blog now. Welcome to 2002, Matt, everyone has a blog these days. Now that its been running for two weeks I wanted to do a meta-post about my blog.

I have a wide array of interests, from video games to progressive politics to linguistics. I decided though that I wanted to write a technology blog to increase my professional stature on the cybernets. It hasn't always been easy, some days I've had little inspiration in the technology part of my life, but something burning in the politics part of my brain. I strive though to keep this blog about programming and software and sometimes rage filled rants. When I started this blog I came up with a strategy for how I wished to drive traffic to the blog.

  • Post everyday - When people can reliably expect some new content they will come and look for it or set up a feed reader to your site. The Daily WTF posts something everyday, and although most days I read the story with a "meh" I still come back every time the lunch whistle blows.
  • More than words - I wanted to avoid the wall of text, breaking up posts with a related image, code snippet, or youtube embed makes that post more memorable and more valuable.
  • Shameless self-promotion - Every post I write is followed up with a tweet, shouting to my co-workers about how great I am telling them to read my post, texting people, shining a special "Matt-signal" into the perpetually overcast Columbus sky
The Good:
  • I have had a few neat things happen so far, I've gotten comments from people I know and respect Rick, Jeremiah, etc. and somewhat more exciting, comments from random people I don't know.
  • Knowing that I need to produce content has had my creative brain juices flowing, it has spurred me to learn about ruby, powershell, and lisp.
  • Wanting to produce quality content has caused me to dig deeper into things than I normally would have, leading to more learning, and bonus for you, better content
  • Launched my first self-designed website and had somewhere to brag about it
The Bad:
  • Writing a post everyday is hard, even when I have an idea, doing the research, linking things up nicely, and trying to write something that people will want to read is a daunting task.
  • Failed to get anyone to join up with my I'll pimp your site if you pimp mine old school 1990's style blog-ring (I really only tweeted this once so its not like I tried very hard)
  • Scant feedback. Sometimes starting up a blog is a lot like shouting into the darkness, it is very exciting to get a comment on a post, even when its someone disagreeing with you, at least you know someone's reading.

So I'm going to keep on keeping on, I'm going to post something everyday, I've got 4 or 5 posts saved up for a series I'm hoping to publish soon. The blog has been a positive thing for me, it has kept me learning, communicating, and creating.

Let me know what you think about the blog, the good, the bad, and the ugly. I'm going to keep up with my post a day schedule for a while longer, so check back in daily or follow my blog to get a little sliver of goodness everyday.

Post a day doesn't include weekends, people have better things to do on the weekends than read blog posts, like program lisp

20091015

you can't understand google wave

Please everyone, just stop. Everyday someone writes a new article about Google Wave. If you are writing a first impressions, explanation, frequently asked questions type of article, go ahead, this rant is not aimed at you. The rest of you people writing reviews, glowing or scathing, you can't understand Google Wave, yet.

Google Wave is big, that's for sure, its got a Federated Protocol and XMPP and PubSub and all kinds of neat technology. It has an interface too, half email, half chat client, half sentient alien technology. The problem with people waxing inanely about what Google Wave will be is that they have their heads up their asses. They don't know, because they can't know.

Let's go back to 1975 and somebody explains the idea of the World Wide Web, they go on and on about HyperText Transfer Protocols and HyperText Markup Language and they show you the first webpage. Imagine that instead of being the tech savvy web surfing person that you are that you have no idea what HyperText or Uniform Resource Locators are, this is where we are at with Google Wave.

The idea behind it is complex, the foundations are new (at least in application) and also very complex, and the future of Google Wave is unknown, more than that it is unknowable. Could Tim Berners-Lee have guessed what we would be doing with his invention today, could he have dreamed of web applications, twitter, social networking. I guess he could have, but it wouldn't have been immediately apparent.

The technology is too new, it could be a new World Wide Web, or it could be a Gopher. We won't know until we see what people create with it. Google has already produced a collaboration tool that looks very promising, and people are already finding surprising ways to use it.

So if you want to vacillate and bloviate about Google Wave continue doing so, I certainly can't stop you, but you might go down in history as the guy who called the internet a fad.

20091012

perception is _not_ reality

Perception is reality. This is a sentiment that has taken hold in the modern age, and it's easy to see why. We live in a world of constant spin, it's not that this spin didn't exist in the past, it's just that we are bombarded with it. The thing people weren't prepared for was that the information age was to be accompanied by the misinformation age. We have unfettered access to mountains of data, so many voices, look I'm one more.

So the question in this new age is, how do we separate perception from reality? And then someone said it, really thousands if not millions of people said it.

Perception is Reality

With the air of a Matrix quote and with about as much meaning, it is a seductive little phrase. It has a simple elegance about it, it says just enough to sound deep without saying anything at all. It's also a sort of self proving maxim, since the only thing we experience is our own perception, it makes sense, that is our reality. Another aspect of it's seductive power is that it is oddly freeing, it says, there is no reality that you don't make. It takes you from an observer of reality to the actor and center, it is your perceptions that form reality.

And this is why it's an intellectually dishonest concept. It is easy to look up at the Sun and perceive that it is circling the Earth, but that doesn't make it real. It is simple to look at a table and feel the surface and perceive that it is solid, the reality is that it's mostly empty space. Perception is that first attempt to understand reality, not the end of understanding.

Perception is not reality. This does not stop people from believing this foolishness.

Did you spend weeks writing that application, fine tuning it to run fast and work reliably? Great. Ship it off and the user that's running AOL 6.0 with BearShare in the background and clicking away with Comet Cursor (because they want their mouse pointer to look like a fluffy kitty) is going to fire up your application and think that you are a terrible programmer because its slow as molasses on their overworked machine. Didn't you perform compatibility tests with the unpatched pirated version of Norton Web Defender 0.8beta that the user is running, what in the hell is wrong with you?!

The problem is that in a complex enough system people's ability to make reasoned and rational evaluations break down. The cognitive load of the person using your application is normally completely saturated with whatever task the application is intended to perform. This is why troubleshooting from a user's perspective is frustrating and magical. And why as a developer you have to take everything the user tells you with the understanding that they have no idea how a computer functions.

It is frustrating to be on the wrong end of the blame stick for something that BearShare did, but it happens. The best we can hope to do is educate the user, patch up our software, and keep plugging away.

Perception is reality to the user, and that is a reality that we as developers have to come to grips with.




I'm working on a multipart series that should begin to see the light of day this week, I was going to start today but wanted to have a little bit more meat before publishing. Stay tuned...