»
S
I
D
E
B
A
R
«
Windows 32bit vs 64bit
Oct 14th, 2009 by evereq

if you have 64 bit version of Microsoft Windows (2008, 7 or 2003) it seems like it’s good idea to setup this version (instead of 32 bit) on both developer machine and production servers if you select .NET platform for your Web application and IIS as your hosting solution.

Here are some reasons why:
1) Serialization works much better on 64 bit OS in processes that hosted by IIS (at least for IIS 6,7,7.5). Means that if you want to serialize huge object (for example DataTable) in 32 bit OS you can get “Out Of memory” exception, while on 64 bit OS this works fine! As probably you know, IIS process on 32 bit OS can be practically maximum about 1200Mb size (while theoretically maximum is 2Gb for 32 bit OS) and for some scenarios this can be a not enough (for example if you going to use in-memory / in-process cache etc)
2) If you develop your system on 64 bit OS, you can be sure that it will work well on both 32 bit and 64 bit OS (at least you can check how it works). Usually problems start coming if you develop and test on 32 bit and than decide to host under 64 bit OS…. So why not to avoid this? Cost of both 32 bit and 64 bit OS usually is the same (at least for MS products), so if you don’t have some specific requirements (for example some of your library does not works under 64 bit machine) it looks like make sense to go with 64 bit!
3) In latest Server OS Windows 2008 R2, Microsoft removes 32 bit support and this version available only as 64 bit OS. That is why it looks like now make sense also to move to 64 bit on developer machine!

So, I found for myself following best software combination available today to develop / host .NET Web Application:

1) Developer Machine: Windows 7 Professional / Ultimate / Enterprise 64 bit with at least 8Gb PC memory (as you probably will want to run some virtual machines, your ReSharper will eat a log of memory in whole solution analyzing mode, Visual studio process can grow to 1Gb itself, Microsoft SQL Server same etc)

2) Hosting Server: Windows 2008 R2 (64 bit) with at least 4Gb memory even if you enable only IIS here (i.e. use server just as Web Server, but not as SQL Server etc), but use huge Sessions objects (not recommended, unless you already have stupid code that do so) or in memory (in process) huge Cache (ASP.NET or for example EntLib Cache etc).

Using such combination you will avoid a lot of problems with “Out of memory” related issues!

P.S. yes, yes, I know – instead of “Out of Memory” issue, you will get a lot of problems to make some soft working well under 64 bit (problems with Paths, dll versions etc). But time that you spend to fix all this setup issues, will save you much more time with Visual Studio (or other soft) crashes or when you go live with your application and get 100 times per day same “out of memory” in your logs! I don’t speak here about performance benefits here (if they exists at all) – it make sense to create special post for this!

P.P.S. sure thing, if you get such “out of memory” exceptions it is problems in your code (or in Microsoft code in some cases, like Visual Studio for example, but anyway it’s your fault! :D ) and you do something bad… In most cases you can change design and avoid such issues (split huge objects to smaller, don’t store in sessions or cache huge objects graphs, etc). In some cases you simply cannot change anything – it’s by requirements this way or you just have old stupid code that you need quickly to fix! In such cases, moving to 64 bit environment can be good temporary solution that will give you time to improve design / coding discipline! Just be worried – if you don’t change yourself – you will end up with same out of memory exceptions on 64 bit OS (store all 100Gb database as one huge serialized dataset in memory cache for example :) ha ha… I see something like this before really!)

Project “Evejob” Introduction
Oct 12th, 2009 by evereq
Logo

“Evejob” is a Web 2.0 style Social Job Board Open Source web application developed in few frameworks / programming languages simultaneously and released under GPLv2 license.

Why another job board application?

First – every developer understand naturally such business domain because at least one time in his live he was a “Job Seeker” and some day probably also become (will or already) an “Employer”. So I (and readers) will not spend time to learn business domain in developing Job Board application! (sometimes really huge amount of time team or independent developer just learn business domain of application… It’s actually wrong to think about this as “time waste” because as much developers understand the business as more better software they usually made!).

Another reason why I decide to create another job board open source application(s) is absence of such project developed in true MVC architecture (at least by now). Try to search open source Job Board software? You will found huge amount of poorly written PHP scripts (most are not open source) and for sure you will not found any good ASP.NET MVC or Ruby on Rails implementations… Social Job Board software have a huge “potential” and I don’t want to lost opportunity to develop good open source version of such application (and even more – first few versions powered by different platforms!).

Last reason which I want to list here (in reality I have much more reasons for sure), is that I have some cool ideas how to make really SOCIAL Job Board and want to at least try such ideas on practice!

Evejob Application Versions

So, there will be few major versions of Evejob applications:

  • EvejobDJ (powered by Django -  high-level Python Web framework)
  • EvejobDJG (powered by Django -  high-level Python Web framework and ready to be hosted on Google App Engine)
  • EvejobRoR (powered by Ruby on Rails – open source MVC web application framework which leverages the Ruby programming language)
  • EvejobRoRG (powered by Ruby on Rails – open source MVC web application framework which leverages the Ruby / JRuby programming language and ready to be hosted on Google App Engine)
  • EvejobGoG (powered by Grails -  open source MVC web application framework which leverages the Groovy programming language that based on the Java platform)
  • EvejobGoGG (powered by Grails -  open source MVC web application framework which leverages the Groovy programming language that based on the Java platform and ready to be hosted on Google App Engine)
  • EvejobNET (powered by Microsoft ASP.NET MVC framework and written on C# programming language under Microsoft .NET platform)
  • EvejobAzNET (powered by Microsoft ASP.NET MVC framework and written on C# programming language under Microsoft .NET platform and designed to be hosted in Azure)

All versions will be developed and updated in parallel with comparisons between frameworks / languages  features, platforms and even IDEs in the way …

Why I will release project as Open Source? Sure primary reason because I want other developers will get benefits from it, like I now get benefits from all open source software that I use every day. Another reason – I want to made this application better, so I need feedback, and not only from end users, but also from other developers! In my case, because I get used few different programming languages, I will probably get really huge feedback – at least few times more then if i will write code using one language! I will get feedback from developers with different cultures (Unix vs Windows environment), different preferable coding styles (dynamic language or static) etc… Think project will benefit from this (and actually I never see something like this before so it will be at least interesting to get a try :D … ) !

Agile Development

As you probably understand by now, I am a huge fun of Agile development (and even Agile life).

What this means for selected project:

  • ANY feedback, both positive and negative highly appreciated!  (just please make sure that it’s “constructive” – I don’t want to start a wars between platforms, I don’t want to get feedback about my English level etc – just stay concentrated on the project)
  • I will try to get releases every month  (just be aware that like most of developers I do this open source project at free time at home after hard work… )
  • I will follow DRY principle (as well as many other Agile principles) and sure will always try to keep things Simple! Please correct me in case if I go in wrong direction!

Integrated Development Environments

One thing where I really don’t want to go most simple way is usage of Integrated Development Environments (IDEs) … While all development can be done using even simple text editors (notepad, vim, Emacs etc) I decide to implement this project using rich IDEs available for selected platforms.

Reason – most of developers DO use IDE at work (companies simply buy it) and I think this will help developers to make total compare of PLATFORMS, not just frameworks or programming languages. While a lot of people can argue that IDE does not make any difference (and probably they are right in some cases),  I think usage of IDE can significantly decrease developing time ones you get use of functionality they have and sometimes even improve discipline (with tools like ReSharper for C# for example) of developers.

So here is the list of IDEs I am going to use:

  1. IntelliJ IDEA by JetBrains (http://www.jetbrains.com/idea/) for Django (using Python plugin), Grails development (build-in support) and Ruby on Rails development (using Ruby Plugin). Version for Open Source development available for free at JetBrains site, for personal development costs 249$, while version for commercial developing costs 599$. But you can simple start with 30 days Trial version for now, exactly like I do.
  2. Microsoft Visual Studio 2008 (http://www.microsoft.com/visualstudio/en-us/products) for ASP.NET MVC development in C#. Standard edition cost 299$, while professional cost 799$. For our needs it’s enough to have just standard edition. Also sure thing you can download 90 days Trial version for now – after you try it (if never try before), you will 100% buy it as there is no alternative for .NET !

Why I choose IntelliJ IDEA, but not Eclipse or Netbeans (really good free alternative to IDEA) or Wing or Komodo etc? For .NET development, Visual Studio is STANDARD and Express Edition that available for free simply “for users other than professional software developers, such as hobbyists and students.” (but even so Express Edition should also work for you). Because my goal is to be at least “professional software developers” (and readers I think also) I must use at least Standard version of Visual Studio that is not free (except cases when Microsoft give it for free for start-ups etc, like on http://www.microsoft.com/bizspark/ for example)… So to make fair comparison I must use something not free for other versions also… This means that great tools like Netbeans or Eclipse simple can’t be used in this case (as both are completely free). Sure if you going to made your own projects you can use Netbeans or Eclipse because both have good support for both Ruby on Rails and Grails development and even Django (with some additional external tools / plugins). Regarding Komodo / Wing etc, they are too specific for selected languages or does not support all frameworks I need (at least by now).  While it is available free IntelliJ IDEA version for open source developing, because I (and readers) some day going to make a money, it’s make sense to compare versions for commercial development.

Application Hosting

Hosting… Yes, while I can leave this decision for later in theory, in practice it can (and will) effect our architecture… So let’s made it clear now: I am going to host Grails, Django and Ruby On Rails versions of Evejob application in Google AppEngine. Google AppEngine support Python natively so we can run Django here. Also last version of AppEngine support  Java as programming language. So because Grails leverages Groovy (which written on Java), we can also run Grails applications in AppEngine. Same for Ruby On Rails – it is available JRuby implementation of Ruby on Java so we can run Ruby On Rails applications in Google App Engine. To host ASP.NET MVC application in I am going to use latest Microsoft Azure platform.

Operation System

I am going to make all development under Microsoft Windows 7 64 bit Operation System (OS). Visual Studio 2008 does not work on any other non-Windows operation system directly (and I don’t want to use virtualization for such case – IDE must work on operation system for which it was written to get maximum performance… but, while IDEA works on almost any OS, Visual Studio does not!). Even so, It is still exists option to use Mono (cross platform Open Source development framework) to run ASP.NET MVC on other OS except Windows, and to use MonoDevelop instead of Visual Studio for example. Unfortunately I decide to port application to Mono AFTER development will be completed. (primary because I just want to wait until Microsoft legally allow to use Mono or finally will just “close” it, so I will not need to release another version for this wonderful framework).

Project sources, links and documentation

  • Projects hosting
  • Evejob Open Source Projects homepage (under construction currently)
  • Public domains for implementation sites (sites will be hosted only after Evejob reach first release version):
    - Worldwide: http://evejob.com, http://evejob.net, http://evejob.info
    - Israel: http://evejob.co.il
    - Mobile Clients: http://evejob.mobi
    - USA: http://evejob.us
    - Ukraine: http://evejob.com.ua
    - Russia: http://evejob.ru
    - “СНГ” http://evejob.su
»  Substance: WordPress   »  Style: Ahren Ahimsa
© Copyright 2008–2009 EvereQ.com All rights reserved.