»
S
I
D
E
B
A
R
«
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 …

The November version of the Windows Azure SDK and Tools
Nov 15th, 2009 by evereq

Download them here.

New in the November 2009 SDK (quote from Microsoft Windows Azure team newsletter):

  • Windows Azure Service Runtime managed library: The latest version of the Service Hosting Runtime API includes support for enhanced communication between roles and for runtime notification of service configuration changes. Direct communication between role instances enables new application development scenarios, including applications that distribute state across role instances. Service configuration changes include an increase or decrease in the number of request role instances and changes to the values of configuration settings.
  • Windows Azure Diagnostics managed library: The new Diagnostics API enables logging using standard .NET APIs. The Diagnostics API provides built-in support for collecting standard logs and diagnostic information, including the Windows Azure logs, IIS 7.0 logs, Failed Request logs, crash dumps, Windows Event logs, performance counters, and custom logs.
  • Certificate Management: Enhanced support for SSL certificates in Windows Azure and in the Windows Azure SDK enables the secure automated deployment of certificates to services hosted on Windows Azure.
  • Variable-size Virtual Machines : Developers may now specify the size of the virtual machine to which they wish to deploy a role instance, based on the role’s resource requirements. The size of the VM determines the number of CPU cores, the memory capacity, and the local file system size allocated to a running instance.
  • External endpoints for worker roles. A worker role may now define any number of external endpoints for HTTP, HTTPS, and TCP, and specify the desired port number for any external endpoint.
  • Persistent local resource storage: Developers can now choose to persist data written to a local storage resource at runtime when the role is recycled.
  • Windows Azure Storage Client managed library: The Storage Client library provides a .NET API for accessing the Windows Azure storage services.
  • Improved Development Storage: Development storage provides a high-fidelity simulation of the Windows Azure storage services in the cloud. Tables can now be created dynamically in the development storage Table service and are no longer required to be generated in advance.
  • Updated samples: The samples included with the Windows Azure SDK have been updated to demonstrate new features. The samples now include both C# and Visual Basic versions.

As we can see – a lot of improvements and new features introduced in this release. I will made review of them right after will have time to check (hopefully today later)! In any case, glad that MS improve Azure SDK so quickly!

Update: after installation and first review, I found following:

  • It seems like Microsoft finally have “official” Client library for Azure Storage. The name is same like from samples before, i.e. “StorageClient”, but now it is in “Microsoft.WindowsAzure.StorageClient” namespace, not like “Microsoft.Samples.ServiceHosting.StorageClient” that was before! It is also VERY extended and improved, so if you going to use Azure Storage, for sure you need to use this library (and I am also going to use it in my EvejobAzNET project) – it give you access to Blob Service, Queue Service and Table Service! Sure like before, it is possible to use simple .NET Client Library for ADO.NET Data Services (and new library use it inside anyway, just check that it reference System.Data.Services.Client library inside)… But with official Azure Storage Client library a lot of tasks become much more simple! You can found this library (*.dll) in “c:\Program Files\Windows Azure SDK\v1.0\ref\” folder, together with other useful binaries!
  • It is possible now to use another “official” library to get programmatic access to most of functionality available before only from Azure Developer Portal (and actually I don’t know why, but for some reasons Portal works and looks not best way! You can google, A LOT of people complain about issues with this!).
  • A new Library for Logging and Diagnostic functionality was added to SDK (Microsoft.WindowsAzure.Diagnostics namespace) - feel free to review samples in SDK (zip archives available in root folder of SDK installation, i.e. in C:\Program Files\Windows Azure SDK\v1.0 by default – samples-cs.zip for C# version and samples-vb.zip for VB version)
  • A lot of other improvements / features was added that relate mostly to development / production environment (Visual Studio Azure support, new release of Development Fabric etc) – they not change significantly your code / application design, instead of features described above that I highly recommend to review in case if you develop for Azure!
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 #6: .NET, C#, ASP.NET MVC and Azure Installation
Oct 21st, 2009 by evereq

.NET development Environment Installation

  • Download and install Microsoft SQL Server 2008 (any edition will fit, including Free Express)
  • Download and install Microsoft Visual Studio 2008 Standard, Professional or Team Edition (feel free to read about installation order in here)
  • Download and install service packs for SQL Server and for Visual Studio 2008 (at least SP1 required)
  • Download and install ASP.NET MVC 1.0
  • Download and install latest Azure SDK (make sure that Enable IIS7 with ASP.NET and WCF HTTP Activation – read more on here)

Creating EvejobNET Solution

Open Visual Studio, select “File / New Project” and fill form with following details (make sure you select ASP.NET MVC Web Application template):

EvejobNETSolutionCreate

Press “OK” and on next window “Create Unit Test Project”, select “Yes” and press OK:

SelectVisualStudioUnitTests

You will get solution loaded into Visual Studio with 2 projects: ASP.NET MVC Application (EvejobNET) and Unit Tests project (EvejobNET.Tests):

EvejobNETSolution

You can now try to run it, just press “Start Debuging” Button and make sure that you agree with action to “Modify the Web.config file to Enable Debugging”. Your default browser will open test site, hosted by development server (build in into Visual Studio).

Creating EvejobAzNET Azure Solution

Go to “File / New Project”, select “Cloud Service” template in New Project Window and fill project name and path like on following screenshot:

EvejobAzNetSolutionCreate

After you press “OK” you will need to select Roles to be added to solution. At the time I write this, there was no ASP.NET MVC role available, so let’s just temporary add ASP.NET Web Role (keep default name for now):

AddWebRole

After you press OK, solution will be opened with WebRole1 Project. Now it is time to remove “WebRole1″ temp project from solution (don’t forget to delete unused folder, with content, WebRole1 in C:\evejob\EvejobAzNET).

Next step is to add new ASP.NET MVC project: like was done above for EvejobNET project – just simply right click in solution explorer on “Solution ‘EvejobAzNET’” and select “Add New Project”, than select ASP.NET MVC Web Application Template and give this template name “EvejobAzNETMvcWebRole” to keep Azure standard naming convention.

One more step to finish – you need to associate role, so in solution explorer right click on “No project associated (WebRole1)” and select same like on screenshot:

AssociateProject

In opened window for association, make sure that you select “EvejobAzNETMvcWebRole” project:

AssociateWithRole

Your solution will looks like this now:

AzNetSolution

Now it’s time to test it – just press “Start Debugging”  in Visual Studio. Probably you will get following question (if everything going well):

DevelopmentStorageNeeds

Sure thing, correct answer “Yes” :) Ones it finished you will get another window that show “Development Storage Initialization” – just press “OK” button here and continue with execution.

You can get following popup also:

MicrosoftCloudToolsUpdates

I hope you answer yes, as probably you want to be sure that you use latest Tools available for Azure :)

Finally, your default browser probably opens with http://127.0.0.1:81/ Url and you will see “My MVC Application” :)

If so, that we just prepare everything to start EvejobAzNET development :)

Ah, one small note – you can check status in “Development Fabric” and in “Development Storage” – small icons are added to Windows taskbar – right click on each and select “Show …”:

DevelopmentFabric

DevelopmentStorage

Thats it!

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