Cloudflare Dynamic DNS Client

Build Status

Playing with Go I've decided to create easy to use crossplatform Dynamic DNS Client.

Classic Dynamic DNS clients based on IPv4. Currently even white dynamic IPv4 is quite rare thing. More and more providers use NAT and it's impossible to use classic dynamic dns to expose your home, testing or virtual server to the internet. Fortunately there is a lot of free IPv6 addresses (about 300 000 000 for each person on Earth). It's a good idea to use IPv6 instead of IPv4. But IPv4 is still most popular technology. The problem is IPv4 has no direct access to IPv6 and vice versa. Cloudflare provides transparent bridge from IPv4 to IPv6 for free. So IPv4 clients able to access IPv6 resources. The easiest way to get "white" IPv6 is teredo.

More »

Mario + NodeJS

It’s time to add some multiuser interactivity to canvas. And here is the next demo based on famous game characters. Your character is Mario and Luigis - other users watching this demo. Use keyboard arrows or virtual joystick for touch devices - moves character. Also you can type any message and other user will see it. All this made with CreateJS (client), SockJS (client-server) and NodeJS (server). And finally I managed how to use runit and NodeJS together for easily start/stop/restart/auto-restart-in-case-of-fault server.

More »

Static Site Generator

Finally I got rid off Wordpress and moved to handmade static site generator. I started this site about 4 years ago with Joomla, than transfer it to Wordpress and now it’s pure static html. To achieve it I’ve made static html generator that generates site from mustache templates. All english posts and pages were converted from Wordpress to mustache templates.

Why?

More »

Million Times

Playing with TypeScript, I accidently made this demo.

More »

Advanced Memory Game

I'd like to introduce a HTML5 port of my flash-based game for android. It's a variation on Memory game with modern mobile game features such as

  • different types of game. Actually there 2 types of game: time challenge and tap challenge;
  • levels. 150 level for each type of game = 300 levels in total;
  • 0-1-2-3 stars as score for each level.

That's why there is "Advanced" in the title. Now it's available right in browser. Tested in:

  • Chrome 21 (also available as chrome extension via Chrome Store);
  • Chrome Mobile(Android 4, on tablet and phone);
  • Firefox 15;
  • IE 10.
Technologies used in this port:
  • Haxe for code. Haxe is very similar to ActionScript 3 so there wasn't any problem to port code.
  • JSFL to convert resources from swf to png. Common resources (menus, stars, card's covers etc) of android game were in swf which was compiled from fla-file. I wrote simple JSFL script to convert all assets from this fla to png images. There wasn't any complex animation so were not any problems to use them in HTML5 version.
  • CreateJS for working with canvas (EaselJS), for tweening (TweenJS), for sounds (SoundJS) and for loading resources (PreloadJS);
  • HTML5 Local Storage API as alternative to flash SharedObject to store user's progress and settings;
  • HTML5 FullScreen API (not available in IE);
  • HTML5 App Cache API for caching resources to play offline;
  • Google Analytics for statistics;
  • Google Web Font API for custom font (for some reason in my case it works only in Chrome, IE and Firefox fallbacks to default font);
  • Google Closure Compiler to optimize JS code. Final code weighs 43KB (excluding CreateJS toolkit);
  • PNGCrush to reduce size of images;
  • Apache Ant to automate the building of game.

Well, I hope I didn't forget anything. For me the main goal of this port was researching of current state of HTML5. Now I can say with confidence that in 90% cases flash could be replaced with HTML5 + JS. Of course I choose quite simple game to port but that was enough for me to get the big picture. The main problem with HTML5 development - it requires more resources than flash development. There plenty of browsers and each browser has it's own implementation of HTML5 and JS. Even in such simple game I need to use several hooks to make it work in different browsers:

  • load and play .ogg instead of .mp3 in Firefox;
  • using default fonts in IE and Firefox instead Google Fonts. Automatic fallback doesn't work in Firefox for me so I did it manual;
  • disable fullscreen functionality in IE.

While flash game works fine without any tricks in all browsers that support flash plugin.

Here is the game

HTML5 Canvas + Haxe

There are 2 approaches to work with html canvas in Haxe:

  • using HaxeNME as all-in-one solution;
  • work with canvas directly or using one of the native js library.

I'm going to consider both of them.

More »

Introduction to Haxe

First of all, I apologize for my probably bad English. Currently I'm working on improving my English skills that's why I need to write articles in this language.

Being Flash developer, everyday I come across with HTML5. There a lot of discussions about HTML5 vs. Flash. I decided to take a closer look to HTML5. After playing with canvas and audio I realized that I’m missing strictly typed OO language. JavaScript is good language, but for me it’s more comfortable to write code in such languages as ActionScript 3 or Java. Fortunately, there are a plenty of tools which could help you to avoid using JavaScript directly, for instance:

  • GWT (Google Web Toolkit). Java code compiles to JavaScript;
  • Jangaroo. ActionScript 3 => JS
  • Script#. C# => JS
  • Haxe. Haxe => JS.
and others. I tried GWT, Jangaroo and Haxe and choose the last one.
More »