15 November 2016

Do It Yourself Localization

When developing an application you often reach a point when you want to make it a great fit for the world audience. This includes translation to their native language. Usually you have to solve two different aspects of localization for your app:
  • Using localization in your app. This is actually pretty simple and there are ton of ways to do it and many different frameworks and libraries that make it very simple for you. Also effort to use localization is often very close to using unlocalized hardcoded texts and the effort does not grow with number of languages.
  • Getting localization to your app. In another words how to make sure you have a translation of every piece of text in your app ready for a release. Although sounds simple there may be a lot of manual work and a lot of people involved. With each change in the text used in the application you have to ensure all translators deliver the translations back to the application. This effort grows with the amount of text you need to localize and number of languages you support.
In this blog post I will focus only on the second one. I have experienced translation processes that were complex and error-prone beyond my belief. If you are a big enterprise than you can probably continuously spend some money to making complex process work reasonably well. We were looking for the simplest process with minimum overhead - manual work and cost.

Goals

Everybody may have different view on what is important for their translation process. Lets see what was our focus. We wanted to achieve a few things:
  • Have localization on a single place and have it always current
  • Enable anybody to contribute to localization without any developer or other specialized tools
  • Enable community to contribute without breaking the app
  • Do not require any of the contributors to get involved in any technical stuff
  • Zero-cost for contributors and minimal costs for us
  • Minimize amount of emailing and other communication around localization
  • Enable to comment and discuss the translations in a way that is tracked and others can learn from it
  • Enable translators to easily export and import data if they would be inefficient in Google Sheets
  • Totally automated inclusion of translations into Icon Cast
  • Automatically check translations for most common issues
As always we didn't have to do everything at once. We just had to know that we make steps in the right direction for us. Icon Cast was ready for localization from the version 1.0. In version 1.4 we have started to use a new localization workflow although it contained some manual steps. With version 1.8 we will use the localization workflow with two languages and fully automated. So it took some time.

Translation Software? Or Not?

There are tons of translation software and services you can choose. These products provide good features - usually for translators. They remember past translations and automatically offer you the same translation when the original is the same. They do automatic machine translation prior to doing the translation by a human. They have marketplaces for translators where you can offer jobs and get back offers from translators willing to take the job. And that is far from all.

While going through the different tools we have realized we are not actually searching for a translation software. Rather for a tool that would enable us to smoothly manage the translations we do ourselves and we would eventually receive from the community. So it does not have to be that translator-friendly but has to fit well into our release workflow.

This lead us to simply use Google Sheets. I'm not sure how rare this choice is. Based on some googling it seems that we are at least not a single case. There are some projects that work with Google Sheets such as localize-with-spreadsheet or Easy Localization.

There are some features we have not really tried to address when choosing a way how to do translations:
  • Having a translator-centric tool
  • Checking amount of work done by translators which then translates to payment
  • Complex enforced workflows of translation and approval process
We have focused on a tool that would enable us to rapidly update localization and include it in the application. So the tool is our workflow-centric not translator-centric. This means the translator is forced to use Google Sheets directly or has to export-import data to make translation in their own tool.

Calculating the amount of work done can be done but it will require some work either in the spreadsheet or in the code you would use to download localization. It is certainly nothing you would get out of the box. The same for more complex translation workflows. It may be much harder to enforce in spreadsheets.

Google Sheets Perks

We have picked Google Sheets for having a centralized translation of Icon Cast. Primarily because we already use Google Sheets so it ads no extra cost. It is super easy to let anybody comment and contribute. Many people know how to use spreadsheet applications on a basic level.

All our text is translated in a single table. Each row represents one piece of text and each column represents a single language. It is a simple matrix with keywords, comments and the original English translation in the first columns.

Some basic highlighting at least for missing translations

With using Google Sheets you will get certain features for free. We found some of them useful for localization. So we will give you a couple of hints. I will not elaborate on tracking changes and ability to comment every cell. These might be pretty useful as well. I will focus on less known features that might save you some work in your translation workflow.


Formulas

You can use formulas in translations to insert dynamic content. It is great to reuse commonly used values and texts. One disadvantage is that translators are not very familiar with writing spreadsheet formulas and usually will just put static text there. So usually only the original localization is the one that really contains formulas unless you invest some additional time.

Formula for adding a dynamic value to text

Named Ranges

You can name individual cells or entire ranges to reuse them easily without having to reference them with their sheet coordinates. This means it is easy to move the data without breaking anything that depends on them. Also usage is a bit simpler as you type the name only as you can see in the image in Formulas section.

Go to Data → Name ranges... to play with the named ranges.

Named ranges make it easy to reference important reused values


Protected Sheets and Ranges

Protected Sheets and Ranges may be useful when you want to enable only certain people to edit specific cells. In our case we are the only ones who can edit the columns where are the keys for individual localized texts, comments to them and the English originals. We then plan to enable each translator to edit only columns for the language they translate into. This ensures people do not accidentally break things.

To protect cells from modification go to Data → Protected sheets and ranges...  Then just follow the instructions. It is pretty straightforward. You can pick individual people who can edit chosen sheets or data ranges.


Translate Add-on

Some people may prefer to start with a machine translation before an actual person does it right. Automatic translation might be useful when you want to test your application for right-to-left scripts such as Hebrew or Arabic. Eventually try to test it with scripts that have generally different look and proportions than latin characters such as Chinese. You might need to do some corrections after the translation is done if you use variables or other placeholders in the texts though.

Go to Add-ons  Get add-ons... and search for "translate" to find the auto translation add-on. Then enable the add-on for this sheet. We also had to close and reopen the sheet for options for translation to appear in the Add-ons menu.

The automatically translated cells are highlighted by the add-on
The add-on is available here.

Even with no add-on there is a function in Google Sheets to use Google Translate to help you fill the cells initially. Just use "=GOOGLETRANSLATE(<cell>, <source language>, <target language>)" formula.

You can use this as any other formula


Details and Context

You can use links in spreadsheets or show images from an web address. Links might be great to reference for example a large screenshot where the text is used or a link to the documentation that provides more information about the functionality related to the text.

In the future we plan to show icons that are related to the translated keywords so translators are sure what the keywords refer to.


Checks

Thanks to formulas you can do some checks for translations. For example you can check that the translated text is not empty, that the text length is within required bounds, etc. At the end we decided against this as we can do more complex checks much easier in our Java builder. 

If you have some spreadsheet wizards in your team the Google Sheet may be an ideal place to make at least some of these checks as they provide immediate feedback to translators. This is something tests during build time cannot do at the moment.

Start Simply

Ideally the process of including translations in your app is absolutely automatic. This means that during build you download the spreadsheet values and directly embed it into your application without a developer having to do anything. This requires some development work on your side though. And you might not have time to do this.

When we started with translations in Google Sheets in Icon Cast 1.4 we had not such automation. Mainly because we were struggling with authentication with Google for some reason. We had only English at that time. So you had to do two copy-and-pastes from Google Sheets to Java properties files before release. However having the localization central, shared and easy to contribute for everyone pays of.

To make copy paste simple we have added another sheet with formulas that basically produce localization in Java properties format. You can use the same approach to generate different data formats if properties do not work for you.

Formula for composing Java properties
You can download starter spreadsheet that is intended for generating Java properties. Let us know if you have an idea how to improve it so other people may benefit.

Automate

Ideally at some point you will avoid manual copy pasting and make download of localization from Google Sheets a part of your build process. The best place to start with using Google Sheets APIs in Java is Google Sheets Quickstart. Just make sure you follow the instructions because we did not initially and that gave us some headache with authorization.

Depending on your builder (we use a custom Java bases builder) the integration may differ. If the integration with a builder such as Maven is an issue you can just create a small utility that will download the data and create creates the property files before the build process.

Conclusion

There are numerous ways how to localize your application. We have tried to make it the way it suited us. We wanted the localization to be on one place where people without GIT or any other developer tools can access it. We also wanted to have inclusion of localization files to be fully automated. Google Sheets are great for collaborative work on the localization and we had to implement a bit of Java code that downloads the translations and saves them as property files to the application during our build process.

You can start very simply without coding with our sample spreadsheet that produces Java property files for you. So you can only copy-and-paste them to your application. We used this in Icon Cast 1.4 to 1.7 before implementing the full automation.

How do you do localizations? As always we welcome any hints. Also if there is anyone who would like to help us making Icon Cast international let us know at contact@pureprototype.com and you can try our localization workflow yourself :)

19 July 2016

Icons by Categories and Material Design Colors 1.7

We have just released a new version of Icon Cast. Again it took longer than we wanted but we had some issues with releasing the Paddle version - alternative to Mac App Store. We gave up for the moment and will get back to this in 1.8. So Paddle users have to wait a bit longer this time for the enhancements. We are sorry guys!

All Icons by Categories

You can now browse all icons when you do not search. On top you will have always a few recently used icons. Below these you will see individual categories. After SVG this was actually the second most requested feature. So hopefully better late than never.

Icon Cast with all icons
All icons by categories

Material Design Colors

Icon Cast always had a flexible color picker. It even accepts wild CSS input. In this release we have also added option to switch to material design color palette. With growing popularity of Material Design in web and mobile it makes sense to have quick access to these colors.
Google guys made a really good job on putting the colors together. You can very easily create icons in colors that look great together. Without having to fiddle with shades and hues yourself. The original color picker is still available and it is the default one. Use Options button to switch between pickers.

Material design colors in Icon Cast
Material design palette

Save Icons

Additionally to drag-and-drop, copy-paste and opening an icon in an external editor you can now also save icons directly from Icon Cast. No need for workarounds from now on.

Save options

Social Icons and a Bit More

Apart from other minor improvements there are also new icons. See below.


You can buy Icon Cast at Mac App Store or download a demo.

18 July 2016

Test Gatekeeper Quarantine

Recently we have found out that people have issues with our free version of Icon Cast. We distribute the free version outside of Mac App Store and sign it with the Developer ID certificate. This should work well and worked in the past. At some point (we were unfortunately unable to trace back) this started to happen to people downloading the free version:

Dialog that offers users to move an app to the Trash if it Gatekeeper believes the application was tempered with
A scary dialog without option to launch the app
Based on Apple's documentation this dialog appears when the contents of the application is changed after the application is signed. The strange thing is that we were not aware of any changes to the app after we signed it.

Painful Workaround for Users 

There are many threads discussing this and a similar issue for different apps: OSXDaily, Ask Different, iMore, Stack Overflow etc. And they pretty much describe a same way how to remove the scary warning on a user's machine.

One very user-unfriendly way how to overcome this is to change preferences in Security & Privacy and allow to launch applications downloaded from anywhere. In this case Gatekeeper will not check signature of any launched app. However the dialog above and forcing users to change the settings is definitely a road block that may stop users from trying you app. It also does not earn a lot of trust.

Preferences in OS X that show how to disable Gatekeeper and enable any application to run without warning
Allowing this will efficiently disable Gatekeeper

Because all the above is extremely discouraging for your users it is best to sign your app. We have done it from the very beginning. Yet we found out that the dialog appears to our users. We looked for the cause of the dialog.

What Was the Gatekeeper's Problem

We build Icon Cast outside of Apple's xcode which brings interesting challenges at times. We were afraid it can be something exotic that xcode does out-of-the-box without without a developer even noticing and it takes non-xcode developers agest to track down some details.

After couple of hours of Googling there were a two things that pushed us into the right direction. First was this Stack Overflow question about failing to sign an app outside of xcode. We have also found that Apple made Gatekeeper stricter (Gatekeeper Changes in OS X v10.10.4 and Later) when it comes to external libraries referenced from the application.

The only external frameworks that we use are Paddle (for sales outside of Mac App Store) and Sparkle (for auto-updates). These are directly included in our app so they were not issues as such. We have just tried to update both to their latest versions to see if there are not some OS X-compatibility fixes. Release notes suggested that there might be some fixes in Sparkle.

And voilá. That was it. It seems that Paddle or Sparkle  was not compatible with the latest Apple security updates. Good we have fixed that. Next we needed to make sure this does not happen again.

Testing The Signed App

Apple recommends to upload the app to a web server or send it to yourself via email or something similar. All these methods are pretty inconvenient if you have a large app. It is especially inconvenient when you need a couple if iterations to find our what is causing the problems with Gatekeeper.

We wanted to test this more conveniently. What Gatekeeper actually does is - it check the extended attribute called com.apple.quarantine. If the attribute exists then it shows users different dialogs warning them the application was downloaded from The Internet.

There is a Terminal command xattr that enables to modify the extended attributes. People in most cases use this command to bypass Gatekeeper. However you can also use it to simulate that the file was downloaded from The Internet. By doing so you avoid a long roundtrip by uploading your built application and re-downloading it.

The instructions are very following:

  1. Open Terminal
  2. Go to the folder where you application is
  3. Type xattr -w com.apple.quarantine "0000;00000000;Safari;" "YourAppName.app"
  4. Press Enter
  5. Try to launch your app
Using these steps you should be able to quickly check if your users are not bothered by a scary dialog. If your signing process works well you should see dialog like this:
Nicer dialog that enables users to actually launch the app

Conclusion

We didn't want to test Gatekeeper's behavior manually in Terminal. So we have added an automated build step that creates a copy of our application and then runs a script that emulates quarantine by setting the com.apple.quarantine extended attribute. We have to still launch the quarantined application manually though. Still we reduced the amount of manual work significantly.

Build folder with Icon Cast and its quarantined version
Gatekeeper does a great job in protecting users and you should really sign your apps. It is also a good idea to test if the signed app works as it should. We were caught by surprise. So watch you back.

Useful Links

List of the most interesting links from the post:



07 April 2016

Icon Cast 1.6 Sooner than We Planned

Wow. That was fast. It is just two weeks since 1.5 and Icon Cast 1.6 is already here. We have released sooner than we planned but there are still some useful features that made it to 1.6.

I have to admit. We haven't quite hit the mark with 1.5. Some of our users experienced issues when upgrading from older versions. This bug caused the search to stop working. Which is a remarkable limitation for an app that you use for finding icons. There is a workaround that involves having fun with Finder and the filesystem. That is not great.*

Get the latest Icon Cast version on Mac App Store or try it for free.

Base 64 Export

Along with PNGs and SVGs you can now export icons in base 64 encoding. You can use base 64 encoding to embed images directly into HTML. This is suitable for smaller icons. While base 64 encoding takes a bit extra space compared to  but saves additional HTML requests for individual images.

Base 64 encoded image inside HTML in an IDE
When choosing base 64 encoding. Icon Cast puts to you keyboard text that you can paste directly into the <img> src attribute or to any CSS property that expects an image.

Just use commons sense when using base 64 icons. They safe a bit of traffic when used for smaller icons that appear once in you app. With icon a size, repetitive use of the same icon and browser caches the advantage of using embedded icons can become a disadvantage.

Usability Improvements

We were always proud how you can quickly you can find an icon in Icon Cast and get it into your clipboard. Super fast search and keyboard shortcuts make that possible. We have added few more useful shortcuts.

Starting with 1.6 can use keyboard shortcuts also to:
  • Open individual color pickers
  • Swap the two primary colors
  • Switch icons to black
You can check all the new shortcuts in the new Style menu.

The new convenient Style menu
You can now also keep application background synced with the icons background. Plus there are a few visual improvements in the user interface.
Icon Cast with different backgrounds

New Icons

We started to work on food and healthcare categories mostly. As we decided to release early there are more to come in 1.7. Check the new icons below.

Icons added in Icon Cast 1.6
Start using Icon Cast and share your thoughts. You can buy it from Mac App Store or try it for free.

* The funny thing is that I had already started to write a blog post about how we can easily test upgrades to make them really smooth. So I will have to make few changes to it to reflect reality before we post it :)

25 March 2016

SVG comes with Icon Cast 1.5

Yes! Icon Cast now lets you copy icons in SVG. To be honest we were thinking about bringing vector icons to Icon Cast for a while. We thought of it as a cool feature for version 2.0.

However we received a lot of feedback. Missing SVG support was number one. So there it is :) And the update is free as always.

Sounds simple. But because the way Icon Cast works adding SVG as a supported format is not as straightforward as it may seem. We also had to reexport all the icons to SVG and make some changes in the icons themselves to enable color customization and resizing in the vector format. Icon Cast was internally really heavily pixel-oriented. Ufff, simply going through over 1,500 icons. So much for excuses why it took us so long to release 1.5 and trying to make you appreciate our effort :)

You can now find a small menu in the top right corner where you can pick the export format. By default it is still PNG. When you switch to SVG all icons will be copied as SVG text that you can place directly into a web page code. When you double click an icon Icon Cast will open the SVG in your favorite SVG editor or viewer.
Star to favorite sizes, menu to choose export format - PNG and SVG
Please give us feedback whether this works for you. We plan do some minor improvements around how copy and paste works and we would appreciate your input.

Other that that. You can now favorite icon sizes very simply by clicking a star next the icon size. We have also worked hard to give more keywords to each icon so you should find icons you need easily without having to be an oracle.

I you would like to try Icon Cast you buy it on Mac App Store or try it for free.

Traditional list of icons added in new version below.



25 February 2016

From Google AppEngine to Amazon Beanstalk

Since we launched our Icon Cast website we used Google AppEngine. We have decided to go for Google AppEngine because of super simple deployment of Java-based applications and the fact it had a permanent free tier. We estimated relatively low traffic that would always fit into the free tier. The deployment was really as simple as promised.

The free tier was actually enough for most of the time except for our Christmas giveaway when we faced huge traffic and our website was unavailable for a moment*. After we got alert from New Relic we just enabled AppEngine to go beyond free tier and it worked beautifully without issues. So far so good.

* by "a moment" I mean an hour or so :)

During Christmas giveaway we crossed the line of AppEngine's free tier and our users got this message until we filled the billing info

Our Issues with AppEngine

Our website does not use any storage or anything special. It is actually pretty close to a static HTML. The only thing is that we use parts of Icon Cast code to list and render icons. We have also some future plans but that is not for the moment. AppEngine however imposed some limitations. These were not killers but were not super convenient.

We were especially unhappy about:

  • No Java 8 support. We use Java 8 in Icon Cast and in order to use some functionality on our website we had to have modules shared between web and the application in Java 7 which was not convenient.
  • No Servlet 3 support that forced us to use Wicket 6 UI framework while Wicket 7 was already available.
  • Inability to use java.io. Despite we do not access hard drive we use some utility classes such as Path in other contexts. This led us to use custom simple implementations of some classes providing the same functionality.
Most importantly Google does not seem to even care about AppEngine and our trust in their commitment to support their services and keep them up to date is very low. Just check Java 8 discussion or Servlet 3 discussion. It seems that focus of Google moved to Managed VMs that are in beta and we were frankly not willing to give Google another shot.
AppEngine is incredibly easy to use and start with. It has few restrictions that are easy to met. But failure to support Java 8 and Servlet API 3 makes it feel like an abandonware. Maybe it is an abandonware after all. 

Amazon Beanstalk

I believe there is no need to introduce Amazon. We have ignored Amazon services for a long time as AppEngine was OK for us. As AppEngine was feeling more and more like an abandonware and we were looking around and checked services such as Amazon AWS, Heroku or Digital Ocean to name a few.

To be frank a big kick towards Amazon was a blog post about free SSL/TLS certificates on their platform. Mainly because of the price which is actually not as free as it seems because you have to pay Elastic Load balancer which can be roughly $20 per month for low load applications. We do not use load balancer yet though. Secondly we wanted to have a look how easy it is to deploy a web app when configuring SSL/TLS is that easy.

We didn't want to manage OS or a software stack. We basically wanted something Heroku-like. Just on Amazon to take advantage of their other services in the future. As you see on the image below the list of services may look quite intimidating at first.

We will dig through these after Icon Cast 1.5 release - hopefully, maybe
It took quite a while to find out how to best deploy a web application. As we use Apache Maven for building and deploying the best choice we have found is a Maven plugin called Beanstalker. It basically puts a WAR archive to Amazon S3 and then deploys it to Amazon Beanstalk. You can easily pick what software stack to use - in our case Tomcat 8 with Java 8.

Just an hour after having our website running on Amazon Beanstalk we have migrated it to Java 8 and Wicket 7. Java 8 was just about changing build configuration in Maven. Wicket 7 was slightly trickier but it was just about going to the Wicket 7 migration guide, search for every build error we got in the guide and replacing the uncompilable code according to the guide. Roughly 50 to 100 individual straightforward fixes each taking few seconds. Then just running few tests and voilá.

Domain Transfer

When Amazon Beanstalk was that easy our appetite grew. So we also decided to move the domain registration and DNS to Amazon. We used a local Czech service FORPSI. We have moved the domain just because we wanted to have management of the web stuff on one place and simplify setup of domains, DNS, redirects and similar.

The funny part was that during DNS setup we forgot to add MX records to redirect emails. We continued setup of other things that required email confirmation. Then we spend quite a while wondering why the confirmations are not coming to our inbox.

We also had to setup the naked domain redirection via Amazon S3 and few other details. It took quite some googling here and there to setup everything. At least everything we though of.
Moving from Google AppEngine to Amazon Beanstalk took roughly 4 hours including DNS changes and including being lost in all the Amazon services and preferences.

Conclusion

Moving to Amazon Beanstalk was super easy. When you have a web app that you just need to run Beanstalk is one of the easiest way to go. Amazon also offers first year for free on small instances so there is very little you have to invest at the beginning. We will see how happy with Amazon we will be after using it for a while and especially after we will check the billing section in a month or so.

We use New Relic for our website monitoring and it has not noticed any downtime during the switch from AppEngine to Beanstalk. So we can mark that as a success as well.

After Icon Cast 1.5 release we will have a bit more time to update our website a little. And also deep a bit deeper into what all Amazon has to offer.

Useful Links

You could just google them or find in the article above, just in case:




05 February 2016

Our Color picker and CSS are now friends

If you ever played with Icon Cast. You know that it is about two things - icons and colors. Thus most of our effort goes in these directions.

What we have learned is that a lot of icons from Icon Cast end up in web apps and prototypes. And from time to time you want to match the other colors on the website. Colors of most elements on the website are unsurprisingly in CSS.

CSS is very flexible in a way you can define color. You can use good old HEX code, individual RGB+Alpha values, HSL (hue, saturation, brightness) values or even some predefined CSS color names.



So in the hex field try examples such as "#f00", "rgb(255,255,255,255)", "Black",  "LIME",  "hsl(240,100%,50%)".

We now support pasting any valid CSS color value into the "Hex" field. It is more powerful that it claims :) A small hidden gem.


15 December 2015

Icon Cast 1.4 with over 50 New Icons

It has been a while since the last release. Much longer than we would like. However there were some things we wanted to do and are not yet completely visible.

The biggest update is inclusion of icons you have asked for. This time it is 55 - so quite a nice bundle. Icon Cast contains over 1,400 icons now. We were always pretty defensive about the count and rounded it to "over 1,000" on the main page. Not anymore. We are getting further and further from the magical one thousand. So we decided it's time to admit it :)

We have also polished tens of already included icons to make them better fit together. If you still miss some icons let us know at contact@pureprototype.com.



We believe you will wait much less for a few upcoming releases. We have some new features planned that we are very excited about. If you have some ideas of what is missing in Icon Cast just tell us at contact@pureprototype.com.

04 November 2014

Celebrating Diversity

Have you heard about Unicode 8.0? No? You check out this blog post on Emojipedia. The blog post in much easier read about the new proposed update to Unicode.

One of the major updates to Unicode could add support for emoji skin tones. You will not be limited to traditional yellow ones. If everything goes right the new emojis can make it to Unicode in mid-2015.

For those who can't wait. We are glad to announce that with Icon Cast you can celebrate diversity right now. We have always embraced colors. And with Icon Cast you can embrace colors as well.

For those who do not know. With Icon Cast you can choose any colors for your icons. Just open Icon Cast and play with the buttons in the top right corner. The possibilities are limitless.


And of course, If you are member of the Smurf community you will surely appreciate this:


So, don't way and try Icon Cast for free or buy it on Mac App Store now.


23 July 2014

Try 1.3 for Free

One think people ask us about Icon Cast is "Is there a free demo?"Actually, together with "Is there a Windows version?" it is the most common question. It took us some time but now the answer to the "free demo" question is finally "Yes". Over the hot Czech summer we have worked hard to make it happen. It was not as easy as we thought but ...

Miracles don't happen overnight. But they do over summer.

We are happy to announce that you can download trial version 1.3 for free. The icons are watermarked but you check see whether Icon Cast does what you want. You can then upgrade to full version directly from within the app via in-app purchase thanks to our friends at Paddle. Or if you prefer Apple's way for some reason you can download full version directly from Mac App Store.

You can check the release notes for details about both 1.3 and 1.2 updates. Shamefully we haven't got yet time to share news about big 1.2 update on this blog. So you can check its release notes as well.

We would like to create a new video about 1.2 because there are some big changes. So stay tuned or even better try the changes yourself before we publish spoilers :)

Download Free Icon Cast now and enjoy!

How To Spot An Unfollower

Nearly every day a notification appears in my Twitter app. It says "XY followed you." I'm happy ever time I see it. And every time I immediately have a look at our brand new follower's profile. At a glance I can say, whether this person is going to follow us in the future or not. This is one of the things I have learnt within our short twitter experience. How to spot a future unfollower. Actually, it's really simple. There are (at leas for me) three categories of (un)followers.

Hunters

According to what I have read about twitter some time ago there used to be a rule to follow back everyone who follows you. So, if you see a very similar number of following and followers in someone's profile, you can be like 100% be sure, that this person is a follower hunter. He or she is following you based on whatever and expects you to follow them back. If you don't, they will unfollow you. I would say they are interested more in numbers than in your content.


With different interests

By this I mean that sometimes we publish a post a person gets interested in. Like some quote, image, video, based on which a person follows you. Again, look at the profile and compare the topics of your and the new follower's tweets. If there is very little or no similarity between your and the follower's topics, this person is probably one of your future unfollowers. Obviously, the person has different interests.


Offering services

From time to time various companies follow us. It may be a marketing agency, specific software company, someone offering surveys, etc. From my point of view they are offering us their services. And in case we are not interested (and we never are) they will unfollow us. We are their "uncustomers", so they are our unfollowers.

By the way I really like using unfollowers.com. Not only because I can see who unfollowed us. But also because with this "sad" news it also makes my day. It offers me to tweet "I lost 2 followers recently and i know who they are thanks to Unfollowers.com" and it just makes me smile every time I read it.

Of course, it would be nice to have a much more followers. But we are interested in followers, who are interested in content we are creating and tweeting - mainly about UX and design. I believe we just need more time and tweets.

23 May 2014

First Drop of Attention

We try hard to promote Icon Cast wherever possible. Thanks to our $ZERO™ marketing budget social is the way to go. So we started tweeting (better late than never) and also posting more on Google+. Exploring social marketing secrets eats up quite a lot of time - but thats the tax for getting attention.

Want to review Icon Cast? Promos codes waiting

Currently we are finishing 1.2 version to include some important improvements you are asking for. Then we would like to finally find and ask some reviewers and bloggers to have a look on Icon Cast. So if you know anyone who would like a free promo code and give Icon Cast a shot let us know via email contact@pureprototype.com .

Sometimes simply sharing your joy is more than serious marketing

However in the meantime I got really happy that somebody finally noticed Icon Cast and spread the word to quite a few people. I actually posted some info about Icon Cast in LinkedIn group for attendees of a Coursera HCI course (that I attended). It was not an act of marketing. I was just proud and happy of the work I have done, so I wanted to share my feelings with someone. I have already forgotten about it but just few days ago I was reminded by guys from University of California's HCI Course mentioning Icon Cast:



As you can see it really made a noticeable impact in Google Analytics:

So. Thank you - the team behind HCI Course - for picking Icon Cast as a good example. We will do our best to move Icon Cast usability forward with the version to come so you can be proud of us.



19 May 2014

Shouting Loud

It probably looks easy. We made some twists and tweaks in the Icon Cast UI, fixed bugs, delivered a few new icons with the last 1.1 update and we can have holiday until we decide to make a new version sometime. Well, that would be cool. But the reality is quite different. Because there is much more to do than it seems.

Talk, talk, talk... if you stay silent, no one will hear you

First of all, not many people know Icon Cast exists (not as many as we would like to). Actually a month ago only our friend and families knew. It's almost like being at a street where people are just passing you. We are now doing our best to talk to people and become more noticeable. And I hope people will start talking more to us too.

http://uncyclopedia.wikia.com/


If you don't have any marketing money, go social...

That means that I have studied a bit of marketing, because I knew very little about it. Some time ago (before we started developing Icon Cast) I took a nice Coursera course about it. It gave me a really high level overview about marketing. But there is much more to learn - how to do marketing in real life. Especially, if you are a small business with a marketing budget close to $zero. With this huge amount of money we've got we decided to use free tools only. Above all, we went social. There are many people we can talk to. And it feels good, we do not annoy people on different web sites with banners.

Nothing comes to you by itself. If it does, it's just because you're lucky

We have a Twitter, Google+ and a Facebook account, where we try to post interesting or funny content you might be interested in. That means I'm constantly looking for mentionable articles, blog posts or apps. I carefully watch Twitter, constantly use Google and regularly visit web sites that usually deliver content that is worth spreading. This is actually pretty cool as you learn a lot of different things in the process.

Don't stop, continually improve your product

All the social marketing, website building, blog writing, thinking etc. takes some serious time. But we are not forgetting to improve Icon Cast itself. We have received feedback from our users and hopefully-soon-to-be-our-users and we try to add features that will make both happier.  This will lead to a new intro about Icon Cast together with soon to be released 1.2 version. Because 1.2 will be a pretty nice update. That's good. If we had to stay with the current version it would mean that Icon Cast is totally doomed. Or that we just do not talk to people about how to more it forward.

It's easy to say... But be patient

I know that Icon Cast will not become a superstar app overnight. And we will not have thousands of followers on Twitter or Google+ after a month of tweeting. Although our statistics sometimes look discouraging, we are still at the beginning of a really long run. Recently I ran into a nice image on linkedIn that nicely sums up this blog post. Let me share it with you.





09 May 2014

Colors Get Some Love in 1.1

You may know that colors are a really important feature of Icon Cast. Yet with 1.0 we are not quite where we would like to be. If you needed to change, switch or reuse colors it probably took you some time and definitely wasn't comfortable. In 1.1 we made our first step to fix this issue for you.

We really appreciate those brave who bought 1.0 

Since 1.1 Icon Cast automatically remembers last ten colors you have used for your icons. You can also save any color to Favorites so they are always there for you in case you need them quickly again. This way you do not have to store a list of colors somewhere else and copy-paste them to Icon Cast again.
Another small improvement when working with colors is the adjustment of alpha with a slider.

Walking towards more efficient usage of colors



And what's new besides the better usage of colors?

- Icons from the search result are better ordered. So the related icons stick together.



- The performance is improved. After a long usage of application the performance sometimes dropped. This shouldn't happen to you anymore.

- The list of Recent Icons remembers all copied icons. That means also in cases when the icons were copied by using drag&drop or keyboard shortcuts.

- Few minor usability tweaks you would probably not notice but we are glad they are there :)

- There are also 15 new icons as we told you in our previous blog post. You can check all icons in 1.1 on our website.

06 May 2014

The Muffin Coming in 1.1

Just a few minutes ago we submitted Icon Cast 1.1 to Mac App Store. I hope that the review will be swift and you will get some small features and important fixes soon. So, what can you expect?

First of all, as promised in our FAQ, a bunch of new icons based on users' request were created and added for free to this minor version. Here they are:




   

   


 






You can have a look at the whole updated icon collection at our website.

The starring Muffin coming to you

Last but not least the featuring muffin from Icon Cast intro video will be available for all of you.




The features and fixes will be described more in detail in my next blog post, when Icon Cast goes through the app review process.

03 May 2014

How We (re)Designed the Icon Cast Logo


At the very beginning the task to create an app icon looked quite straightforward. There were a few ideas how our it could look like and with my bright new crayons I immediately draw all of them on a piece of paper. I just thought all of them looked quite nice. Moreover there seemed to be just a little more work to be done. And there actually was until a small twist.



We selected the most simple image so it could be easily created and would be most suitable for an app icon. I opened my colour palettes I have created while working on some previous projects and chose colours we liked the most.




Usually, you don't see your mistakes at the very beginning

Then I opened an image editor and started to create the icon itself. From the beginning it looked somehow weird, lacking something important. So I tried to seek some inspiration. I liked the texture of the old violet-white iTunes icon. So I applied it to the individual parts of our icon. Somehow with Vaclav we proclaimed that the app icon is finished and it would to be used. But this is not our app icon, isn't it? Well, of course not! It just hurts my eyes.

http://www.everythingabouttablets.net/wp-content/uploads/2011/10/itunes.sml_.jpg
The tragical result...


Sometimes it is inevitable to start over again


The more I looked at that icon, the more I disliked and hated it. I saw that everything about it was wrong. And after some time I jus said "We cannot release the app with this mess. There is no way the whole world is going to see this disaster. I just have to remake it, create something else." And I have to admit, that as I look at the drawings now, they do not look as good as they did before. Yes, when you design something, taking a break (even a few days) is necessary.

Take breaks and with fresh eyes you will see things differently

I went back to the images we had at the very beginning. The main idea was colouring, which had to be transformed into an icon. We considered the freedom to choose icon colours to be a really important feature and wanted to have it in the icon somehow.

We had some idea of a bucket, but it was from the side and actually looked just grey and still lacked the most important message. Then this thought appeared: "rotate" the bucket so it's content could be visible. So once again, I opened the image editor and draw the bucket and it looked promising. As we were playing with the application itself, we built up a dozen of colour palettes, from which I chose the violet-yellow combination.

Icon that stands out of the crowd

I went for the dominant violet, because it's a rarely used app colour and does not get lost among other, mostly blue, app icons. Then I added some shades to the bucket itself and to the colours pouring out of the bucket. And finally I thought that this was something that wouldn't hurt your eyes and would make a nice app icon.


Vaclav has also found an interesting scheme about colours and logos, according to which our app is creative and optimistic. That sounds cool. After all, we believe not only our app, but also our users are creative.

http://bufferblog.wpengine.netdna-cdn.com/wp-content/uploads/2013/04/color-guide.png