State of the Micro-ISV-osphere

Updated on Saturday, May 1, 2021

I was a micro-ISV (µISV) for years before I heard of the term. It was coined by Eric Sink to describe a one man software shop, and is now generally used for any small software company.

There isn't much market data available this far down the long tail so I've spent some time analyzing PAD files to see if I could answer a few questions.

PAD is the Portable Application Description specification from the Association of Shareware Professionals. It's used to describe software for submission to download sites. How useful these sites are is another question — read Scott Kane on this if you haven't already.

I spidered all the PAD files listed in the ASP directory, downloading data on 76,066 products from 39,861 µISVs (companies / people / publishers). It's not a perfect data set as there are PADs that aren't software and µISVs that don't use PAD. I've also heard that some people are developing web apps these days. But here goes…

Where are the µISVs?

Countries with the most micro-ISVs

Overwhelmingly in the US. Other countries with more than a thousand listed are the UK, Russia, China, India, Canada, Germany and Australia (in descending order). Most countries have at least one µISV but the numbers fall off pretty quickly.

How much do µISVs charge for their products?

Micro-ISV product cost distribution

$29.95.

About a third of products are free and a third fall into 9 price points (all ending in 5). I found over a thousand different US Dollar price points overall.

The most expensive product was a $150,000 Green Living site license from South Beach Software (an order of magnitude more expensive than the runner up).

How large are µISVs products?

Micro-ISV product sizes

There's not much action past 20 MB. Most downloads are between 1-2 MB. There's an interesting little spike around 14 MB. I guess this is a popular framework, possibly Java? The largest download was almost 1.5 GB.

Are µISVs still releasing downloadable software?

Most recent micro-ISV product release by month

This is a tough one to get at because PAD files just tell you about the most recent version, not the release history. The chart really shows a last update distribution for the products in the PAD catalog.

There's a large number of products last updated in mid-2008 with nothing comparable in 2009. Could this be a drop-off in PAD usage? A shift to web apps? Maybe final releases before the recession hit leading to less spare cycles for side projects (my µISV certainly pays for beers rather than mortgages).

How many products do µISVs publish?

Micro-ISV products per company

This final chart shows that most µISVs have just one product. Of course in some cases there might be a brand per product and still a single entity — it's impossible to separate this out from the PAD data. The largest number of products from a single µISV is 616.

Add your comment...

Related Posts

(All Marketing Posts)

(Published to the Fediverse as: State of the Micro-ISV-osphere #marketing #asp Data on micro-ISVs - small software publishers - generated from association of software professionals PAD files. )

Catfood: Earth and Follower

Updated on Sunday, November 6, 2022

I've been busy updating a couple of Catfood products.

Catfood Earth updates your desktop wallpaper to show day, night and cloud cover. It can also display earthquakes, time zones, places and US weather radar:

Catfood Earth

Catfood Follower is a Twitter tool that automatically follows people who follow you and/or removes friends who stop following you. I think it's most useful for business accounts:

Catfood Follower

With these two out the door my next project is overhauling the Catfood website. I'm kind of dreading it, but the current architecture is over six years old and it's definitely showing its age.

Add your comment...

Related Posts

(All Code Posts)

ESRI Shapefile Reader in .NET

Updated on Sunday, March 12, 2023

ESRI Shapefile Reader in C#/.NET

Catfood.Shapefile is a .NET read-only, forward-only parser for Esri shapefiles. With Catfood.Shapefile it’s easy to enumerate all the shapes in a shapefile together with their metadata.

From version 2.00 Catfood.Shapefile is available via NuGet. It has also been migrated to .NET Standard 2.0. This means it is compatible with .NET Framework 4.61 or better and .NET Core 2.0 or better. If you use an older version of .NET then you should continue using Catfood.Shapefile 1.60. The source code is on GitHub.

Esri (originally Environmental Systems Research Institute) shapefiles are a GIS (geographic information systems) file format that can store a wide variety of geographic information. I originally started working with these files to add country borders to Catfood Earth.

Shapefiles actually consist of a number of different files with different extensions. There are three mandatory extensions: .shp, .shx and .dbf and so a shapefile containing borders might be distributed as borders.shp, borders.shx and borders.dbf. The .shp file contains the actual shape data in vector format, often lines or polygons. The .shx file is an index to the shapes. Finally the .dbf file is a database of metadata associated with the shapes. Catfood.Shapefile requires these three files.

There are several optional extensions that might be included with a shapefile. .prj contains the geographical projection, .xml is an alternate metadata format, .sbn and .sbx index for spatial queries, and .cpg defines the code page used by the shapefile.

Here is some sample code for a .NET 6 console application to print basic information about a shapefile and the first point in the first polygon:

To use this, create a new console application, paste the code into Program.cs and add Catfood.Shapefile via NuGet.

The default constructor uses a database connection string that uses the Jet driver. This is only available for 32-bit applications and you will need to target Windows x86 to use it. An overload is available that allows you to specify a custom connection string to access metadata.

Catfood.Shapefile supports Null, Point, MultiPoint, PolyLine, PolyLineM and Polygon shapes. Three dimensional shapes (PointZ, PolyLineZ and PolygonZ) are not currently supported. There is also currently no support for writing shapefiles. If you add any of this please send a pull request on GitHub!

I am grateful to the developers who have contributed to Catfood.Shapefile over the years. Most are credited in the release notes below. If you need help or have feedback please leave a comment on this post.

Updates

Catfood.Shapefile 2.00

I just released Catfood.Shapefile 2.00, my .NET parser for ESRI Shapefiles.

The big change is that I have migrated to .NET Standard 2.0. This makes it possible to use from .NET Core as well as classic .NET Framework from 4.6.1 up. If you need to use an older version of .NET Framework then you'll want to stick with Catfood.Shapefile 1.60.

Catfood.Shapefile is now also available via NuGet. This is the recommended way to install. The source code is still available on GitHub.

Catfood.Shapefile 1.60

I just released Catfood.Shapefile 1.60. This contains a fix from Libor Weigl that factors out the enumerator so that you can still access the shapefile after enumeration.

Catfood.Shapefile is a .NET library for parsing ESRI Shapefiles.

(previously)

Shapefile Update

A few people have asked for 3D shape support in my ESRI Shapefile library. I've never got around to it, but CodePlex user ekleiman has forked a version in his ESRI Shapefile to Image Convertor that supports PointZ, PolygonZ and PolyLineZ shapes. If that's what you need please check it out.

Catfood.Shapefile 1.50

I've just released a small update to my C# Shapefile library on Codeplex. Catfood.Shapefile 1.50 fixes a couple of bugs related to metadata and adds the ability to access metadata records directly via IDataRecord. 

Catfood.Shapefile 1.40

I’ve just released a small update to Catfood.Shapefile. Stephan Stapel, who implemented PolyLineM support, has contributed a patch that improves the class hierarchy. CodePlex user originSH suggested supporting the ACE driver for 64-bit systems. I’ve added a constructor overload that allows you to use predefined Jet and ACE connection strings or provide your own templates if necessary. Thanks to Stephan and originSH.

Catfood.Shapefile is a .NET library for enumerating ESRI shapefiles. I originally wrote the library to help me build some complex layers in Catfood Earth. Since then it’s picked up thousands of users and some really valuable suggestions and patches from the CodePlex community. I’m very glad a took a couple of hours to open source the library back in 2009.

PolyLineM support in Catfood.Shapefile

I’ve just updated Catfood.Shapefile, my ESRI Shapefile parser for .NET, with PolyLineM support thanks to a contribution from Stephan Stapel. The solution for the new version has also been updated to Visual Studio 2010.

Download Catfood.Shapefile.dll 1.30 from CodePlex.

ESRI Shapefile Library Update

I've just released a small update for my ESRI Shapefile Reader project on GitHub. The only change is a patch from SolutionMania that fixes a problem when the shapefile name is also a reserved name in the metadata database. The patch escapes the name preventing an exception from being thrown.

Catfood.Shapefile.dll is a .NET 2.0 forward only parser for reading an ESRI Shapefile. Download 1.20 from GitHub.

Catfood.Shapefile.dll 1.10

I've just released v1.10 of my ESRI Shapefile Reader (Catfood.Shapefile.dll). This is a .NET 2.0 forward only parser for reading shapefile content.

Sharon Tickell was kind enough to report two bugs with suggested updates. These have both been fixed in 1.10.

While working on these fixes I also discovered that there are no 64-bit Jet drivers (since releasing the first version I've upgraded to a 64-bit box for development). This is an easy fix, just target any application using Catfood.Shapefile.dll at x86. I've updated the demo application accordingly.

Download Catfood.Shapefile.dll from GitHub.

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: ESRI Shapefile Reader in .NET #code #shapefile #esri #github #codeplex #polylinem #c# #.net #nuget Catfood.Shapefile is a .NET library that provides easy access to Esri shapefiles (.shp, .shx, .dbf), available on NuGet and GitHub. )

How many people don't read this blog?

Updated on Tuesday, November 15, 2022

This is a joke metric that I first proudly displayed on Catfood Magazine back in 1997 (it's broken on the archive of the site). Everyone had a hit counter back then, but as far as I know we were the first site with a non-hit counter.

The dirty secret was that the counter just showed the world population. The readership was a rounding error.

My new count of non-visitors uses the US Census Bureau's world population estimate and subtracts unique visitors from the Google Analytics API. The count is cached for an hour so it doesn't slow the page down too much.

Updated 2022-11-15 14:50:

The United Nations says:

"The world’s population is projected to reach 8 billion on 15 November 2022..."

And the 8 billion number is being widely reported today, however my current unread count is a paltry 7,932,915,881. That's because the US Census world population estimate is a lot lower, by over 66.8M people. That's approximately France!

Add your comment...

Related Posts

(All Etc Posts)

(Published to the Fediverse as: How many people don't read this blog? #etc #ithcwy As of the last update to this post, 7,927,037,899 people have not read I Thought He Came With You in the past month. )

How to get technical support without spending hours on the phone

Updated on Sunday, May 3, 2020
Them: Hello, my name is Phil, how can I help you today?

You: My DSL connection is slow.

Them: Okay, I can help you with that, have you...

You: My first thought was that the Linksys router that's been working perfectly for five years has gone wrong. So I connected my computer directly to your off-brand modem with the same result. I then thought that the problem must be with the computer, so I reinstalled it from the manufacturer discs and rebooted about seven times.

Them: Let me connect you to my supervisor...

Them: Tap, tap, tap, oh, we seem to have switched your service back to the basic package. Tap, tap, tap, fixed.
Sometimes it's fun to argue with support. Sometimes you just need to short-circuit the idiot script to get through to the person who can fix the problem.

I think it's time for CAPTGUAs or Completely Automated Public Turing test to tell Geeks and Users Apart. A quick puzzle or two that bypasses the first couple of levels of support.

Add your comment...

Related Posts

(All Etc Posts)

(Published to the Fediverse as: How to get technical support without spending hours on the phone #etc #support How to bypass the first few levels of tech support and talk to someone who can actually help you. )

Business of Software 2009

Updated on Sunday, May 3, 2020
I'm a Joel Spolsky stalker at the moment - after Stack Overflow DevDays last month I spent three days this week at the Business of Software conference in San Francisco.

It was an incredibly high value conference, in terms of both speakers and attendees. Next year it will be back in Boston, which sucks for me, but I'll make every effort to attend.

I was really excited to see Geoffrey Moore speak. An old boss once bought a crate of Crossing the Chasm for everyone in the division to read. It's still the best business book I've ever read. At the conference Moore spoke about innovation - specifically differentiation (get out of the competitive set), neutralization (get back in to the competitive set) and optimization (productivity gains). All three are essential, but you're shooting yourself in the foot if you spend too much time on neutralization - "Best of breed is a suckers game". His thesis was to do the bare minimum needed to stay competitive and then pour resources back into differentiation.

A theme of the conference was on motivating yourself and others - how to build a great company/culture. Several speakers talked about carving out time for creativity and fun. Carsonified evidently operates on a four day week. I've spent the last couple of years on a six day week... lots of food for thought here.

I convinced myself to attend this year after watching some of the videos from the 2008 conference. These are available on the Business of Software Ning - I'd recommend joining and checking them out. Hopefully videos from this year's conference will be posted soon.

Add your comment...

Related Posts

(All Marketing Posts)

(Published to the Fediverse as: Business of Software 2009 #marketing #bos A review of the Business of Software 2009 conference. )

Golden Gate Park - Stow Lake, Strawberry Hill and Museum Concourse

Updated on Saturday, July 18, 2020

Golden Gate Park - Stow Lake, Strawberry Hill and Museum Concourse

An alternative to our normal loop is another three mile walk starting from JFK and Transverse. Instead of heading towards the beach walk up under the bridge and take the first right to Stow Lake.

Stow Lake

Stow Lake surrounds Strawberry Hill. There's a path around the lake with two bridges leading to the hill. I normally walk to one bridge, cross and then up to the top of the hill. It's generally pretty quiet with great city and ocean views in between the trees.

Top of Strawberry Hill in the middle of Stow Lake

View from the top of Strawberry Hill. Rudy is in there somewhere, click for a larger version.

de Young Museum

After the hill I walk over to the Museum Concourse. The de Young rises through the trees like an implausibly stranded copper aircraft carrier. It hosts a range of paintings, decorative art, sculpture and modern art. You're bound to find something you like here.

de Young Museum (Side)

The copper cladding will turn green eventually, probably before the new Bay Bridge span is finished.

California Academy of Sciences

Opposite the de Young is the California Academy of Sciences. The Academy features an outstanding digital planetarium, a three story rainforest and an aquarium. It reopened last year after a major rebuild and it's insanely popular - get there first thing to snag the first come first served planetarium tickets.

Prayerbook Cross

On the way back I detoured up to Prayerbook Cross, donated in 1894 to commemorate the first English sermon on the pacific coast after Sir Francis Drake discovered Drake's Bay (a name which didn't stick).

(2.97 miles, total elevation gain 103 feet, 1 hours, 17 minutes, average 2.29 mph, view in Google Earth, view in Google Maps.)

Hike starts at: 37.770433, -122.479941.

Add your comment...

Related Posts

(Hike Map)

(Published to the Fediverse as: Golden Gate Park - Stow Lake, Strawberry Hill and Museum Concourse #hike #sfdogwalk Three mile hike in Golden Gate Park taking in Stow Lake, Strawberry Hill and the Museum Concourse (San Francisco, California). )

StackOverflow DevDays

Updated on Saturday, July 18, 2020

Fort Mason, San Francisco

Just got back from the StackOverflow DevDays event in San Francisco. I was a bit worried that this would be overly focused on marketing FogBugz and StackOverflow. There were brief pitches on each (and I learned that FogCreek is launching hosted source control and code reviews called Kiln, now in beta and looking pretty nifty with tight integration with FogBugz) but this wasn't the focus.

I was also a little concerned that I'd be the only one there without a StackOverflow profile t-shirt. Luckily I didn't see any reputation toting pod people at the conference.

Happily the day was very code oriented, and very diverse. Spell checking in Python, smartphone development for iPhone, Nokia (via Qt) and Android, ASP.NET MVC and jQuery. I spend most of my time at the moment in C#/.NET and it was really valuable to spend a day briefly diving into different stacks and platforms.

Joel said that they'd be back next year and I'm hoping that it offers a similar diverse range of topics.

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: StackOverflow DevDays #code #stackoverflow #c# #.net Review of the StackOverflow DevDays conference in San Francisco, California. )

Do I need a Zumbox?

Updated on Sunday, November 6, 2022

Zumbox is trying to take the paper out of the postal system. It's a laudable goal, if it takes off it would stop me from feeling that I need to do this:

Junk Mail Solution

Signing up is easy. Enter your mailing address and Zumbox send you a letter with a verification code. Once verified you can start sending and receiving mail online. You can mail a few people for free, bulk mail is five cents per recipient.

Of course you'll only receive mail that has been sent to you via Zumbox. It's not a mail scanning service (like Earth Class Mail) so you end up with yet another mailbox to check.

Zumbox is trying to help businesses go paperless. This includes bills and other necessary communication. It also includes junk mail.

My experience so far is mainly junk mail. I did get a circular about recycling from Gavin Newsom but otherwise just a stream of special offers.

This is a big problem because Zumbox provides very little control over email notifications:

Zumbox Email Preferences

It's all or nothing. Either I get a daily email reminding me to go look at junk mail, or I get no notification at all (and might miss the next thrilling update from Gavin).

Most of my bills and statements are already paperless via email. This isn't as secure as Zumbox, but I'm not sure how much of an advantage this is as I really just need notification.

I really want to like Zumbox, but right now it's just another source of spam.

Add your comment...

Related Posts

(All Marketing Posts)

Blogger Classic Templates Bugs and XHTML

Updated on Sunday, May 3, 2020
I've just migrated this blog from catfood.net to its own domain. In the process I needed to port the template from classic ASP to ASP.NET and I also wanted to end up with valid XHTML.

If you're using blogger on your own domain then you're using the classic templates. There is a known issue with the template tag that causes Blogger to emit unwanted JavaScript - this causes havoc, especially if you're using the tag in the section of a page.

Google recommends using the <$blogpagetitle$> tag in the page title. This works, but it's not great from a usability or SEO perspective. For item pages you get the post title after the blog name and you probably want to put the post title first - the earlier that keywords appear in the title the better for search engine ranking.

Luckily there's an easy fix - just comment out the closing Blogger tag:

This doesn't interfere with the template rendering correctly and the JavaScript is then commented out on the rendered page. It's still an unpleasant bug, so if you use the classic templates please report it here and also star or comment on this forum topic to encourage Google to fix it.

If you use labels then Blogger includes them in a paragraph rendered with <$blogitembody$>. This means that wrapping <$blogitembody$> in a paragraph will cause XHTML validation errors for posts with labels because you can't nest another block element inside the paragraph.

The other XHMTL nasty I fixed was the post comments link. My template used the recommended Blogger code:
p>a href="$BlogItemCommentCreate$>"
$BlogItemCommentFormOnClick$>>Post a Commenta>p>

This renders as:
p>a href="https://www.blogger.com/comment.g?blogID=12345678&postID=1234567890123456789"
location.href=https://www.blogger.com/comment.g?blogID=12345678&postID=1234567890123456789;>
Post a Commenta>p>
And you end up with a gazillion cascading XHTML errors, all caused by the illegal ampersand. I fixed this by constructing my own comment URL using the <$blogitemnumber$> tag (this emits the unique Post ID):
p>a href="https://www.blogger.com/comment.g?blogID=12345678&postID=$BlogItemNumber$>">
Post a Commenta>p>

Add your comment...

Related Posts

(All Code Posts)

(Published to the Fediverse as: Blogger Classic Templates Bugs and XHTML #code #ithcwy How to solve Blogger Classic Templates Bugs and XHTML )