7/7/7

No, this is not a codename for some futuristic software release. And it doesnt equal 0.14285...Close the Windows Calculator, will you? Just read on...

7/7/7 is the date over 400 people, ranging from students to professionals, left their cosy beds in the early morning on a Saturday weekend, that they usually spent relaxing from their Geekhood life to an event that will awaken their inner geek.

After all, who would miss an event that talks about the latest technology? New CTPs and Betas that will be released by Microsoft in the near future. New stuff that will literally change the future of how we write and develop applications, and what those applications will offer to the end user.

Silverkey really hit the jackpot that day with the broad topics offered in the sessions. There was a topic for everyone. Actually, most people complained that all topics were too good that they couldn't choose what to miss! Thankfully, all sessions were recorded and will be released soon on Google Videos.

The event showed how agile and dynamic Silverkey is. Egypt, IMHO, lacks this kind of business model which seeks to be truly on the cutting edge, and showing the rest of the world the bleeding part. Silverkey takes this model for granted to the extend that are eager to lead the way for other companies by sharing what they know, not on a personal level through their employee's blogs or so, but on an enterprise level through this event. This explains, to people with some doubt, why the event wasn't affiliated with or funded by Microsoft Egypt in any way.

Their target is to hold SKDD every 6 months. If you think that this period is very small, compare the topics offered in the SKDD1 to those in SKDD2. Technologies that were 6 weeks old had a whole session in SKDD2 (see Microsoft Jaspser session).

If you missed SKDD2, you can (besides cursing yourself for missing an awesome event) download the slides, codes and video sessions a week from now on DemoDay's website. (links and details will be posted here as soon as they are released isa).

 

8:45AM BEEP...BEEP...BEEP...

I slept around 4:30AM (5 hours before the event) because I had some Python task on my to do list and my brother challenged me for another Mario Strikers game on the Wii and I couldnt say no to him :)

Although I am very known to love and worship sleeping, I instantly woke up on the alarm's beeps @8:45am thinking of what I will miss if I didn't attend.

And although I am aware of most of the topics that will be discussed, missing a MIX-like event (even if it's smaller) like this would be the worst thing to do. Especially when we don't regularly see such events in Egypt where developers socialize together and exchange knowledge.

Besides, I've wanted to see Mohamed Hossam in person for a long time now...so THIS IS IT!! WAKE UP!

I reached the place in around 15 minutes from Heliopolis. Did the registration and off I was into the opening session. Let's digg into the session reviews....

Opening Session

By Taher, SilverKey's SEO

The intro video was great. Really inspiring. It got my blood pumping and my developer spirit high.

skdd2_mohamed_hossam SOA via WCF

By Mohamed Hossam

Mohamed Hossam (aka Bashmohandes) was truly the star of the show with this kick-off technical session. He's great technically and his presentation skills really caught the audience into full attention.

I really liked the part that introduced SOA (service oriented architecture) as the evolution of programmer's orientation through out history.

First, in the 1950’s, Procedural (functional) Orientation was the methodology of the future. Instead of creating the logic in the hardware that was difficult to re-use especially when the logic changes. This orientation was very lacking when developing enterprise-level applications. Code became very complex and un-organized.

Later on, Object Orientated Programming (OOP) was introduced. It’s just a concept that made creating complex applications much easier. It was adopted by several technologies like Java, C++ and SmallTalk. But this lacked portability of code from one technology to the other. You couldn’t easily take a code written in C++ and use it in Java.

Then came Component Orientation that solved the latter problem, but still depended heavily on the technology they were built with. What if 20 years from now you wanted to talk to an old system built today? It would be totally difficult imagining what future technologies would running on.

SOA is the solution. It simply builds an interfacing layer around systems letting other systems communicate back accordingly. No matter what technology (Python, .NET, JAVA on Windows, linux OS over TCP/IP, HTTP or even Pipes) the system is built upon, any different system can communicate and exchange data, in whatever form (including binary), back and forth with ease.

WCF is Microsoft's answer to SOA. It allows developers to write applications that works no matter what the server back-end is. Even on different network protocols like TCP/IP, HTTP or Pipes and whatever the WSDL method used. WCF supports SOAP and any WSDL standard!

Everyone was impressed by this session, although when Hossam got into the details using Visual Studio...stuff became less vivid, especially because of the small font running on the high screen resolution. He built a chat application that worked on any protocol without knowing anything about the WSDL used.

skdd2_ahmed_ali Microsoft Jasper

By Ahmed M. Ali

MS Jasper was just announced in Mix 2007, only 6 weeks ago only. An incubation project that is targeted to be released in .NET 3.5 and is currently in CTP.

In short: it’s an ADO.NET framework. To build applications with the minimum amount of code. And when you read minimum, that means starting from zero code to a few lines...but mostly zero :)

People hate ADO. In attempts to avoid using ADO, people used 3rd party software that generates source code from a database schema. It required a lot of configuration settings that was time consuming plus further maintaing the generated code was a head-ache.

With MS Jasper, with the least amount of configuration, it looks at the database schema and generates data classes in-memory at runtime (no source code generated) for the application into what is called DynamicContext.

This was possible because Jasper was built on the ADO.NET Entity Framework. It converts database elements into objects called EDMs (Entity Data Models).

Just point to the database and start coding!! The aim is to have total focus on the business logic.

The problem now is how to generate EDMs in-memory objects at runtime and use it. That is NOT possible with Static Languages (i.e. C# or JAVA) where all objects, properties and methods are generated at compile time.

Jasper requires a Dynamic Language like IronPython so it can easily use the in-memory generated data classes.

Using EDM is just like using a Dataset in C#. Any changes need to be binded back to the server.

We created a blog application in less than 15 minutes. It was simple: just show the posts and a list of categories. ZERO code was written. The binding between the database and the ASP.NET code is done through the ID of the object that shows the data (i.e. a DataList).

Traditionally, if I have more than item that shows data on the page, I would have to have a separate DataSource for each item. With Jasper, just one DataSource binded to Jasper will do the trick. Now when an item "ID" matches a "table name", it will show it’s contents!! That simple! All the code that was written was PURE business logic

Question: What if I have a huge complex database schema, How will that affect the performance? Because Jasper reads the whole schema and generates it’s DynamicContext of all tables, columns and relationships. The solution is to use EDM (Entity Data Model) to generate DynamicContext of the required tables only. This type of customization is available.

eSQL and LINQ are used as query pipelines for Jasper.

skdd2_meligy SEO for Devs:What developers need to know about spiders?

By Mohamed Meligy

First impression: I love the syntax coloring Meligy uses in his Visual Studio. I wonder if he can share and export this scheme :) but on the projector, it wasn’t really visible :(

Hey! Look! Meligy uses ReSharper too!! Nice!

Personal notes:

-Response.Redirect is bad for SEO’s health
-Avoid the builtin URL Rewriting in ASP.NET 2.0 and use the following instead:
-Urlrewriter.net
-URLrewriting.net
-For sitemaps, ASP.NET Futures offers excellent new Providers that really help with URL Rewriting
-AspNetSitMapSearchSiteMapProvider
-DynamicDataSearchSiteMapProvider

Be sure to redirect robots.txt to http://yoursite/sitemap.axd using the appropriate robots.txt syntax. (But this makes me think,  why don’t we us URLRewriting for sitemap.axd to be robots.txt??)

skdd2_hossam_zain CLR by XAML

By Hossam Zain

XAML (Extensible Application Markup Language) is the common interface between developers and designers. When I first read about this concept in Microsoft Expression tools, I was truely impressed.

Hossam Zain gave us a good hands-on session over XAML syntax and how to understand it.

Concepts:

-Logical Tree: like DOM. Contains the data and they are ordered hierarchically. (XHTML). This is what the developer works on.
-Visual Tree: How to display/animate the objects (CSS). This what the designer works on.

 Hossam also adviced people to learn XAML now because it's still evolving into a bigger mass. So it's easier now to learn it while it's still simple.

skdd2_mohamed_hossamskdd2_mohamed_tayseer IronPython VS C# 3.0: Dynamic languages vs Static languages

By Mohamed Hossam & Mohammed Tayseer

This session was the talk of the show. It left people wandering off and musing about the potential in mixing the usage of Dynamic and Static languages according to their needs.

It kicked-off in a non-natural way. It was a debate, with Mohamed Hossam on C# side, and Mohamed Tayseer with IronPython. Totally innovative. Kept the whole session alive!

Static languages, like C#, are quicker than their dynamic counter part (i.e. Python), no doubt about that. But this is not a real important issue right considering what speeds computers have reached at decreasing prices.

Dynamic is better in terms of productivity. You can do much more in less time, from a programmer's POV. What takes a for loop with 3~5 lines might take a single statement in a Python.

Due to this nature of Dynamic languages, languages like Python and Ruby on Rails are taking the web development world by storm because they aid agile businesses very much.

NOTES:

-Seeing the potential of Dynamic Languages, Microsoft employed both IronPython and IronRuby creators!!
-Microsoft even announced DLR! yes, you guessed it right "Dynamic Language Runtime"!!
-With Dynamic Languages, Code = Data.
-Dynamic languages Configuration files are written with the same language itself. So Python configuration files aren't XML, they're PYTHON!-C# 3.0 implementation has taken from Python several concepts:

-Implicit type: type is set according to the value hold in the variable
-Collection Initialization
-Lambda Expressions: It’s like using an anonymous method using method signatures. Converts a whole code into a delegate using Func<param1 type, param2 type, return type>.

But why should I learn Python although C# 3.0 now offers most of what Python has? C# 3.0 has copied some stuff, but it's still not a dynamic language.

You have to start learning Python now because:

-Gives you more design decisions
-DLR is coming!!
-Silverlight
-Jasper
-etc..
-ASP.NET support for IronPython to compete with other technologies like RoR and mod_python.

 

Open Mic

By us, the attendees :)

Attendees got the chance to be the star. We discussed Java, linux, place-any-other-Microsoft-competitor-here vs. Microsoft technologies and solutions.

I sadly noticed that people thought .NET C#'s high level of abstraction has made it less powerful. For example, the following criticising points were raised:

 "The .NET is not low-leveled enough that I can do what I want (powerful stuff) freely!"

Says who? the beauty of the .NET is that it has many levels of abstraction so that you can dig into any part as you need. For example, ASP.NET 2.0's controls like the Gridview make it a breeze to fetch information from a SQL database. But what if you don't like the "default" behavior, you can take advantage of the structuring of the .NET, where everything is an object. Simply override GridView's object with whatever functionality you want.

 ".NET is closed source. I had this error in Java while using some method. I looked at the source code and I knew what is the problem. I couldn't do the same with .NET"

Reflector anyone? It converts the IL compiled .NET back into C# and VB.NET.

 "C# is weak! it can't do Image Processing. That's why C++ is the best!"

LOL! Paint.NET anyone?

 "Java applets ran slower on windows compared to linux"

So, what makes this a Windows problem? Java should re-think about how they wrote their virtual machine on Windows. Which reminds me, can you do real-time applications with JAVA? it's slow as hell. C#? no problem.

 ".NET isn't cross-platform. It depends totally on Windows. What if Windows dies?"

Again, Mono anyone? Runs all .NET applications (including web-apps built with ASP.NET) on Linux, Solaris, Mac OS...etc!

 "Why should we wait for Microsoft to create a solution? Other technologies like PHP for example has a strong community that offers a lot without relying on a certain entity!"

Seriously, are you for real!? If .NET is so relied on it's creator, Microsoft, how come we see open-source solutions that are built over the .NET (and sometimes extend the .NET framework)?

 "It's very known that Microsoft stuff can't do enterprise stuff. It just can't!"

No comment! No seriously....NO COMMENT

 All the above claims just made me MAAD that I rushed onto the stage and started correcting concepts and show the truth. And I hope I was successful in doing so :)

My personal analysis of this negative view of Microsoft products is that it's due to the negative image being re-generated over and over across cyber social-networks (forums, blogs..etc). It's a big dilemma empowered by Microsoft haters just because it's the largest business entity in the world that isn't built on open-source foundations.

And as for the guys that think lightly of the power of the .NET. I believe that's because most first impressions of the .NET that Microsoft capitalized through their marketing channels were based on how .NET and Visual Studio makes your life easier. So people thought, since this makes creating an application very simple even for kids (including my 13 year old brother who just started learning C#), this new technology is limited. It can't do advanced stuff like REAL enterprise class technologies like JAVA. Really that's sad!

 BTW, I am not claiming that Microsoft is the best and it will be victorious in the end to be the future, on the contrary I stated that Microsoft needs strong competitors to keep the whole market healthy.

skdd2_meligy Advanced Javascript

By Mohamed Meligy

Meligy's session was how to look at Javascript as a dynamic language. Through out the last 10 years, everything has done injustice to Javascript. From books, to usability. No body really treated or understood Javascript the way it was meant to be.

Javascript suffered from naming conventions that related it to JAVA although it has nothing to do with it. Then it's ECMA standard came out late after browsers have started implementing it.

In short: Javascript is in a real mess. Thankfully, today things are getting better and better.

Actually, Douglas Crockford from Yahoo!, has great videos that are a must watch on the matter.

Meligy really did a good job in exploring the above issue. Then he went on into some technical stuff like...

-Closures (aka functors): A function that returns a function with a variable that it’s value can be set when the function is generated.
-Lambda: A function that can return a function.
-'this' keyword: allows us to use a function to mimic OOP, so we can have classes.
-Prototype: Used to add new functionality to a certain object at runtime. That created the evolutionary prototype framework. I personally use -jQuery which follows the same path. Makes writing Javascript code fun again.
-Regular expressions: Are first class citizens in javascript. They are written without any quotes.
-JSON: An evolved method that represents data in a simple form (much easier than XML). It's used for exchanging information in Web-Services. Methods are available to convert JSON to XML and vice versa on the fly.

 

Sessions I've missed...  :(

-Silverlight Fundamentals
-Business Automation using WF
-LINQ for XML
-Open Source and Free Software Testing

I am waiting for the videos to be published online to catchup on what I've missed.

Closing thoughts...

-Microsoft technologies are taking rapid leaps through their R&D. Their today's technologies will shape the future with no doubt.
-All Silverkeyer's had laptops where running Windows Vista + Visual Studio 2008 Codenamed « Orcas ». How cool is that?
-Donuts and hot drinks were free! They even gave us a small lunch box around 1PM. I totally never saw that coming!
-Flickr Photos: please share your own by tagging them with SKDD2.
-For the millionth time: Green color in powerpoint is BAAAD! It is not visible. Avoid avoid avoid !
-Sadly I didnt catch Mostafa Mourad, lel assaf :(

 

All in, it was a world class event. I met new people, discussed issues, learnt new stuff....

I enjoyed every minute of it :)

Silverkey geeks....thank you. You made me enjoy every minute of it.

 skdd2_korayemBTW, if you're still wondering...I DID meet Mohamed Hossam in person finally!!

 And you, how was your Demo Day??

Leave your comments :)

 

Avatars are courtesy of SilverKey.