Who is Ali Özgür?

RecentComments

Comment RSS

Yesterday Yalla Apps contacted with me and asked for an interview. The interview  was conducted to get more insight on the WP7 developer community and thier opinions about different platforms.

Below are my answers to the questions of Yalla Apps

Yalla Apps: Are you a Developer or Designer or both? What is your experience level?

Ali Özgür : I'm a software developer. I currently work for Istanbul Bilgi University, one of the largest privately held university in Turkey, as the Platforms and Services Team Manager. I got BS degree in Computer Engineering from Istanbul Technical University and also hold an MBA degree from Istanbul Bilgi University. I'm developing software for more than 10 years. I've spend most of this time developing on Microsoft platforms with Microsoft developer tools. I've started my software development career working on Motorola MCU software. I've developed software with C++, Delphi, C# and ASP.NET MVC during my 10 year career. I worked on military, education, media, document management, OCR, workflow, Windows CE and mobile projects. I've contributed to some open source projects and in the mean time I maintain my own open source project PragmaSQL.

 

Yalla Apps: What gets you started on developing for a certain platform? What are all platforms you develop for?

Ali Özgür : Ecosystem of the platform is very important in my opinion. By ecosystem I mean developer tools, platform APIs and SDKs, programming model of the platform, the quality of the hardware running the platform, market share, general profile of the platform users, nice looking appstore There are also some technical parameters I take into consideration. For example providing a unified programming model to developers for different form factors, having strong DRM (Digital Rights Management) to allow just licensed software are some of the technical parameters. 

I'm developing software for Windows platform as part of my regular job with Microsoft .NET and other Microsoft technologies. Under PragmaTouch (my side project) we develop primarily for Apple iOS. Weare also evaluating Android and WP7 and have some demo apps. Personally I've also developed for Windows CE couple of years ago.

 

Yalla Apps: Would you consider developing for WP7? What you think is missing in WP7 development platform – what is better in others?

Ali Özgür: We are not just considering actually we are actively evaluating WP7 by writing some little demo apps. I think WP7 has a great development platform. First of all you build software for WP7 with the greatest development IDE in the market, in my opinion, which is Visual Studio. You develop with C#, which is the master piece of primarily Anders Hejlsberg and all other great guys at Microsoft. I really love C# as a programming language and when combined with Visual Studio you have the bare minimums to produce a quality software.  WP7 has an emulator not a simulator, the difference is somehow technical but important. As a developer in my opinion others have nothing better than the WP7 development platform. But as a platform for example copy/paste and hardware is better in iOS,

 

Yalla Apps: Do you think WP7 will play a significant role in mobile OS?

Ali Özgür : Yes, I definitely think that WP7 will play a significant role in mobile. Especially the recent Microsoft-Nokia agreement and the success of the partnership will be very important in determining the place of WP7 in mobile market. Nokia is the biggest mobile manufacturer by quantity and has high market shares in developing countries where demand for new technology is increasing every year. Xbox customers will also play important role during this process since Microsoft has great customer base on this platform.

 

Yalla Apps: Do you consider learning new technologies for mobile – which ones?

Ali Özgür : Yes, I consider learning new technologies for mobile. HTML5 is the number one in my personal list.


 


Posted in: .NET Development , IPhone , Mobile  Tags:

Last week or so I had to perform a demo installation of our mobile Moodle web application mTouch-U  on a Windows 2003 Server with IIS 6 installed. I did know that it is possible to install ASP.NET MVC 3 application on IIS 6 but I had no hands on experience on that. As most of the devs who have to perform some sort of server installation I Googled a bit and found some resources. But to be honest none of the resource I've found and tried helped me much. Although most them were arranged as step-by-step guides sure they were missing something. Spending couple of hours with no success I decide to stop being lazy and decided to get my hands on the issue. Here is the steps I performed, I hope this post will not be one of these step-by-step guides missing something as well.    

  • Open the IIS Console
  • Select the Site (possibly Default Site) you will install your ASP.NET MVC 3 application, in our case that is mTouch-U
  • Right click and select New -> Virtual Directory from Context 
  • Specify mTouchU as the alias
  • Give the path to the mTouch-U binaries folder as the 
  • After creating the virtual directory select it and open up the context menu by right clicking. Select  Properties -> ASP.NET Page : Select 4.0... for ASP.NET version
  • In the same properties dialog open up the Virtual Directory Page  and click configure
    • Open up Mappings Page click 
    • Specify c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll as the 
    • Specify .mvc as the 
    • Verbs section specify Limit To : GET, HEAD, POST, 
    • Check "Script engine" 
    • Uncheck "Verify that file exists" 
  • Right click on Web Service Extensions in IIS Manager
  • Click on Allow all web service extensions for specific aplplication
  • In the application combo box see if ASP.NET 4 exists. If not exit this dialog without performin any action, if ASP.NET 4 exists do not follow the following steps
    • Right click on Web Service Extensions in IIS 
    • Click on Add new Web service 
    • Specify ASP.NET 4 as the extension name
    • Click on Add... on the right of Required files list
    • Specify c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll as "Path to file"
    • Check "Set extension status to allowed" click ok
  • Right click on mTouchU application in IIS Manager, select Properties from the context menu
  • Select Custom Errors page
  • Find 403;14 and select the item, then click to Edit button
  • Select URL as the "Message Type"
  • Specify /mtouchu/home.mvc/index as the URL value. When the user enters the base addrress to the broweser (i.e. http://www.domainname.com/m in our case) IIS 6 will automatically redirect the user to the Home controllers Index view.
That is it you will have your ASP.NET MVC 3 application running happily on IIS 6, I hope Smile

 


Posted in: .NET Development , ASp.NET MVC  Tags:

PragmaTouch products mTouch and mTouch+ (native iOS app for Moodle) has an increasing popularity and we get lots of spam emails through our "Contact Us" page. As a result using some sort of CAPTCHA was inevitable although I think CAPTCHA's are not user friendly.

After evaluating some CAPTCHA implementations I decided to integrate reCAPTCHA to our Cuyahoga powered site. Here are the details

More...


Posted in: .NET Development , Cuyahoga  Tags:
aliozgur posted on May 13, 2010 09:11

Intro

I've been recently working on a smart client (WinForms) application backed by Entitiy Framework 4 (EF4) on Visual Studio 2010. In this blog post I will try to give you some tips regarding some limitations and points to be careful about EF4.

Why Entity Framework (EF)?

Through my .NET development career I've used couple of ORM frameworks like NHibernate, LLBLGen and Subsonic. Each framework has some sort of unique approach to ORM. My favourite ORM was, and actually still is, NHibernate. I like the open source nature of NH and the community of NH is very active. LLBLGen was my second popular ORM because the tooling was inplace and entity mappings could be handled easly. Subsonic was minimalist and it was really a joy to develop with Subsonic. But each of these ORM frameworks made me crazy from time to time. To name few of them; configuring NHibernate is really a pain although they have some addins, LLBLGen has some sort of too imperative query constructs and Subsonic is minimalist and sometimes does not fit well while implementing some not so important part (classic %20 part) of a system. Oh I've forgot to mention LinqToSql which was the first shot of Microsoft in the ORM area. I've also used LinqToSql. 

Since EF was first announced I've been watching the progress and keep an eye on the experience of people using early EF versions. My first impression was; stay away until next major release. And that major release seems to be EF4. My answer to the question why EF is

  • EF4 comes as part of  .NET Framework 4. No extra installation needed
  • EF4 is fully integrated with Visual Studio 2010
  • EF4 Model Designer, incorperated in VS 2010 is nearly fantastic
  • With EF4 you can persist POCO's to supported databases easly
  • With EF4 you can generate your entities from your database schema
  • Complex Types are fancy
  • Function exports (stored procedure support) just work like a charm. Paired with complex types this introduces a real power for brown field projects

More...


Posted in: .NET Development , Entity Framework  Tags:

Downloads

Original project is here

Modified binaries: IIS_LogAnalyzer_Bin.rar (360.01 kb)

Patch file : Indihiang_LogAnalyzer_FTPSupport.patch (170.94 kb)

Screen Shots

 

 


 

Note for Vista Users

Modified version creates a TempDir under the application installation folder and downloads files there. Vista does not allow regular user to create directories under Program files so if you install the application under Program Files , right click on the Indihiang.exe, click Properties and check "Run this program as an administrator" option found in Compatibility page.

 


aliozgur posted on August 14, 2009 12:32

For a while I'm trying to align a technology toolset for Web 2.0 development. Recently I decided to go with Microsoft .NET technologies and JQuery.

Here are the tools I'm provisioning to utilize

  • ASP.NET MVC and JQuery
  • ADO.NET Entity Framework
  • WCF
  • May be ADO.NET Data Services and ADO.NET Dynamic Data

aliozgur posted on May 18, 2009 16:46

Why?

Some time ago while I was working on a project, that was a top secret project so can not give more details Smile,  I realized that I've produced some sort of weird code that checks if an interval (Start,Stop integer value pair) intersects with another interval. Right after unit testing and commiting the code I felt like there is something wrong wih me. Here are the details

Nothing Fancy

Here is the code of my Interval structure. There is nothing fancy about this structure it is used to hold two integer values and performs range checking in the constructor to guarantee that start value is always smaller or equal to stop value.

public struct Interval
{
private int _startValue;
public int StartValue
{
get { return _startValue; }
private set { _startValue = value; }
}

private int _stopValue;
public int StopValue
{
get { return _stopValue; }
private set { _stopValue = value; }
}

public Interval(int startValue, int stopValue)
{
if (startValue > stopValue)
throw new TypeInitializationException("Interval",
new Exception("Provided start value is greater than the provided stop value."));

_startValue = startValue;
_stopValue = stopValue;
}

public bool IntersectsWith(Interval interval)
{
//TODO: Check if this intersects with the provided interval
}
}

 

Conventional Way

Conventional way of implementing that IntersectsWith method is to 1) write some if/else blocks or 2) to combine a single return statement  to cover all of the cases illustrated on the following image

My Problem

But somehow I did not choose the conventional implementation and I decided, in fact by reflex, to re-model Interval objects as rectangles with 1px in height , place them on xy coordinate system and check if two rectangles intersect or are tangent to each other. Here is my weird IntersectsWith implementation

 

public bool IntersectsWith(Interval interval)
{
  Rectangle r1 = new Rectangle(StartValue, 0, StopValue - StartValue, 1);
  Rectangle r2 = new Rectangle(interval.StartValue, 0, interval.StopValue - interval.StartValue, 1);

  return r1.IntersectsWith(r2) || (r1.X + r1.Width == r2.X) || (r2.X + r2.Width == r1.X);
}

 

Questions to myself

  • Is this weird implementation is a result of too much analytical thinking?
  • Is this weird implementation is a result of too much abstract modeling I have to do to perform my job well?
  • Shall I see a therapist?
  • Is this weirdness a common pattern among developers?
  • Shall I ask this as an interview question? And what shall I do with people implementing this method like me and not like me?
  • How will my colleagues feel when they have to read my wierd IntersectsWith implementation?
  • Shall I be ashamed of myself? 

Code

WeirdIntersectsWith.rar (23.00 kb)


Posted in: .NET Development , General Programming   Tags:

I'm currently working on some small projects and an enterprise level case study project where I decided to use SubSonic which is a lightweight open source ORM for .NET led by Rob Conery. I can say that SubSonic is really lightweight and is really easy to use, but as might be expected has some minor configuration overhead. SubStage developed by Eric Kemp is a must have if you are using SubSonic, but this tool lacks a very important feature IMHO. All your subsonic related project configuration is kept inside a predefined MasterStore.xml file which means you only have a single file for all your subsonic projects. In this scenario it is not easy/handy to attach your substage configuration to your project source code.

To overcome this problem I modified SubStage source code (built against SubSonic 2.2) and added "Load Master Store" and "Save Master Store As" File menu items. I posted the patch to Eric Kemp but I do not know if the patch will be applied in newer version so I publish both compiled SubStage and the Subversion Patch file.

Downloads

SubStage_2.2_With_MasterStore_LoadSave.rar (1.69 mb)

SubStage_Patch_AliOzgur.patch (242.82 kb)


Posted in: .NET Development , C# , SubSonic  Tags:
aliozgur posted on January 26, 2009 09:11

Based on my previous article Artem Smirnov[^] posted a question about how to test a Repository(DAL) method in a project using Nhibernate as ORM. Here is his question

"I wanted to unit test a similar, but more common, problem: a Repository method. I.e., create a test Order for a particular date, and test that the FetchOrdersByDate method returns this order if the date matches. My guess was that I could just create an Order, attach it to the session without saving it to the database, then somehow stub the database and make NH fetch it from the cache. After doing a lot of search, I discovered that this is impossible, so I had to hit the database for every test. Given that NH looks extremely flexible, i.e., Interfaces everywhere, this is kind of strange.."

Here is my answer

The problem related to testing a Repository method is a very common one and people suggest different solutions to this problem. Here are some of them

* Mock your Repository method by using a Mocking library or by hand. But this suggestion is not valid all of the time. If you have native SQL or use NH Transformers to produce DTO's mocking is not an option.

* Use an in-memory database like SQLite for your tests. But if you have native sql or develop against a legacy database or use part of a legacy database you can not follow this approach

* Take script of your production database and create an empty test database. Run your tests against the test database. This method also have some drawbacks, to name few, tests take longer to run, you have to keep your test database up to date with the live one, you have to deal with some phantom objects not directly managed by your domain ( for example your domain contains Instructor class just for integrity reasons and you do not have code to deal with Instructor instantiation because you do not actually need this piece of function. But somehow you have to create Instructor objects for testing). You can solve the first two problems with Continuous Integration, but the later can be tricky to solve. However this last approach has one big outcome, that is, you will likely have failing tests if something goes wrong with your database.

I personally tend to follow the last approach for NH specific testing and write pure unit tests otherwise. 


Posted in: .NET Development , C# , NHibernate  Tags:
aliozgur posted on January 16, 2009 08:38

Download NHibernate.Caches.Testing.zip (24.75 kb)

Motivation

It has been a long time since the last time I dropped a new entry in my blog. I was very busy with our new project and at last we finished coding and moved to Acceptance Testing phase. That new project was a little bit challenging from architectural point of view. Some challenges to name were

  • We had to develop against a legacy database
  • We had to replace an existing system with a new one, it was a little bit problematic process to introduce some new concepts
  • Our system was designed targeting a small part of the legacy database, hovewer that part was accessed by some external processes/systems bringing some synchronization issues.
  • We placed very strict code coverage and testing goals

In this blog entry I will try to share a very specific problem, writing good tests for NHibernate Level2 caching related functionality, we experienced and how we solved that problem.
More...


Posted in: .NET Development , C# , NHibernate  Tags: