Ad Muncher's 15 Year History / by Murray Hurps

This is the story of a 14 year old coder, who raised $100 from his father to launch an ad blocking program, then dedicated the next 15 years of his life to it.

It's my story, and this post will be followed by another giving the first ever preview of Ad Muncher Version 5, and another one with an important announcement about the future of Ad Muncher.

Background

I started coding when I was 7, inheriting a Dick Smith VZ200 with a broken tape drive, so any code written on the terrible chiclet keyboard would be lost if the power was turned off. 

I loved low-level code, doing a lot of x86 assembly coding on a 386DX-40.   When Windows 95 came along, I stayed at the low level and loved finding ways to do novel things on the new platform.

I worked on many random projects back then, including graphical demo work and some fun reverse engineering work.

This reverse engineering work led me to one day wonder if I could modify the content of websites as they were being downloaded.

I extracted all the exported functions from the winsock DLL, made my own version with stubs of these functions, modified the data receiving function to look for a test string (a bit of DoubleClick HTML) then placed it into the directory of my browser and fired it up.

I still remember the feeling when I saw it work.  A new kind of usefulness that makes your mind consider everything else it could be used for.  But for now I just worked on adding a few different filter types (link targets, content sources, etc), along with an extremely basic installer and interface.

My ads were filtered.

First tests

Out of pure curiosity, I wondered if anyone else would find it useful.

I nervously pitched the idea to my dad, securing $100 to cover hosting costs for the launch.

I copy/pasted mIRC's disclaimer text (sorry Khaled), then asked a designer friend I knew at school to do the graphic design on the site (thank you so much Vanessa), signed up for Regsoft payment processing and did my best to post to every shareware site in existence.

Our first installer was 29kb in size, which included the filter list. 

Then the emails started coming.  Emails from Regsoft saying a payment for $15 USD had been accepted for a lifetime Ad Muncher license. At first just a trickle, with each one requiring me to manually generate a registration code, but after two years of development and promotion, things started to change.

I had no idea what I was doing and did almost everything wrong.  Back then in Sydney there certainly wasn't a startup scene like there is now and I often wonder how things would be if I were 14 years old launching a company in today's environment.

Dedication

"It seems the harder I work, the more luck I have." – Thomas Jefferson

I was interviewed by Forbes, was a regular appearance in PC World (thank you Steve) and decided to drop everything, including school, to focus on making Ad Muncher a success.

I installed a button on my desk that I'd hit when I sat down and hit again when I stood up, with a display in the corner of my screen tracking the hours worked each day.

In the same corner, another display showed daily/monthly sales and installation trends.

Whatever phone I had, there was always mobile software written for it to track sales performance while away from the office.

I was handling all aspects and doing my best to expand my knowledge outside the tech areas I had focused on.

Development, development, development

I'm passionate about tech, so most of my effort was always dedicated towards improving the technology behind Ad Muncher.

I implemented a new method for intercepting data which only made modifications in the memory of running programs. This allowed Ad Muncher to be installed without modifying any files or restarting browsers.

Filter categories were expanded, along with many more options for customizing browser behaviour.

Popups started to become more common around this time (X10's popunder ads were a notable source of complaints from users, wonder why?) , so I implemented a rudimentary JavaScript processor, which traced script execution paths and tried to determine which paths to popup functions were automatic (bad popups) and which needed user input (good ones).

Ad Muncher was still 100% x86 assembly at this point.

I realized how much this was slowing down development (regardless of how much I enjoyed it), so implemented a hybrid GCC/TASM compilation process that allowed C code to be combined with the existing ASM codebase.

I developed browser extensions for IE, Chrome, Firefox and Opera to provide right-click interaction with websites for easy customization.

I later replaced this with a toolbar inserted into the pages themselves, activated by holding shift and right-clicking on a page.  This was six months of work to get functioning correctly across all of our test sites, but provided many new options and meant we could dispense with the maintenance of all the different browser extensions.

There wasn't a single advertising technology that wasn't fully analysed and dealt with and I loved being able to bring a faster, safer and more pleasant browsing experience to the growing user base.

 

The Ad Muncher team had many valuable contributors over the years, but two people stand out in particular:

Peter Kankowski

I've worked with a lot of coders, but Peter is truly someone special.

I stumbled across his work on strchr.com and was so impressed by his posts that I approached him to work on our filtering tech.

Over the years since, I've been amazed not only by his technical talent and intelligence, but also his ability to self-motivate and just churn out incredible code.

He always got the job done and is always fun and cheerful along the way.

Jeffrey Cole

I got to know Jeff around 2003 and without any doubt, this was the single most significant meeting of my business life.

He was sending bug reports and reporting missed ads and continued to do so for so long that I knew he had to be on the team.  I offered him a position as filter list maintainer.

He wasn't sure if he could do it, but he worked his backside off for the ten years that followed and has made himself into one of the most experienced and valuable experts in ad filtering tech worldwide.

The filter list now consists of sixteen thousand filters, which have been continually improved over four thousand, two hundred individual releases, each of which consisted of at least ten filter changes or additions.

All this aside, Jeff is also a top-notch guy.  Smart, trustworthy, fun and I honestly can't think of anyone I'd prefer to have been on this journey with.

Good times

There's nothing like seeing hard work translate into happy people.  I never tired of people offering kind words about Ad Muncher and am still in disbelief about their willingness to support development and allow me to do this for a living.

Demand for Ad Muncher was always surprising, which included hundreds of forum threads discussing how to use pirated versions of Ad Muncher, some with over 2,500 posts.  There were hundreds of videos on YouTube on the same topic and over one hundred thousand matching pages returned when searching for "Ad Muncher Crack".

I stopped posting the testimonials we received in 2011 as we already had 1,113 of them, but there's another thousand or so ready for posting if needed.

One thousand, one hundred and thirteen testimonials for Ad Muncher

We've averaged over 1,000 downloads per day for over ten years and have had continuous sales growth for seven consecutive years.

Our mailing list has 40,000 members.  We've released 4,212 versions of our filter list, each with at least ten changes in it.  Our beta testing team reached over 20,000 active testers, testing the 368 different versions of the program I personally compiled.

And finally, we sold over one hundred thousand Ad Muncher licenses and I am humbled that even a single person thought our work was worth paying for.

 

Exit Number 1

Myself and Jeff on a tour of Google while we were in the neighbourhood.  They had no involvement in the acquisition though.

In 2011, we were approached with an acquisition offer from a new startup in California.  They wanted to purchase all of Ad Muncher and keep the team in order to push it in a related, but novel direction.

We discussed continuously for several months before terms were agreed.  I flew to California for a few weeks and for the first time met with Jeffrey Cole.  I'd worked with Jeff on Ad Muncher for 7 years but had never met in person.  I'm pleased to say he was even more fun in real life and I was sad to have to head back to Australia again.

Work continued to finalize the acquisition, complete with a big celebratory party here in Sydney when things were getting locked down.  I was 11 years into Ad Muncher and excited to start the next chapter.

Final terms included a generous cash buyout and salaries, plus significant equity in the new company.

Then the call came.  I had video disabled because I was still in pyjamas, but was surprised to see the founder of the new startup sitting in a cafe rather than the usual office.

He spoke quietly and struggled a little when he told me that the funding for the acquisition had fallen through and attempts to find other solutions had failed.

At that point I was glad video was disabled on my end.

He was, and is, a fantastic guy.  I learned a lot while working with him and whoever decided not to pursue the opportunity with him genuinely missed out on something special.  I have to say though, this was probably the lowest point in my professional life.

Exit number 2

Work resumed on Ad Muncher, with a renewed vitality to prove to the world what it could be.

This work was halted by another acquisition offer from another Californian startup.

This time the deal was much more complex and we spent far too much money on lawyers locking down the details prematurely.

It would be an exclusive licensing arrangement on a per-seat basis, with a buyout option for $10m USD, with Ad Muncher transforming to better address a variety of niche markets.

Work continued for several months, but I never signed the deal.  We just couldn't reach terms that made sense on both sides and I was uncertain about the ability to execute on the final plan with the resources available.

They were wonderful people to work with, trying to achieve something that I respect greatly, but again we had to get back to work on Ad Muncher.

Sigh.

Ad Muncher Version 5

The problem with being a coder is that you are a constantly improving one and usually improving at a faster rate than you are able to code.

Whatever you start writing now, you will probably disapprove of not long after you have written it.  And after this happens enough times, you become more and more motivated to strive for the perfect solution that will avoid this happening again.

I made the mistake of promising a complete rewrite of Ad Muncher many years ago, titled Ad Muncher v5 and enough people got excited about the feature set that it has haunted me since.

Ad Muncher v5 has been in constant development in parallel with the public version of Ad Muncher for about six years. It has been restarted twice and has been interrupted by a string of distractions, including the normal day-to-day running of the company.

I'm pleased to say though that it has developed into a powerful, portable, adaptable filtering system, that will probably surprise even the most optimistic of Ad Muncher devotees.

Tomorrow, I'll be posting the first ever public demonstration of Ad Muncher v5.