»
S
I
D
E
B
A
R
«
IntelliJ IDEA 9 released
Dec 9th, 2009 by evereq

Hi! It’s good news today for a lot of java, ruby and groovy developers – new version “Maia” (officially v9) was just released by JetBrains with a lot of new features (including faster environment, extensive Java 6 support, build-in Google App Engine and Grails projects support etc) – feel read full “What’s new” list.

There exists also not so good news – this time for PHP developers – support of PHP was removed from release of free (”community”) version of IDEA, so developers can stick with other completely free IDEs this time :( – for example NetBeans comes to my mind this time… as alternative… but after Oracle buy Sun, I not sure it is right choice… but this is “idea” for another post…)

Actually personally I don’t understand why “Community” version does not support PHP, Javascript, Python or Ruby as this languages are used by a lot (if not most) of “open source” developers that for some reasons does not feet into JetBrains licensing of commercial version of IntelliJ IDEA for open source projects. I think “vice versa” if compare to JetBrains – Commercial version must have extended support for Java development, while Community edition must support MORE other open source frameworks / languages, like Ruby, Python or PHP etc. Sure it’s only my “personal” opinion, but I think most of developers will agree with me – people that use IDEA for Java development (usually in enterprises) can (and will!) simply BUY commercial licenses, while a lot of potential IntelliJ users actually want to use it for small open source projects in non-Java languages stack and want to get IDE for FREE!

But totally – all new features show that JetBrains go in right direction – support for most “progressive” and “latest” technologies in IDEA (even if it is available only commercially ;-) )

Keep it going, JetBrains! ;-)

Evejob Project Management Part #2: Design goals
Nov 30th, 2009 by evereq

Small list of main design goals and principles in Evejob Project

1. Support of “Open Standards”

2. Support for I18N

Evejob Projects will support Internationalization (I18N) and allow users to select site language in addition to auto detect browser features. Major requirement in I18N – support of right to left languages and page designs in addition to left to right (this will allow to made Hebrew sites powered by Evejob, for example).

3. Cloud hosting support

There will be additional projects (EvejobDJG, EvejobAzNET, EvejobRoRG, EvejobGoGG) that will be specially designed to be hosted in various clouds like Google App Engine or Azure
… work in progress under this post …

Amazon AWS Big News for developers
Nov 13th, 2009 by evereq

Because I build Evejob multi-platform project with support of Cloud deployment scenarios (currently for Google App Engine and Microsoft Azure) and I am sure that best Web software must be ready to be deployed in Cloud(s), it was very interesting to read latest announcement from Amazon: “… AWS Software Development Kit (SDK) for .NET Now Available… “.

Sure it’s just a beginning for Amazon in development of real .NET SDK, but even with this version we can quickly build .NET applications that tap into AWS Cloud.   Yes,  even before developers have good libraries to build such applications, but now looks like we have first “standard” API from Amazon and this fact is very important!

For example, for Ruby there is no such official SDK (or Ruby gem), and developers can choice from few available gems (right_aws, amazon-ec2 or AWS:S3 to name just few).  The same situation for Java - available a lot of “community” libraries, but no official SDK… (ok, ok, for Java we have at least official AWS Toolkit for Eclipse, but Toolkit it is not SDK!!!).

But why it is important to have official “language specific” SDK?

Well, first of all, now because Amazon have few BIG rivals, like Google App Engine (and we know that Google DO have official SDKs, more so, for both Python and Java!) and Microsoft Azure (sure Microsoft always have SDKs – it a BIG plus for Microsoft!).

Also it is important for developers, so they know that if they take some library and put this library as “base” for communications with a Cloud, they will not need to dial with changes in API in case of library author decide to drop development! It is important to have SDK that will be up to date with company services (Amazon in our case), just because we developers want to be SAFE! Sure it is good if there are a lot of open source libraries that EXTEND SDK some way, but it’s just “add-ons” and can’t replace real official SDK!

So it is really BIG day for Amazon and .NET developers – first official “language specific” SDK, and for .NET!!! What will be answer from Microsoft Azure that is still in “Beta”? ;-)

Note: in this post I mean “language specific” SDK, not just common SDK that list API for Web Services  with samples how to use them for example, etc… Because most of they time developers dial with some specific language, it is important for services like AWS to provide language specific SDKs so developers can really quickly and “safely” create applications using such “language specific” SDKs! Hope you understand what I mean ;-)

Evejob Project Management Part #1: Initial considerations
Nov 6th, 2009 by evereq

OK, now it is time to go deeply into business domain of Evejob – Social Job Board and made small Agile project management.

What we know about Job Boards in general:

  • Company (managed by Employer User) seek for Job Candidates that can fit to some available positions by review / search Job Candidates profiles and / or resumes.
  • Job Candidates Users / Anonymous Users seek (search) opened Job Positions published by Companies (Employers Users) – i.e. review Companies profiles / Job Posts and contact Companies / apply to available positions.

This is “base, common, required” functionality that looks like MUST be present (with some adjustments)  in any Job board so both Companies and Job Candidates found board useful!

Despite the fact that I have very important extension to such “base” functionality which will made Evejob project Unique and more “Social”, I still understand that base functionality must be done before… In any case, I will need to use such business domain entities, like “Company”, “Job Candidate”, “Job Post” etc.  So instead of spend my time now describing what made “Evejob” really unique let’s just start “base” implementation and move forward…

But how to start?! This is most problematic question… Do I need to made “big design upfront” or? Do I need to describe all use cases (made 100s  screenshots etc) or I need to start coding right now etc? In general answer as always: “it depends!”.  But in my case, I can simply start from small and using iterative approach continue development… But anyway, at least small plan will help me to be on track and help readers to understand what will be in next iterations.

So here is the plan that I take from project backlog for Release #1 (at least like I see it right now… I did not want to put here full project backlog for some trivial reasons…):

Release #1. Base Job Board

  • Sprint #1. Employer Users: Registration, Profile
  • Sprint #2. Employer Users: Manage Companies
  • Sprint #3. Employer Users: Manage Job Posts
  • Sprint #4. Employer Users: Dashboard
  • Sprint #5: Job Candidates: Registration, Profile
  • Sprint #6: Job Candidates: Resume Management
  • Sprint #7: Job Candidates: Dashboard

You can ask: why this specific order??? Why I am going to build for example Employer stuff before Job Candidates? Answer – from business point of view! Our goal to build software that can be used even after just few iterations, so what sense if for example I will made first Job Candidates resume management and made release of this? Who can use this? Nobody – it will be just catalog of Job Candidates resumes… Nobody will want to register, nobody will add own resume if he will understand that nobody will search for it as search still does not implemented on site!

But look at order that I select: if we implement first Companies catalog, then we can made release, even put application to hosting servers and  start fill it with local or even worldwide companies –  start to promote site to such companies, let them send us description information, add this information to our database… etc… Maybe even made some “special” pages for huge companies like Google or Microsoft ;-) And while we will made next X iterations, we will simultaneously improve our companies catalog, extend our public relations  and promote our business! Here we follow principle: “Release Early” (feel free to overview also other important principles that I follow in my projects). Also it is very important that doing such “early” release we will start getting feedback and start to dial with real production environment! It is specially important in cases, where you plan to host your application in “special” environments - Azure, Google App Engine are some examples of such environments – you simply don’t have full control, so as early you start, as much “problems” you will face and fix in initial steps!

I put Sprint #1 – Sprint #7 into “Release #1″ because I think (at least now) that we can call “Evejob” project “version 1″ only after Spring #1 – Sprint #7 will be done and not before as all this functionality required for any job board application! As I tell before – it does not mean that I will put site into production only after complete all 7 sprints – I will be Agile and at least for now I see that it make sense to put site into production right after sprint #2…

For those who want to know little more, I will put here overview for next few releases:

Release #2. Following

This what will made site unique – “Follow” principle, something like Twitter but for Job Boards ;-) Want to know more – just stay with me ;-)

Release #3. Search

This release will be dedicated to different simple and advanced search features.

In next posts I will go deeply into each sprint, so stay tuned!

Evejob Development Environment Installation Part #5: Ruby, JRuby and Rails + AppEngine Installation
Oct 28th, 2009 by evereq

Ruby installation

Let’s start from Ruby installation. We can download Windows One-Click Installer from http://rubyforge.org/frs/?group_id=167, for example ruby186-27_rc2.exe

During installation, make sure that you select at least “Enable RubyGems” option:

RubyInstallation

You can leave default installation folder (C:\Ruby).

Ones you finish installation, you can run both “ruby” and “gem”  from withing your command line.

So it’s time to install Rails, just type in command prompt:

gem install rails

and wait few minutes to finish installation.

JRuby installation

Download installation package from http://jruby.org/download. We will need binary Windows version, for example JRuby 1.4.0RC1 Binary .zip. Extract folder content to C:\JRuby folder and add path to the JRuby to your PATH variable:

JRubyPath

Let’s test installation:

JRubyTestInstallation

Now both Ruby and JRuby installed.

The problems starts when we will try to simultaneously use them (side by side)… First of all, make sure that you delete RUBYOPT environment variable (because it seems like JRuby gems did not work correctly if this variable setup). Now you can invoke each “gem” using following commands:

For Ruby:   ruby -S gem

For JRuby:  jruby -S gem

For example this is what I get on my machine:

GemSideBySide

Note: it is actually not a big problem that I had 2 different versions of Gem on my machine – both versions (1.3.1 and 1.3.5 works well for me… update of gem 1.3.1 fails for some reasons on my machine, so I decide to leave this for now…)

One small thing to do: it is possible that you have old version 1.3.1 of RubyGems like me (in the moment when I write this, latest version is 1.3.5 like was installed for JRuby). If we leave it, we can face some problems in future with IDEA etc, so let’s just update it:

UpdateRubyGems

Also, let’s install jruby-openssl (IDEA generate Error if this gem not installed):

OpenSSLforJRuby

Rails Installation

Next step is installation of Rails – just type following commands (it is better to just install Rails twice than to share same installation for both Ruby and JRuby):

ruby -S gem install rails
jruby -S gem install rails

EvejobRoR and EvejobRoRG Project

We going to create 2 separate projects now:

EvejobRoR – will use Rails build in ActiveRecord + MySQL database

EvejobRoRG – will use App Engine hosting, datastore and Google Accounts for user authentication APIs

Let’s start from more simple EvejobRoR:

cd c:\evejob
rails EvejobRoR -d mysql

Now let’s open this “template” project in IDEA:

File -> New Project -> Create project from scratch:

CreateRubyProjectInIDEA

Change here “Project files location” to the “C:\evejob\EvejobRoR”, select “Ruby Module” and press next (see screenshot above)

Now you need to specify the Ruby SDK (current version of IDEA can’t detect SDK locations from environment variables). Press “Configure…” button and press “+” button in “Configure JDK” window:

AddRubySDK

Select “Ruby SDK” in popup and than select Ruby interpreter path:

SetRubyPath

I Hope you will get something like this:

RubySDKAddedToIDEA

If so, just press “OK” and continue IDEA project creation Wizard:

ContinueRubyProjectCreationWizardInIDEA

Select “Ruby on Rails” on next screen and press “More…”  for Rails Facet configuration:

SelectRubyOnRailsTechnology

RailsFacetSettings

Make sure that you select “Use existing Rails application” and “Preconfigure for selected database” to “mysql” like (see picture above)

Now fill free to finish project creation Wizard. Done! We get EvejobRoR project loaded into IDEA.

Same steps we need to made for EvejobRoRG project, with small difference that this time we need to add JRuby SDK, instead of Ruby SDK like before and that we don’t want to support mysql as we are going to use Google App Engine API instead.

So, first type:

cd c:\evejob
rails EvejobRoRG

Then same like before, create new project in IDEA, put here “C:\evejob\EvejobRoRG” path and in “Specify the Ruby SDK” press “Configure…” and add JRuby SDK:

JRubySDKInIDEA

After made same steps like was done for EvejobRoR project, just make sure that you unselect “Preconfigure for selected database” check box in Rails Facet Settings dialog and process steps like before to finish Wizard.

Hopefully you get EvejobRoRG project opened in IDEA!

Prepare JRuby / Rails for Google App Engine

Google App Engine runs Java applications, so we need to make sure that we can assemble our JRails applications into a Java Web Archive (.war). To do such tasks easy, let’s first install “warbler” gem:

jruby -S gem install warbler

Now it is time to check that you add Java JDK path to windows PATH environment variable (because “warbler” gem use JDK):

JDKPathToPATHVariable

Next step, to run following commands from application root folder (c:\evejob\EvejobRoRG):

jruby -S warble pluginize
jruby -S warble config

(make sure you type “warble”, not “warbler” that is just Gem name)

Now you can just check that “Warbler” works:

jruby -S warble

As result you must see EvejobRoRG.war file generated in application root folder (c:\evejob\EvejobRoRG)

We can’t use this .war file directly for Google App Engine for few reasons, but at least we see that we can get some .war file :)

I specially not use all appengine-jruby project gems for few reasons:

  • google-appengine gem install own “tuned” version of JRuby that we want to avoid for reasons, for example for quick updates as we don’t want to depend on this special version of JRuby etc (means that project must be installed using Ruby, not JRuby! And only after installation it download and install customized, ‘frozen’ version of JRuby)
  • google-appengine helps to run JRuby on Google App Engine, but not to run Rails on Google App Engine ! :) All problems related to Rails on App Engine are still exists (read more at http://code.google.com/p/appengine-jruby/wiki/RunningRails)

But what I do use is one of the gems from appengine-ruby project – “appengine-apis”, so let’s install it:

jruby -S gem install appengine-apis

Read this for now to get more information about Rails and Google App Engine specific things:

http://olabini.com/blog/2009/04/jruby-on-rails-on-google-app-engine/

http://www.railshacks.com/2009/4/25/run-your-ruby-on-rails-app-on-google-app-engine

We will get back to this later…

»  Substance: WordPress   »  Style: Ahren Ahimsa
© Copyright 2008–2009 EvereQ.com All rights reserved.