Freebootr Ahoy!

September 19th, 2008

I wrote recently about Phoenix Hacknight (that happens every Wednesday) because I want people to know that there is a vibrant, active community in Phoenix centered around technology. Hacknight has become a place where people meet consistently to network with each other and hack on various projects. I have attended every single Hacknight and closed shop on most of them, but besides the amazing 6 hour hacknight website, I’ve yet to really release a new idea to the public.

That’s why I’m happy to announce the launch of

Freebootr Logo

The Idea

Freebootr is an idea hatched at Hacknight by Chris Irish and me. It provides a place for people to easily and quickly find free items in their area as well as post free items they no longer want or need. We hope that this will result in less landfill waste and reduced cost to consumers. We believe this type of service should be free and open to the public and that’s exactly what we’ve done. What’s more, we believe it should be fun to use, which is why the site is pirate themed! Why, you ask?

freebooter |ˈfrēˌboōtər|

noun

a pirate or lawless adventurer.

That’s right, a freebooter is a pirate, so naturally we themed the site after these denizens of the sea. Arrr!

The Journey

Freebootr has been in the works for about 8 weeks at Hacknight. Chris and I have put in about 40 hours each throughout that time and set a goal to release the first version of the product today, on International Talk Like a Pirate Day. We also took a 2 week hiatus to implement the Hacknight website. It has been a fun, and somewhat bumpy, ride to get here, but we did it.

The Rest

Now the real work begins, for us and for you. We want… nay, need your feedback to make Freebootr.com a great, useful site. So check it out and be sure to call us out when we suck (and occasionally when we kick ass).

Now go out there, me hearty, and become a Freebootr!

Part of the startup I’m pursuing involves using the Google Maps API to display a map containing location markers. The number of location markers could exceed 4000 at any given time. I currently have a sample dataset of around 500 and found that the map loading was starting to slow down. I considered several reasons this may be the case including how I was generating the JavaScript on the page using Ruby on Rails. I decided to do a little testing using examples from the Google Maps API Documentation.

I found a wiki reference that discussed marker optimization techniques and tried some of them to see the differences. There are others besides these, so if you are interested visit the link.

  • Only Draw the Points in the Area Viewport – Great suggestion, but is only valid when the user zooms in. At the highest level, if all points are displayed then this has no effect.
  • Load Different Points at Different Zooms – Another good suggestion. This is accomplished through the use of the GMarkerManager. However, the question remains as to how to breakup your data. Do you provide a generic icon at higher zoom levels and when clicked on it zooms in and displays markers? Do you display “preferred” locations at higher zoom levels (e.g., paying users)? Do you display higher ranking/rated (assuming you have a ranking/rating system) locations at higher zoom levels? For my particular app, I use the GInfoWindow to display information about a particular point. If I don’t go with the generic icon approach then I would be giving preferential treatment to some locations and would need to figure out how to justify it. For example, people might not zoom in to reveal other locations and thus the highest zoom level markers would get all the attention. If I did use a generic icon, then the data on my map would not be as impressive because you could only see a few icons until you zoom in. Additionally, it would not be possible to see the locations in relation to each other at higher zoom levels.
  • Add HTML to InfoWindows (Bubble) Using Click Event – Yea, I thought about this one too, but found that during my testing without using the InfoWindows it was still slow.
  • Preload the marker images – Hmmm… special case for IE? Nah, I say let ‘em suffer.
  • Omit the shadows – Those pesky shadows… This actually did seem to make a difference during my testing, but it doesn’t look as nice.

So, what to do? I am considering trying a combination of the approaches above as well as delaying the loading of the markers. For example, at the highest zoom level, all markers are visible, so I might wait about half of a second before adding markers. Then when I’m adding, I allow about an eighth of a second between batches, where a batch is 20-25 locations. Instead of using the GMarkerManager at the highest zoom level I would just use addOverlay. This gives the map the appearance of pretty smoothly adding markers to the map. Although it is kinda cool to watch, adding one marker at a time takes too long, so it has to be a few at a time. Not so many that it appears chunky though.

The other techniques that I think might be useful are delaying the InfoWindow data until the onclick event as well as factoring in the viewport area for marker display. Theoretically, this should allow me to load all of the markers with the smallest amount of information possible and increase the performance as the user zooms in.

I really don’t like the clustering approach as is tends to obscure the data. Part of what I am trying to accomplish with using Google Maps is to present my data in a way that allows for easy visualization of the points in relation to each other. Clustering seems to defeat that purpose. I also like the shadows because it makes it look nicer. If it comes down to it I will, reluctantly, lose the shadows.

My other options are to disallow viewing all of the locations at once. This might be accomplished by loading an empty map and asking the user to search first. Additionally, I could limit the search results to a few hundred. I’m not keen on this approach, but I may be forced to go this route if I can’t improve the performance otherwise. I could also try using an XML file with GDownloadURL, but I can’t see that actually being faster.

I had an extremely hard time finding information about Google Maps and performance, including tips, techniques, hacks, etc. If you have any suggestions please post in the comments. It would be very interesting to see how other people are handling this problem.

Contracting

January 23rd, 2007

I am about to end my first contract position with the Gila Community College Wellness Center in Arizona. I have been developing an internal web-based application for them and will deliver it at the end of this week. I was able to convince them to let me use Ruby on Rails for the development with a MySQL Database. Essentially these are the same technologies I have been using on my startup.

Have I mentioned recently that I love Ruby on Rails? No? Okay, ummm… I love it. For the startup I was concentrating on pushing features as quickly as possible and I was least concerned about formal testing. In a contract position though I needed to really delve into how to test my code using the built in functionality provided with Ruby on Rails. With a little help from the Agile Web Development with Rails book I was testing in no time. The testing framework in place makes it very easy to develop and run your tests. Eventually I will need to go back through my startup code and add tests. I was dreading that activity, but now it seems like it will be easier than I expected. Of course, I am a bad programmer for letting it lapse in the first place… baaaad programmer!

Testing is one of those activities that is often overlooked during the course of your academic career. When I completed my BS in Computer Science at the UofA testing was not on the curriculum. Our introduction to testing was when some teaching assistant developed a rudimentary suite of tests to grade our program. They usually released some of them so you could get a feel for how well you had coded, but your grade was based on a super-set of the tests you were given. Now that I look back on it they probably knew only a little more than us about testing, but of course they needed something to base a grade on. I remember several times when people discovered errors in the TA’s tests!

There were very few people who developed their own tests. In fact, the philosophy I heard espoused most often from students and faculty was “Just get it working!” There was one guy though, Tal, who created tests and, compassionately, allowed others to test against them. He was a special case though as he was light years ahead of anyone else I knew in that program. Only later did I find out that he was a chess grandmaster... He eventually went on to pursue an advanced degree at UW and currently works at Google.

Anyway, I have wanted to try test-driven development for a while, but keep putting it off. Why? Why is it so hard to do? I think I have been conditioned to think of tests as a secondary activity. Sadly, this looks to be a difficult habit to overcome. Anyone have any suggestions for these testing withdrawal symptoms? Any advice is appreciated.

What is an entrepreneur?

January 16th, 2007

Over the holiday break I had a chance to talk with a lot of friends and family members about starting a company. I have been working on this venture for a few months, but had been keeping everything hush-hush. Most of them had no idea what I was doing. So, I decided to spill the beans and talk openly with people I know I can trust for an honest opinion. Just like I said in a previous post, reactions were mixed.

It got me thinking about what it means to be an entrepreneur. Merriam-Webster defines entrepreneur as “one who organizes, manages, and assumes the risks of a business or enterprise.” I think that the role of entrepreneur is more difficult than that short definition implies. It’s not enough to be the one who has an idea and organizes the company to realize the idea. As I have been finding, there is a social aspect to being an entrepreneur that takes you on a roller coaster of emotions, from depressed to uplifted, frustrated to satisfied, empty to fulfilled. It is the job of the entrepreneur to push past those feelings of depression and inadequacy and focus their energy on the task at hand.

There have been several times when I thought I should throw in the towel and get a “real job”, as my parents so eloquently put it. It took the advice of an old friend who I recently reconnected with on LinkedIn to put me back on track. He is also trying to start his own company called Webographers, but he’s a few steps ahead of me. Sharing his own experiences with me about his company helped me to reaffirm my intention of making my venture work.

While it is good to get many opinions about your venture, be sure to surround yourself and keep in close contact with people who will renew your focus and ambition. It is easy to quit something when it becomes tough, in fact, our society almost encourages it. It is far more rewarding to persevere in the face of adversity. As an entrepreneur we must not only steer the company through rough waters, but we must fend off these dark thoughts and emotions that creep in from time to time. Only if we do both successfully will we have a real chance to succeed.

Holiday 2006

December 23rd, 2006

I took a little time before the holiday to go on another fishing trip with my dad. This time we went to Bartlett Lake, just northeast of Phoenix. The fishing wasn’t great, but the location was spectacular. The lake itself sits in the Tonto National Forest, an area overflowing with saguaro cactus, desert vegetation, and wildlife. We only caught three fish between the two of us, the largest being my large mouth bass. It was about 15.5 inches and probably around 2-2.5 pounds, although we didn’t weigh it. We may take another trip before the new year, but that is yet to be decided.

I met my end of year goals of revising my executive summary, creating a presentation from it, and submitting it to a handful of VC firms. I also updated my resume as a few firms would like your full resume, not just a paragraph description of your accomplishments. I also met a stretch goal of releasing another version of the site, although admittedly it is only a minor version; mostly backend changes. I feel really good about what I have accomplished this year.

I hope everyone has a happy holiday. I will be spending time with my family and relaxing for a few days then it’s full steam ahead into 2007. I am confident this will be a great year.

Family

December 22nd, 2006

This isn’t something that I thought I would talk about on this blog, but it may be of interest to other entrepreneurs in the same position. In reading this blog, you may have picked up on the fact that I’m not single. That’s right, I’m married… sorry ladies. In fact, I even have two great kids ages 1 and 2 (almost 3).

It seems that most of the budding entrepreneurs out there are single males. Not many that I’ve seen are in a committed relationship. This may be a benefit if you are spending all of your time working on your startup and devoting no time to social pursuits. However, I think there are benefits to being in a committed relationship as well. I also believe that my accomplishments would be less fulfilling if I didn’t have someone to share them with. This entry is about the benefits of starting a company while in a committed relationship.

My suggestion to all entrepreneurs in a committed relationship is to involve your partner in some way. Your partner can be your greatest strength while on this very hard road you’ve chosen. Even if it is as simple as talking with them at the end of a long day about what you accomplished or what frustrations you encountered. Can they join the site? Let them be one of the first to join and contribute. Encourage them to be your biggest cheerleader. Often that encouragement is all you need to get a second wind.

When you are working long hours trying to build your company it is easy to forget that you must also spend time building your relationship. Just because you are committed doesn’t mean the work ends there. That’s like thinking that as soon as you get funding it will be smooth sailing. Really, the work has just begun at both of those points.

I have definitely been guilty of neglecting my family at times. However, I make a conscious effort to take time out to spend with them. It might be as simple as taking a walk before dinner, which we’ve been trying to do. Recently, I took a half day to go to a train park in Scottsdale. It was a great time, but in the back of my mind I knew I was missing out on six hours that I could be working. Ultimately, this time is definitely worth spending.

My wife has been very supportive through this process. Scared? Yes, but supportive, too. She has really helped to ground me so I don’t get my head too far in the clouds. I know that I can always bounce ideas off her and get an honest, sometimes brutally so, opinion. She helps me through the hard, depressing times and she is also there for the happy, celebratory times. When I launched the first alpha, she even made chocolate cupcakes with little computers on them so we could celebrate after dinner.

I think it all comes down to what is important in life. Building a great company is a great goal, but if you don’t have people to share your success with, then does it really mean anything? For me, the most important and rewarding aspect of this journey is sharing it with my family. I hope that the coming year will allow me to share even more success with them!

I hope your new year will bring you happiness and success, too.

Anyone else out there starting a company while in a relationship? Let us know your thoughts in the comments.

Vision

December 20th, 2006

When I was completing my Master’s in Computer Science I took several classes on Software Engineering. Software Engineering deals mostly with the lifecycle of software from conception through maintenance. It is different from core CS classes because it does not focus on the software itself. Instead, it focuses on everything that goes into and around the software to make the project successful. I took classes on software process, maintenance, standards, testing, etc. All of this was in addition to my core CS classes on operating systems, networking, graphics, etc.

I found that I already knew a lot of what was being taught in those classes through my experience at my former companies: Project Technology, Inc. (acquired by Mentor Graphics) and Raytheon Company. Some of it was also common sense. However, common sense is not always common practice.

One of the things that I thought I understood well was the concept of vision. Communicating your idea about a product as a whole; what it is and what it will become. As you carve up your vision into manageable chunks, or projects, you define the project scope. That is, what portion of the overall vision is addressed by this particular project. Vision shouldn’t really change much, whereas scope may be more fluid and adjust as needed.

So now that I am shifting into the entrepreneur’s seat, I see parallels with this line of thinking and the business entity itself. I realize that not only do I have a vision for this particular product (a niche social networking website), but I have begun to shape a vision for the company that will create the product. This vision includes ethical and moral codes of conduct that are modeled after my own personal thoughts and feelings on the subjects. I have thought about how the business entity should conduct itself when dealing with members, clients, etc. I have also thought about employees and the culture I would like to see in the company.

All of these thoughts happened subconsciously and then bubbled up to my conscious thought. Maybe it is all coming about because of my pursuit of the business side of the company in recent days. Regardless, it is comforting to know that my brain has already thought about and formulated an opinion on these topics that I can use as the basis for building a solid company.

Investment

December 18th, 2006

It has been about three months since I started this project. Here is a recap of what I have accomplished:

  • I learned the Ruby language and the Rails framework. I know I still have a lot to learn, but I am far enough along that I’m feeling comfortable in my ability.
  • I created an executive summary for the business. This helped me to nail down just what I was thinking for the site and got me to focus on how the business would work.
  • I created a depth-first prototype of the site. Of course, being a prototype it was hacked together, but contained about eight major features that I would like to see in the real site. Not pretty, but functional…mostly.
  • I successfully released an alpha version of the site and gathered a group of testers to try it out. Based on their feedback, I released several minor releases for bug fixes and improvements. All of this served to improve the site.
  • I successfully released a second version of the alpha containing bug fixes, improvements and one new major feature. This is currently being tested by my group and I have already received some good feedback.
  • I have compiled a large feature list to be implemented on the site and I am progressing steadily toward the next version.

I have been having a great time working on this. I have learned an enormous amount in a very short time and discovered a language that I enjoy very much. I have told myself from the beginning that, if nothing else came of this site, I would learn a lot in the process. Now that things have gotten so far along, I don’t want knowledge to be the only thing I get from this. I want to see this site be used. I want to see the membership grow and the community thrive. I want it to succeed in it’s purpose…

To tell you the truth, I am almost at the end of my rope financially. I am worried that I will not be able to see this through to the end that I would like. That’s why it’s time I seriously pursued venture capital…

I believe I am in a good position to attain some level of funding, but the world of investment seems so foreign and mysterious to me. I have read a lot about funding, but I still regard it as a strange and wily beast. However, I am going to try in earnest. I believe that having a functional site will help. It shows that this is more than an idea and I have taken serious steps to make it a reality.

Tomorrow begins my focus on capital. This means that the site will take a backseat for a couple of days so I can get down to business. Please share your advice on pursuing venture capital in the comments. I would love to hear other peoples experiences.

Attracting Users

December 15th, 2006

Ah, the eternal question of a startup. How do you attract a user base? This is a question I have been pondering much in the last few days. As I neared my second release, I began to think that it was good enough to really start inviting people. Not just testers, but real people!

For some startups out there the targeted user is…well, anyone. They might be able to spray-and-pray, hoping they attract enough users from the massive ocean of potentials to make the site either profitable or attractive for acquisition. My case is slightly different, though.

For my startup, I am targeting a specific niche market. I know exactly who will use the site. Chances are that nobody else will use it because it would not be of interest to them. I’m choosing to focus on the US market first, see how it goes and then expand as necessary. In the US there are around 30 million potential users. Not a pond by any means, but not an ocean either.

So, does knowing who your users are make it easier or harder to attract them? I guess this is something I will find out soon enough. Here are some random thoughts about it though:

  • The viral effect could be more rapid as the market is smaller and therefore likely to be a tighter group in the real world. However, the smaller potential user base could also be detrimental as it may not have the critical mass necessary to actually go viral in the first place…
  • With a smaller group who may actually know each other in real life, a single misstep could spell disaster. However, there are currently few offerings in this market and those that exist are poor. That is, expectations might already be low…
  • I know who they are and I know where to find them. In fact, there are several “hubs” which could be central points for locating potential users and spreading the word. However, the domain is far from my expertise, so a straightforward approach may not work best. I have access to addresses, email, phone number, etc. of the “hubs” and could get in contact with them in any number of ways. I think I may need to approach groups of these “hubs” in different ways and see which approach gets the best results.
  • I strongly believe that if I build a better site with the user’s interest in mind then I will not need to worry too much about getting the users. That is, I won’t need to sell them on the idea. They will want to use it because it fulfills a need in a useful way. My naivety on this subject is going to be tested…

Let me know if you have any other thoughts or opinions on the matter.

Alpha Version 2.0

December 14th, 2006

It’s only been a couple of weeks since the first alpha, but I am moving on an aggressive schedule to release significant new features every couple of weeks. In addition to the major releases, I have been adding or modifying smaller items as I see them. So really there were several 1.x releases in there, but I didn’t keep close tabs on them.

My deployment time is way down. This time around it took me less than an hour to fully deploy the site. Part of this release made some improvements in that area to allow things to go more smoothly. I also know more about what I should be wary of changing in the host environment.

This version was live on the site as of this morning, but I allowed the notice stating changes and downtime up all day just in case I needed to work some things out. I spent the rest of the day adding content to the site. Wouldn’t be a very useful site without content, eh? Got a taste of my own medicine and for the most part, I was pleased. There were a few things I was annoyed with and made notes to change them soon. Funny how things look different when you put on your user hat…

Yet another step closer to ending my self-imposed closed-registration, invitation-only alpha. It will be a great feeling to open registration to the general public. Still lots to do before that time though.