Showing posts from March, 2012

Why Hotmail SmartScreen Should do Better

Got this spam mail that looks as if its from my other email account (Yahoo Mail).

Further inspect on the header reveals that the mail is from hotmail_631448ecb4add0e [at] And the mail server is actually from the IP

Why Hotmail SmartScreen not doing its job

SmartScreen should have filtered the email content, based on EITHER one of the following criteria, that can be implemented by checking just the email header.

1. The email content is obviously spam content. Nuff said.

2. The sender is obviously from a "anonymous" email that pretends to be another email.

3. The IP ( of the mail server is OBVIOUSLY hosted on a spam source. This can be easily detected by cross-check with one of the spam database out there. For example

These are simple methods to provide minimal layers protection for Hotmail users. 

(Notice I haven't even go into advanced SPAM fighting techniques like using DMARC)


SmartScreen team s…

Bootstrap Tools

Biggest Mistakes

The biggest mistakes for new (or inexperienced) developers, like me, is to jump straight into coding a website.
There are so many bootstrap tools (or so caller boilerplates) out there for you to start, without falling into the pitfalls of bad (really bad) designs. I'm speaking from my personal experience, with Lunchsparks.

Along the way of "designing" and coding, both at the same time, I poorly designed the elements in the website, from layouts (grids, containers, tables) to buttons (color, states).

The Tools

These are two tools that I came across recently, which I think its awesome! These tools encapsulated the almost (if not all) the elements for designing a great (responsive) website.

Bootstrap, from Twitter
A very clear demo site that demonstrate what the tools (javascripts, and css) does. Recommended for new learners.

HTML5 Boilerplates
By Paul Irish. A very cool Googler that I follow on social networks and blogs.


Here are some other tools that I…

[CodeIgniter] MySQL NOW()

Was trying to do insert/update using CodeIgniter Active Record helpers, and realize the usual way of inserting doesn't work, because the helper functions actually escaped the values to prevent SQL injection.

So we can't do the just group all the data together the easy way.
$data['field1'] = $data1; $data['field1'] = $data2 $data['created_date'] = 'NOW()'; $this -> db -> insert($this -> tables['some_table'], $data);
There are two possible ways to go around this.

1. Use CodeIgniter $db -> set() function, with the additional FALSE parameter to prevent data from being escaped.
$this -> db -> set('created_date', 'NOW()', FALSE); $this -> db -> insert($this -> tables['some_table'], $data);
2. Use PHP data function to generate datetime string. The only thing to note with this method is, in most cases, the PHP server time and the MySQL time is different.
$data['created_date'] = date('…