|
|
Roy Leban
Average of 16 posts per month.
January 7
—
11:35 PM
I surprised myself by deciding to rewrite authentication again. I'm almost done with version 3, which is a complete rewrite instead of a modification to the existing code, like version 2 was, and it's taken me longer than the first two versions combined. But, I feel it's much stronger the way I'm doing it and some of the bugs I had in item-level authentication should just vanish. After finishing the 2nd version, I had this nagging feeling that it still wasn't right. Basically, my design was based on the need to work around a limitation in Google App Engine -- the lack of proper relationships between tables (combined with wanting to reduce the number of database queries). I spent some time thinking about it and realized a simpler, more elegant way to avoid the limitations which got me a much better data structure and thus, much better code. I wish I'd thought of it in the first place! But that's the way it is sometimes -- I had to learn from my mistakes.
On a different topic, yesterday I mentioned that I went to the AoA pitch clinic. I've decided that I'm going to spend at least an hour a day working on business planning, my pitch to potential investors, and related items. But, I'm not going to blog about it, except perhaps to indicate how much time I spend on it. The reason for this is that I want to make absolutely sure that nothing written on this blog could be construed as anything resembling a public offering to invest in Groupthink. I will, however, think about writing some blog posts about the process after it's all over.
January 6
—
11:19 PM
As we all know, long meetings are frequently less effective than short ones. So, I'm pleased to say that in the last few days, I've had not one, but two, effective meetings that ran three hours.
The first was on Friday, with one of my advisers. We talked mostly about business and how to build the business, not the product, though we spent some time on that too. I learned a lot, but, not surprisingly, was reminded of how much I still have to learn about business.
Today, I went to the Alliance of Angels pitch clinic, a once-a-month seminar that covers what the "10-minute pitch" and the corresponding pitch deck should look like. It's somewhat ironic that it takes three hours to cover a 10-minute talk. But, it wasn't three wasted hours. Like the 10-minute pitch itself, it was all content. Sure, there were sample slides and even some silly bad example slides at the end, but there wasn't the fluff you so frequently get in presentations. The information was clear, useful, and on target, and it was obvious that the presentation had been well honed over many, many presentations. Net: if you're thinking of looking for funding, even if it's not from angels, I highly recommend AoA's pitch clinic.
The meeting and the seminar were different in a number of ways. One was a discussion while the other was a presentation. One had a very simple agenda while the other had a big long agenda and a slide deck. But, they were both successful, despite their length, for the same reason -- clear focus, with everything discussed revolving around that focus. And that's something useful even when you're not in a meeting.
In product news, I'm in the midst of rewriting the authentication system again. Almost done. I'll blog why and what tomorrow.
January 6
—
11:19 PM
As we all know, long meetings are frequently less effective than short ones. So, I'm pleased to say that in the last few days, I've had not one, but two, effective meetings that ran three hours.
The first was on Friday, with one of my advisers. We talked mostly about business and how to build the business, not the product, though we spent some time on that too. I learned a lot, but, not surprisingly, was reminded of how much I still have to learn about business.
Today, I went to the Alliance of Angels pitch clinic, a once-a-month seminar that covers what the "10-minute pitch" and the corresponding pitch deck should look like. It's somewhat ironic that it takes three hours to cover a 10-minute talk. But, it wasn't three wasted hours. Like the 10-minute pitch itself, it was all content. Sure, there were sample slides and even some silly bad example slides at the end, but there wasn't the fluff you so frequently get in presentations. The information was clear, useful, and on target, and it was obvious that the presentation had been well honed over many, many presentations. Net: if you're thinking of looking for funding, even if it's not from angels, I highly recommend AoA's pitch clinic.
The meeting and the seminar were different in a number of ways. One was a discussion while the other was a presentation. One had a very simple agenda while the other had a big long agenda and a slide deck. But, they were both successful, despite their length, for the same reason -- clear focus, with everything discussed revolving around that focus. And that's something useful even when you're not in a meeting.
In product news, I'm in the midst of rewriting the authentication system again. Almost done. I'll blog why and what tomorrow.
December 17
, 2008
—
11:59 PM
I was surprised that my planned changed to authentication stirred up some controversy. The basic issue is that Google IDs, which I'm using for authentication, only allow you to use one Google ID at a time. That means that if I force you to switch to a different Google ID (because I need you to prove your email address), that might sign you out on other sites. Not all sites work that way. For example, the way I've done authentication on Puzzazz , you will not be automatically signed out the next time you visit. But that's not the way most sites do it.
In the end, after weighing the options, I decided to go ahead with my plan to switch to only keeping email addresses. Of the various other solutions, all of the good ones are a superset of what I was planning to do, or can easily be built from it. The other solutions are more complicated or more problematic, or keep the problems I was trying to avoid. So, I did it and it's working now, at least for projects. Now I can go back to dealing with the issues that inspired this change.
I forgot to post last night (too many things going on), but the chart still includes yesterday as a working day.
December 15
, 2008
—
11:59 PM
I spent today working on Puzzazz instead of Groupthink, cleaning a few things up and changing the book recommendations completely. Now, instead of alternating an Amazon widget (which was just plain ugly) with Google ads, it now shows one book or product per day and there's a dedicated recommendations page showing the recommendations from the last six days. I've also added some text to make it clear that these aren't books that were randomly selected by Amazon or some program. Check it out at www.puzzazz.com.
I also had an extra reason to hold off on Groupthink today. A bunch of feedback on my planned authentication & authorization changes to Groupthink made me think I might want to let the idea bake for another day before finishing it.
December 12
, 2008
—
11:29 PM
I finished up one client task today but I realized I have an extra Permissions task. I've decided to make a slight architectural change to the way I've been handling users. I haven't figured it all out, but a discussion late this afternoon with Damon Cortesi (who had stopped by StartPad and just happened to be there when I wanted to think about it) helped solidify my thoughts that it was a change I ought to make -- and the time to do it is now because it'll be more painful later.
When you give permissions to someone else in Groupthink Projects, you provide their email address. A lot of the time, it's an email address that the system's never seen before, so I cannot associate the email address with an actual user. But, later, when the person signs in, I can. And that's exactly what I have been doing, partially because of advice from Google -- they advise that apps shouldn't store users' email addresses because they might change (although there appears to be no current way that they could). So, as soon as a I know the user for the email address, I switch to referencing the user. But, this means that, in all my permission code, I have to constantly check if a permitted person is a user or an email address. That's a pain and leads to problems, some of which I was dealing with.
So, I've decided, even though it's late, to change this and switch to only using email addresses. I'm also considering an additional change, which would also go against the normal way of doing things on Google App Engine. I'm less sure about this change, but it would allow me to simplify the logic in dealing with item-level permissions. The tradeoff is larger data storage, and a slight redundancy in one place, but I think that's an ok tradeoff to make. I'll ruminate on it this weekend.
At the STS talk on tuesday, Rajiv Goel asked me when I was going to launch and I said I didn't know yet. The correct answer would have been to say "when I can guarantee I won't lose your data." That's not the only criteria, but it's the most inportant one. Although this change needn't cause data loss, it woudl be a good thing if I'm confident I won't need any more changes like it when I launch.
December 11
, 2008
—
11:59 PM
I had my once-a-month UX Office Hours at StartPad again today. No one showed up for the first hour, and then I was busy straight through and actually ran a bit over. For various reasons, I really feel I can't talk provide any details about the people who stopped by. I can, however, provide a few takeaways which might be useful to others.
- If you can solve a problem for internal users first, and then focus on external users, you are, in a way, lucky. You're not lucky because you have the problem in-house. But you are lucky because you have real people who will be using the software before outsiders and, although it sounds like cheating, you can do less for your in-house people because they work for you. For example, if things are ugly, just tell them to ignore it -- you can't exactly say that to real customers.
- If you have a big problem you want to tackle, and you can figure out what the biggest pain points are, focus on them first. Don't focus on the easiest problems -- focus on what gives you the most bang for your development buck.
- Don't clean up the little stuff (the look, the graphics, the CSS, etc.) when you're not sure what you're cleaning up should exist in the first place. Yeah, it'll look a lot better, but you'll have wasted time if you end up tossing it.
- If you have a non-technological competitor (as Groupthink Projects has), you really need to make sure what you're building is very easy to use. You want people walking away thinking about how much faster they accomplished their goal than they would have without your product, even if it's not true. Perception is reality.
- Your competitors may surprise you. I mentioned in my STS talk that Microsoft Word is a competitor to a database system. Similarly, Google would be a competitor to a price-matching service (and about a hundred other products).
- One way to get customers to stick is to really focus on those things that make you unique, that your competitors don't offer (where competitors also equals Microsoft and Google). Consider making the things that are unique about your product so pervasive that your users come to expect them there, all the time. Then, it won't feel right to them when they try to use your competitors.
Tomorrow, I'll discuss some of the things from my talk at STS.
Only half a day of real work today (and a few distractions there), so flat once again. I'll admit, a lot of it's a grind right now.
December 10
, 2008
—
08:58 PM
At last nights talk, I showed Groupthink for the first time publicly. The first half of the talk was a discussion of mistakes I've made in the past, mistakes I'm making now, and a few things I'm doing right. That was followed by some screen snapshots and a brief live demo (which, as noted in yesterday's blog post, had a glitch because of the lack of a network connection).
Here are ths screenshots I showed:
Basic Screen, showing an open project Same project, with some items checked off
Options for a project
Project-level sharing options (you can also share individual items)
I'll write more details in the future, but if you can't wait, a video of the talk is available already.
And today's status, back to making forward progress, with one client task taken care of:
December 9
, 2008
—
11:59 PM
Tonight, I gave the first public demo of Groupthink Projects at a Seattle Tech Startups meeting, along with three other startup companies. Overall, it went pretty well. The first half of my talk was about mistakes I've made and what I'm learning from them, and the second half was about Groupthink Projects itself, featuring a few screenshots that I took earlier today and ending with a live demo. And, of course, as seems to happen in all live demos, something went wrong.
I had planned to show two things in the live demo -- asynchronous updating when you make multiple changes in quick succession, and the first-time experience for new users.
The first thing I was showing, asynchronous updating, went fine. But, the point I was trying to make -- that you can keep working while it's updating the server -- was considerably less obvious when I wasn't running my server in debug mode, which is easily ten times slower. So, the busy icons I was trying to point out appeared and disappeared so quickly they were hard to spot. Hopefully, everybody got the point -- no delays.
The second thing I was showing was the first-time experience. When a new user visits Groupthink Projects, they immediately get a new project -- no questions, no sign up, no nothing. They can just start immediately. To demonstrate this, I opened a new Incognito window in Google Chrome -- this ensures that I don't have any cookies and the browser will look like a completely new user to my server. Then, I opened the site and I got a new project. So far, so good. Unfortunately, when I tried to click to type, nothing happened. I refreshed, same thing. So, I moved on, and signed in (which is all you have to do to register) and got the appropriate "Welcome" message, with the project now being owned by my new user. But, I still couldn't make any changes to the project.
Someone in the audience joked that I had forgotten "Pray to the demo gods" on my to do list for the presentation, which I had shown earlier. I didn't have a better explanation.
Later, while someone else was presenting, I went to look at what was going on. It was amazingly simple. Rather than loading jQuery from my own server, I'm getting it from Google Code. It's faster and it saves bandwidth. Unfortunately, I didn't have a net connection, so everything from my local server loaded, but jQuery didn't. No jQuery means no client functionality. The first project I showed worked fine because I had opened that window while I still had a net connection. I'll be fixing the code tomorrow to load jQuery from the local server when running off the development server.
Still flatline on tasks today. Some of the bugs I fixed earlier in the day were progress for some of them, but, to be fair, I didn't really complete any tasks.
December 8
, 2008
—
11:57 PM
Flat line on progress today for two reasons:
First, I had been procrastinating sending out a Puzzazz newsletter and I finally sent it today. Unfortunately, doing that for the first time, combined with some other issues, took up half a day. But, as part of that, I finally got around to officially announcing that I'm selling copies of my game WIM, the every which way word game. Here's a picture of a game in progress and you can find more information at http://www.puzzazz.com/wim.
Second, I'm giving a 10-minute presentation about and demo of Groupthink tomorrow night at Seattle Tech Startups (7PM, at The Douglas Forum at the U-W Executive Education Center) and I'm not ready yet. Bugs to fix and a presentation to prepare (and prepare for). That took priority over closing down specific tasks.
That means that today's chart isn't particularly interesting, but here it is anyway for completeness.
|
|
|
|
Sponsors
|
|