Mac OS X Netbook

Putting Mac OS X onto a netbook. Total cost $375 + Mac OS X

Computer: Dell Vostro A90

Upgrades: 16 gb SSD and 2gb DDR2 RAM

Tutorial: http://osx.mechdrew.com/guides/dellefi1.shtml

Quirks:
  • towards the end of the tutorial when it says to boot OS X using "-x" user "-x -f" instead which is a force command, when I tried the "-x", all I got was a messed up white display.
  • I only had a 8 gb flash drive so i have to use another 2 gb drive to put the 10.5.7 upgrade (unpackaged) and DellEFI onto.

Final Notes:
  • OS X takes up about 8.3 gb so either get a bigger SSD or get an external drive.
  • I picked up a 16 gb SDHC card (since there's a slot for one and it's basically un-noticeable) .
  • My total price came to about $375 with the upgrades and 16 gb SDHC card for the hardware
  • a copy of OS X will be $130 as well.

GWT Formatting Best Practices

  • Do NOT use FlexTable to create input forms.
  • Use CSS to style elements 
  • Use CSS to style column width and alignment
  • Use modular code, i.e. group of radio buttons could be a separate method or a class 
  • Do NOT use indices to format, rather use logical object and methods
Example 1
Code before re-factoring:
contentTable.getFlexCellFormatter().setWidth(BULLETIN_INDEX_6_ANNOUNCEMENT, 0, "25%");
contentTable.getFlexCellFormatter().setColSpan(BULLETIN_INDEX_12_DESTINATION_MESSAGE, 1, 2);
contentTable.getFlexCellFormatter().setAlignment(BULLETIN_INDEX_0_SPORT, 0, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_MIDDLE);

Code after re-factoring:
myStyles.css:
.admin_message_form_left_column {
width: 170px;
text-align: right;
padding: 5px;
background-color: yellow;
}

.admin_message_form_right_column {
padding: 5px;
background-color: blue;
}

MyClass.java:
this.left.setStyleName("admin_message_form_left_column");
this.right.setStyleName("admin_message_form_right_column");


Example 2
Code before re-factoring:
contentTable.setWidget(BULLETIN_INDEX_1_DIVISION, 0, noWrapLabel("Division:"));
contentTable.setWidget(BULLETIN_INDEX_1_DIVISION, 1, divisionList);

Code after re-factoring:
divSelector.setLeft(noWrapLabel("Division:"));
divSelector.setRight(divisionList);
divSelector.setVisible(true);


SQL: like

Select * from table_a where column_a like '%xxxyyyzz.JPG%'

Startup Founders Should Flip Burgers

http://www.bothsidesofthetable.com/2009/10/15/startup-founders-should-flip-burgers/

Who Should you Hire at a Startup?

http://www.bothsidesofthetable.com/2009/10/22/who-should-you-hire-at-a-startup/

Project management tips

1. No taks should be over 4 days long
2. UAT build is on Friday 2 PM, every week, developers plan their task accordingly
3. During UAT deployment and testing phase (code freeze) developers participate in design process
4. All UI features and changes need to be PhotoChopped (wire-framed with OmniGraffle) and reviewed agaist Use Cases before development

Hibernate: Case Insensitive Query

We ran into a situation where we needed to match a string from our application to a string in the database. A very common task. But this time we needed it to be a case insensitive match. In order to do that using Hibernate annotations, we ended up using Restrictions.ilike().

Here is some example code:

public List fetchByCountry(String country)

{

DetachedCriteria criteria = DetachedCriteria.forClass(MobileCarrier.class);

criteria.add(Restrictions.ilike("country", country, MatchMode.EXACT));

return getHibernateTemplate().findByCriteria(criteria);

}


The ilike method is a case insensitive like statement, and when combined with a MatchMode.EXACT, it accomplishes the task of an exact string case insensitive match.

GWT best practices

http://googlewebtoolkit.blogspot.com/2009/05/widget-best-practices-widget-building.html

Cloud Computing

Here is a link to a site that has cloud computing offerings:


The video at the bottom of the screen is a very good high level introduction to what cloud computing is.

LiveAndroid, a LiveCD for Android running on x86 platforms

Read more at...

Using Skype to save on HR costs

Interested in for looking for job candidates outside your area? Don't fly them in, use Skype!

The article below discusses the benefits of using Skype for a video interview before having to pony up the dough to get them out for an interview. Skype offers free video chat to other Skype users which can save your start-up or HR department thousands on first interviews, as well as offer something a little more than a dreary old phone interview.

Take a look at the article below...
http://www.time.com/time/business/article/0,8599,1930838,00.html

Social Graph API - Google Code

http://code.google.com/apis/socialgraph/

10GUI

http://10gui.com/video/

This is a concept video of how to effectively incorporate multi-touch into a desktop computer. That part of the video is interesting, but I think the even more revolutionary idea in this video is how they suggest changing the "windowed" approach to the desktop. I can see some pitfalls in what they call "con10uum", but I think it is a great starting point.

I would love to hear anyones thoughts on the topic or if anyone else has links to new types of UI. New UI concepts are very exciting!

October 28 Google Technology Conference #4 Android

Events

Text Messages(SMS) from Emails

Some mobile phone companies allow receiving SMS (Short Messaging Service), MMS (Multimedia Messaging Service) though emails. This means that you can send a SMS to someone from your email account, which means that the sender will not be charged for the SMS transit.

How it works:
1. Create a new email from your email account
2. Mail to address is: mobilenumber@txt.att.net (For AT&T) SeeMobil carriers
3. Check your mobile, and you will receive a new text message






SMS Implementation:

1. create a table MobileMessageType for all the mobil companies that your application will support i.e T-Mobil, AT&T, etc. See: Mobil carriers
2. Create a table MobileMessagingSetting with below fields (add more fields as needed such as max. sms per day):
id
message_type (use MobileMessageType table)
sms_email_to
mms_email_to
3. Create service classes and DAO
4. Create a mailing functionality which send emails to users using his/her mobil number and carrier email address to

See more mobile carriers gateways:
http://www.mutube.com/projects/open-email-to-sms/gateway-list/

Why is there no iPhone Bluetooth keyboard? | Fully Equipped - CNET Reviews

As much as I am a Mac lover (5 computers, 2 iPhones) I am totally at
loss why I cannot type an article on the keyboard attached to my
iPhone. I had I keyboard for HP Jornada and that was like a DECADE ago!

I am seriously thinking my next phone will be Android, wait! I already
own My Touch, damn, I am a geek.


http://reviews.cnet.com/8301-18438_7-10279971-82.html

Mobile Photoshop



Photoshop-App-for-iPhone-iPod-Touch

From Adobe;

Photoshop.com Mobile for iPhone provides a fun, seamless experience to view photos with full-screen previews and edit images with gesture-based editing. Consumers can transform their photos with essential edits like crop, rotate and flip. Users can correct and play with color by adjusting the saturation and tint, enhancing the exposure and vibrancy and converting images to black and white.

Photoshop.com Mobile for iPhone also offers eye-catching special effects. The Sketch tool helps photos look like drawings, and Soft Focus can give photos a subtle blur for artistic effect. With just one click, users can also apply dramatic changes to the look and feel of their photos with effects such as Warm Vintage, Vignette and Pop. Edits or changes can be undone or redone so users can experiment without the worry of losing the original photo.

photoshopmobile

The Photoshop Mobile App comes with 2GB of space at Photoshop.com for free.

You can read more about it and download it from here.



Pixelmator: selection smooth, feather and size ROCK!

Frankly, I was worried that Pixelmator does not have the obvious features of Photoshop, but guess what...

IT MADE IT EASIER! Very cool!

Trials and Tribulations of going to GWT 2.0 ms1

Going to GWT 2.0 ms1 is pretty simple for most projects, you just download gwt-2.0.0-ms1 and unzip it.

The one thing you have to do is copy your gwt-dev.jar and rename is as gwt-dev-"your os here".jar (gwt-dev-linux.jar, gwt-dev-mac.jar, gwt-dev-windows.jar). This will be fixed in the next version of GEP.

You can simply add the new GWT sdk in Eclipse.


Now everything should work for you. Unless you have Gilead, prepare to update lots of jars and add many more.

Since Gilead was giving me problems I figured I should update to the latest version gilead-1.2.3.823

In doing that I also needed to update to the latest version of hibernate-annotations-3.4.0GA and hibernate-3.3.2.GA
In turn spring-2.0.8, spring-dao-2.0.8, spring-hibernate3-2.0.8, spring-jdbc-2.0.8, and spring-mock-2.0.8.

Now that that was done I tried to start up the app and got this error that I've documented here http://groups.google.com/group/google-web-toolkit/browse_thread/thread/ca5722230f14f54e?hl=en#

So I added those files and ran into a slew of ClassNotFoundExceptions that led me to find out there were many dependencies that the new gilead, hibernate, and spring needed, so one by one I added the following dependencies.

beanlib-hibernate-5.0.2beta1
slf4j-log4j12-1.5.8
slf4j-api-1.5.8
javassist-3.8.0.GA
cglib-2.2
jta-1.1
antlr-2.7.7

Once that debacle was over I was up and running GWT 2.0 ms1 below are links to the different jars you will need to download for maven.


mvn install:install-file -DgroupId=com.google.gwt -DartifactId=gwt-servlet -Dversion=2.0.0-ms1 -Dpackaging=jar-Dfile=gwt-servlet.jar
mvn install:install-file -DgroupId=com.google.gwt -DartifactId=gwt-user -Dversion=2.0.0-ms1 -Dpackaging=jar -Dfile=gwt-user.jar
mvn install:install-file -DgroupId=net.sf.gilead -DartifactId=adapter4gwt -Dversion=1.2.3.823 -Dpackaging=jar -Dfile=adapter4gwt-1.2.3.823.jar
mvn install:install-file -DgroupId=net.sf.gilead -DartifactId=adapter-core -Dversion=1.2.3.823 -Dpackaging=jar -Dfile=adapter-core-1.2.3.823.jar
mvn install:install-file -DgroupId=net.sf.gilead -DartifactId=hibernate-util -Dversion=1.2.3.823 -Dpackaging=jar -Dfile=hibernate-util-1.2.3.823.jar
mvn install:install-file -DgroupId=org.hibernate -DartifactId=hibernate -Dversion=3.3.2.GA -Dpackaging=jar -Dfile=hibernate3.jar
mvn install:install-file -DgroupId=net.sf.beanlib -DartifactId=beanlib -Dversion=5.0.2beta1 -Dpackaging=jar -Dfile=beanlib-5.0.2beta.jar
mvn install:install-file -DgroupId=net.sf.beanlib -DartifactId=beanlib-hibernate -Dversion=5.0.2beta1 -Dpackaging=jar -Dfile=beanlib-hibernate-5.0.2beta.jar
mvn install:install-file -DgroupId=org.jboss -DartifactId=jboss-serialization -Dversion=1.0.3.GA -Dpackaging=jar -Dfile=jboss-serialization.jar
mvn install:install-file -DgroupId=gnu.trove -DartifactId=trove -Dversion=2.1.0 -Dpackaging=jar -Dfile=trove-2.1.0.jar

PhotoSketch picture software

This is undoubtedly one of the coolest things I've seen in a while. I hope they get their server back up sometime to actually see it in action. The possibilities seem endless, and it will start to make you think if any images on the internet you see anymore are real.

http://www.telegraph.co.uk/technology/news/6265876/PhotoSketch-picture-software-wins-plaudits.html

AppEngine: database annotations JDO or JPA

I am no expert and frankly I don't understand the differences, but
looking at the following comparison it SEEMS like JDO is a better
choice...

http://db.apache.org/jdo/jdo_v_jpa.html

One of the concerns would be switching back to Hibernate some day when
DataStore upsets me (and it upsets me a lot).

Please let me know what you decided to use yourself.

GWT: KeyDownHandler listening to key typed

If you want to know when user typed something into the TextBox, or TextArea use KeyDownHandler.
This comes useful when you want to update the SAVE status, or COUNT characters for Twitter (140) or SMS (160).



final TextBox textBox = new TextBox();
textBox.setStyleName("recipe_edit_width");
textBox.setText(currentRecipe.getName());
recipeName.add(textBox);

textBox.addKeyDownHandler(new KeyDownHandler()
{
    public void onKeyDown(KeyDownEvent event)
    {
isSaved = false;
currentRecipe.setName(textBox.getText());
updateSaveStatus();
    }
});























GWT graphics

If you were considering how to draw graphs and pie-charts in GWT, wait no more:
DrawingArea canvas = new DrawingArea(400, 400); panel.add(canvas);
Circle circle = new Circle(100, 100, 50); circle.setFillColor("red"); canvas.add(circle);
Examples:

Mac OS X: MySQL installation

1) Download the current stable version of FREE MySQL Community Server
http://dev.mysql.com/downloads/mysql/5.1.html
(DMG package version):
http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg
you have to log in with you email:
http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.39-osx10.5-x86.dmg/from/pick
FTP
2) Copy the DMG to /opt/mysql/mysql-5.1.39-osx10.5-x86.dmg
3) Shutdown any previous MySQL using command: mysqladmin shutdown
4) Double-click on .pkg and follow standard installation
At this point you have it installed:
Uki@(Thu Oct 01 11:23:39) /usr/local $ ls -alt
lrwxr-xr-x 1 root wheel 24 Oct 1 11:22 mysql -> mysql-5.1.39-osx10.5-x86
drwxr-xr-x 17 root wheel 578 Sep 4 14:15 mysql-5.1.39-osx10.5-x86
5) Run MySQLStartupItem.pkg to have mySQL start automatically.
6) Doble-click the MySQL.prefPane to have it in your "System Preferences"