Monthly Archive for May, 2011
I’m making progress.
When I feel like I’m moving the needle on a project, I experience a lot of feelings: happiness, elation, excitement, challenged, productive, smart, and even a little trepidation or fear. But mostly the good stuff.
Is it our endorphins taking over? Is it the feeling of accomplishment, or pending accomplishment? The knowledge that what I’m working on is closer to completion?
And is the fear really the fear of “what will I do next?” or “what if it doesn’t work? And I prematurely dreading the pending completion, and subsequent vacuum of “stuff to do”?
Are projects ever really complete, or do they just continue to morph and grow? If so, will I ever ship the damn thing?
That whole line of thought got me thinking about the question:
What’s the minimum viable product I can launch, to start getting some feedback about what I’m building from people other than my friends, who are likely to just tell me that “it’s great” or “I’m impressed” but aren’t actually likely to ever be my customers?
So I read What is the minimum viable product? at Venture Hacks.
Why do we build products in the first place?
In the end, we hope to be able to launch product to lots of customers and have them give us money so that we build a great business.
So, I’m working on this project, and have built five customer facing web pages, integrated two outside vendor’s code/services, and I keep having ideas interuport my active work on the project.
I finally created a TODO.txt file that I’m storing on the server, so that I can keep track of those ideas, while getting them out of my head, so that I can stay focused and “heads down” on the tasks at hand, and as of today, all of the pages are pretty much ready to show to the public.
So, I think it’s almost time to launch the product. Need to finish up a little more development work, line up two key biz dev deals, and get it live. Probably next week!
Sometimes it’s important to turn off all of the “noise” that gets in our way, when we’re trying to do something.
- Turn off the TV.
- Turn off the radio.
- Turn off the RSS Reader.
- Turn off the phone.
- Turn off the people around you if you can (close the door to your office, or go hide upstairs or something)
I call this time my “head’s down” time. Like “Hey, my head is down in my work over here. Leave me alone!”
I just spent the last four hours doing work that probably would have taken me 8 hours, if I’d done it in my normal reactionary, distractable nature. Instead I put my head down, and got a lot done.
Figure out how to put your head down, and get more done in less time.
As I work on this side project I’ve been writing about, I’m putting in about 2 hours a day on it actively, but the rest of the day, while I’m doing my full-time job, and running another company, my mind keeps drifting back to this side project.
Meaning I’m not focused 100% on whatever it is I’m working on at the moment.
That’s human nature, but it’s also distracting as hell.
So, I’ve started taking whatever is in my mind, and adding it to Evernote whenever I’m thinking about it, which helps me clear my mind, and store the extra ideas I’m having, so that I can think more about them later, while not sacrificing too much of what I’m working on right now, or forgetting the bolt of inspiration I’ve been given.
The system works.
I’ve also added a “TODO” section to each file I’m working on in my programming project. It’s at the top of each file, and I’m using it as a place to store thoughts that I have in a contextually relevant place, which again, let’s me preserve the inspiration, without getting in the way of what I’m actively working on too much.
For example: Yesterday, I was writing some code to insert some data into a database. Simple, but took some time, because I didn’t remember how to do it, so I had to do a bit of research. In the middle of doing all that, I had a thought that if I could do “X” on that page, it’d be awesome, so instead of spending a lot of time thinking through “X” I added this to the top of the page:
// TODO: // Figure out how to do "X" on this page, or the page before it, or after it. // "X" will let us do Y and Z here, versus later on in the process = more // $$$.
Focus when you need to focus. You’ll discover how unbelievably productive you can be when you’re focused. Then harness and keep that focus, and drive it deeper.
Yesterday, I found ADOdb, downloaded it, and uploaded it to my webserver, but I didn’t read up on it, or spend any time with it… so, today, after running a few errands, I retired to my home office to dig into the documentation, and see if I could get a database connection up and running, and if I could, then insert some data into rows in a table, and hopefully get my web app working.
Specifically, the user experience looks like this:
- Land on a landing page, or the home page of my site.
- Collect a little information on the landing page, and pass the user to a “more info is needed page”
- Collect more info on page 2 of the process.
- Insert all of the data collected on pages 1 and 2 into the database
- Send the user on to their “results page”
Granted, the above isn’t too complicated, but it’s also not something a) I’ve ever done before on my own (at most, I took other people’s code and hacked at it the last time I touched PHP) and b) someone that hasn’t looked at code in 8 years should probably attempt on their 3rd day of playing with code again, or so I thought.
Turns out… programming in PHP is kind of like riding a bicycle. Once you know the basics, even if you take some time off, once you get back on the bike, you can ride again pretty easily.
It took me about two hours to get the above process to work, but it works pretty well now.
On the first page, I collect the data for three fields, pass those as GET variables to the second page, were I collect another 21 fields. Then I pass the user to a “userhandler” page, that takes the data, processes it into the right formats, and then inserts it into the database, and the forwards the user on to the third page in the process, passing the two fields that are required to make the last page work.
I had to create the “get more info” page first.
After I had the HTML coded up, I added a bunch of PHP, so that it would grab all of the variables, and pass them to the “userhandler” page.
Then I created the database using PHPmyAdmin, which is the easy way to do it (as compared to actually reading up on all of the details on field types, etc… so my database isn’t nearly optimized, but I can go back and fix that later…
Then I had to create the “userhandler” page, and make it talk to the database, which took a little while, but was pretty straight forward, thanks to the documentation around “insert” and examples that comes along with ADOdb.
Once I figured all of that out, I got a little creative, and combined two fields on my “more info is needed” page, and figured out how to explode those two fields, so I can store them as distinct data in the database, but reduce the number of fields the user sees when they’re entering the data. Specifically, I wanted the user to be able to enter three or four words, but split them at the first space. Example #2 was exactly what I needed to see, to make it work.
There’s still a ton to do on this project, but I’m having a blast playing with it. Really gets the creative side of my brain engaged again.
So I’m playing with this project that I’m working on last night, and I realized that I’ve completely forgotten everything I remember about database connections and querying MySQL from a PHP app (though I do remember Mark Hershenson who taught me most of what I used to know).
Regardless, after reading about thirty pages in my big red Professional PHP Programming and cross referencing a little in my old MySQL book. (It’s telling when your MySQL book was published in 1999, btw, isn’t it?), I decided that while I could easily retype all of the code in these books, and that would give me a good working knowledge of how DB operations work, I probably don’t need to do that much work.
I’d much rather download and use someone else’s library code for database abstraction than write my own at this point. Not only am I grossly out of practice, but while I’ve got a working app at this point (meaning I haven’t completely lost all of my coding skills) I’m far from being able to code without any reference material or example code from others…
That’s what I love about open-source projects. So much really high quality information out there about how to use it, what’s best, etc…
So, hopefully this weekend I’ll get a database system working, so I can tackle phase two of the coding (getting the data from my web forms into and back out of a database).
Either way, your adrenaline gets flowing, whenever you start a new project.
In the last two weeks, I’ve taken on a few new projects.
First, I launched AggieCamusology.com, and pre-populated it with about 2 months worth of content, added some Google AdSense ads, so that maybe it’ll pay for itself later this year, and posted a few comments on Aggie related sites, so that we can start getting some natural search ranking and some free inbound traffic. Already, we’ve gotten about 10 page views… not bad for a site that’s less than a week old, and in a very very niche market segment.
The second project I’ve started is a completely new website, that requires me to open up my old PHP manual, and read a bunch on php.net or other sites, so that I can learn how the basics again. It’s super challenging (it’s been about 7 years since I’ve really looked at writing any real code) and super fun. Definitely gives me fuel to keep diving in, and opening up whatever possibilities might present themselves. I’m keeping this second project in beta for a little while, while I build it out more, but it’s fun so far, and I’m loving doing it and talking about it with others.
Third, I’m going to write more. More on that below.
One thing that I’ve noticed during the process of thinking about and starting these new projects:
Passion is what has enabled these projects.
- AggieCamusology.com wouldn’t have gotten launched if I didn’t go to Texas A&M and have a decent amount of passion for the idea. Would you launch a website about kittens if you didn’t love cats?
- The second project has been brewing in my head for months now, but I couldn’t justify investing much in the idea, because I couldn’t get around the “what problem does this idea really solve?” and then it struck me last night around 7:00… building this project doesn’t neccessarily solve a huge problem for anyone, but it will give me the chance to dust off my PHP skills, and that’s something that I will enjoy, and bam… work began.
- I’m committing to writing more on inluminent.com, because I just got done reading pretty much every post on Spencer Fry’s blog, and am totally inspired by his writing. I’m not sure I’ll stack up to him after it’s all said and done, but I am inspired.
What is your passion? Can you make enough money to live on doing it? What are you waiting for?
I’ve been blogging since February 2002. At the time, I used PHPNuke to power my first blog: englers.org.
Over the next few years, I had a decent amount of free time, and didn’t have kids, so I could spend a lot of time learning more about WordPress, themes and plugins, keep my PHP skillz honed, etc…
Then I “grew up” and started running departments, divisions, or companies for other people, and got paid really well, but I never got to spend time with WordPress anymore.
Thus, inluminent is still using the “K2″ theme, englers.org is using one of the original themes that shipped with WordPress back in 2002, and StuffGeeksWant is running a theme that’s not very customized… AParatroopersFaith.com at least has ads on it, but the design leaves little to inspire people, because I’ve been so busy with “other stuff”.
So, I’m launching a new site today: AggieCampusology.com for Aggies everywhere to find and hopefully enjoy reading stories from other Aggies about their memories from their student years, or jog their memory about an old Campo they can’t quite remember…
But, I’m stuck on the “themes and plugins” that I should use, and how to customize them.
I’ll have to research those two things pretty well over the next couple of weeks, and maybe even take what I learn and upgrade all of my WordPress sites, to bring them into 2011…
Where should I start?