1. 13:15 29th Jan 2012

    notes: 1

    2012 Resolutions

    I turn 26 today and it’s about time I release my resolutions for 2012.

    But first let’s review the last year’s resolutions:

    • Work out a lot (Kinect && (Walk || Cycle || Gym))
    • Eat Healthy
    • Cook more (& healthy)

    The first three were a success. I lost 32kg in 2011 (in 5 months) following the advice of Tim Ferriss (4 Hour body) plus I’ve been exercising regularly the last 4 months (gym) and I learned to eat better & healthier.

    • Travel (outside Greece for first time hopefully)

    Happy to report that this one was also a success! After visiting Scotland (and High Lands) this summer, I scored another trip abroad in Berlin, Germany for Google Developers Day in November.

    • Look into this coffee “business” (Marco inspired me)

    I just didn’t pursue this one, I think I will never be a “coffee” guy, but I must admit that lately I really enjoy drinking tea.

    • Play way less (or quit playing) World of Warcraft

    I quit playing WoW! I decided to stop after lots of years, partly due to disappointment from Blizzard’s way of releasing content and due its time-sucking nature of it. Also I stopped playing online games (Call of Duty, Battlefield) in general, although this was not intended. From the other hand I am really active in gaming: I finished two big titles in 2011 (Deus Ex and Skyrim), I keep tabs with everything gaming related and I am really looking forward to play all the other games I have in my library!

    • Launch my personal projects & update the existing ones

    Somewhat of a success: In 2011 I developed (and still developing) Analytiks, I launched some mini projects (HTML5 oriented and a Google Reader one) started a small gaming blog and I begun contributing on what became Soundbeam, the first iOS app of Evil Window Dog studio we “founded” with my buddy Petros.

    • Look into interesting and new technologies (iOS, Node.js, Python, WebGL/JS 3D frameworks)
    • Get involved into OS projects (Github FTW)

    I can’t say I have met my standards in this one: I was really focused on iOS programming in 2011, which totally overshadowed any other language/technology I wanted to get involved with. Hopefully this will be fixed this year.

    • Be a better person to everyone around me

    That’s an ongoing process :) I will try harder this year, promise!

    Now let’s see the new resolutions. I divided the list into to separate sections: Personal stuff and Work related. Those two blend in many ways but I didn’t want to create a huge list and never complete any of my targets. 

    Personal Stuff

    • Keep on with the healthy diet / exercise
    • Try the tea “business” instead
    • Travel at least in two countries (preferably US + England)
    • Socialize more

    Work Related

    • Learn new things (WebGL, Python, Unit Testing, Cocos2D, Continuous Integration…and the list goes on)
    • Make a game using Unity platform
    • Open source retired projects, upgrade or retire some others
    • Attend at least two dev conferences

    That’s it! They may seem a few but rest assured, they are quite a task!

    What’s your resolutions for 2012? :)

     
  2. 15:27 17th Sep 2011

    notes: 2

    Minecraft on the Cloud!

    Update: I have found (after posting this guide) that there is already a pretty well written tutorial in Minecraft Wiki, so you might wanna check this out too!

    Well, sort of! I mean, title is quite catchy, isn’t it?

    The following piece is a quick tutorial of how you can both save and sync through multiple machines, your Minecraft worlds on the cloud (Dropbox). Think of it this way: It will operate almost transparently (except those Dropbox Growl notifications which can be turned off) just like Steam Cloud.

    I have tested the following steps and I can assure you that the process I describe below works like charm between two different MacOSX systems, but I guess it can be easily extended to Windows machines too - giving that the save game architecture is the same for both OSes.

    So, let’s begin with the prerequisites:

    • You will need a Minecraft beta account (but I assume you already have one if you are still reading this)
    • A free Dropbox basic account (2Gb of space are more than enough for your Minecraft adventures) and
    • A basic understanding of Unix command line

    If you are installing Minecraft for the first time

    1. Install Minecraft (drag & drop it in the /Applications/ folder)
    2. Install & Configure Dropbox (Create user, specify the Dropbox directory)
    3. Create a Minecraft folder inside Dropbox folder
    4. Move your “saves” directory which can be found in /Users/[your MacOSX username]/Library/Application Support/minecraft/saves to /[path to your Dropbox directory]/Minecraft/saves
    5. If you have done the above step correctly, the “saves” directory will no longer appear in your original “minecraft” folder (just to be clear)
    6. DON’T OPEN MINECRAFT YET - yeap, we have one more important step
    7. Open the terminal (/Applications/Utilities/Terminal.app) and type the following:
    8. Don’t forget to replace [path to your Dropbox directory] and [your MacOSX username] with your information (that’s where your basic understanding of Unix command line is needed)
    9. If terminal won’t respond with any error and you have indeed provided the right paths, you will now see a “saves” directory in your /Users/[your MacOSX username]/Library/Application\ Support/minecraft/ folder but with a different icon! This actually means that the saves directory will point to your Dropbox folder, which is synced with Dropbox cloud service
    10. Open Minecraft and enjoy! You won’t have the fear of losing anything in case your Mac fails, plus you can sync those saves with any other Mac (or Windows) machine, following the same proccess!
    11. There is no step 11, just go explore the caves in your Minecraft world!

    If you already have Minecraft installed and you want to move your save games to the cloud

    1. Install & Configure Dropbox (Create user, specify the Dropbox directory)
    2. Create a Minecraft folder inside Dropbox folder
    3. Move your “saves” directory which can be found in /Users/[your MacOSX username]/Library/Application Support/minecraft/saves to /[path to your Dropbox directory]/Minecraft/saves
    4. If you have done the above step correctly, the “saves” directory will no longer appear in your original “minecraft” folder (just to be clear)
    5. DON’T OPEN MINECRAFT YET - yeap, we have one more important step
    6. Open the terminal (/Applications/Utilities/Terminal.app) and type the following:
    7. Don’t forget to replace [path to your Dropbox directory] and [your MacOSX username] with your information (that’s where your basic understanding of Unix command line is needed)
    8. If terminal won’t respond with any error and you have indeed provided the right paths, you will now see a “saves” directory in your /Users/[your MacOSX username]/Library/Application\ Support/minecraft/ folder but with a different icon! This actually means that the saves directory will point to your Dropbox folder, which is synced with Dropbox cloud service
    9. Open Minecraft and enjoy! Your worlds will be intact, you won’t lose anything in case your Mac fails, plus you can sync those saves with any other Mac (or Windows) machine, following the same proccess!
    10. There is no step 10, just go explore the caves in your Minecraft world!

    [Thanks makrp for the idea ;)]

     
  3. 12:00 3rd May 2011

    notes: 34

    Canvas Experiments

    Otomata

    Otomata was the first canvas experiment I worked on the past weeks and it was the one that made me realize the simplicity and beauty of canvas programming.

    Batuhan Bozkurt (@earslap) did a fantastic job with his Otomata Flash demo. The idea of having cellular automata interact with each other in a 9x9 grid producing sounds when colliding with the walls was awesome, along with the ability to share your “sequence” to others using permalinks.

    After countless times of experimenting with his Otomata, I decided to build an HTML version of this demo in canvas. I must note though: although ‘Otomata in HTML5’ runs in iOS devices, due to mobile Safari bugs with HTML5 audio (not possible to playback more than one audio file simultaneously) sound has been disabled in iOS.

    I decided to do some reverse engineering in Otomata, based on trial & error of the Flash demo and on some Batuhan’s notes and came up with this little demo. It produces nearly the same sounds as the original Otomata tool, it supports permalinks for each sequence, animation can be paused/resumed, canvas can be cleared and the automata work as expected, having four different directions.

    I have created a diagonal-friendly version of Otomata too, but it didn’t quite work as expected so I am postponing it till it’s fully fixed.

    Listen to some demo songs here: 1 2

    Game of Death

    Some applets are begging to be ported to canvas. That’s what I thought when I saw Vincent’sGame of Death Lava” written in Java using Processing library. I was intrigued by the idea, it was simple yet beautiful. Game of Death Lava is essentially a remixed version of the Game of Life algorithm when applied to two different population swarms thriving for dominance. This produces a phenomenal animation, at least in my eyes, which can be easily implemented in any language.

    After porting the animation logic to Javascript, I needed a way to take care of the per pixel operations for canvas, so I used ‘createImageData’ and ‘putImageData’ functions of canvas context to gain access to every distinct pixel of the viewport.

    You can view the demo here.

    Breakout

    After watching Richard Davey coding Breakout in Flixel flash library in 20 minutes, I knew I had to do something similar using canvas.

    So I started creating the world, using his code as a basis (Actionscript is not so different from Javascript after all) and when I finished the presentation part (not to self: huge mistake, you must always think the other way around) I had two options: implement a simple physics engine from scratch, working only for rectangular objects (ideal for a breakout game) where I had to code up a rather simple yet time consuming algorithm for collision detection and response (solving in a way the square - line hit test), or use an already implemented physics engine to handle the world, the movement, the collisions and all the fancy parts. Guess what, I chose the first one.

    Nearly at the end of the engine implementation, I realized that I could in fact learn yet one more thing by using a third party engine, so I started digging. Luckily some days ago I read a post on Impact.js site about Box2D physics engine in Javascript. For anyone not familiar with Box2D engine, let me put it this way: it’s the engine behind Angry Birds game. Yeah, all those fancy animations, box collisions and pigs getting killed are being taken care of this beautiful library. So knowing that Box2D isn’t only available in Objective-C (C++) and Actionscript but also in Javascript, was just the excuse I was waiting for.

    Thus I spent two days messing around with the documentation, the forces, impulses and joints and all those exciting terms. I was amazed by Box2D and I began integrating it to my Breakout game. Unfortunately, I had to erase all my code in order for Box2D to fit, as everything had to be a Box2D body with real properties like elasticity (restitution), density and friction but hey, the result was better than I could have ever imagined! After hours of tweaking, learning and fixing, the ball was bouncing with the right speed, the paddle was moving just right and the bricks …well the bricks don’t have any animation at all!

    I have to thank Jonas Wagner for porting Box2D in Javascript and Box2D team for the awesome documentation of the engine. Although documentation is not written for Javascript, the concepts are the same and you can easily implement a Javascript based game using Box2D in JS.

    I am planning of updating Breakout in the next few days with new features so stay tuned!

    You can play the game here.

    Update: Demos are now available @ my Github page:

    Otomata Game of Death Breakout
     
  4. Announcing Analytiks iPhone app

    The time has come to finally unveil the “unannounced iphone app” I was working on lately (for those who happened to notice the ‘Projects’ section on the sidebar).

    So what’s Analytiks? First and foremost, Analytiks is a group project; it’s an app based on a Stefanos' idea, developed by me and designed by Kostas.

    For Analytiks, we wanted to create a simple, unique and personalized interface for your Google Analytics stats. We don’t plan to create an app that will bring the whole feature set of Google Analytics to your phone; there are already lots of pretty good apps out there for this kind of job.

    Our aim is to give you a quick idea of your daily and monthly progress, across your five most important sites of your account. With this app everyone with a Google Analytics account will be able to have an overview of his/her site’s stats without having to mess around with the Google’s (sometimes hard-to-get) web interface.

    We are already working on the next version of Analytiks, brining new and exciting features and I will keep you posted for those changes as they occur.

    In the meantime you can download the app, visit the official site, follow it on Twitter and "like" it on Facebook!

     
  5. Google Reader Reimagined (name pending)

    TL;DR: I have built a small utility service for Google Reader where you can define the topics you love and then let the system group and prioritize the stories for you. You can test it here or fork it at Github.

    So this weekend I had an idea: I was going to build a small utility as an weekend project, in order to help me deal with my daily information overload issue, also known as “Google Reader”.

    I rely heavily on Google Reader and my 335 subscriptions give me a headache every time I wanna keep up with the world, so I had to do something.

    There were to major problems that I wanted to tackle with Google Reader: First up, I wanted the “interesting” stories, more precisely some topics that I am interested in (javascript, ios, html5, diablo), to come up first and stop being buried under the whole pile of boring articles. Secondly, due to the volume of my subscriptions, some stories were mentioned over one time by multiple sources, so it would have been nice if those stories were grouped and being pushed up to the top, right after my ‘interesting’ articles. In that way, developing stories of the day (e.g. AT&T buys T-Mobile) could bubble up easily.

    So that’s what I coded over the past two days.

    First up, some technology heads up: I used the excellent HTML 5 Boilerplate “framework” by Paul Irish, in order not mess around with CSS too much. I have found myself fiddling with CSS many times, where I really had to focus on the development side of things, so boilerplate made things a lot faster. I also didn’t wanna mess around with databases in this small project, so I used Local Storage. Everything that has to be saved (no username/passwords of course) is saved on the client using HTML 5 Local Storage feature, so no db, no tables, no transactions, nothing. Also jQuery rocks, but I guess you know that already!

    The “backend”, although trivial, was a bit trickier. Dealing with the fact that Google Reader hasn’t released an official API yet, I had to rely on a pretty useful wiki and some Stack Overflow posts when dealing with the whole request/response game, which proved to be quite fun!

    The real heart of the system though is the algorithm which takes care of all the rest and yeah it’s no rocket science either.

    Once you login to the service with your Google Reader credentials, you get to enter some topics that you love (1 word per topic at the moment). For example in my case those are: blizzard, wow, ipad, iphone, ios, apple, javascript, html5, css3, warcraft, diablo, webgl, nodejs. The system then scans through your unread items of your reading list, breaks up every title of those items into terms and groups the items with the common terms. It excludes some unnecessary words (mostly verbs) and then groups the terms that have the same items together. It finally breaks up this list into two: one with your “interesting” stories and one with the rest. And that’s pretty much it!

    You can test Google Reader Reimagined here but bear in mind that this project was made by me, in order to work for me. I don’t know if it can help you with your reading list and no, there is no feature request button. I plan to add some things in the future but those will primarily tend to serve my needs.

    On the other hand, I plan to push the source of this project to my Github page this week (hopefully), so anybody can fork, tweak, download and mess around with it!

    Update: You can now find the code of the project @ Github!

     
  6. New Year’s Resolutions

    Happy 2011 everyone, I wish you a healthy and productive new year!

    Below you can see the list of my top ten resolutions for 2011 (with random order):

    • Work out a lot (Kinect && (Walk || Cycle || Gym))
    • Eat Healthy
    • Cook more (& healthy)
    • Travel (outside Greece for first time hopefully)
    • Look into this coffee “business” (Marco inspired me)
    • Play way less (or quit playing) World of Warcraft
    • Launch my personal projects & update the existing ones
    • Look into interesting and new technologies (iOS, Node.js, Python, WebGL/JS 3D frameworks)
    • Get involved into OS projects (Github FTW)
    • Be a better person to everyone around me
     
  7. (above: my iPhone [3G] home screen)
If anything I am not a chain breaker, so after Yiannis I am gonna pass the ball to Mark.
In other news, I am found amidst various projects this time of year, FancyCage being the one I am most actively involved with at the moment. We are currently in public beta phase, so any feedback is more than welcome!

    (above: my iPhone [3G] home screen)

    If anything I am not a chain breaker, so after Yiannis I am gonna pass the ball to Mark.

    In other news, I am found amidst various projects this time of year, FancyCage being the one I am most actively involved with at the moment. We are currently in public beta phase, so any feedback is more than welcome!

     
  8. 13:53 9th Oct 2010

    notes: 32

    On Kindle

    While staying at a friend’s place, I had the opportunity to get my hands on the new Kindle (you can view some Kindle photos on my Flickr account). Truth be told I wasn’t expecting it to be so small and light, although I had used (not owned) ebook readers before (Kindle 1st generation and a Turbo-X one).

    So after the initial surprise, my attention was focused on the screen. E-ink has (almost) 180o of viewing angle (yeah it really feels like paper) and indeed provides a very comfortable reading experience. Screen size is big and the side buttons for page turning makes the whole process easy and distraction free.

    This is where the problems arise though, for me at least. Being an iPhone/iPad owner I found myself touching the screen all the time, trying to navigate through the book I was reading (ReWork, you should get it by all means). Wouldn’t it be nice (although I think this is bound to happen soon) to have a touch-enabled e-ink screen? If that was to happen Kindle would get to lose its annoying keyboard on the bottom plus the navigation joystick. I kinda believe this a barrier we will overcome the following months/years, so all I have to do is wait.

    Next thing I noticed about the screen was the refresh rate. Although it was faster than any other ebook reader device I came across, it was rather unpleasant to watch the (almost instantaneous) flickering of the screen when Kindle needed to redraw the contents. I assume this is something you get used to, but it feels pretty weird the first few times.

    On top of that, I tried some “experimental” Kindle features, cause you know  I never say no to some beta testing, and I almost instantly regretted it. Kindle’s browser (although Webkit-based, which is always good) has some nasty UX issues. Once you open the browser, a mouse cursor comes up and you get to navigate everywhere inside the app with this cursor using the keyboard’s “joystick”. Pretty lame if you ask me although I get that, considering the hardware of device, they had no other alternatives. Anyway, Kindle is not an Internet device per se and I love the fact that it’s so different from iPad.

    Then of course, when iPad and Kindle meet themselves on a sentence you must always argue on which one is the best. If you are a Kindle user your “throw it to the bag when you are going on a trip” and “you can even read under the sun” arguments can start the debate, but it’s not like that. I really think that if you have a dilemma on which device you should get, the answer is simple. Do you want an awesome reading device and just that? Buy a Kindle, cheap, distraction-free, relaxing. Do you want an awesome portable Internet device with reading capabilities, games and media playback? Buy an iPad and maybe it’s gonna change a part of you.

    Kindle 3 really feels like (or maybe it is) the right device to read stuff, but it doesn’t appeal to me so much at the moment. Owning an iPad I do find myself using it pretty often for reading, so I can genuinely say that I simply don’t need it. That of course doesn’t mean that if I will ever get a Kindle as a gift, I’ll throw it away. Far from it :)

    (Tip) If you live in Greece (like me) I found that the common procedure of buying a Kindle is the following: Get someone you know in U.K. get it (from Amazon.co.uk) and then mail it to you.

     
  9. The Playaz (in Greek language)

    Me and my buddy Peter (@petrakeas) decided to start a new gaming vidcast series called ‘The Playaz’. We hope to run it in a weekly basis, covering games that we play the most. The whole setting is pretty quick and draft: We record our gaming sessions along with our audio comments. If you speak (or understand) Greek and you like videogames, you might probably want to check it out!

     
  10. Tip: Read PDF files in iBooks the easy way

    iBooks is, imo, the best pdf reader for iPad at the moment. It is fast, well implemented and you can read ePub & PDF files without switching apps.

    The only problem is that the default way of loading PDF files into the app is rather unpleasant (yeah, I am referring to the ‘iTunes sync’ procedure).

    So here’s what I do when I want to read a PDF file in iBooks.

    Disclaimer: The following steps require that you install Dropbox (which is free and awesome) both on the device that hosts the pdf file and on your iPad.

    1. Move the file to your Dropbox folder.
    2. Open Dropbox for iPad and select the PDF file.
    3. You will notice the following icon in the upper right corner: 
    4. Tap on iBooks and the PDF file will be copied to your iBooks app!