Saturday, October 25, 2014

Mailinator launches Private Domains

Get your own (very) private Mailinator !

mailinator.com

If you weren't aware, Mailinator has always allowed you to point any domain you own to the Mailinator SMTP servers (i.e. the MX record). The Mailinator email system accepts any and all email sent to it and happily delivers it to the designated inbox.

For example, if you own "yourdomain.com", point the MX record to mail.mailinator.com and send email to joe123@yourdomain.com - that email will end up in the "joe" inbox at http://mailinator.com. You don't even have to sign-up with Mailinator to do all that - just point your domain! Neat, huh? Hundreds of domains point to Mailinator in this way.

Email sent to Mailinator this way however follows the same fate as any other email in the public system. It was auto-deleted after about a day, it might have gotten filtered if it tripped a spam filter, and of course - it was fully in the public view. Anyone can read it if they find it. No security. No privacy. Nada.

This was especially useful with the people that use Mailinator (and its API) for QA testing. One request we've gotten many times however was to do what Mailinator does, but in a private way.

Today we're announcing "Private Domains", which is pretty much what you might think. It's the ability to point your domain at the Mailinator system but keep all email sent to that domain private to you. Additionally, the email is stored permanently (pursuant to account storage limitations).

Simply put - it's your very own very private Mailinator ! Every possible inbox is instantly available to receive email at your domain !

Setting up and using a private domain is free (paid users get additional features of course, see our pricing page). To get your private domain, sign-up at Mailinator and go to the "Settings" page. You'll see the option to set your private domain right at the top.

Next you'll need to go to your DNS provider and set your MX record to the destination Mailinator will provide (do not set your MX record to mail.mailinator.com for a private domain!).

Once your MX record is working, check any Mailinator inbox as usual - your private domain emails will be in a section above the regular public @mailinator emails.

We're excited to launch this feature for Mailinator and hope it brings our users yet another tool in their anti-spam toolbox !

Monday, September 22, 2014

Playing Wasteland 2? Find the Mailinator gun !

Mailinator has always been about vanquishing spam - and now in Wasteland 2, you can vanquish some Wasteland Wolves using "The Mailinator" gun !

Mailinator is proud to be a backer of the newly released Wasteland 2. If you're playing the game (and you should be!), be sure to lookout for the gun called "The Mailinator".

(hint: you might consider having one of your rangers specialize in Heavy Weapons !)

Wednesday, December 18, 2013

Testing new functionality: Log-in and features at Mailinator.com

[This is a guest post by Marketing/Growth-Hacking consultant Martha Andrews - contact her directly at martha@manybrain.com]

We have been thinking of ways, and getting many suggestions, on how to improve and enhance the Mailinator experience. We’ve been working hard (maybe you’ve noticed) to grow.  We want to reach a group of new users, and invite current users to use us more!
After the redesign this summer, and the launch of the adventures of Mailinator Guy, we took a look at the long list of suggestions that come from the site users.  It happens that there were some who wanted to make the disposable service… well, less disposable.
So here it is: log in with a gmail account, and get an @supergreatmail.com email address (that you can customize from available inboxes).  Plus, this gives you an easy way to direct all the email from a selected @mailinator.com address to that inbox – and one click forwarding to your gmail account. Not bad for a start.
And I know what many are thinking… I have to sign in?  No, no you don’t.  The Mailinator.com site still works just as it always has without signing-up.  
Let’s be clear – Mailinator isn’t looking to replace your primary email system.  There are just too many free, good web mail applications out there – and heck, you probably have as many as I do. But, we've added new functionality to allow Mailinator to more closely act as a satellite email system to your real account, functionality like one-click forwarding, storage, and a private email address.  Our goal is to seamlessly give you the disposable tool you love, and give you options for longer-term use.  We want to be your #1 secondary email address! (if that makes sense)

We are only allowing access to gmail users, for now, but that may change if we see traction.

Here is what you get for logging in:
You will get your very own private inbox - and your very own email address:
<username>@supergreatmail.com.  Super, right? A username is assigned to you when you login - but you can change it, up to once a day to anything that is not already in use.  You will be able to receive, store and one-click forward anything that hits this inbox to your gmail account.

You will also be able to store emails from any inbox at Mailinator.com in your private inbox with the click of a button. You can also pick a particular inbox at Mailinator (one at a time) and have all the email that is sent to that address, forwarded to your private inbox. Mind you it will also be available to the public because that is what we do here at Mailinator. All @mailinator.com (and alternate domain) email is available to anyone who checks that inbox just like always.

All of this is illustrated below: The leftmost column is the public Mailinator as you've always used it. The middle column is now Mailinator with your Private Inbox (long-term storage).



So there it is: innovation – or at least trying new things – in action.  Please give it a try, and let us know what you think on the site.

Saturday, November 9, 2013

Increasing Brand-Value of Mailinator.com with a Web Comic

[This is a guest post by Marketing/Growth-Hacking consultant Martha Andrews - contact her directly at martha@manybrain.com ]

We have been doing some investigation in increasing brand awareness for Mailinator.com.

Mailinator has always been a useful site providing free, disposable email - but analysis of the usage patterns of Mailinator indicated that users tended to use it on a monthly or bi-weekly basis rather than weekly or daily. In some ways this makes sense – the site provides a utility, but the use case for the general public isn't necessarily needed on a daily basis. When it is needed however - our goal is to make sure you think of Mailinator.com!

In order to raise all usage levels of the site, we focused on public awareness of the site, expecting that an increased DAU (and MAU) would/should be an expected side effect.  I’ve frequented many trainings in the last year, and I cannot tell you how many times I’ve heard, “Create interesting and useful content and people will flock to your site…Its all about providing content.” 

But what content could we give to our users?  We already give away the service – we have a useful tool, and want more folks to know about it and use it.

Before creating content, something to consider is who is in our user base?  Web analytics told us the primary user base is male, ages 18-40 – think of the average Reddit user.  So how do we engage 18-40 year old men, and potentially other demographic groups?  How do we get them to think of Mailinator.com more often?  What could we provide that would be of use of them?  Getting folks to think of the site more often, and giving them content and reasons to visit the site would likely expand their current usage pattern.

We tried targeted ads through traditional web and social channels. Specifically - we experimented with Google Adwords, Reddit.com, Facebook, and Twitter.  The ads provided momentary increases in traffic to varying degrees but nothing long lasting.  We can get more users to Mailinator any day of the week by spending some money, but that cannot be sustained given that mailinator.com doesn not generate direct user revenue.

During a recent site redesign we incorporated a new mascot of sorts – an amiable looking caped crusader we dubbed “Mailinator Guy” - the Anti-Spam Superhero. 
The more we lived with Mailinator Guy, the more often we started asking: what if we launched a web comic based on Mailinator Guy?  Would a comic be appropriate content?  If you've ever read Mailinator's FAQ you know the tone of the site is already quite tongue-in-cheek - we at least amuse ourselves.  Frankly the thought of bringing Mailinator Guy to life was simply too fun an experiment not to try.

ComicRocket has over 35,000 web comics indexed on their site alone, so competition for user attention is stiff.  However we found Facebook ads for the comic to be highly successful in engaging a new audience.  We think it works well because they are demographically targetable, colorful, eye catching and fun.  A thumbnail or portion of the strip is always displayed in the posts and ads.

We also engage our existing audience through the Mailinator Facebook page (with >30000 likes). There is an announcement on the page when a new comic is published. Additionally, the colorful thumbnail version of the strip is shown on the landing page and on mailbox pages at mailinator.com.  We have found as we release a comic each week, we are slowly habituating our audience to check mailinatorguy.com on a weekly basis – and if they are following us on twitter or are a Facebook fan, we have an excuse to contact them.

The feedback loop of the two sites is strong. Mailinator.com provides the free disposable email utility that brings new users by itself. The site's design reinforces the Mailinator Guy character and encourages our primary demographic, arguably also the primary demographic for web comics, to follow the comic.  The MailinatorGuy.com site provides a weekly enticement for a visit. That visit keeps the Mailinator brand fresh in our user's mind causing the loop.

Of course some users of Mailinator will never care about the comic. And some users of the comic will never care about mailinator.com.  And that's just fine - both sites have inherent stand-alone value.

At the time of this writing we have published six episodes of The Adventures of Mailinator Guy. Our advertising efforts, both paid and direct referrals from mailinator.com, have driven traffic that averaged 1,500 unique weekly users the first three weeks, to over 3,000 unique weekly visitors the following three weeks.  The most traffic occurs on Mondays when we have usually posted and announced a new episode.  Along with an increase in users, producing the comic has become more efficient and economical, and still pretty darn fun.

Importantly - traffic to mailinator.com has increased 15% in the 6 weeks since the launch of the comic and continues to grow.

These numbers are very encouraging but honestly the most important outcome is the increase in Mailinator brand recognition. The site's brand value will continue to grow and that's the real goal of this exercise.  

At the end of the day - everyone is happy.  More people know about the Mailinator brand - this makes us happy - and have either avoided some spam by using our free disposable email service, have had a laugh at the expense of Mailinator Guy - and his sidekick (you'll have to read the strip to find out about him), or both.

If you're up for following the adventures of Mailinator Guy yourself - here's the link to get you started:

The Adventures of Mailinator Guy! 






Saturday, October 5, 2013

Introducing .... Mailinator Guy

Let me tell you a secret - if you want a positively sure way to get unfettered love and hate mail at the same time - just go redesign a website.

If you've used Mailinator for any length of time you see we changed the website design a few years back. We brought it from probably somewhere in Web 1.0 to current day.

The redesign was more than simply a redesign however - it changed how Mailinator worked. A great deal of internal code was added to prevent abuse of third-party sites using Mailinator.

Overall the redesign was a huge upgrade and success - and I promise you the lovers far outweigh the haters  :)  (site traffic got a significant and sustained increase too).

Our redesign this summer also served to introduce Mailinator.com's anti-spam superhero - Mailinator Guy !


He's here to save your inbox from spam. He can fly, has a magic envelope he carries with him everywhere, and of course has a neato secret lair.

Now - Mailinator Guy has his own webcomic !   So if you're a fan of Mailinator and like to read webcomics - what are you waiting for !

Check it out here:

http://www.mailinatorguy.com

Tuesday, April 16, 2013

Code Review for a String Lock Map

I recently needed a mechanism to lock on given Strings in a particular piece of code. As maybe a weak example, say I was doing disk file updates to files each with unique filenames (i.e. read, update, write-back). I could have synchronized the methods that modified the files, but I preferred to not lock at that level - in other words, only one file update could occur at a time then.

I'd prefer to simply lock on that file - or more specifically, that filename. Its a dubious proposition to lock on String objects in Java as different objects can represent the same set of characters. You can intern() all your strings (which makes sure the objects you have are the "one" system-wide representation of that String) but that is rather global. I wanted to do things locally - where I can control the scoping of the lock.

(The filename example is just an example, I've needed this structure in many different scenarios - so don't look to just solve that problem).

I might have missed it, but I didn't find any facilities in java.util.concurrent to help me (and to be fair, I haven't kept up with the happenings there. Long story short, I wrote my own.

Of course the best advice when writing concurrent locking datastructures is - DON'T.

But I did. And I probably plan on using it eventually, so I put it here for review. I'll update it as comments come in (so if you see a comment below that makes little sense it's probably because I heeded it and changed the code).

The use case I want:

public static final StringLock stringLock = new StringLock();

...

try {
     stringLock.lock(filename);

     // load disk file
     // change its contents a bit
     // rewrite it
     
} finally {
     stringLock.unlock(filename);
}

So.. find below the code I've come with so far. Its a bit heavy under contention but the normal case (no contention) it syncs 3 times (writes on ConcurrentHashMap being a sync). I could also use Cliff Click's NonBlockingHashMap to remove two of the syncs but and I'd be happy to be convinced that'd be superior for some reason.

public class StringLock {

 private final ConcurrentHashMap lockedStrings = new ConcurrentHashMap();

 public void lock(String s) { 
   Object lockObject = null; 
   while (true) { 
     lockObject = lockedStrings.get(s); 

     if (lockObject != null) { 
       synchronized (lockObject) { 
          Object lockObject2 = lockedStrings.get(s); 
          if (lockObject2 == lockObject) { 
            try { lockObject2.wait(); } catch (Exception e) { } 
          } 
        } 
     } else { 
        lockObject = new Object(); 
        Object lockObject1 = lockedStrings.putIfAbsent(s, lockObject); 
        if (lockObject1 == null) { 
          break; 
        } 
     } 
   } 
 } 

 public void unlock(String s) { 
    Object lockObject = lockedStrings.get(s); 
    synchronized (lockObject) { 
      lockedStrings.remove(s); 
      lockObject.notifyAll(); 
    } 
  }
}

Tuesday, August 21, 2012

I Further Predict the Death of Your Web Framework

In my last post, I philosophized how new technology is going to change the bottleneck of web (and other) systems (which despite everything else, have remained surprisingly stable for awhile).

This spelled the demise of many systems that relied on a given system bottleneck, specifically, slow runtime systems.

But there is another technological shift conspiring against many web frameworks that isn't focused on performance, but instead focused on "ease of use" - which in many cases may hit far closer to home.

That shift is the reorganization of MVC.

MVC stands for "model-view-controller" which loosely means you have a datastore/database (the model) which is retrieved and manipulated (by the controller) such that it can finally be shown to a user (the view).

That is, pretty much always the flow. Well - kinda. The first thing you might notice is that "MVC" is an out-of-order acronym per the dataflow. In that case it would be "MCV". And happily, given that dataflow is paramount to my story - I'll use that in the rest of this article (that might irk you if you're CDO (which is like "OCD", except in alphabetical order, like it SHOULD BE)).

A predecessor to MCV was a simpler idea of simply "client/server" where client was the view, server was the controller and model (or, some or all of the controller could be in the client too). However, the client in that case actually implied it was a real client - that is a program that received the data and showed it.

In the web, the browser is the client, but interestingly in things like Rails, Jails, Nails, Grails, Struts, Play!, PHP, ASP.Net, and many others the "view" is on the server which then renders HTML and sends that to the browser. As far as the programmer is concerned, the whole MCV is on the server. The browser is often just a dumb terminal.

In the last year or two however, the popularity of a new type of framework is changing all that.

That change is coming from libraries such as backbone.js and ember.js (and many, many others).

Those libraries allow you to render views (not just show, actually render) in the browser itself. In addition, they let you leverage a lot of javascript magic in the browser. This is pretty awesome for several reasons.

The computing power of rendering is moved to the client's machine. Rendering isn't probably your biggest computing expense, but take off that computing cost from your server (times every web request you get) and its measurable.

And as you can imagine, if the "V" of MCV actually migrates to the client, all that's left on the server is "MC" (to be fair, sometimes even part of the "C" goes to the client).

What thousands and thousands of Rails developers discovered upon moving to backbone is that they no longer needed their fancy template views. Their backend became a system that pushed JSON over HTTP.

Very clean and very simple. At my new company Refresh (we're hiring!), our backend pushes the exact same JSON to our webpage as it does to our IOS app. And that same system will someday seamlessly become our API too.

For me, using Rails for webapps over Java (where I spent plenty of time years ago) was a simple decision. ActiveRecord was beautiful and elegant (especially compared to things like Java's hibernate). Also, the view layer was simple, well-laid-out, and standardized. If anything, Java had too many choices.

But these days, I tend to use NoSQL on the backend. And ember on the front-end. All I need in the middle is something to manipulate and push JSON. Why was I paying the Rails tax? (again insert any language that is a multiple slower than Java in that sentence).

I'm not particularly picking on Rails - it is just a full MCV solution that I no longer need. There are plenty of those.

And if you're thinking this is a win for Node.js - you're probably right. With much more javascript coding entering your web framework as a whole, using Node on the backend is probably the winner of all this on the usability front. Javascript on the server isn't the fastest, but it's pretty darn good at manipulating JSON (and thank you to whoever it was that shot XML dead).

So my not-so-amazing prediction is that in a few short years time full web frameworks from any languages disappear. Node picks up some of that slack but so do less feature-ful frameworks (and maybe performant ones). Even non-frameworks altogether get more use.

There's surely no mourning required here. Web frameworks change every few years no matter how you slice it. But between this post and my last, I see two converging fronts out to kill some our most popular ones right now.

Personally, I'm hoping to never server-side render HTML again. I'll let your browser do my rendering while I sit back, chill, and push some JSON.

And yes, Mailinator is in rewrite now to use ember, much to the chagrin of web scraping programs everywhere! (but much to the happy of JSON receivers)