Why I don't like Schemaless DBMS

Just some note about disavantages when you work with schemaless DBMS.

  • Schemaless does not mean no-schema. Your application would never be schema-less. Or you are maintaining the schema at code level, you are maintaining the schema in different meta format.
  • Schemaless can make you lazy. Not designing the data model schema at the first stage can lead to weak or inconsistent data model in later stage of the application.
  • Sharing the same storage / database with other applications would be painful. You will never sure that other applications will not write junk in your database.
  • You may eventually duplicate the schema across applications. Maintaining the schema would be a pain in the ass.

 

Fix for Adobe AIR trace stop working

A quick note for anyone who has the issue that AIR trace function (air.trace) stops printing to console just go to your user folder (mine is C:\Users\bao) then delete mms.cfg (make sure you backup it first). It will reset flash debug and debugging output should go to the console again.

SMTP Service Round-Up

Spending lunching time to look for a cheap and reiliable SMTP cloud service, I sum up this post so it may be helpful for others. To me, SES price is most reasonable, but you will have no support and implement the tracking yourself.

Service Cost to send 100k emails / month Additional Features / Remark
SMTP.com 130$ (using email delivery lite plan)
  • Email / Phone Support
  • Dedicated IP (with higher plan)
  • Anaytlcs / Tracking
ElasticMail 50$ (using provided calculator)
  • Analytics / Tracking
  • Lists & Email Template (somewhat like Mailchimp)
  • SMTP / REST
SendGrid 79.95$ (Silver Plan)
  • Email / Phone Support
  • Dedicated IP (with higher plan)
  • Anaytlcs / Tracking
CloudSMTP 50$ (0.5$ / 1k emails)
  • Analytics / Tracking
  • No visible document about API :(
Amazon SES 10.29$
(using AWS Calculator, assumed that email size is 20KB, sending 3333 emails / day, no free tier included)
  • SMTP / REST
  • No Tracking ??
Jango SMTP 250$  (plan up to 120k emails)
  • 100KB / email limit
  • Additional data can be purchased with 1$ / 10MB

 

Presentation: Strategic Process Integration

Finally, I managed to bring my presentation to the Internet. I have made a few presentations recently but never publish them :D , this is the first one

This presentation I made on Saturday with my group in Information Management subject. The topic is about integrating company Mission, Goals and Objectives into its Enterprise model(s). A guideline to define objectives for enterprise processes and activities, the benefits would be an objective-oriented enterprise and you can control the processes in a better manner. Any information or discussion is welcomed.

Symfony 2 Form Extension

Here is a way to allow you to extend Symfony 2 Form using tagged Service. I think it's the correct way but not yet documented on the book. Symfony 2 is still brand new and the document is not completed yet, I found out this solution while diving into Symfony Form component :(

Well, the code is quite simple. You need to create a service tagged with form.type_extension with alias value is the type of Form element you want to override. Then make the service inherits from Symfony\Component\Form\AbstractTypeExtension, implement the getExtendedType method to return the same value with alias and then override the buildForm method to do whatever you want with the Form. Here is an example to illustrate how to add more field to a form

services.yml

services:
  demo.form_extension:
    class: Demo\MyBundle\Form\Extension\MyFormExtension
    tags:
      - {name: form.type_extension, alias: form}

FormExtension.php

namespace Demo\MyBundle\Form\Extension;
 
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormBuilder;
use Symfony\Component\Form\AbstractTypeExtension;
 
class MyFormExtension extends AbstractTypeExtension
{
	public function buildForm(FormBuilder $builder, array $options)
	{
		// TODO: add some check for the form you want to use here
		$data = $options['data'];
 
		// extend the form here, you can also use custom validator
		$builder->add('new_item', 'text');
 
		$builder->addEventListener(FormEvents::POST_BIND, function($event) {
			$form = $event->getForm();
 
			// do whatever you want here, such as additional data binding
		});
	}
 
	public function getExtendedType()
	{
		return 'form';
	}
}

Note: Symfony 2 also has form.extension, you can use it to load form type or extension by PHP. Check Symfony/Component/Form/Extension/Csrf namespace for example.

[Paper] A proposal for a method to translate BPMN model into UML activity diagram

This is my final report for Business Process Management course. I have finished it quite a long time ago, and now I would like to post it to my blog. This report is about finding an aproach to automate the conversion from UML Activity diagram to BPMN model based on well-defined rules and context. The goal is to be able to synchronize BPMN models with business system.

I am quite new to this area so I am not completely sure that the information in the report is 100% correct. Most of the idea is from this report, I added my idea, add more translation rules and suggestion some further approach for the translation. This is my first formal english report that I did only on my own. I think it is somewhat a paper but not really sure if it satisfy the condition to be a paper, hehe. I hope it would be useful for someone.

Any suggestion, discussion or typo correction is always welcome ;)

AttachmentSize
BPMN-UMLAD.pdf277.65 KB

ChromeSniffer 0.2.9

I just released ChromeSniffer 0.2.9. This is a minor update for chromesniffer after few months. This release fix broken icons on linux, improve YUI, Wordpress, Moodle detection. The following applications are added to detection list:

This release is also the first release driven by community. Most of the commits are contributed by community. Many thanks to onlineamateur, kevtufc and nb.

There is no roadmap for 0.2.10 yet, but I am thinking about to extends ChromeSniffer to support to detect additional information of the site too, such as detect for site microfotmat or RDF. CSS framework will be considered too. The goal for chromesniffer will be a tool for developer to have an overview of the technology on the site. If you have any idea, feel free to send me your idea via the contact form.

php-rar extension on Ubuntu

Just a very quick post for new comers to Ubuntu who is looking for a way to install rar extension. RAR extension (should be php5-rar) is not available on Ubuntu official, apt-get install php5-rar won't work, not sure why. If you want to install it then you can use PECL from PEAR instead, as following:

$ sudo apt-get install php5-dev php-pear g++
$ sudo pecl install rar

Then you will need to edit php.ini to include rar.so, it should be placed somewhere in /etc/php5. You should be able to install any extension on PECL using pecl command too. But anyway, package from Ubuntu repository is recommended.

GameBoy Advance: Flying Mario (final)

Mario

I just finished my presentation today's afternoon about GBA  project, so this post will be the last post about my Gameboy Advance project. Not too much time pass by since the last post, so not much things were done too. I manage to get a lot of stuff done, but the whole game is not yet finished. There is no princess and no counter for the coins you collect. But anyway, it is a lot of work for a single developer like me. I share the source code of the project in case you need some references.

So the subject is over, I two weeks and a few days to clean up working mess and prepare for the next one.

Cheers,

AttachmentSize
FlyingMario_Final_Mar212011.zip520.39 KB

GameBoy Advance: Flying Mario

It turns out that it's an extremly busy week. Not mentioning about studying, I also have to help my friend to deploy his servers (18 total, woot!). I don't have time to blog about my Gameboy project.

It's quite fun and interesting. I have decided to write a game to demonstrated all the techniques in GBA. It's a simple game, Mario theme, you control Mario to flight through Mario world, earning coins and avoiding monsters. Here is what's going on so far:

There are still a lot of things to do. No background, no sound, no point, no life, even no goal for the game. Maybe after 5 mins, you will see the Princess and the game ends. I'm not really sure if I can handle all the stuff. But anyway, I will just do my best :D

Pages

Subscribe to Front page feed