Famous’s Achilles Heel - Maps

While famo.us has cool demos and has great plans for the future to replace native mobile apps, the one place they really fall short is Maps.

A big reason to use a native app instead of a web page is to get fast, responsive maps. Unless either Google or Apple decides to implement their map using Famo.us APIs (which is not happening anytime soon), Maps will remain a big reason why you continue creating native apps.

The Invisible Skyscraper Of Software

Yesterday I was assembling an IKEA table. It was exhausting but felt extremely satisfying to see the physical table when it was built.

I make software everyday which in its size and complexity could be a skyscraper compared to that table. But it is invisible. Me or no one else can ever marvel at the beauty of that skyscraper I create.

Somehow assembling that table felt more satisfying..

Essential Gradle snippet for Intellij users

Intellij IDEA likes to create a bunch of directories for its own use. Since they are inside the project folder, they will clutter your ‘Project’ view in the IDE.

The official way to deal with these in Intellij is to select them and mark them as ‘Excluded’ so Intellij wont look at them and they wont clutter your views. However, if you have a Gradle project, Intellij ignores its own settings and those directories will magically reappear when you hit ‘Refresh’ in the Gradle view or reload your project.

After a ton of hair scratching, I reported this to Jetbrains and this is indeed a bug as of Intellij 13.1. The official workaround for this is to manually exclude the directories in Gradle itself using a snippet like this:

apply plugin: 'idea'
idea {
    module {
        excludeDirs += file('.idea')
        excludeDirs += file('out')
        excludeDirs += file('projectFilesBackup')
        excludeDirs += file('servercommon')

Angular’s UI-Router project basically dead?

If you use Angular for any serious web application, you know that angular is basically unusable without a 3rd party router lib. And for a while, that gap has been filled by the UI-Router project.

While the project has always been full of bugs, it is still very popular due to the necessity of having a real router. However, it seems now that the project is basically dead. The last real update was done on June 5. Since then there have been some minor updates to documentation but no real code changes. This is after the issue tracker is full of pull requests from people desperately trying to get the bugs fixed.

I can tell from experience at DripStat, that putting in all the various workarounds to deal with UI-Router is a complete pain in the ass. And at this point, no matter what the size of your project, if you use UI-Router, you will run into and end up creating workarounds for its bugs.

This leaves Angular in a weird place. Without a solid router, it is close to impossible to create real world apps. Angular’s current router is more of a joke, and Angular 2.0 with an actual robust router won’t be out till next year. All roads seem to point to EmberJs

The elements still holding back web.xml

While both JavaEE and Spring would like you to believe that you no longer need a web.xml file in your projects, that is not true. Here are a couple elements/configurations that are simply not available through Java Configuration.

1. Session-Timeout


Yes, there is no way to specify a session-timeout using Java configuration.

Related Spring Bug: https://jira.spring.io/browse/SPR-11585

2. Execution order of filters


There is no way to guarantee which order your filters execute in unless you specify them in a web.xml file. This can have dire security consequences with your authentication filter being executed after some security sensitive filter or being skipped entirely due to some previous filter in the chain.

Related Spring Bug: https://jira.spring.io/browse/SPR-12019

Vote for bugs
I dont know where to file a bug for JavaEE, but I have linked to the corresponding bugs for Spring and hopefully they will be fixed in the next release so we can actually get rid of the dreaded web.xml file.

Java 8 lambda error messages are the new C++ templates

Java 8 lambda error messages are the new C++ templates

The major problem with Eclipse.org website

While eclipse.org has a cool new design:

There are still things fundamentally wrong with the website in that it seems to cater to developers of eclipse rather than users of eclipse.

For example, expanding the ‘Detailed features list’ for Eclipse IDE for Java Developers, I see:

Can someone explain the feature org.eclipse.epp.package.common.feature and how it is different from org.eclipse.equinox.p2.user.ui

WebStorm 8 TypeScript Support Review

I think TypeScript is the most important thing to happen to Javascript yet. All of the frontend of DripStat is written in TypeScript. So a good cross platform TypeScript IDE is important to me.

I have previously written about how weak WebStorm is, especially given the high quality of the rest of Jetbrains’ products. However, I have waited for a long while to write this for a couple reasons:

  1. TypeScript wasn’t at 1.0 yet

  2. WebStorm 8 was right around the corner.

Now that TypeScript is at 1.0.1 and WebStorm has released 2 revisions (at version 8.0.2 now), I think its high time we see how good WebStorm’s support for TypeScript really is.

1. Refactoring that screws up your code

This is the worst for me because in this case using the feature of your IDE actually results in your code being incorrect. Its one thing to not have features/buggy features in your product, but another to fuck up your user’s code. The fact that Jetbrains has not bothered to fix it doesn’t give me hope that they care about TypeScript. Some examples:

Extract method

Extracting a method always creates an incorrect function definition. It creates a javascript function instead of a TypeScript function This is 100% reproducible.


This quite literally does nothing

Change Signature

This puts a weird internal text next to your function, which obviously is incorrect code.

All these refactoring bugs are 100% reproducible and of course these are just a few examples. If Jetbrains doesn’t want to support these refactorings, it should just remove them from the available options. There is no excuse for screwing up people’s code.

2. Code completion cant even detect globals

A global variable declared in a file, when referenced in another file is not available in the code completion list

3. No auto referencing

Both Visual Studio and Eclipse TypeScript plugins will detect the typescript files in a project and automatically make the symbols of each file available in other, regardless of whether its manually referenced or not. This is needed because while you may have the code split across files, during the build stage you may end up concatenating those files, thus not needing to manually reference each file.

Webstorm however will just mark your file full of errors if you don’t include all the files that are referenced in each file.

4. No Syntax coloring option

Yes, you read that correct. There is no way to change the highlighting of your TypeScript code!

My Webstorm highlights class names with red. Red is also what Webstorm uses to highlight incorrect symbol names in your code.

Thus scrolling through code I now have no idea whether the red I see is correct code or not.

Related bug
Its only about 17 months old…

5. Editor wont recognize method overloads

The editor does not understand method overloads.

As you can see in the image, the method separator line is shown for each of the oveloads (it should just one for the entire constructor, including overloads). This means when you tell Webstorm to format your code, there will be extra newlines between the overload definitions, thus screwing up your formatting.

6. Slooow compilation

In Visual Studio, I just save the typescript file and the corresponding javascript is generated instantly. There is no build progress indicator and its not needed either. Its so fast it could probably show the generated Javascript as I type.

WebStorm is a different story however. The same file when saved will show a progress indicator at the bottom for many seconds showing the file being compiled.

Maybe its because they use the awful File Watchers, instead of a more integrated system. But either way, the end user experience and speed of development is highly impacted due to the slow build time.


WebStorm’s support for TypeScript is close to non-existent. Heck, you cant even change the syntax highlighting! While TypeScript is designed to make Javascript be useful inside an IDE, WebStorm’s highly buggy support makes you not want to trust it for anything. This is specially true after you have seen it screwing up your code after refactoring.

Bottom line, if you are using TypeScript, don’t use WebStorm. Eclipse remains the only usable multi-platform TypeScript IDE.

Changing font in Skitch

I was recently googling how to change the font of the text widget in Skitch and found this answer :


This seems really basic, but I can’t for the life of me figure out how to change the text’s font in Skitch. What am I missing?

Evernote employee: You currently cannot change the font. This is on our long-term roadmap.

That post is over a year old. Must be quite an engineering challenge…

UX Design Disasters: Stormpath

While Stormpath claims to offer ‘User Management’ in all their online ads, sadly after using their service on DripStat, that is exactly what we have lost.

Here is an image of Stormpath’s dashboard to ‘manage your users’.

Yes, thats right. If i want to see details of any user of DripStat or perform any function on it, I have 2 choices:

  1. Click ‘next’ at the bottom of the page. Browse through all the 20,000 users of DripStat, 25 at a time, to reach the ‘one’.
  2. Write a custom program to do that.

Utter UX Fail

On a scale from 1 to 10, this is UX fail to 11. User management is the core service that Stormpath claims to offer and even after many months they haven’t bothered fixing such a critical issue with their interface.

If we had just created a ‘users’ table in our database, life would be so much simpler…..