Videos from ALT.NET Sydney Usergroup, 30 July 2013

Continuing my experiments of recording the few events I attend in Sydney using a simple Galaxy S4 phone, this time I’m posting videos from Sydney ALT.NET usergroup gathering in July.

Of course if you are interested in all the videos I put online, including a few tutorials I have created myself instead of just recording, check out my channel on YouTube.

Now to the videos…

Applications of the Reactive Extensions framework

By Niall Connaughton, @nconnaughton on twitter

Moving to HTTPS

By James Crisp, @jtcrisp on twitter

Final Note

Please let me know if you find these videos useful. I may not be able to do much about the quality in the short term, so, it’s worth knowing if the videos as-is are helping, or I need to pause until I get better tooling than just my phone camera and a simple webcam.

So, check out all the videos on YouTube, leave comments ion them, and let me know the topics that interest you, which may in the future turn into tutorials I create myself, or suggestions to ask usergroup leaders to look for presenters to talk about.

Python, Ruby, or PHP? (My Take On Answering The Question)

A friend I know has been developing desktop applications with .NET for quite long time. He wanted to improve himself even more by going out of his comfort zone learning more stuff he’s not familiar with. So, he spent some time learning client side web technologies and wanted to add some “non” .NET server technologies to the mix. He emailed me asking for recommendations on what to learn,: “Ruby, Python, or PHP ?”.


After sending the answer, as with other previous emails, I thought maybe I’d share it with you here.


Let’s start with Python, since it’s the language I know least about (take that as a disclaimer against everything I claim about it next). Note that Python also has similar options to Ruby (maybe even earlier than Ruby had for some of them) even the MVC application frameworks (like django), but they aren’t booming as much as, say, Ruby..

Python’s real power is that it’s one of the old languages with great standard library doing networking and several pieces of functionality, in a way closer to C++ than it is to .NET or Java. I think also it’s runtime is historically has better performance and wider platform support than, Ruby.

I’d argue though that those benefits are usually less important in the web world, where you worry about web specific features (templates, personalization, AJAX support, etc…), than library features really, and only have a known set options for the platform hosting the web app/.


Here Ruby comes to play, with similarly old-enough-to-be-mature age, more web friendly (ex: white-spaces significance is optional), and generally getting a sense of dynamic features with C#/Java familiar syntax as "option" syntax style (rarely used). The ease of catching calls to non-existent members by one handler (method_missing or something) inspired a lot of nice syntax APIs.


The key attraction around Ruby world is not Rails. It’s actually Ruby gem, the "package manager" inspiration for NuGet and alike.This made sharing Ruby libraries and frameworks really easy, like other scripting languages, they allow you to extend the console features as well and add commands that perform repetitive tasks and code generations and so, which is an area .NET capability is still lacking much in.


Another killer thing about Ruby is the integrated eco-system. People would be using Git, github, Ruby, Ruby Gem, Rails, MongoDb, SASS (for CSS), CoffeeScript (for JavaScript), Heroku (cloud hosting),… and al of them have a specific workflow (or series or workflows) that make development much easier. This is also one main area in addition to console extensions that you’ll be blown away with.


Obviously, most people working with Ruby use Rails, the MVC framework for it, which has its own common workflows using specific options for ORM, mails, and other common tasks. It’s the opposite of .NET where we care about multiple options, they "do" have multiple options, but they care about the awesomeness of the experience with the option they choose rather than the ability to replace this option in the future. Quite another mindset shifting.


I’d suggest you don’t start with Rails. Start with Sinatra instead. Sinatra is like a basic web framework that just handles routes and templated views and few other things. People loved it for its simplicity and a lot of people build proof of concept and prototype startup ideas using it, especially when things don’t involve DB, or a lot of DB work. It’ll also introduce you to the way you depend on scripting a lot to perform various tasks in development.


Don’t get too deep into Sinatra, once you get to the point you think you understand its pieces well, move on to the next level, Rails (next in terms of number of features built-in, not in terms of better). Build something with it, usually people choose to create To-Do list or a Blog as those are the hello-world apps in web world, right? Try to discover which gems most Rails developers use most and really teach yourself to follow the workflow most tutorials and users will suggest. Expect a lot of "you are doing it wrong" times :)


A note on PHP: The reason PHP is still strong and won’t die any time soon is the amount of awesome web apps built with it over the years. WordPress, Drupal are the obvious names, but hey, the examples are uncountable. PHP has been trying to adopt to recent trends and copy features from other languages (like everybody else do), but I think it’s just causing it to lose it’s original power, which is being a simple lightweight language.

Modern PHP developers have created their own common workflows as well and those moved beyond going MySQL-PHP to REST and MVC framework and more, but the workflow for something like Ruby feels more "natural" rather than "addition" and hence makes more sense the more you apply it in your coding practices.


Another option you haven’t mentioned is NodeJS, or server-side JavaScript.A lot of people who do Ruby for long time mix bits of other languages in their workflows, like Scala and Clojure and others. So, being used to this, many Ruby guys actually turned to become NodeJS guys.

They copied the usual workflows pieces to their usage of Node, like git, and NPM (the Node equivalent of Gem or NuGet), and even equivalents of Sinatra (which is almost standard, called ExpressJS) and Rails (various options). Some mix it with CoffeeScript and DB tools (although JavaScript doesn’t have special features to create ORMs like Ruby method_missing and mixins), and it’s quite booming recently.


It’s also a good time to consider it since Windows support just recently became good enough to use (earlier it didn’t have NPM support for example, which is like Ruby without gem, pure key piece of the workflow missing and making the platform pretty much useless).


I think Node will bring you some of Ruby workflows via ExpressJS and brothers, and make you more fluent in JS (which is becoming THE universal language of the web), and blow your mind in the special way it handles creating the web app (although ExpressJS makes it more like just handling routes in ASP.NET MVC or Sinatra).


So, I’d go for long term spending on Ruby then Rails (going a b it of Sinatra), or do some plain Node stuff for a while and then start learning ExpressJS. Whatever you do, keep an eye on what’s usually called "workflow" in these areas, which is like "best practices" in our own terms. Whenever you do something and it feels harder than it should, it’s likely because you are not following another piece that makes it easier for other people who do both.

On Selenium, Or, My Choice of Automated UI Testing Frameworks

This morning I got a nice little email from a dear Egyptian friend, Ebeid Soliman (@ebeid_soliman) asking the following:

I know this may be something answered by google, but I trust your opinion.
What is the best free automated UI testing framework/tool you used ? or know ?

I actually already have a long draft on the subject showing the framework I use, and how to get basic stuff working on it, since this one is not yet complete, let me for now share my reply to him with you, as raw as possible …

(I have added some titles to make the long reply more readable)

The Reply


Choosing a framework

Look, I haven’t tried many. Only Watin and Selenium, and even Watin didn’t dig it enough.

The people around me all seem to be using Selenium. This is not only the story though…

Selenium is meant to be cross-browser, while Watin is more of an IE thingy. You should be able to just swap a line of code to change the browser. In reality Selenium works best with Firefox. But this is usually not a problem because usually you don’t use those frameworks to confirm visual look (like screenshots and pixel-by-pixel comparison) or even cross-browser stuff. Usually you use them to ensure on the long run that the system “still” works the way it’s supposed to, the more you develop features and introduce changes, to make sure those didn’t break existing flows (for example, the presence of menu items, going to product page and completing an order, signing up, etc..).


The State of Selenium

Selenium has two current versions, version 1.x, depends on JavaScript interop to the browser. It has a “server” kind of thing (Called Remote Control, RC), that communicates to some Firefox Window it opens, and this window opens another window for running your site, and because it is a child window, the RC browser window controls it via JAvaScript to perform operations (like clicking, going to certain URL), and queries (like checking for existence or value of some HTML element) via JavaScript.

This version is more solid, has so many features, so much coupled with Firefox, runs on Java, but is no-longer in active development.

The more current version of Selenium is called Selenium WebDriver, or Selenium 2.0. This version is meant to be more cross-browser thingy (I have had few issues in minor tries with Chrome), and much faster (official word is 4x in Firefox, although speed doesn’t really matter usually, because you make explicit slowness anyway to simulate user thinking and wait for pages to load, etc..). It uses browser native interfaces to run the tests instead of JavaScript. And you can download it as a Nuget package (not sure whether it still depends on Java).

The problem with this version is that it’s still not as feature-rich as the previous one, you can easily run into limitations and things you can’t do straight forward as in previous version. They try to release new versions very quickly (I think few weeks, like 2 or 4, can’t remember), so, it sure is going to rock, but it’s not still there quite yet.


Real World Requirements

Both of them allow you to run one central server that communicates to client machines if you want for example this server to run your tests in parallel on multiple test machines. At the current customer we have this triggered from a CI server (Cruise) which uses the Selenium library to call the Selenium Grid (Server) and then Selenium (1.3 I guess) connects to client test machines to run our tests. Of course running tests in parallel without affecting each other is another story on its own that is hard to get right as well.

So, we have hundreds of tests (now over 1000)  running on Selenium 1.x with custom stuff (like for example an extension to allow using jQuery selectors to select elements, and custom code to overcome its JS nature to be able to reference the actual site window object instead of the wrong Selenium window itself), but I also know of another colleagues at another client getting good experience with Selenium 2.0 WebDriver. They also found some nice stuff from the community, and, they also wrote their own custom hacks to overcome some of its gotchas.



So, UI automation is not exactly nice or straight when you start doing real stuff (for small tries, you’ll be super amazed, it feels like magic to see the browser windows spin up and click themselves and go the boring steps to re-run some scenario! Generally speaking the least evil is Selenium, because it has the biggest community support, hence google-ability if you may (finding solutions created by others easier and get more stuff done). Although Selenium 2.0 is not as robust as Selenium 1.x, if you are going to use it for a new project, obviously not using Selenium 2.0 will be simply adding technical debt to your test code base, so, go with Selenium 2.0 and see how the journey feels for you, starting by exploring the Nuget packages available for it of course (Just search for Selenium and read package descriptions).

And I am always available if you hit something with it maybe I can help :)


More on Selenium

Since it was the main mention, you can learn more about Selenium from:

Hopefully I review my old draft and see what from it I can add here or make another “code-full” post from. The best help you can give me to do this faster is trying to learn about it, and throwing me some questions that can later turn into blog posts here. There are a lot of posts in this blog that couldn’t have existed without my friends throwing challenges and various queries in my inbox!

#MvcConf 2 – Call For Speakers


Assuming some of you have attended live or watched the recordings for the past MVCConf conference. It’s a virtual conference concerned (as the name tells) about everything related to Web MVC Frameworks in .NET (ASP.NET MVC, FubuMVC, Spark, …).

Videos from the previous MvcConf event can be found at: and

MvcConf 2

They plan to have a second event after the great success of the first one. And they started a call-for speakers. See:

Quoting Details


Tuesday Feb 1st 8AM – 5PM CST




Check back 1/17

Call For Speakers

If you would like to speak at this years conference. Fill out the Speaker Proposal form.

An Awesome Conference

MvcConf is a virtual conference focused on one thing: writing awesome applications on top of the ASP.Net MVC framework. Your brain will explode from taking in so much hard core technical sessions. Sounds fun eh?

This is a community event and we want the best and brightest sharing what they know.

We intend to record each session and make them available online for viewing. We intend to make the videos available free of charge, depending on conference sponsorships.

Giving Back

Keeping this conference a community event is important. We are donating a portion of the proceeds from the event to the jQuery project.


Speaker proposal from can be found at:

MVCConf, An Online ASP.NET MVC Conference Coming Tomorrow


Another internal company email I sent today and found useful enough to share in the wild (after few modifications)…

Hey all,

There is an online conference (streamed over the Internet, you don’t have to go to physical place) tomorrow called MVCConf; in addition to the MVC in the name it’s related to so many .NET and SQL and jQuery related stuff.


You may want to attend as many sessions as you can.


The conference is going to be TOMORROW  July 22 from 8 AM to 5 PM CDT (that means UTC – 5 time, considering Abu Dhabi is UTC + 4, the mentioned time is 9 hours late than Abu Dhabi, so, 8 AM CDT  = 5 PM  for us, 5 PM CDT = 2 AM for us).


Of course you do not have to attend all the sessions. Actually you cannot, because they have 3 parallel tracks. (3 sessions at a time).

The conference is streamed over Microsoft Live Meeting.


Register from:


See you online :)

Let me add here that the conference agenda can be found at:


The conference sessions are planned to be recorded. I hope they manage to do it.


Being in Abu Dhabi, 5 PM to 2 AM sound perfect to me. I hope I haven’t ruined up the calculations.


Note For Egypt

For Egypt, I think that means 4 PM to 1 AM. Most developers in Egypt won’t make it before 6 – 7 PM I believe, but then you can watch the rest (most) coming after that!

Just Noticed GitHub DOES Support SubVersion/SVN [Not only Git]

The SVN News

Today I was hanging around GitHub when realized a relatively old news, dated to April 1, 2010, saying they do support SVN.

Announcing SVN Support

Yes, it’s April Fools day. Very funny date to announce anything serious as they admit themselves in an update to the news post, but it DOES work.

Use the same Git clone HTTP URL, just add “svn.” between “http://” and “”:[user]/[repository]

It even allows you to write changes back to the repository, as announced in the more recent news post, dated May 4, 2010, check it out for the “cavets” (known issues):

Subversion Write Support

That uses the same URL but with HTTPS:[user]/[repository]

This should work best when you want to get some project for read-only access or very few commits from your side, when this project has a very long history you are not really interested in. Of course you wouldn’t want to use that if you are leading (or a main committer to) a project hosted at GitHub.

Background, Me and Git (Safe To Skip)

I have been playing with Distributed Version Control Systems (D-VCS) lately, not because it’s fun (it is), but mainly because many open source libraries I’m a fan of have converted from SVN to Git, most of them hosted at GitHub.

Although I feel geeky when dealing with Git (nice feeling), having to deal with its tooling was a bit unpleasant (I’m not against Console, but given there are alternatives with good GUI in other VCS, it felt bad), and having to get entire version history not last updates only for some projects with very big history was quite slow and bandwidth hungry thing.

I discovered the “-depth” switch in git clone command which allows getting last updates by checking TortoiseGit UI, but it still doesn’t play nice with pulling more recent changes after this. Best way is to drop what you have and re-clone the entire working copy.  This is bad not only for speed but also it removes some changes I usually need to do (and keep, those I mention at the end of the post).

Also tried TortoiseHg git and SVN modules thinking ti’s a better tooling, but I found that it doesn’t play nice with them also (the details aren’t at the top of my head right now).

What I’m Using It For

So, this news is very nice for me. That allows me to do the exact thing I needed. Get last version, modify local changes I’m not interested in merging with main project (like using key file with some VS project, or upgrading entire VS Solution version from VS2008 to VS2010, etc), update later when some remote changes happen, and get those merged with my stuff.

The clear example for this is NHibernate (hosted on SVN but I hear in uNHAddin mailing list there are early plans to convert to Mercurial). It allows me to do exactly that, and I was willing to do the same with FluentNHibenrate (hosted at GitHub). Now I can, YAY :)

Using Different VCS Clients?

To make it clear, this is not to get rid of Git completely, I think I need to get involved in it more. I used to like Mercurial more, but seems with time I’m getting into this git thing.

It’s nice there are many VCSes to choose from in general, but not nice that you cannot choose only one for yourself. Seriously hate the fact that I have to use different VCS clients at the same time, especially when that depends on what VCS the project uses, not what I happen to prefer.

Now CodePkex, GoogleCode, GitHub support SVN. That’s good for me. Will try to stay there as long as possible. TortoiseHg supports Git/SVN also via plugins, but I won’t stick to that as it’s not as great tooling as I need and extensions don’t always work right for different tasks.

Which ORM? LINQ To SQL, Entity Framework? LLBLGen? NHibernate?…?

While I was planning to write about the same topic and have the draft ready in my Windows Live Writer waiting to complete, I found an interesting question in StackOVerflow and couldn’t just resist to answer:

ORM/Persistence layer AdviceORM

The question starts with:

I’m starting a new project and I’m looking around for either a very good ORM or for a non-SQL-based persistence layer.

Then follows up with a REALLY GOOD summary of what he believes about each known ORM he knew out of his own findings and search. I advice you to go read it.

However, all this investigation didn’t get him to a single choice answer. And I can’t blame him. This is one fo the questions that will remain for so long without a single answer, or maybe having the popular “It depends” answer.

I have had a LONG research in this topic as well. I have read for so long (and watched videos/casts) to make sure of the best usage of many ORMs and then used them sometimes in test projects sometimes in production, and I wanted to share my thoughts based on this. I posted a long answer there on the question in StackOverflow, and I want to share this answer with you here. I may also have a second part of this post based on my existing Windows Live Writer draft, but, based on my previous times, I think I won’t!

Let me first quote some parts from the question itself:

I also want to avoid at all cost having to mess with string-based queries so tools supporting LINQ or otherwise intuitive and possibly strongly typed queries get a big bonus.
Finally working with POCO objects is another thing I’d really want to do
Here’s a list of products I’ve evaluated and why they don’t fit, just so that I don’t see any advice about using those:

  • NHibernate: crazy xml stuff, too much set up, high maintenance complexity and cost for model changes, session factories are messy and don’t fit well with my needs
  • Castle ActiveRecord: NHibernate based, little documentation plus some problems related to NHibernate still apply. Furthermore, to get decent models it takes so many attributes that one is better off creating the schema manually, and the way relations are handled is a shame.
  • Linq To SQL: missing POCO objects and according to MS it won’t improve much overtime (EF is what they’re committed to)
  • Entity Framweork: although in v4 POCO objects are possible, they’re still pretty hacky and force you into doing too much manual work to set things up. Besides, v4 is just a beta
  • LLBLGen Pro: good, especially with SelfServicing adapters, but not POCO. Also, the LINQ provider isn’t perfect yet. Finally, deleting a group of objects is not possible via LINQ which results in mixing APIs (one of which is far from intuitive) and that I don’t like.
  • SubSonic SimpleRepository: for a few minutes I thought I was dreaming. The deam came to an end as I figured out how the thing didn’t handle relationships
  • Here was my answer:

    If you can afford LLBLGen license, go for it.

    I seriously don’t like LINQ query-syntax the more I work with it (although I LOVE the language features related to it like Extension Methods and Expression Trees).

    I loved it at first like everybody else, but being uncertain whether [[ where employee.Name.StartsWith(“John Smit”) ]] in that XYZ LINQ provider will be done in SQL statement or in LINQ to Objects (after the SQL returns all results), and whether [[ user.Roles.Contains(role) ]] will at all work or not is a big step behind.

    LLBLGen can make deleting all items without loading them as easy as

    <code>MyEntityCollection.DeleteAll( new MyEntity {Condition = value} );</code>

    This is pretty simple and I like it. You get lazy loading and you set eager/deep loading by default and/or per query using Prefetch API. You can compose and construct dynamically (and easily) any filter/sort/loading at infinite levels. It’s very nice.

    There are only two problems about LLBLGen: first, it’s price not all companies would love to pay especially given the hype Microsoft alternatives have. Second, the naming convention although standard in RDBMS theories) like PredicateFactory instead of “where” or “filter” and Prefetch instead of deep loading and even SortExpression instead of orderby, those all are a little scary to a developer working with it for the first times, but soon you learn to love them, given the power and ease they give. There are talks about POCO support in LLBLGen 3.0. I cannot tell about it because I don’t know.

    Now given I no longer work in a company that uses LLBLGen, the company uses LINQ to SQL mainly because it’s “proven” in so many projects without big failures (unlike EF 1, which is lacking even LINQ features in LINQ to SQL and has very bad performance and can be quite limiting in advanced mapping – which it should have been best for!). This website StackOVerflow itself runs on top of it!!! I used both in this company (EF after L2S) and hated both. The decision for new projects remained LINQ to SQL, and doing all we can to overcome it’s limitations. You can work around it to do SEMI-POCO (you still need to use some L2S related types when it comes to associations).

    I also do some small projects at home. Since I nolonger have LLBLGen license, I decided to learn NHibernate and use it along with Fluent NHibernate and LINQ To NHibernate. I have learned through this that NHibernate is VERY strong. It changed how I work by some features like updating DB schema automatically (I never touched the DB almost when using it). LINQ provider (in NHibernate Contrib project) is quite lacking sometimes but there is the unreleased source code of NHibernate itself contains a better LINQ provider (haven’t tried it yet). The “Session” in NHibernate has problems when you are doing web development similar to those related to DataContext in L2S or ObjectContext in EF (LLBLGen doesn’t suffer from those thanks to self tracking entities).

    The biggest problems I had with NHibernate though was ability to find information. Too many pieces that should be put together in certain way and not much guidance can include advanced information for both mapping and querying. If not I had a friend (Tuna Toksoz , @tehlike on twitter) who happended to be a committer in NHibernate project source code, I’d really be in serious trouble.

    The moral I learned was: If you want something that just works and a bit basic use Linq To Sql or SubSonic, if you want something in the middle and your production environment can afford BETA .NET version (given golive exists) use Entity Framework 4.0, if you want something very powerful and can afford the hard learning process go to NHibernate, AND, BEST OF ALL, if you can afford LLBLGen, USE IT.

    Let me know your own thoughts on the topic.

    Using EQUATEC FREE .NET Profiler with ASP.NET Applications

    This was originally an email I sent to .NET team in my company, then decided to share as a blog post.

    The problem:

    • Let’s say you have a complex application, and this application (or part of it) runs very slowly. No bug s in results, no errors or exceptions, but it just so slow! Now you want to know which part of your code is the reason, which method(s) you need to go and modify., which methods take so long to execute or consume so much memory/CPU. How would you know that?
    • Let’s say you want to improve the performance of your application in general (say add caching or such), so, you want to identify which parts of your code deserve your attention and will really make difference (so that you don’t waste your time on optimizing something that will not have big effect in performance), for  example, you might want to identify which methods are called more than others from different parts of your code. How would you do that?

    How to solve it, or, what is a profiler (v. short):

    It is an application that you can run along with your own program. It’ll track all method calls and how any method call other method and most importantly how long each method call will take, and how it consumes resources.


    There are many .NET profilers out there.


    So, what about EQATEC:

    Quoting from homepage:

    Spot slow code

    Are you a .NET developer? Would you like your application to run faster? Then use our free profiler to spot you app’s slow code.

    Point and go

    No source code changes are needed. Just point the profiler to your app, run the modified code, and get a visual report.

    Speedup any .NET app

    As the only code profiler in the world, our profiler can even handle Compact Framework applications.




    clip_image001 C#

    clip_image001[1] VB.NET

    clip_image001[2] Managed C++

    clip_image001[3] F#

    clip_image002 C or C++

    clip_image002[1] Java

    clip_image001[4] .NET 3.5

    clip_image001[5] .NET 3.0

    clip_image001[6] .NET 2.0

    clip_image001[7] .NET CF 3.5

    clip_image001[8] .NET CF 2.0

    clip_image002[2] .NET 1.1

    clip_image001[9] WinXP, Vista

    clip_image001[10] Windows Mobile

    clip_image001[11] Windows CE

    clip_image001[12] XP embedded

    clip_image001[13] PocketPC, PDA

    clip_image002[3] Linux

    To use it with ASP.NET application, all you need to is:

    • to put the path of the “bin” folder of your website as “App Path” (no need for source code or debug files), then it shows a list of all assemblies in it so you choose the DLL(s) you want to profile, and click “Build” at the right corner of the screen:
    • Click “Open output folder” on the bottom left corner, copy the DLLs from there to your website “bin” folder
      • Alternatively you can click “App Options” and set the output folder to “$(AppDir)” so that the generated files replace the old one
      • You need to repeat these previous steps if you build the website again using Visual Studio
    • run the website and start using it for a while
    • go to EQUATEC “Run” tab and click “Take Snapshot
    • go to the “View” tab and start reading the results

    It might be important also to spot the limitations:

    Known limitations

    This is a list of known limitations and problems in version 2.0.

    • Blocking methods, such as Read(), will be counted as the total time, including the time the thread spends being descheduled and waiting for the call to complete. For now, you will have to recognize and judge situations like this manually.
    • No debug information is available for the profiled assemblies. It means that you cannot debug the profiled versions – but you would probably not like to do that, anyway.
    • No Visual Studio integration yet. We are looking into providing an add-in that will make it even easier to enable profiling your solution’s assembly files.
    • No full method signature is displayed yet. So if you have several overloaded methods by the same name, or use generic methods, you cannot easily distinguish them as their signature (the method’s parameter list) is not displayed anywhere.
    • Only defined methods are currently profiled, not referenced ones. So all the methods that your application itself defines will be profiled, but not System.* etc.

    I hope this is useful for some of you as it was a real saver at times to me. Thank you very much!

    Listen to me talking about ORM in Arabic – DotNetArabi Podcast

    Emad Ashi (@splashup on twitter) interviewed me in the 5th episode of his first Arabic podcast series DotNetArabi to talk about Object Relational Mapping in .NET in Arabic.
    السلام عليكم
    أصدقائي العرب ممن يتابعون هذه المدونة.. يسعدني أن أعلن عن أول حديث لي على الانترنت – و كذلك أول حديث لي على الانترنت بالعربية، عن الـ Object Relational Mappers – ORMs
    شكرا جزيلا لـ “عماد العشي” (splashup@ على تويتر) على استضافته لي في موقع “دوت نت عربي DotNetArabi”، و هو موقع عربي يتضمن لقاءات صوتية مع العديد من المطورين في مجال الدوت نت، تماما على غرار DotNetRocks ، HanselMinutes و سواها، و هو في حد ذاته فخر لي أن أكون ضيفا للحلقة الخامسة في برنامج كهذا، خاصة عندما يكون ضيف أولى الحلقات هو عمر قعدان (omarq@ على تويتر).

    الحلقة 5: محمد مليجي يتكلم عن الـ ORM (Object Relational Mapping)

    وصف الحلقة من دوت نت عربي:
    محمد مليجي تكلم عن الـ ORM (Object Relational Mapping) و هي برامج مساعدة تستطيع من خلالها نقل المعلومات و تحويلها من طبيعة قاعدة البيانات إلى طبيعة البرامج المبنية بأسلوب الـ Object Oriented. حلقة غنية بالتفاصيل و المعلومات القيمة جدا.
    Listen to the episode now (in Arabic):
    الشكر خاص جدا لعماد الذي أتى لي في وقت قل فيه اتصالي بمجتمع المطورين في مصر، و اقتصر نشاطي في مجتمع المطورين بصفة عامة على بعض المحاضرات خارج نطاق الالتزامات الرسمية في شركتي الحالية، و مشاركات قليلة في المنتديات و المجموعات البريدية خاصة ALT.NET و مدونتي هذه، (و هو ما يقل مع الوقت) و متابعة أخبار المجتمعات العربية على تويتر كـ Mohamed_Meligy@ و على Google Reader.

    Related Links: