Just in case...
It's been a busy week...
And it was within this empowering gulf of synergy that my mind clicked.
I started a company, got a job, moved offices, became a mentor and lost at least an inch around my waist in the process. Whilst doing this, I also came to be re-inspired by a vision much the same as my own. Life is good! As is the "long-term" future of my existing mongoDB projects, but for now, more specifically the next three months, I will be working almost exclusively and full heartedly on mongoBase. The reasons for this are quite simple...
I believe that we are about to experience an important paradigm-shift within the world of web-technology. Things have gotten complicated. To be fair, things have gotten out of control. I've been frantically following the evolution of computer languages for the past 20 years, where they have quickly grown at an exponential rate that is de-fragmenting the web and those that use it.
I believe there are four languages to rule them all...
HTML, CSS, PHP and JavaScript - plain and simple!
The browser itself and everything we "see" from the front-end has been quite happily using just two languages to accomplish everything, and now that HTML5 and CSS3 have become the new default specifications, things are really starting to get interesting.
I would like to see us come to such simple conclusions with our servers.
PHP is the current dominating force, but NodeJS is the future and its practically guaranteed (assuming it continues to get developed with as much passion as it is now). It uses JavaScript at its core, and JavaScript has had explosive growth recently, getting its sticky little fingers into everything we touch!
It should be no surprise that I believe there is only one database we need to use for everything we currently do. One database to rule them all - MongoDB speaks JSON, and most developers (despite the fact that they may not know they do) actually love JSON. MongoDB also understands JavaScript, and both JavaScript and JSON are native to PHP and NodeJS.
Anyone who can use jQuery can build applications with MongoDB - they can even quite easily build their own servers using NodeJS - all they need to understand is the logic of the app itself, not the underlying technologies powering it.
With every effort I can muster, I now know the importance of foundations, with foundations such as mongoBase, any developers with existing comfort with HTML and jQuery will be able to handle the entire process from concept, design and deployment.
Many complications associated with development are thus removed...
With these 4 simple languages, we can accomplish anything and everything, and can do so with much clearer focus. This is not to say that we should immediately jump ship and abandon every other language, merely that we should ensure that every future project we ever start helps us in some small way with every other project we have. And that is all that the secret sauce really is...
The very same principles any admirable company would apply to the business itself is a synergy not yet found from within our existing technological infrastructures due to the technical divide and ultimate defragmentation.
When and where will this end and who will be responsible for clearing up the mess and re-booting the way the web should work for us?
Synergy has been proven, it works. Let's now converge and take the final step...
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