Monday, December 07, 2009

New development environment

I am planning on our new development platform, where we are going to develop our Java Web applications.

Let me tell you what it consists of:
  • Ubuntu Server 9.10 on x86 32bit
  • OpenSSH
  • Apache HTTPD
  • Postfix SMTP
  • Trac ( http://local/projects/ )
  • Sonatype Nexus ( http://local/nexus/ )
  • SVN (http://local/repos/ )
  • Modified SVN post-commit task to close related bugs on Trac
  • MySQL for required databases (currently Trac only).
Each development machine has:
  • Eclipse Ganymede J2EE
  • Maven2
  • M2Eclipse
  • Subclipse
  • RabbitSVN / Tortoise
  • Mylyn + Trac Integration
  • CheckStyle for Eclipse
On Commits there should be definition of what's been done.


Next step would be installing a Continuous Integration Tool. I am considering;
  • CruiseControl
  • Continuum
  • LuntBuild
  • Hudson
  • Banshee
Do you have any other suggestions?

Saturday, November 21, 2009

Google announces new OS

I don't want to learn a new OS. This is scary!

Google Chrome OS

It will compete with, Windows, Linux, MacOS and *-nixes.

I remember the good old days to code Interrupts for multitasking.

Friday, October 23, 2009

Who am I

Who am I

I am not a gem waiting to be found.
I am not an island waiting to be discovered.
I am not the hidden one.
I am visible.

I am just a face in the crowd.
I am you.
I am doing my part, nothing more.
But I am the unexpected.

I am the change,
I am the time,
I am existance,
I am the void.

Wednesday, October 07, 2009

Dynamic CV and Job Posting

These days I am thinking on dynamic structures where you can modify highly complex structures (classes) at run time. I am thinking about the design of a "resume" that you can add field(s) and application logic (depending on authorization) to display, hide, search or edit some data. They will rely on some jar or dll files, may be I'll use some DI algorithm. It should be able to read and write to separate databases. Resume (CV) structure is the ideal candidate, because it is quite complex. It has single fields and related tables for relational databases. I should be able to modify its structure without recompiling and have multiple types of resumes. This also might apply to job postings. Then I'll add some sort of campaign management as spice. I'll have my core system. With these in mind, I can do anything!!!

Monday, July 13, 2009

SOLR, Lucene, Java, .Net and Microsoft SQL Server

@ Hurriyet, we finally launched our new search http://arama.hurriyet.com.tr/
It runs perfect.

I am going to tell you about the technology behind it.
After long time of research and evaluation, we finally decided to go with Lucene, which is a Java Library. But the problem was, we needed a solution that supports any technology. Then we come up with a sub-project of Lucene called SOLR. Which is a HTTP gateway for Lucene. This way we could support any kind of technology and use search as a service (SaaS :P).

SOLR is an highly extendable application that runs behind Tomcat. The output results are XML (but can produce JSON, PHP as well). Each search query is a HTTP GET request and each update (including delete) is HTTP POST request. That's it, this was what we needed.

So basically we had two Linux Servers, each running almost same configuartion with Tomcat and SOLR installed on a port other than 80. One is named "Master" the other named "Slave". Master is responsible for collecting data from SQL Server and update the Search Schema. This is a cron-job that runs in every 15 minutes. Only modified records are updated on Master. Master also has the ability to fully import data from scratch (this can be done in 40 minutes). Master creates a snapshot of the archive in every 15 minutes. Slave is the actual box that is queried. All select/search requests go to Slave. It updates its own schema from Master. This way we can increase the number of Slaves and load balance them.

The Search web server asks search requests to the Slave instead of a regular SQL Server. Web server is an ASP.Net application, that's running on Windows IIS and makes HTTP requests Slave, to get XML results. We also created an Application Block with Enterprise Library, so that Search concept is abstracted from the Web Application.

With this design we get the following benefits:
1. Amazingly fast web requests
2. Clever search engine
3. Ability to scale (both on backend and frontend)
4. Failover clustering
5. Highly customizable design

Wednesday, April 08, 2009

Google App Engine to support Java and Amazon announces Elastic Map Reduce

On April 7th, 2009 Google App Engine announced to support Java on this blog
http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html

Although I was happy with Python, now they are also adding Fortran 77 support.

Also they have Eclipse support as well
http://code.google.com/eclipse/

Second thing, Amazon announced Elastic Map Reduce which is based on Hadoop.
http://aws.amazon.com/elasticmapreduce/
Note that Amazon have amazing services for web as well as Google.

I believe, soon the way we program and host our applications is going to change again.

Friday, March 13, 2009

My Linux Adventure

It's been couple of months since I switched my desktop to Linux. On recent days I was working on many open source projects, then I decided why not switch the desktop as well. I think I made a nice choice. One can live with Linux desktop within a Microsoft environment.

I first tried Fedora which was 9 then upgraded to 10, but I've had problems on my laptop. Recently I am using Ubuntu without any problems. It is much easier to install Linux when compared to previous years. There are many Live CD distributions. Just pick one and go with installation.
A Vista installation still stays on my laptop, but I am not using it anymore, I keep it in case of Microsoft emergencies.

I'll blog more on this later.

Monday, October 20, 2008

Mert 3.0

I have upgraded myself. I am jumping to the open-source bandwagon, "finally".

In couple of months (Since last May), I have learned great deal of information about open-source world. Every year, couple of times, I was checking what was going on. I found out that, now it was mature enough and evolving much faster than any other trend.

It all started when I bought my iPhone. I should thank Apple for this product. I found out that it was running on Unix and I could install any program on it (by hacking the phone, but it works, I don't mean any harm). So I first met SSH, for uploading files. Then I've seen Lighttpd and Apache. After that I needed some interpreted language, which I've found Python (not PHP). With these technologies, I needed some server platform, Microsoft was doing fine, but it wasn't meant for these applications, so I've installed Fedora 9 on my laptop.

After a while I didn't need any Microsoft application. Everything was running fine on Linux. So I am running Fedora 9 as primary hardware now.

Mert 1.0 -> Commodore 64
Mert 1.5 -> PC + dBase
Mert 1.6 -> Microsoft + Pascal, C etc
Mert 2.0 -> Microsoft Windows
Mert 2.4 -> Windows + Web
Mert 2.6 -> .Net
Mert 2.7 -> .Net + Agile
Mert 3.0 -> Open Source (*-nix)
Mert 3.x -> Not decided ("Web" for sure, but Java or Python, may be PHP, who knows)

Saturday, May 17, 2008

Enterprise Library 4 finally released

The long waited "Enterprise Library 4" is finally released, you can download it from http://www.codeplex.com/entlib .
The new library introduces "Unity" as a new application block. The library itself also uses "Unity" for dependency injection.

Other than that, there might be minor changes. The library is now ported to Visual Studio 2008. It also now can run in Partial trust mode. I noticed that it is a 30MB download with More than 20MB documentation. The signed binaries are like ~7MBs.

I am using this library for my "MS.Serices" application. Now I am going to port it to the new library and do a lot of testing...

Monday, April 28, 2008

Adobe Flex 3 and AIR - Silverlight???

Finally I have a chance to write about my dream product.
"Adobe Flex Builder 3"
Recently it has been released. With AIR (Adobe Integrated Runtime) support, now Flash is not dependent on browsers and is supported on Apple and Linus as well as Windows.

Flash 9 is compiled, now with Flex 3, Flex Runtime can also be cached on Flash Cache, which means smaller and faster loading SWF files.

Now, I can bind my server-side data on the client in an Object Oriented environment.
I can also have source and version control for my Flex Applications.

In my opinion comparing Silverlight against Flex 3 is not yet possible. While I am a Microsoft oriented developer, I believe Silverlight need more time to catch up with Flex, but I dont think Adobe will wait for Microsoft ;)

I want to use Microsoft on the server and Adobe Flex in the client.
I wonder if there are any people like me?

Tuesday, January 29, 2008

MS.Services 1.1.0 published

I have published the latest release of MS.Services. you can find it here (http://www.codeplex.com/msservices).

The latest release includes more database support (actually it is inherited from the stucture of Enterprise Library) MySql, PostgreSQL and infamous SQLite.

A new executor is introduced; the "SQL Executor" which executes SQL statements, also handles injection attacks. "SQL Validator" and "SQL Shield" are introduced respectively. This support is for directly executing SQL Statements, from a datasource.

Flex and AIR support (ActionScript) is available with MS.zip and .asdl file.

Also "MapFieldsToRecords" property is added to JSON generator. If this value is true, the "RecordSet" Property of JSON output is array of hashtable(Javascript Object) instead of two dimensional array.

I am planning to add generic generator, executor, validator and shield structure which can be added without modification of thoe source, in the next release.

Tuesday, November 27, 2007

"Think"

The most precious, beautiful and powerful ability in the universe is "the ability to THINK".

Because I can think whatever I want and they only belong to me. I can share any of my thoughts the way I want to share. In my thoughts, I can be in heaven or in hell. Some people think the way I do, the others don't.

Someone invented internet with his/her thoughts.

In conclusion, I am what I think.

Wednesday, July 04, 2007

Thursday, June 21, 2007

Turkish toUpperCase function for Javascript

Javascript toUpperCase function for Turkish;

String.prototype.toTrkUppercase = function() {
var str = [];
for(var i = 0; i < this.length; i++) {
var ch = this.charCodeAt(i);
var c = this.charAt(i);
if(ch == 105) str.push('İ');
else if(ch == 305) str.push('I');
else if(ch == 287) str.push('Ğ');
else if(ch == 252) str.push('Ü');
else if(ch == 351) str.push('Ş');
else if(ch == 246) str.push('Ö');
else if(ch == 231) str.push('Ç');
else if(ch >= 97 && ch <= 122)
str.push(c.toUpperCase());
else
str.push(c);
}
return str.join('');
}

////Sample;
//alert("ğüşiöçıĞÜŞİÖÇI".toTrkUpperCase())
////Output: ĞÜŞİÖÇIĞÜŞİÖÇI

String.format function in Javascript

Javascript String Formatting function (just like in C#);


String.format = function() {
if(arguments.length == 0)
return null;
var str = arguments[0];
for(var i=1;i<arguments.length;i++) {
var re = new RegExp('\\{' + (i-1) + '\\}','gm');
str = str.replace(re, arguments[i]);
}
return str;
}
////Sample;
//var a = String.format("{0} {1}", "Hello", "World");
////Output: Hello World