Developing Simple

Make everything as simple as possible, but not simpler.

– Albert Einstein

Thought this could easily be applied to software engineering.  It also goes along with the KISS (Keep It Simple Stupid) principle.  It also says that sometimes trying to make things simple can be to complex.  There is a line that we walk when developing software.  By trying to become to creative in making a design simple, sometimes it can be to complex!  I like to expand his quote and say, “Make it as simple as possible, but not simpler then possible”.

Grails findBy for hasMany Relationship

Interesting that this is not built into grails. As many people know who use grails you automatically get dynamic “findBy” methods on persisted objects. It is incredibly useful and provides easy access to attributes of a persisted class. The only problem is when you try to do the same thing on a “hasMany” relationship of that class. For example:

1
2
3
4
class Airport {
    String name
    static hasMany = [flights:Flight]
}

You can do:

1
Airport.findByName("MSP")

You cannot do:

1
Airport.findByFlights(flight)

What do you do? In my case, I decided to make it.

Here is my implementation:

1
2
3
4
5
6
7
8
9
10
class Airport {
   static Airport findByFlight(Flight flight)
   def c = Airport.createCriteria()
   def result = c.get {
      flights {
         idEq(flight.id)
      }
   }
   return result;
}

Semantic Web

I have to admit, when I first heard about this I thought it was kind of crazy and impossible to think information could really be captured via html markup and other types of semantic writing.  If you want to learn about the broader idea of the semantic web you can read an article posted by smashing magazine.

Apparently Google is going to start investing in this idea, at least in buying a company that is investing in this idea 🙂

Google just purchased Metaweb. Now that Google acquired Metaweb, they have really bought access to an impressive database of web entities. What are entities?  Metaweb calls entities a word that is a person, place or thing.  One entity can have many different types of names or different names referring to the same entity.  For example, you could refer to my current employer in a number of ways:  PTC, Parametric Technology Corporation, Parametric Technology, etc.  What metaweb does is realize that everyone is talking about the same thing!  They take this ever expanding database and open it up to the world with access to capture and access the entities.

Why does that matter?  You will have to read into it a bit more but it is searching not just words like Google but the meta information which gives context to the words.  This helps in numerous different ways.  It allows for more direct SEO, searching, ability to pull in information from other places, etc.

Migrating Subversion

A little bit ago I needed to migrate all my subversion repositories over to my fresh new Ubuntu server.  I personally manage the server so it also gets interesting trying to do upgrade Ubuntu by installing a fresh new install.

Migrating to another server

Now let’s migrate to a new server. Just need to export it and then create a repository and then import it.
Export

svnadmin dump REPOS_PATH > export.txt

Import
First things first.  Make sure you have your users specified.  Here is a quick tip on adding new users for your subversion system:

htpasswd -b /svn/users/passwords username password

or

htpasswd /svn/users/passwords username

Create New Repository

svnadmin create /svn/repos/test
chown -R apache.apache /svn/repos/test

Quick Setup
We just need to configure Apache to point to the correct subversion location.  On Ubuntu I have the following specified in my apache.conf file:

<Location /svn/thoughtsway>
DAV svn
SVNPath /home/svn/location_of_svn_repository
AuthType Basic
AuthName “<NAME_OF_YOUR_SERVER> Subversion System”
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>

Resources

  • http://www.ferdychristant.com/blog/articles/DOMM-6NFJ6J
  • http://www.subversionary.org/howto/setting-up-a-server-on-fedora-core-4
  • http://www.polarion.org/index.php?page=overview&project=fasttrack

Eclipse Helios on STS

Here is the latest that I have found!

“If all goes as planned we’ll release STS 2.3.3.M2 including the usual installers next week.”

Looks like they have it some what working in the nightly builds.

Eclipse Helios

The new version of Eclipse is out!

Eclipse Helios

Here is a demo of the new Java features which is interesting to watch.

There are a lot of nice additions!

A couple things I have noticed so far:

  • Support for formatting Annotations correctly!
  • It has added additional out-of-the-box support for JavaScript.
  • I was able to creat a new JavaScript formatter!  I have been waiting for this feature so that our whole team can use the same formatting options like the Java formatter.
  • I would not recommend installing Aptana yet as it is not fully compatible with the new version of Eclipse.
  • I would recommend creating a new workspace if you previously installed Aptana.  Otherwise, you will get errors trying to find Aptana specific settings (as it is not installed).

Connect To HSQLDB Grails Database

This is how you can connect to use the DBVisualize to connect to grails using the HSQL database. I wanted to learn more about GORM and to understand how it was generating the tables.

Datasource.groovy

1
2
3
4
5
6
 development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop','update'
url = "jdbc:hsqldb:file:devDB;shutdown=true"
}
}
  • Choose HSQLDB embedded as your Driver using the hsqldb.jar located under your Grails home directory ($GRAILS_HOME/lib)
  • Update the Database URL to include your grails app base directory (jdbc:hsqldb:file:<grails app base>/devDB). Window users don’t have to specify the drive (ie. “C:”).

Sharepoint Email Setup

When configuring the outgoing and incoming email
  • Install SMTP Server
  • Configure SMTP server by doing the following: http://technet.microsoft.com/en-us/library/cc772058(WS.10).aspx
Issues
Be careful because the exchange server you are trying to send the email from to your sharepoint instance may be blocking the emails from getting to sharepoint. If this is the case then you need to contact your sharepoint administrators to allow that email to be sent to your sharepoint instance.
You can verify this by sending an email from a client that sets the email server as your sharepoint instance and then send the email directly to that machine. If it works that way then you can try going through your organizations exchange server.

When configuring the outgoing and incoming email.

Install SMTP ServerConfigure SMTP server by doing the following: http://technet.microsoft.com/en-us/library/cc772058(WS.10).aspx

Be careful because the exchange server you are trying to send the email from to your sharepoint instance may be blocking the emails from getting to sharepoint. If this is the case then you need to contact your sharepoint administrators to allow that email to be sent to your sharepoint instance.You can verify this by sending an email from a client that sets the email server as your sharepoint instance and then send the email directly to that machine. If it works that way then you can try going through your organizations exchange server.