Since my last personal pet-project (MongoMail) was officially picked-up by Laulima, my mind has been adrift.
I have been exploring HTML5 game-creation this morning, as I'm certain that mongoDB would be an excellent candidate for the storage and manipulation for such games, especially in light of the combination of GridFS for media and the way that most tile-generation scripts ultimately fall-back to XML-like structures. However, an important consideration is that I want to ensure that the logic for the game is easily accessible via jQuery.
And so my explorations began, and out of all the HTML5 engines currently available (and Open-Source), the ones that really stood out from the crowd included MelonJS, ingenioJS and RPG-JS. I was quite easily able to download each of these, install on my own server and get cracking with relative ease. Other notable examples for future reference include gameQuery and Flax.
The reason MelonJS was a good starting point was because it utilizes an existing platform called Tiled to create the levels - my favourite example of MelonJS in action can be seen here. The biggest benefit to using MelonJS is that it is light-weight (due to using Tiled as its level generator). However, as a self-contained platform, this framework fails for the same reasons it is good. I want to be able to have a framework were the levels can be easily edited from within the framework itself, something that Impact have been able to do quite nicely, but unfortunately, Impact is not Open-Source, so that's a no-no, but the idea of inline level generation and editing is appealing, which led me to the magnificent starting point made by Christoph Martens and ingenioJS.
With igenioJS, you get an inline level-editor, with its most powerful asset being that it stores thin data as a JSON object, rather than relying on XML. It was this that re-confirmed my suspicions that mongoDB would be perfect for such a task, but it is still missing the flesh of a real game, with interactions, actions, etc - not to mention my love for jQuery.
Then I stumbled upon RPG-JS, with a great demo available it has much of what I need (from the front-end). It's a jQuery plugin, it has events, actions, animations, interactions, DOM interactions and a bunch of other really useful starting points.
However, none of the frameworks mentioned above have everything I need, nor are any of them built in a way that would facilitate end results that are as slick as those generated by Unity - which is perhaps at the top of its field for desktop game-development (and also has a free version that comes with the source code to AngryBots for iPad), but I want to be able to develop browser-based HTML5 games, and I want to store and serve my data from mongoDB so it can be easily managed.
As such, it seems I may have found my next personal pet-project, and despite me not believing it was possible, it may have a scope even larger than my last one, which I believed would be something that would take me a life-time to get to a working prototype stage! :-)
For those who have not already seen the powerful Isotope jQuery plugin by David DeSandro, you really should check it out, for without his magnificent work, this website would not be possible.
I absolutely loathe emails. Not the concept of what they are, but the technologies that currently control them. They are usually guarded behind either closed garden walls (like with gMail) or protected by commercial-complexity (like with Outlook). There are several decent Open-Source alternatives such as Thunderbird, but even still, when you think about it, all we really have are clients. There seems to be a complete lack of email / messaging platforms that are Open-Source and work with existing protocols.
Several years ago, something came along that promised to change everything. It's name was Wave, and in this particular instance, Google made some of the biggest mistakes in their technological careers, for they over-looked the most obvious question of all - how can we make a game-changing platform that is easily adoptable? The obvious answer is that it needs to connect and communicate with existing technologies, with the most important technology of all being IMAP (which powers gMail and Microsoft Exchange).
Imagine if you could do everything that Wave could do, but with your existing emails and existing email account. Imagine if the platform that made this possible was Open-Source, and allowed you to install it on your own server. Imagine if all of this was done with languages easily understood by all, such as PHP and jQuery, and imagine if it could be customised beyond our imagination with themes and plugins the re-define the way we understand and use emails and other forms of communication. If you can imagine all of that, you can imagine MongoMail.
Originally intended as a long-term personal project that I was going to work-on in my limited spare-time, I registered the MongoMail.org domain and started the arduous task of developing such a platform. With the help of mongoBase, I was able to quite quickly get a working prototype together. I was eventually able to show this off at work - with Laulima - who were quick to see the potential that this project had. It was agreed that I could spend several weeks further developing the idea and now have quite an interesting demo video available - http://mongomail.org/teasers/mongomail.html
Powered by mongoDB, which is an obvious choice for storing emails (as JSON documents) and attachments (within GridFS), MongoMail can currently synchronize, store, send, reply and forward IMAP-powered emails, where emails are served directly from mongoDB at lightening fast speeds and downloaded live in the background via AJAX. Attached videos, audio and images are displayed inline within the message along with embedded recognition of YouTube and Vimeo videos as well as Google Maps. Conversations are threaded, remain private by default, but can be set to public and then shared (with individual permalinks) across social-networks, or saved as favourites. In addition to this, media-galleries are also automatically generated based upon the attachments and embedded links thus far stored in the database.
You may be asking, what's next?
We have an incredibly complex and well-thought out roadmap for where we could take MongoMail, and I say "we", for it is now a Laulima project, where it's fate will ultimately be decided by people other than just myself. My only hope is that we are able to maintain my original vision for it to be Open-Source and available to all as early as possible.
Where to start...? I did at least make it back in one piece - just about! :-)
MongoSV 2011 was hosted at the Hyatt Regency in Santa Clara, where I have since posted several photos on Google+ for you to take a look at; the most notable of which includes the fabled MongoSV hot-tub and MongoMow's first foray into modelling!
10gen also used the event to publicly announce a new initiative to recognise global leaders within the MongoDB community and I was extremely honoured to be considered a MongoMaster for my work on MongoPress, MongoMail and MongoKong, as well as for my efforts with the Kuala Lumpur MongoDB User-Group, which I strongly suggest you visit and attend at the earliest possible chance. I was able to meet so many passionate and incredibly talented people and could not begin to list them all here, but do feel I should give some extra special love to Meghan (who helped get me there) and Amelia (who baby-sat me on more than one occasion). However, the entire 10gen team were extremely welcoming and exhibited warmth at every occasion. They really made the MongoMasters feel special and seem genuinely attuned to our needs. It's exciting to be involved and am even more thrilled that MongoPress won an award for Most Innovative Application of the Year, as this means that I will be returning to the states in March to attend the epic pandemonium of SXSW.
If you haven't already done so, I'd suggest you take a look at the presentations from the event, there really are some outstanding topics! Unfortunately, since my own presentation was only a brief lightening talk, it did not make it onto the list or live video-stream, but you can learn more about MongoPress from our slideshow or by viewing the video presentation I gave at WebCamp KL just before setting off to MongoSV.
Visit my photo gallery to get an idea as to how mongollery looks and feels - it simply search through the media gallery and automatically adds each image to the homepage. More complex image filtering will be provided as soon as the core functionality is added to MongoPress.
So I finally got on the stage and presented at WebCamp KL. My first presentation to more than 5 people, and for someone who is petrified of large groups of people, especially when they are looking at me, I was quick to learn something very important. Being extremely passionate about what you are presenting certainly helps to overcome fears. Passion is everything. I truly believe that the future of CMS is in NoSQL, and more specifically, truly believe that the future is MongoDB. With my freshly delivered mongoDB t-shirt, I took to the stage and ended-up spending more time pimping mongoDB than I did MongoPress, which was what the presentation was supposed to be about...
However, when you are comparing WordPress, Drupal and Joomla to MongoPress, what you are really doing is in many ways comparing MySQL to mongoDB, and when that is said and done - mongoDB is quite easily a clear winner. With this behind my belt, and the fact that I was once a true WordPress fanatic (and know the platform inside out), I had a slight edge over the other presenters, which afforded me the luxury of being a wee bit more brazen than I should have - but must say that I had an awful lot of fun doing so!
I've since converted my presentation into SlideShare format, which can be seen here, and am looking forward to fine-tuning the presentation for an up-coming lightening-round taking place in San Francisco next week at MongoSV.
If you'd like to learn more about some of the technologies that interest me, it may be worth taking a look at Labs - http://labs.laulima.com, following me on Twitter, or checking out my recently added Social Feeds, which gave me an excuse to check-out Pubwich, which I hope to soon provide some mongoDB support for... In the meantime, may the force be with us all!
Well folks, it's been a real interesting and somewhat intense couple of weeks... Around the same time as winning the monthly developer contest at 10gen, I started work on a new administration interface for MongoPress whilst Ali set himself on the task of re-writing the installation process and better organising the general flow of perma-trail interactions with super-charged private nonces and cookie key protection of sensitive data. As a result, we've hit all new levels of stability and security. We've got a fresh look and feel that utilises HTML5 in new and interesting ways with drag and drop batch image uploading and AJAX powered page transitions with push states and history. Our installation process is as simple as it gets - boasting an all new "One Step Process" with inline importing of content. The default theme has been given a new object type called "places", which have been used for us to test the new geoRSS mu-plugin presently added to core, whilst also allowing us to showcase the new gMap shortcode functionality for displaying places on a map. With all this and countless other changes and bug-fixes, we're proud to announce our first major milestone since launch. Our first "production ready" release. Our baby; MongoPress 0.2
Am hearing more and more chatter about 2 factor authentication (which Google have recently introduced – http://techcrunch.com/2011/07/28/googles-two-factor-authentication-now-live-in-150-countries-and-40-languages/) and was wondering if its an additional layer of security like that should be built into core, or at the very least, the hooks and filters needed to create the plugin must be added to core, but then the question become, is this level of security taking things too far, or is it something people actually want…?