Howard Guide 2011
The State Fair of Texas starts today, and I'm very excited! The State Fair is a family tradition for us, and so we go early and go often.
This year, we've decided to take our combined 160 years of fair-going experience and share it. If you want to learn how to visit the Fair like the Howards, make sure you follow http://howardguide.com. We'll be posting our tips and reviews on all things State Fair of Texas.
Now, I'm off to the Fair!
Read and Retain
I was talking with my friend Josh the other day about how easily we forget things. We both have a problem with reading books: we tend to forget most of the material. When reading for fun, this isn't a big deal, although it can be embarassing. (I read Ender's Game twice without realizing it.) When reading a business or technical book, it can become problematic. What's the point of reading the book if you don't put it into practice?
This morning, I was again thinking about how to best retain what I read, when I 'heard' the word retain in a different context in my head. Bear with me now as I attempt to compare self-improvement with iPhone application design.
When you build an iPhone application, you store lots of 'stuff' in memory: images, web content, other information, etc. Often that same stuff will be used in different places inside the same application. For example, in a game, you might want to display the high score on the game screen itself and on another summary screen that could include a list of high scores, so you design the application so that both screens have access to the section of memory that stores the high score. When you do this on the iPhone, you also need to tell each screen to retain that section of memory. The reason for doing this is that as soon as the iPhone doesn't think that memory is being used, whatever was stored there is erased and made available for storing something else.
Did you catch that? Unless your application specifically retains a section of memory, whatever was stored there will be lost forever.
Back to reading. When you read something important, you need to do something with that knowlegde quickly or it will be lost. This is why the best students are the ones that take notes in class and when they read. It's not necessarily that the notes are beneficial later (although they often are), it's that the act of taking notes engages the brain in a way that casues it to retain the knowledge.
Taking notes is a good step, but an even better solution is to attempt to use the knowlegde for something real. The best way to learn a new programming language is by writing a real program in that language. If you're reading a book on time management, put the strategies to practice immediately as you are reading the book. The more you use the knowledge, the more of it you retain.
A few years ago, I read Getting Things Done. It's a great book, and it's helped me a little, but not very much. I'm practically as disorganized as I ever was. Why? Because I read that book a few chapters at a time either in bed or in a comfortable chair. I read it the same way I read a novel. I picked up some decent tips, but I've forgotten most of the material. I've decided to read it again, only this time I'm going to play along as I read. I want to retain and use all of the knowledge in that book, so I'm going to try to put it into practice immediately. I hope it sticks this time.
What about you? How do you retain what you read?
Today's Links of Interest
Schutze Defends Dart
Sometimes I think these passengers get confused in their heads or something. They seem to think they own DART. Let me tell them something right here: You passengers don't own squat. Nobody on the DART board has to ask you for your measly little vote to stay in office. DART doesn't have elections. DART belongs to DART. The purpose of DART is DART. You passengers need to pay your sales taxes, pay your fares, shut the hell up and do what DART tells you to do.
Today's Links of Interest
Prediction: iPod Touch Going Away
I usually avoid making predictions about what Apple is going to do, but when this one came to me on my way to work this morning, I felt it was too good to ignore.
Here's what we know:
- The iPhone 5 launch was delayed until the fall when the iPod event usually takes place.
- iOS 5 will also be released then
- iOS 5 has a feature called iMessages that replacetes the text message system for all iOS devices (iPod Touch, iPhone, iPad).
- iOS 4 introduced FaceTime, a video calling app that works with all iOS devices
My prediction is that in this fall's announcement, the iPod Touch will be going away, and that it will be replaced by the iPhone Wi-Fi.
Most people refer to the iPod Touch as an "iPhone without the phone." With FaceTime and iMessages, the iPod Touch essentially becomes a phone. The only difference is that it can only connect to a Wi-Fi network, not a 3G network. The iPad line is currently split into Wi-Fi and 3G, it makes sense to me to do the same with the iPhone.
I'm probably wrong, and I'm ok with that. You have to admit, this sounds plausible, doesn't it?
Growl Support for OPML Editor
I've been privilaged to be part of a bootstrapping comminuty using a collaboration tool called an Instant Outliner. It's an interesting tool built around the concept of a shared outline. I'll probably write more about this at some point, but for now I have one specific point I want to talk about.
When the outine is updated, the computer beeps, and the person's node that updated is bolded. This works fine when I'm at home and at my computer. But when I'm at work, I often have the volume down and the outline in the background. I found myself wanting a visual notification of some sort when the outline updated.
I'm on a Mac, so the obvious solution is to use Growl.
Like all the other tools for this community, the Instant Outliner is built on top of the OPML Editor, which I have previously described as a Swiss Army Knife. If I want Growl notifications for my Instant Outline updates, the OPML Editor needs to know how to talk to Growl. So, I wrote a tool.
Growl.root adds support for sending Growl notifications from scripts written in the OPML Editor. There are basically 2 verbs (OPML-speak for functions) that you need to care about.
growlSuite.newNotification(title, enabled) will tell Growl about a type of notification I want to send. For the instant outliner I would execute:
growlSuite.newNotification("Instant Outliner", true)
growlSuite.sendNotification(name, title, description) will actually send the notification. The first parameter(
name) must match a notification type from the previous verb. The second parameter is the title of the notification and the third parameter is the text of the notification. To notify that I updated my outline I would execute:
growlSuite.sendNotification("Instant Outliner", "tedhoward", "Guys, check out my new growl scripts")
If you're interested in this sort of thing, you can download growl.root here.
Have you ever noticed that you get some of your best thinking done in the shower? I certainly do. Some of my best and worst (i.e most creative) ideas have come to me in the shower. Often I will come up with a solution to a problem I spent the pervious day struggling with while taking my morning shower.
What is it about the shower that brings me to such a level of clarity? Is it the all the steam? It it the water? the soap? Perhaps, but I don't think so. It occured to me that when I'm in the shower, I am not consuming any outside information. In the shower I have no TV, radio, books, podcasts, web sites, etc. It's just me and my thoughts. The only other time when this is true is when I'm in bed trying to fall asleep. When I'm in the shower, Im trying to wake my mind up, and with nothing to fill it, it begins processing the information it already has.
Maybe the magic of the shower is simply the fact that I can't bring anything else into it with me. It's just me and my thoughts. I wonder what it would do to my life to take more time out of the day to just think. No reading, watching or listening. Just thinking, and maybe some writing. How big of a difference could this make? I guess I'll have to think about it.
Do you set aside any time each day just for thinking?
BTW: The idea for this post came to me this morning in the shower.
Giving Up Television
Almost a year and a half ago, I took the Zen TV Experiment and wrote about my experience. For the first time, this caused me to really evaluate the position of television in my life and question its value. It also caused be to be aware of the tricks that TV uses and the effects it has on me when I watch it.
The immediate aftermath of this was a conversation with Megan where we decided to no longer eat our meals in front of the TV. It was a great improvement. It also started a series of events that resulted in us watching less and less tv over time. We would have these moments where we'd go through our season passes on the TiVo and eliminate shows for various reasons. I also resolved to only watch TV on purpose. In other words, I would only watch shows that I wanted to watch, I wouldn't just sit down to "watch something".
This past month, Megan decided to give up TV for lent. She went through a similar transformation of thought on the value of TV and it's place in our life. She too is resolved to watch less and be more purposeful about it. And then we come to last night.
Yesterday was Easter; lent is over. Now that Megan is "allowed" to watch TV again, we had some decisions to make. We turned on the TiVo and looked at the list of recorded shows for the first time in six weeks. Surprisingly, there wasn't much there. Several episodes of the Oprah show, The Office, 30 Rock and The Chicago Code. Having not watched any TV for six weeks, we are faced with the question: "Are any of these shows worth the time it takes to watch them?"
Not watching TV has freed us to do so much more with our evenings. Megan has become a fairly prolific blogger. We've both read several books. We've had some deep, meaningful conversations, played some games, had people over, gone out, worked on side projects. Which of these things are we willing to give up to watch a TV show?
It's a difficult question, because the shows we watch together (I don't watch Oprah) are really good shows. We really enjoy watching them (most of the time). But are they worth the half-hour every week commitment?
Last night we decided to quit watching The Chicago Code. It's a fairly new show, and it's off to a pretty decent start, but neither one of us is heavily invested in it. That left The Office and 30 Rock. We decided to table the discussion for later. We may finish out the season and then be done with them (especially since Steve Carell is leaving after this year).
Once we quit watching those shows, do we still need the TiVo? Do we still need the TV? It takes up a lot of room in our living room. These are questions that we will have to answer over time.
Could you give up watching television? Have you taken the plunge? What was it like?
XML To Domain Mapper Web Service
This all started with a post on Dave's blog Saturday. He was trying to see what it took to serve up an xml file from a domain. He was succesful, but he mentioned that what he really wanted was a web service that would do this. I spent some time thinking about the problem, and came up with a basic solution.
Basically we have a server, let's call it 'domain-mapper.com'. You will first need to configure your domain to point at the ip address of the domain mapper server. Then you need to tell the domain mapper server about your domain. You do this by posting to domain-mapper.com/domain and you give it 2 parameters: domainName and password.
Now that your domain points to the domain mapper server and the domain mapper server knows about your domain, it's time to save the file to the domain. You do this by posting to your domain name with one parameter called 'feed'. You will need to log in using http basic auth (the username is your domain name and your password is the one you provided when you registered your server).
That's it. It's pretty simple huh? If you want to update your file, just post to your domain again.
I'm not completely finished with the implementation. There are a few more features I want to put in, but once I do I'll put up a server so we can test it. I'll probably release the sourcecode for the server too. I just wanted to get this documented somewhere so that those that care can comment and provide some feedback on my deisgn.
EC2 For Poets 6
I found the new ec2ForPoets6 AMI and launched a new micro instance. I had terminated my previous instance but kept my elastic IP address, so I can use the same domain names for this new test. This should be accessible at opml.tedchoward.com. But now I must wait for the admin password to generate. I'll return after some coffee.
4/6/11; 7:47:48 AM - Coffee's done; server is up.
4/6/11; 7:48:54 AM - Filling out the six values. I wish there was a link to get my S3 keys, I always forget where to find them.
4/6/11; 7:52:19 AM - I clicked submit, I think it submitted but I didn't get any feedback; the form just reloaded.
4/6/11; 7:53:39 AM - It did work. I went to the homepage and logged in as admin.
4/6/11; 7:56:33 AM - enough for now, I'd better head in to the office.
Coding in the OPML Editor
Things I Like About Coding in the OPML Editor
the structure of code is easy to see and follow
re-arranging code blocks is easy
a useful debugger is built in to the editor
most of the tool is written in itself
I can see sourcecode for most of the built-in "verbs"
Things I Don't Like About Coding in the OPML Editor
No syntax highlighting
No live syntax checking / typeo prevention
text rendering "feels" off compared with other text editors
text typing and keyboard navigation is a bit slow
The undo buffer only goes back one edit
no support for source control systems (svn, git, etc.)
A Swiss Army Knife
The other day I wrote a little about starting a new blog. I mentioned this blog wasn't so much about the content, that it was instead more about the technology powering it.
For a blog with content, take a look at my wife's (relatively) new blog: Small Ways.
This whole experiment started when I made a feature request of the proprietor of these tools, Dave Winer. I discovered that this blog engine (scripting2) has built in support for live-blogging that publishes an rss feed with each update. Adam Curry chimed in that he uses this feature to collect links and notes that become the show notes for the No Agenda podcast. Once he's got everything in, he just changes it to a normal blog post. It's a pretty good workflow.
Back to my feature request. I use another of Dave's tools called Radio2. Radio2 is a microblogging tool (think Twitter without the corporate overlords). My thinking was that since Radio2 publishes a feed of links and notes, why couldn't that feed into the live-blog feature of Scripting2? So I made my request, and I got called out.
BTW: You can follow my radio2 feed here.
It was the classic, "You call yourself a hacker? Do it yourself!" Fair enouugh. Later, Dave provided some guidance and reference material on how I might go about this. After reading some more documentation and walking through some tutorials, I find myself very impressed with this piece of software.
Actually, I'm really surprised that I had never heard of Frontier before this.
Of course, I'm also the guy that had never heard of HyperCard until 2007 when I attempted to reverse engineer it.
I referred to the OPML editor before as a swiss army knife of an app. Now I know that it is. This is a technology that is very powerful and flexible. It's a hacker's tool. Had I known about this in the 90s, I wouldn't have been as hard on the Mac as I was. (I was a PC guy until 5 or so years ago.)
Anyway, I'm sitting down here now ready to start hacking something together, but first I felt like I should post something. I am very impressed with the core technology of the OPML editor. There are some annoyances about it. For one, it feels like an old piece of software. I believe it's open source, so maybe one day I'll feel adventurous enough to delve in and do some kernel hacking.
But first, I have a tool to write.
I'm in the process of building a new blog. In fact, you're looking at it right now. Why am I building a new blog? That's a question that I don't have a good answer for. I have an answer, I'm just not sure it's a good one.
A blog should be about the content, but this blog exists because of the technology that powers it. Perhaps this technology will be more condusive for writing which will cause me to produce more content. Then it will make better sense. But for right now, I'm just playing with a new tool.
There are three components to this blogging tool:
The Authoring Tool / Outliner
The Publishing Tool / Server
The Content Host / Amazon Simple Storage Serice (S3)
The Authoring Tool:
I'm using a piece of software called "OPML Editor" to write these posts. On the surface, this software appears to be a tool for creating ane editing outlines, but it is actually a swiss army knife of an application. For the purposes of blog authoring, it's outlining functions are the main feature.
Each blog post is an outline. This allows me to take a non-linear, iterative approach to authoring. I can build out the structure of the blog post and then go back and easily fill it in and re-arrange the comments. This is what it looks like:
The Publishing Tool
The publishing "server" is actually my old 12" Powerbook running a copy of the OPML Editor. Remember how I said that software was a swiss army knife? The same program can function as a server. The Editor on my laptop connects to the Editor on the "server" to create and modify blog posts. The Editor on the "server" generates all the html and xml needed to create the website ans stores it on the content host.
The Content Host
This entire blog is hosted on Amazon's Simple Storage Service (S3). S3 is an easy and inexpensive file store on Amazon's "cloud". Lots of web sites use it for storing static content like images, movies, and downloadable apps. I'm using it to host this entire blog. This may not mean much to you, but as a computer nerd, I think it's pretty cool.
Remote Posting Test
The 'server' is on another machine. I'm posting from my laptop. Does this work?
3/22/11; 8:43:38 PM by TCH
I think that's a yes.
I like the image uploader. That is slick.