Do you have a web site? Do you display small images that represent larger ones such
as "thumbnails"? Or do you need to dynamically move or resize images on the page?
Then you need
PopBox!
With only a few simple modifications to your web page your thumbnail images will
be "popping" out of the screen when visitors click on them instead of reloading
a time-consuming second page.
PopBox is an image magnification javascript solution for dynamically resizing your
images on your web page, with only 3 simple lines of HTML/Javascript code. And it's free!
I've written up an introductory article on PopBox, or you can go straight to the
product page
now!
Web Site Back Up - And Faster Than Ever!
The planned network upgrade went very smoothly today and the web site was down for only
a couple of hours from about Noon to 2:00.
My average speeds are now:
- Download Speed: 9466 kbps (1183.3 KB/sec transfer rate)
- Upload Speed: 10994 kbps (1374.3 KB/sec transfer rate)
I know that's not a big deal for most businesses with T1s and such, but for running my
server from home over fiber DSL that's great!
Product release tomorrow...
Planned Site Outage on May 23
Due to a planned network upgrade the web site may be down for a couple of hours on Wednesday,
May 23 in the afternoon PST. I don't have an exact time or length of outage but I'm excited
about the prospect of much faster speeds.
I'm also still on track to release my product on Thursday, so remember to check back!
Product Launch on May 24
My current internet provider here in CA is SureWest, and I personally haven't had any problems
with them. In fact, they have been very easy to work with and have even upgraded my speed once
or twice without a price increase which is always nice. Well, they're doing it again.
On May 23 they have scheduled me to get a fiber drop and a bandwidth increase to 1MBps synchronous.
The fact that this is a synchronous connection means that my upload speed will be the same as my
download speed, which makes a big difference when you run an internet-facing server on my side of
the connection. Late next week you should notice a big difference in page responsiveness.
The only downside that I can see is that they tell me I will need a new IP address and could be
down for up to 4 hours, so I've decided to delay my product launch until the day after the
upgrade so as to avoid any outages so close after launch. I don't really expect a flood of visitors
to be trying to get through but I do expect the product to become popular (and not just because
it's free) and I'd rather not look flaky.
So if you have a lot of images or screen shots on your web pages be sure to check back on May 24!
Sidetracked
I've been sidetracked for the last couple of weeks with a completely different product,
but I got excited about it and totally went for it. I finished it this morning but I can't
release it until the web docs and product page are complete so I'm working on that. It sure
takes a long time to produce anything on only an hour or two a day.
I won't get super specific on what it is right now, but I will say that it's a great little
javascript library product that will greatly enhance any web page that displays images.
Did I mention it's free?
I should be able to release it early next week and then I can get back to my commercial product.
On the Business of Software site we had a discussion of e-commerce providers
where we talked about the good and bad of creating your own e-commerce system vs. going with
an established 3rd party provider. I thought it would help if there was a comparison matrix
that would allow you to see the costs before you made a choice, since it's difficult to decide
between a provider who offers 1.9% + $0.21 per transaction or one who offers 2.1% + $0.19 per
transaction.
The numbers obviously depend on lot on your product price, but I've just made it all easy to
calculate for you with this handy matrix. It's changed my mind!
Router Down
My fiber router went down today taking me offline for about an hour. Someone was, a-hem,
checking some telecom lines with a multimeter and accidentally sent a little shock
through pins 1-2 of the RJ45 interface cabling.
I didn't notice the outage until I tried to access the internet about a half hour later. I got
lucky that rebooting the router solved the problem and I've promised myself NOT to touch those
lines again. Traffic to my site is on the rise but it's still pretty low, so it's a silver
lining that probably few people noticed. :)
Over the course of the last month or so there has been a lot of talk on the blogs
about recursion. It's being touted as a great way to separate the good programmers
from those who don't know what they're doing, but I think in the middle of all the
praise it should be noted that despite the benefits of recursion it has a nasty
downside: Recursion
doesn't scale.
I suppose that somewhere in the heart of the mass of cubes it settles down to a
dull hum, but here on the edge traffic is considerable. Just a few days ago a cube
mover was pushing a squeaky-wheeled cart down the aisle and the pitch of the wheel
squeak was like fingernails on a chalkboard. I had to cover my ears and hum while
I had flashbacks of Eddie Murphy plugging his ears and yelling "I'm not listening
to you!"
RSS And Compression Problems
I've already received email about my rss feed showing duplicates. I know - it's a pain but I really
needed to make my feed standards compliant if I was going to continue doing this. It's better to
do it now than a year from now when there would be a lot more entries. If it's really really bothersome
you can delete the feed and re-add it. Sorry for the inconvenience.
I also noticed that compression was wreaking havoc with my SSL-enabled pages. Response time was literally
in the minutes instead of seconds. That obviously won't work for e-commerce. Either the FlatCompression
filter can't correctly compress a https stream or my lamo server CPU can't handle the load of compressing
and encrypting. It's a pretty old server so I'm betting on that. I was able to add FlatCompression headers
to keep from compressing those pages and the problem was solved. Since I can't afford a new server any time
soon I'll have to structure my e-commerce/shopping cart pages to be under a different directory or subdomain
so I can easily add these headers in IIS.
Web Site Changes
After only a week of getting up at 4:00 I got a lot done, but this morning after the daylight
savings time change it proved too difficult and I slept in. I told you 3:00 was too early!
I'm ready for tomorrow though.
I've spent the last week making some changes to my web site and its infrastructure to make it
easier to navigate. Most of these changes are subtle but there are a few big ones too. All this
is in preparation for the e-commerce I expect to run in the next month or so for both my site
and my wife's.
The first thing I did was enable compression on my web server with the free
FlatCompression
ISAPI filter. I was using IIS 5 built in compression, but it apparently wasn't working and I've
recently read about a few bugs with it anyway. Eventually I'll upgrade to IIS 6, but for now
I am very happy with the way this is working out. You should notice much faster page loads.
The second thing I did was to completely revamp my rss feed.
It turns out that I was not standards compliant on a bunch of issues, and perhaps more importantly
I had not set the <ttl> element of the <channel> so some feed readers were pinging way too often.
I just don't have the time to update more than daily so I set my ttl to 1440 minutes (24 hours).
I also excluded the hours I'm typically asleep and Sundays because I'm not working then either. I
hope that will reduce traffic to the rss.xml file to something manageable as this site grows. You
can see all these changes by viewing the source of the feed xml file.
The next change I made was to eliminate the CodeSolutions menu choice and place all the solutions
in the Articles section under the "Solutions" category. You can click the "+" to the left of
the Articles
header to open a categorical list. I made this backward compatible by keeping the old pages there,
but redirecting them server-side with Server.Transfer(). Very fast and efficient.
Then I created a reverse
chronological archive page and have on the back-burner an online reader page so that a reader
can step through the blogs from start to finish if a reader were so inclined to do so. This is all
a little overkill since at the time of this writing there are only 21 entries, but I expect it's
value will be made evident in the future.
I have also created "Permalink" entries by each blog date so that you'll have a reference to return to
this entry easily. Again - this is something I expect will show true value later. Along with that
the default number of entries displayed has been set to 12 so page load times will be snappy, and there
is a "Previous" link at the bottom if you want to see more.
All these changes are pretty easy in .NET. I know a lot of people are using specialized tools like
WordPress, but I really don't see the advantage when you have access to a full development environment
like I do. Maybe there isn't one?
Transitioning to Micro-ISV, Part 1
In posting articles it has always been my goal to be helpful to others, and so in
the spirit of helpfulness I will be publishing a series of posts on how to start
your own company and more importantly on my real-time experiences transitioning
from a consulting company to an Independent Software Vendor. I'll also post thoughts
that originate from my day job too.
I love to program, BUT... I'm getting tired of programming for someone else. So
now that my side projects are complete I'm going to take my morning block and use
it to increase my Micro-ISV business.
Funny that I should call it that actually, since I only have one product so far,
and it's free.
That certainly isn't going to support the family. Maybe it's more like a micro micro-ISV.
The idea here is to create software that actually helps people and become profitable
in the process, but my issue has always been with time.
I should preface this with a little background information… I already make a good
income through my consultation,
so money really isn't the problem, and yet it is the problem as well as time. As
I mentioned in a previous
article, every dollar I make requires me to put in time working for it since
I'm an hourly consultant. In addition to my regular gig I normally have a number
of side projects that keep me busy but it's starting to grate on me. It's a good
thing I don't need a lot of sleep.
A good income doesn't mean that I'm rolling in dough or anything. I have a wonderful
family with a beautiful wife and three boys who are all supportive of my software
habit, but we've accumulated some expenses, mostly relating to the kids, that keep
the well fairly dry most of the time. I guess it proves that no matter how much
you make you can find a way to spend it. What I'd like to do is match my consulting
income with software revenue so that I can get out of the consultant business and
spend more time with my family.
So from here on out I get up at 4:00 AM every day! I was getting up at 5:00, but
with my day job starting at 8:00 I don't really have enough time when you remove
time spent showering, eating breakfast and playing with my family. I end up with
about 1.5 hours of usable time. That's not bad over the course of a week (I get
up early on Saturdays too) which gives me about 9 hours a week, but if I get up
at 4:00 I can add an additional 66% for 15 hours. That one extra hour makes a huge
difference. Don't even try to recommend getting up at 3:00 - that's going too far!
I'm going to accomplish this by simply going to bed when I'm tired, which is usually
around 11:00 PM. I expect this to shift to 10:00 within days of getting up at 4:00.
I base this on Steve Pavlina's excellent article on
getting up early that has worked for me so far. The other reason for the
shift is that I can't work at night because it keeps my wife awake, but she won't
wake up once she's asleep.
I guess I should explain my work environment. I live in a ~2000 sq. ft. home in
Northern California in the suburbs. I love the neighborhood and would like to stay
where I am, but we are definitely cramped on room. Life is about compromises though.
We have a formal dining room that is NEVER used and a 4th bedroom that has been
converted to a playroom for the kids downstairs off the kitchen. Two bedrooms upstairs
are for the kids and there is the master bedroom for us. So unless we convert the
dining room (not going to happen) or I move into the play room (which incidentally
my wife has already done to run her other
business), the only place left for me is the wall of the master bedroom.
I don't have the latest and greatest computer. I don't even have an LCD monitor.
But I have the latest development environment and the will to produce. Feel free
to support my advertisers so I can spend more time on writing and coding. :)
So over the next couple of weeks/months here's a partial list of the articles I
hope to write, interspersed with other entries:
- Starting a company.
- Incorporating.
- Choosing a company name and logo.
- Choosing a product.
- Preparing for e-commerce.
- Writing your own shopping cart.
- Writing a technical specification.
- Releasing a product.
- Advertising your product.
As always every article will have examples and code snippets that you can copy or
download. I have a few articles on the back-burner that relate to contracting
that I will finish and get online also.
Wow. It's kind of nice getting up at 4:00!
|