A new life for vocabup.com: MARKETING

I reached a new stage in developing the vocabulary enhancement app. I come to a point to stop development for a while and do market research and marketing. As in case of vocabup.com I am marketing and development guy in one person and I realize now, that programming does not make the whole show. The previous work was good and I reached my goal to build a reference app showing state of the art software development implementing the progressive enhancement and mobile first webdesign principle. The result is a very accessible app that can be enhanced up to a native equivalent offline app easily. The app can even do the balance act to run without JavaScript, a characteristic of Accessibility. The effort to make the app offline is far less than to write an app for every platform. All I have to do is to write/extend the client side database layer and master and apply Application Cache. As I chose a dedicated node.js webservice as the view layer I do not have to change my view code, be it for server side rendering or client side rendering whether via Ajax or IndexedDb, since this layer can be executed on server and client. I was not under time pressure and could think in the very long term and strategically and so I was able to build the jack of all trades software, or lets say the jack of all platforms and use cases.

Look at the performance test results for the vocabulary app exercise page! There are still some minor issues. The database queries for this page are complex in order to present the user an intelligent word quiz and so it takes time for the server to send the first byte to the browser. The thesaurus pages can let users wait for a second too. There are words having up to 75 definitions each of them having synonyms, sample sentences and domains they belong to and many semantically related definitions which for their part have synonyms and sample sentences. The WortNet 3.1 database is like its name says a net, so the information you get about a word is complex and relating to other words. That is what make this thesaurus and dictionary so interesting but also stresses resources. But the majority of the vocabup.com pages load fast, like that page. I decreased the page size by compressing all the big JavaScript and CSS files and even the HTML is compressed in the case of the blog pages or React apps. Now the vocabulary app can be accessed even when the data transfer rate on a mobile device is low. That means my website is also accessible to many countries which has poor infrastructure. In Germany there are many spots where mobile services has no chance. But my app will still respond quickly! And the app fits in all displays in contrast to many old and established web apps.

I had a problem with React. This does not shed good light upon React and I was worried first. I still did not get an answer from the React guys on stackoverflow yet. Maybe I post it in the React forum more prominently. On the other side I am satisfied with a workaround in the meantime. As I have a marketing phase now anyway I will return to that problem later.

In order to start marketing I integrated a wordpress blog into vocabup.com. The strategist that I am I have different goals by writing a blog. First is search engine optimization (SEO). Search engines love text and if I want to be found by them I have to tell them how good I am at knowing and providing ways how to improve vocabulary. But it is more than search engines. I read some pages about improving vocabulary. Read, read, read, they say and write. Having a strong vocabulary is said to be the most important factor for having success. Writing really helps myself to dive into the topic and find my niche in the market. And while doing this I can praise what vocabup.com can already do for vocabulary enthusiasts and gather ideas how to improve and direct vocabup.com. Google Analytics will show me which keywords are best to concentrate on and where competition is low enough and what the visitors are interested in. Finally I can enter the market and develop the software very focused and thus efficiently. So blogging is a very cheap and efficient way to get into the market and try keyword combinations out and get feedback.

Tutorials like this helped me to find an approach how to incorporate a wordpress blog into vocabup.com seamlessly. An obstacle was the unexpected behavior openshift adds to committing and pushing a git repository to the production server. Normally you would tell git which files to leave out from committing and pushing by the .gitignore file. My aim was to just leave different wordpress installations on development and production server and maybe just check in and deploy the theme. Git supports this workflow and can ignore files that are not in the index. But Openshift deletes ignored files from the remote repository on the production server. Openshift clears the remote repository at first and push the resources freshly each time you git push to production. So I just had to write a post deployment action hook, which creates a blog directory and places a symbolic link into it which points to a persistent directory where I have my wordpress installation now. But know that!

Offline runnable Thesaurus Training Web App – SEO and online

Until now I paid much attention to develop the offline part of the offline runnable thesaurus training web app. But for a web app this is the fancy part and since I want to progressively enhance my web app I should care for the traditional online stuff first. I do not only see accessibility benefit in progressive enhancement but also in software development I learned that the easiest part is the most crucial one. You get the most stuff done in the least time. We as software developers have a strong interest in complexity and want to avoid the simple parts but in terms of productivity the simplest parts are economically the best. So why not develop the online and even non Ajax part first and then decide how to enhance the app by fancy stuff afterwards? Anyway I expanded my data model since I found that the thesaurus wordnet database from the princeton university has more to give and I want to fully visualize the data. This is the first step. It is the next step to determine which of the data has to be offline to offer a nice thesaurus training game experience.
Non fancy server side page rendering also enables search engine optimization immediately, even though search engines, especially Google, might be able to parse JavaScript. But parsing JavaScript is again special stuff and only fancy Google might be able to do that.
So the result of this iteration is an accessible online thesaurus website. The home link, which is the most used one, is working and the user and also the search engines can see each of the 147.500 words from the wordnet database via a CSS styled menu which shows the alphabet and provides a hover effect showing the combinations with the next 26 letters. In this way the menu devides all words into sections of words which begin with two letters and lets the user show them on the page. To minimize the length of the words page further the words list is presented in columns. For this layout I used the new CSS3 column properties. Unfortunately the Internet Explorer supports them from Version 10 on only. The best way to provide an alternate column function for the new CSS3 columns which will be less good for sure for < IE 10 users is to test for it by Modernizer, a JavaScript feature testing framework, and write another CSS for the case that the new feature does not exist. There are only two ways: Use the new CSS3 feature that not every browser supports and dynamically apply an alternate style sheet for old browsers or don't use new CSS3 at all. I prefer the former way. If it is really about a combination of disabled JavaScript and an old browser the user still sees a list three times as long as if he had been presented the content with column layout. I find that as accessible enough.
I improved also the URL layout and made Yii present the URLs more beautiful. Now there is no PHP in the address any more. Even more, there is no index.php. There should be no cryptic stuff like ‘?’ shown in a URL so the user can easily read it. Another advantage is, that search engines can not assume generated content but must believe that all was copied by hand. Even if the search engines don’t believe it the URL of the page describing the word smart has now the word smart in it, so search engines which also evaluates the URL, know the page content should be about smart and can show it in the search results.