Long Tail Pre-Filters vs Post Filters

For my reference, this is a nice categorization of filters for content in Long Tails as expressed by Chris Anderson on his book The Long Tail

Pre-Filters (Old School Business Models based on Top 10s, Best Sellers)

  • Editors
  • Record Label Scouts
  • Studio Executives
  • Department store buyers
  • Marketers
  • Advertisers



  • Blogs
  • Playlists
  • Reviews
  • Customers
  • Recommendations
  • Consumers





Finally my genome tells me where I’m from

Screen Shot 2013-06-21 at 3.59.44 PM



How to obtain the coordinates of the JTable cell a mouse is hovering over, useful for tooltips within cell renderers.

    public String getToolTipText(MouseEvent event) {
         * This is a Java Swing lesson on how to obtain the coordinates of the current cell
         * as you hover with the mouse on a JTable.
         * You cannot use the renderer component, since it seems that once the table is done
         * stamping the cells with it, the instance of the renderer is not the one under the mouse
         * as it will always yield negative coordinates, for example, our debugger showed that this
         * renderer's coordinates were always (-95,-25)...
         * What we did in this case, to show labels for the specific components inside the renderer
         * was to get the mouse coordinates, and translate its coordinates to the coordinates of the
         * current Cell Rectangle.
         * One interesting gotcha in the process is that you cannot alter the event coordinates and then
         * try to use event.getPoint() since event.getPoint() will always give you a new instance of Point
         * so we keep a copy of that Point and then translate that point.
         * tags: java, swing, table, get current cell coordinates, get table cell coordinates under mouse
        try {
            Component[] components = this.getComponents();
            Point p = event.getPoint();
            int row = table.rowAtPoint(p);
            int col = table.columnAtPoint(p);
            Rectangle currentCell = table.getCellRect(row, col, false);
            p.translate(-currentCell.x, -currentCell.y);

            for (Component c : components) {
                JComponent jc = (JComponent) c;
                if (jc.isVisible() && jc.getBounds().contains(p)) {
                    return jc.getToolTipText(event);
        } catch (Throwable t) {
            //don't risk painting the table over a tooltip
        return super.getToolTipText(event);

Browser breakdown of gubatron.com visitors, the Internet is a better place

IE only 5.47%, YES!

Screen Shot 2013-06-12 at 10.46.13 PM

Follow the geek, and you will taste the future ahead of time.

How did Google get this market share?
Let’s just say that it wasn’t only because they do have a great product, think monopolistic-like powers and a lot of bullying and dictating to partners conditions that favor the adoption of this browser over any other browser, and that’s all I’m allowed to say.

#SCALA #NOTES Difference between list.foreach() and list.map()

[scala]val l = List(1,2,3,4,5)
val lAfterForEach = l.foreach(x => x * 10)
val lAfterMap = l.map(x => x * 10)
println(“Original List: ” + l)
println(“For each operates on each element, returns nothing:” + lAfterForEach)
println(“Map is like foreach but returns new post-processed list: ” + lAfterMap)[/scala]

[bash]Original List: List(1, 2, 3, 4, 5)
For each operates on each element, returns nothing:()
Map is like foreach but returns new post-processed list: List(10, 20, 30, 40, 50)[/bash]

If I were Microsoft (Dictator) CEO for a week

(and things were hypothetically simple, no federal agencies forcing me to do certain things, sending a lot of partners to hell and deal with the lawsuits) I would…

1. Stop fucking around with the huge dominance I still have over the PC Market and milk it as it slowly seems to die.
This means, don’t try to force a touch experience to desktop users. Keep innovating on the desktop, while you move all the bullshit Metro shit to a separate “Windows Touch” that’s meant only for tablets and phones. This works great for Apple, why try to mix the two and give a shitty experience for both? why frustrate your developer community? why kill all the healthy monetizing ecosystems you have built for decades on the desktop instead of letting them evolve on their natural environment. This means putting a real Start Menu on Windows 8, not just a shortcut to metro dashboard.
I’d innovate on a better experience, on a better file system, memory management, CPU and power consumption, and the latest technologies and breakthroughs for operating system borrowing ideas from those crazy linux guys.

2. Remind myself of “Developers, Developers, Developers”. I’d look around and see that developers have been running away with all the great free options the open source community has created over the years, I’d look at my balance sheets and see that what I make on Visual Studio is peanuts, compared to all my other revenue channels and to how much money I spend on marketing and how much money I’m losing with all the developers not coming back and give Visual Studio FOR FREE!

3. Don’t fuck with the gaming Market on XBOX. React now before I lose 70% of my userbase to Sony. Remove all the bullshit restrictions regarding DRM and used games, and instead of trying to shove the console down on people’s throat with stupid marketing campaigns, if I’m going to lose money, then drop that price down and do like I did with the first Xbox. I might even consider getting rid of the Xbox Live monthly fee, somehow sony has managed to deal with these costs, I need to be competitive, specially after seeing the immediate reaction of the media and users after the PS4 has announced a bunch of non-features I’ve created out of my self imposed restrictions.

4. On Windows Phone (which should be Windows Touch) I’d add a Dalvik runtime, just like Blackberry did, and I’d make all Windows Phones compatible with Android apps, and start poaching Android developers over to Windows Phones.

New FrostWire for Android 1.0.8 out

Screenshot of the new FrostWire for Android navigation menu

A new FrostWire for Android is out on Google Play.






FrostWire 1.0.8 - MAY/31/2013
 - Search algorithm improvement brings better quality and missing search results.
   less Out of memory error reports.
 - Fix for parsing torrents with minor mistakes in trackers list.
 - Less intensive HTML detection during torrent parsing
 - Added jdk14 logging library.
 - Fixes crash initializing donations Billing Service.
 - Better description for mobile network data usage and bittorrent preferences.
 - Removed Google AdMob.
 - Added donations request component instead of ads.
 - Integrates Offercast offers on installation.
 - Experimental OUYA compatibility.