My Notes From Vaughn Vernon’s Implementing Domain Driven Design (IDDD) Workshop

Today I have completed Vaughn Vernon‘s 3-day advanced IDDD Workshop. That was definitely an interesting experience. Designed to be an advanced workshop, it brought some appreciated validation to some of the approaches I prefer to development, complemented my informal knowledge of DDD, and added several new approaches and perspectives to my thought process around creating complex software projects.

In this post I share with you the notes I took during the workshop. This is my and what I captured during attending it, so, it may be useful for as food-for thought only. If you disagree with something in the notes, it’s likely something I have got wrong in the first place. If the notes get you excited about attending the workshop, you may want to check for Vaughn’s upcoming workshops as well.

Read my notes here

A Video of Aaron Powell Presenting IE 11 At Sydney JavaScript UG

I haven’t been able to attend ALT.NET Sydney or SydJS last month,
as I had to follow up some family issues in Egypt on daily basis.
However, Aaron Powell ( @slace) presented at SydJS last month, and was kind enough to
record his talk on his laptop as a screencast and put it online.

The talk is about dev tools in Internet Explorer 11.
Well, yeah, I know, IE! No matter what I or you think about this browser,
we all often have to test against IE and even worse, against older versions of it too.

With compatibility modes and all, I think it’s great if newer IE versions can make
this must-have experience easier, and can prevent IE from being a source of headache.

Watch Aaron showing us how this applies to IE 11

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.

Videos from Sydney JavaScript UG, 17 July 2013

Last month I started a new habit, recording SydJS usergroup videos. Although there are not so many views of these on YouTube, I got a call from a friend who can’t make it to the gathering and thinks the video are useful, so, I’m continuing with them…

Here are the videos for this month’s gathering. Pro-tip: Make sure to switch video quality to 720p for best experience. The video quality button is one of the left buttons next to full-screen button.

Ben Schwarz – Built an application, and will show you what he learnt

On responsive design and other real-world implementations

Don Nguyen – Server Side JavaScript building a game right before your eyes

A Node.JS session by the author of the “Jump Start Node.js” book

John Allsopp – Building an HTML5 security camera LIVE in under 15 minutes

Been amazed by the capabilities available on so many regular laptops today

Maintaining your personal brand online with @TathamOddie – New Video

My new video featuring @TathamOddie on maintaining your personal brand both online and offline is now up…

Tatham Oddie is a well known public figure in Microsoft world as he speaks in so many .NET conferences around the world and is an active contributor to several high profile open source projects like WebFormsMVP.

In this video Mohamed Meligy interviews Tatham on online personal branding and ow you can makes the best out of people you meet in social media and offline groups. Tatham shares his experience on how to make it easy for people to recognize you and communicate with you for both social and business benefits.

Videos from Sydney JavaScript UG, 19 June 2013

Let me put the interesting stuff first, some good videos from SydJS gathering this month:

Pro-tip: Make sure to switch video quality to 720p for best experience. The video quality button is one of the left buttons next to full-screen button.

The videos

WebGL, the Goo Engine, and your Blackberry

I18n – why, how; and where the name came

JavaScript based ERP

Jerkins CI & JavaScript

The future is a promise


My readers know I have been experimenting with video publishing for a while, focusing on simplicity in getting releases out. I started with a simple introduction to the new Angular.JS library, a simple productivity trick for all users, and then a simple and old cross browser CSS trick. In the 3 videos, you saw me explaining stuff. It’s time for something different.

The idea is to record the usergroup sessions I go to. I started with ALT.NET Sydney last month, organized with speakers to use their own recording, then got a bit unfortunate due to technical issue on the machines used.

This month I didn’t have a connection with the speakers to coordinate the recording, so I just took my phone to Sydney JavaScript usergroup (SydJS), sat in the first row, and started recording a separate video for each session.

Due to the nature of the way I used, and being a first timer, you’ll find some issues with the videos like the scene moving up and down a bit, and zooming-in and out or fading a bit. However, the videos are still an OK resource for anyone who missed the event (or doesn’t live in Sydney at all). So, hopefully you like them, and I get to improve the technique next time.

DDD Sydney Is Back – Vote For Sessions & Register Today

It’s this time of the year, and DDD Sydney is taking place again by end of June 2012 :-)
Yes, it’s “the other” DDD …  Developer Developer Developer!

If you don’t remember the way sessions get chosen in DDD is that call for submissions is first open for everybody for a couple of weeks, then the submitted sessions are listed for public voting for similar time (or so). Anyone can choose up to 10 (TEN) sessions that they want to have available if they decide to register for attending the event. Later, most voted sessions are what gets into the event agenda.

The registration is usually open by voting time (now!), although more actively publicized after the vote is closed.

My Session Proposals

Like last year, I have submitted some session proposals for DDD in the hope to get one of them voted most to deliver within the day.

You can see all submissions and vote for the ones that interest you most from here. I have included a copy of my submissions here in case you find the page hard to read (or just zoom-in a bit).


Introducing ASP.NET Web API (Level: 100)

ASP.NET Web API streamlines the development of HTTP services especially for developers with even little ASP.NET MVC knowledge. Being separate from WCF removes a lot of the effort and provides really simple configuration.

This session introduces ASP.NET Web API, and some of the obvious questions about it, starting with what it’s like to develop services with it, what power the service controllers share with and how they differ from any standard ASP.NET MVC controller for routing, filters, model binding, and managing common HTTP request/response aspects.

Then it gets into handling common scenarios like authorization, validation, content negotiation, custom JSON formatting (e.g. for dates), and OData capabilities, as well as showing the differences between hosting your services with ASP.NET hosting vs. self-hosting.

Back to Basics: Understanding Twitter OAuthentication (Level: 300)

Most people who provider Twitter Authentication use managed wrapper libraries around Twitter REST API. Some libraries are better than other libraries in certain areas, where they are more feature complete, faster, or easier to use for specific tasks. If you put some understanding of how the process of communicating with Twitter OAuth (and other APIs) works, and use the libraries with awareness instead of just letting them do their “magic”, this not only allows you to mix and match libraries and usages (like storing the user login in DB for background operations if your app requires this).

This presentation introduces how Twitter OAuth works from a client application perspective, and shows how different popular libraries encapsulate this and you have extra control on the process and storage of your users login tokens and how they can mapped to ASP.NET forms Authentication, and how you can reuse those tokens later with different library or different executable/service having the same application identity.

If you ever got confused trying to understand how Twitter OAuth process is like, or how to troubleshoot common issues with it, or even achieve a related advanced task, this session is for you.

As a sort of bonus, the presentation also shows quickly how to use FormsAuthenticationExtensions NuGet package to store extra information in ASP.NET forms Authentication ticket, as well as an introduction to Twitter XAuth, usually used for mobile (and desktop) apps.

LESS CSS for .NET Develoers (Level: 200)

When a developer writes CSS, they quickly notice the must-have features which CSS does “not” actually have, variables, functions, and calculated operations are most obvious examples. As the web evolves, developers have become more exposed to HTML5, JavaScript, and CSS3 on daily basis. So, they came up with a number of languages that come and fill in the gaps in them. Out of those languages, LESS is the one that looks most just like plain CSS.

LESS provides a number of handy extensions to CSS that developers especially love most. In this session, we go through those features and where they fit for modern web development. We also go through the .NET developer experience working with LESS, from IDE integration (using Visual Studio) to build integration and minification, and some bonus tips for large projects.

Introducing jQuery Plugin Development With jQuery UI (Level: 200)

Developing a JavaScript widget as a jQuery plugin can be tricky when it has to interact with more plugins and complex elements in the same page. The plugin needs to maintain a set of possible states of itself and maybe other plugins used, apply various operations based on different states, and maybe allow the users to call the same plugin to apply different operations applicable to each state. This applies to even the simplest operations like expanding/collapsing a collapsible widget, allowing more plugins to be notified of changes in visibility, etc…

jQuery UI introduces a core component called “Widget Factory” which can make developing flexible JavaScript widgets straight forward, and helps more to get more widgets to work together in complex scenarios.

This session shows how to simple jQuery plugins to use jQuery UI plugin widgets, as well as providing some tips for large applications implementing their components as jQuery widgets, and some bonus tricks around optimizing your jQuery code for better overall page performance.

Call To Action

Now it’s your turn, I again highly suggest you vote for the sessions you like here.

Also, once the announcements are made more widely about the already open registeration, tickets usually fly very quickly, so, to guarantee a ticket to DDD Sydney, you better register early from here (costs A$25).

Hope to see you there :-)

Screencasts from Web Directions What Do You Know Night


Well, let me just share this email with you… *

Hi Mohamed,

You’ll remember a couple of weeks back we hosted the first two What Do You Know nights, one in Melbourne and one in Sydney. On each of these nights there were 10 five minute presentations: all in all 20 local developers and designers taught us what they knew. They were fun nights! The good news is, if you couldn’t be there, we’ve produced "live screencasts" out of each of the presentations – see below for links to all of them.

Win a ticket to Web Directions South 2011

If you’ve got HTML, CSS and JavaScript skillz, you could be on your way to Web Directions South 2011 for free.

BuildMobile are hosting a neat contest – build a button using using HTML, CSS and JavaScript – with the best submission winning a ticket to the conference. Check out the full details here, and start coding now!

McFarlane Prize – 8 days to nominate

Speaking of competitions, don’t forget that the cut off date for submissions for the McFarlane Prize for excellence in Australian web design is next Friday September 23. So if you’ve done some awesome work in the last 12 months and you’d like to see it recognized with this prestigious award, make sure you get your nomination in.

Live screencasts from "What Do You Know"

Optimising HTML Email for Mobile
Ros Hodegkiss snagged first prize in Sydney by telling us why we need to do this, and then showing us how easy it can be.

How to Make Your Life More Awesome With CSS3 Media Queries
We all want our lives to be more awesome, right? Charlie Gleason took first prize in Melbourne by showing us how easy this can be with CSS3 media queries.

Now Try That Blindfolded
Sarah Pulis gave us a 5 minute intro to how WAI-ARIA is making the world a more accessible place for everyone.

Oh Yeah, Bezier
Anson Parker tells us what he has learnt from a lifelong fascination with Bezier curves, *and* what you can do with Canvas.

Designing for Sharing
Martin Tomitsch shows what you can really achieve with personal informatics – who knew that social media could be so much more than obsessively and meaninglessly broadcasting every moment of your life :)

Learn You a Parallax for Great Good
You know that nifty technique where all the elements on the page transition in cool ways as you scroll down – like in that Nike site? Andrew Buntine shows you how it’s done.

Mobile Device API – Now With Added Fun
Hinting at a major theme of Web Directions South this year, Andrew Fisher really shows us how to think beyond browsers running on computers when we think of designing for the web.

Understanding behaviour focussed design
Jodie Moule gave us a great introduction to behaviour focussed design with these few simple rules.

newton.js: box2d + Raphael
Dmitry Baranovskiy, the genius behind Raphael, shows how easy it is to recreate Angry Birds with web technologies. Contains the classic quote "Why is pig still alive?" :)

Daniel Heath shows us how to run a jasmine test suite 14x faster than Firefox

Building Apps with Compass
Ben Schwarz shows us how it’s done.

Beautiful and Accessible Interactives with HTML and CSS3
Max Wheeler and the guys at Icelab are the masters of this – here’s what they do.

Adaptive Page Layouts in Post IE7 Heaven
Sean Curtis dreams of an adaptive future.

Stop helping your users – help yourself
Tatham Oddie has a few simple serverside techniques that will make your life easier as a developer.

Creating a Live infographic
Pete Ottery demos how the WhistleOut site aggregates mobile phone plan data and creates on the fly infographics to help you make a good choice.

How To Make a Map That Doesn’t Suck
Stephen Lead shows us how they built the Atlas of NSW site

All Up In Your Grill With Modernizr
Ryan Seddon takes you through the ins and outs of this awesome library.

Chrome Extensions
William Parry shows us how to bend the web to our will

Tom Museth shows us this simple trick for making dropdown menus more intuitive.

Uber Ninja Coding
Moin Zaman has some awesome secret techniques that will help you to stop wearing out your keyboard, not to mention your fingers.

That’s it for this week, enjoy, stay in touch, and see you round somewhere soon I hope!


Maxine and John

Have fun watching them Smile


* Oh yeah, and follow @webdirections for more stuff like this

On DotNetArabi Podcast Again! Talking about Version Control Systems (In Arabic)

وصف الحلقة من دوت نت عربي:

الحلقة 21: محمد مليجي يتكلم عن برامج التحكم بالمصدر الموزعة
Distributed Source Control

يتكلم محمد مليجي عن حلول البرمجيات المستخدمة للتحكم بالشيفرة، و بالأخص منها الحلول الموزعة مثل جيت Git، و ميركيوريال Mercurial، ذكر محاسنها و عيوبها، و متى تستخدم. ،كما ذكر بعض النصائح المتعلقة بها و كيفية التعامل معها بالشكل الأنجح

تنزيل الحلقة: MP3 ,ZIP


So, for my Arab friends, the last episode of DotNetArabi  (which -as the name suggests- is a .NET focused podcast, a bit close in style to HanselMinutes and DotNetRocks, but in Arabic) has been released, and it’s featuring me, talking about Version Control Systems.

I have been on DotNetArabi back in 2009 talking about ORMs. In the new episode (recorded June 11, 2011), I discuss the current options of Source/Versioning Control Systems (VCS). Starting with classic ones like TFS/SVN to the Distributed Version Control (DVCS) ones like Git/Hg. Sharing some stories of myself and others working with various options, and giving some tips and tricks around not only choosing a VCS but facing some tough situations in branching and even work-politics (yeah) when it comes to using those.


Podcast Link:

Direct Download:



نادرا ما أكتب في مدونتي بالعربية، و إن كنت أستخدمها كثيرا على تويتر و فيسبوك. وبطبيعة الحال أكثر أصدقائي من مصر و دول عربية مختلفة، لذا سعدت لاستضافتي في دوت نت عربي منذ حوالي شهرين. وهي المرة الثانية بالنسبة لي إذ كانت الأولى في 2009 وتحدثت عن الـ Object Relational Mappers و نقل المعلومات بين قواعد البيانات و بين الكود.

الحلقة الثانية نشرت هذا الأسبوع، و فيها أتحدث مع عماد العشي عن الـ Source/Version Control Systems أو برامج الحفظ على الملفات و ترتيب النسخ و تبادلها (نعم، أتفهم أنكم تعرفون المصطلح الانجليزي أكثر)، أتكلم عن الخيارات المتاحة التي نعرفها جميعا ثم ننتقل في الحديث للنظم الموزعة Distributed Version Control و الفرق بينها و بين النظم المركزية التي نستخدمها جميعا، و ألقي بدلوي و ما فيه من قصص مع أنزمة مختلفة (لي و لغيري)، و بعض وجهات النظر في استخدام كل نوع.


أرجو أن لا تكون الحلقة مملة بالنسبة لكم، و أن تكون دردشة مناسبة لرحلة بالباص أو السيارة أو القطار مثلا لئلا أضيع لكم وقتكم.. رابط الحلقة:

للتحميل مباشرة:

#DDDSydney 2011 Razor Session: Slides & Demo Code

Thanks a lot everybody who attended my Razor session in DeveloperDeveloperDeveloper Sydney 2011. It was pretty exciting not just as my first time speaking in Australia (usually I do talks in Egypt), but even loving to attend all the other sessions as well, It was real fun!

I have enjoyed all the sessions I attended. The great talks with different people before and after my session all way long to city afterwards were priceless too.  You guys all rock!


Presentation Slides

You can watch the PowerPoint slides here or on SlideShare:

Code / Demos:

I have uploaded all the demo code (and the PowerPoint file) to Github so that you can clone, fork, or download it easily.


You can check the code on:

If you prefer a direct download link (zip).


Thanks again and hope to meet you all in future events.