About a week ago I've participated in the first meeting of ALT.NET Tools session in Israel, the session was pure fun, we grouped together a bunch of geeks in one conference room to speak about tooling that can make developer’s live easier.
We had several interesting sessions over the meeting with lots of cool tools… some common ones and some are products of newly startup companies.
By the middle of the meeting we had lots of pizzas in complementary from our host Delver or by its new name Sears Israel. And by the end of the meeting I've handed out several nice prizes to the ones who filled up the feedback forms correctly :-)
Among the prizes your could have find leftovers from Manning’s contribution to the IDCC (Israeli Developer Community Conference)

And an original boxed version of Windows 7 Ultimate x86/x64 DVD that I've received some time ago from Microsoft
I’ve just finished encoding and uploading the ATL.NET Tools sessions and you are welcome to watch them online. Please note that the sessions are in Hebrew.
Opening words by Ken Egosi – the founder of ALT.NET meetings in Israel
Session 1
Balasmiq Mockups – really cool tool for building mockups !
you can also read about it on the latest MSDN Magazine article about UI Mockups
- Create software mockups in minutes
- Collaborate with your team
- Focus on creating your product
Session 2
Log4Net Viewer – Apache Chainsaw – log view aggregator
“Chainsaw v2 is a companion application to Log4j written by members of the Log4j development community. Like a number of Open Source projects, this new version was built upon inspirations, ideas and creations of others. Chainsaw v2 has it's roots from the original Chainsaw utility written by Oliver Burn, and with inspiration from the Log Factor 5 utility contributed by ThoughtWorks Inc.”
Session 3
Sharpkit – forget about javascript…write it in C#
“If you are missing features like auto-complete, XML documentation, syntax verification and refactoring in your JavaScript development, you should give SharpKit a try.
When you work with SharpKit, you write C# instead of JavaScript. This way you don't have to memorize the API - it's always right there at your fingertips”
Session 4
QucikUnit – A supplementary tool for unit testing
“Developers don’t create enough unit tests. QuickUnit can help.
With QuickUnit – novice developers can write quality unit tests quickly without the initial learning curve”
Session 5
TeamCity - Distributed Build Management and Continuous Integration Server
“TeamCity is a continuous integration and build management system. With TeamCity, you can set up a build server within minutes and enjoy out of the box continuous unit testing, code quality analysis, and early reporting on build problems — even without leaving your favorite IDE. TeamCity offers a gentle learning curve, so you can quickly improve your release management practices by gradually adopting its advanced features and capabilities.”
Session 6
MongoDB - Combining the best features of document databases, key-value stores, and RDBMSes
“MongoDB (from "humongous") is a scalable, high-performance, open source, schema-free, document-oriented database. Written in C++, MongoDB features:
- Document-oriented storage (the simplicity and power of JSON-like data schemas)
- Dynamic queries
- Full index support, extending to inner-objects and embedded arrays
- Query profiling
- Fast, in-place updates
- Efficient storage of binary data large objects (e.g. photos and videos)
- Replication and fail-over support
- Auto-sharding for cloud-level scalability
- MapReduce for complex aggregation
- Commercial Support, Hosting, and Consulting”
What is an E-mail storm ?
From Wikipedia:
An e-mail storm is a sudden spike of Reply All messages on an email distribution list, usually caused by a controversial or misdirected message. Such storms start when multiple members of the distribution list reply to the entire list at the same time in response instigating message. Other members soon respond, usually adding vitriol to the discussion, asking to be removed from the list, or pleading for the cessation of messages. If enough members reply to these unwanted messages this triggers a chain reaction of email messages. The sheer load of traffic generated by these storms can render the email servers inoperative, similar to a DDoS attack.
On the 31/12/2009 10:20 the following email was send by someone in HP, his/her mistake was that it was sent to the wrong address, the email was sent to an exchange discussion list which hold all the employees who has remote access to the company – yes all the employees who has remote access to HP and you can start counting them…
In response to this email hundreds if not more emails were sent back using Replay-To-All asking to be removed from the DL as people were/are flooded with emails – anyone who responded responded back to the DL itself and by that sending email again to company wide.
One email was hilarious, someone decided to send to the DL an email asking ppl to take an outlook training over the internal portal hoping that ppl will learn NOT to press Replay-To-All
This led to a line of even more hilarious emails as some employees answered to the DL that they are not using outlook and they are using linux systems and as such what will be with their bonus, do they need to take the training or not ? :-)
I’ve noticed several emails requesting ppl to stop sending emails but the flood is keep on coming…
If you look at Wikipedia again for former incidents:
- On October 14, 1997, a Microsoft employee noticed that they were on an as-yet unknown email distribution list 'Bedlam DL3', and emailed the list asking to be removed. This list contained approximately a quarter of the company's employees, 13,000 email addresses. Other users replied to the list with similar requests and still others responded with pleas to stop replying to the list. A Microsoft employee estimates that 15 million emails were sent, using 195 GB of bandwidth.
- On October 3, 2007, an email storm was generated at the US Department of Homeland Security, causing more than 2.2 million messages to be sent, and exposing the names of hundreds of security professionals.
- State Department employees were warned they could face disciplinary action for taking part in a massive email storm that "nearly knocked out one of the State Department's main electronic communications systems."
It really makes you think of what can a simple mistake of an employee can cause to a company…
Beware of whom you send you email to, choose you DL wisely and please please please think for a min before hitting the Replay-To-All.
Note: A much better was it to replay to all while putting the DL in the bcc field… this way if someone do use Replay-To-All he needs to specifically enter the DL name again
While reordering some of my old hard drives I found this Image which I do not recall did where I get it from… It is funny little one explaining the basics about Raid levels.
Enjoy :-)

Channel 9 just published a Silverlight 4 Training which includes hands-on-labs, a video and a whitepaper designed to help you learn about the new features in Silverlight 4 !
The training is focused on three major areas:
Enabling Business Application Development
Empowering Richer Experiences
Moving Beyond the Browser
Silverlight 4 now includes cool features like Printing, WebCam and Microphone support, custom right-click, rich text, HTML support and access to local files with trusted applications.
Check it out over here
PDC videos are starting to show up… keep an eye on http://microsoftpdc.com/Videos
The quality of the videos type WMVHIGH is very good although the files might consume large amount of storage for ones who will try to download them all.
Let the HOME PDC BEGIN !
Any chance to send home PDC attendees also a new tablet ?

Cool ! – live streaming !
http://microsoftpdc.com/
Did you know that you can train yourself for what’s new in Visual Studio 2010 and C# 4.0 (also VB) ?
The Microsoft Visual Studio 2010 and .NET Framework 4 Training Kit - October Preview is available for more than a week now and it includes lots of slide decks, demos and labs covering the following topics:
- Whats New In the .NET Framework 4
- Whats New In Visual Studio 2010
- Video: Downloading And Installing Visual Studio 2010 Beta 2
- Demo: Hello Visual Studio 2010
- Common Language Runtime
- Demo: System.Threading.Barrier Demo
- Demo: System.Threading.CountdownEvent
- Managed Languages
- What's New In C# 4 and Visual Basic 10
- Video: Fixing PIA Pains with Type Equivalence
- Demo: Managed Languages 10-in-1
- Lab: Introduction To F#
- Lab: Visual Studio 2010: Office Programmability
- Lab: Visual Studio 2010: Test Driven Development
- ASP.NET 4
- Introduction to ASP.NET MVC
- Whats New In ASP.NET AJAX 4
- Whats New In ASP.NET Web Forms 4
- Web Deployment with Visual Studio 2010
- Video: Simplifying Data-Driven Web Applications
- Demo: AdventureWorks using AJAX
- Demo: ASP.NET AJAX 10-in-1
- Lab: ASP.NET AJAX
- Lab: Building an Web Application
- Lab: Enhancing a Web Application
- Lab: Introduction to ASP.NET Web Forms 4.0
- Lab: Web Development in Visual Studio 2010
- Windows
- What's New in Windows Presentation Foundation 4
- Lab: Building a Data-Driven Master/Detail Business Form in WPF using Visual Studio 2010
- Lab: Taskbar - MFC
- Lab: Gestures - MFC
- Lab: Multitouch - MFC
- Lab: Ribbon – MFC
- Windows Workflow
- Workflow 4: A First Look
- Video: Workflow Web Services
- Lab: Introduction to Workflow 4.0
- Lab: WCF Service Discovery using .NET Framework 4.0
- Windows Communication Foundation
- Lab: WCF Service Discovery using .NET Framework 4.0
- Silverlight
- Introduction to .NET RIA Services
- Data Access
- Whats New In Entity Framework 4
- Whats New In ADONET Data Services 1.5
- Introduction to Project "Velocity"
- Video: Server-Driven Paging with ADO.NET Data Services
- Demo: Project Velocity
- Lab: Introduction to ADO.NET Data Services
- Lab: Introduction To Project "Velocity"
- Parallel Computing
- Parallel Computing for Managed Developers
- Demo: ContosoAutomotive Demo
- Demo: BabyNames
- Demo: Parallel.For Loop
- Demo: Parallel LINQ (PLINQ)
- Demo: System.Threading.Tasks
- Lab: Parallel Extensions: Building Multicore Applications with .NET
- Extensibility
- Introduction to the Managed Extensibility Framework
- Video: MEF Preview 7
- Demo: Demos for "Intro to Mef" Presentation
- Lab: Introduction To Managed Extensibility Framework
- Application Lifecycle Management
Download the Visual Studio 2010 and .NET Framework 4 Training Kit - October Preview
Channel 9 also hosting lots of VS 2010 & .NET 4.0 Training classes
This is the third post of what’s new in Visual Studio C# 4.0.
At the former posts we covered optional parameters, Named Parameters at this post we will cover C# Dynamics and ExpandoObject
dynamic & ExpendoObject
C# 1.0 introduced us to the managed world (based on Microsoft perception)
C# 2.0 brought us Genetic types.
C# 3.0 introduced us to new concept – LINQ
C# 4.0 highlight is all about Dynamic Types
Say for example that you have the need to create an object on the spot and use it in a local scope, without dynamic type you had to define a class and then create the object. you could do it at runtime using reflection emit, code dom etc…now its much simpler !
All you have to do it to create an object of the type dynamic and using a special builder called ExpandoObject you can now define your object on the fly and use it.
- class Program
- {
- static void Main(string[] args)
- {
- dynamic person = new ExpandoObject();
- person.Firstname="ohad";
- person.Lastname = "israeli";
- Console.WriteLine(person.Firstname);
- Console.WriteLine(person.Lastname);
- Console.ReadLine();
- }
- }
You may say… wow this is cool.. well wait and see some more cool stuff..
Now lets add to this example and say that you would like to add a functionality to this object, what about adding person.Fullname in order to join the first and last name of the person and return it back.
- class Program
- {
- static void Main(string[] args)
- {
- dynamic person = new ExpandoObject();
- person.Firstname="ohad";
- person.Lastname = "israeli";
- person.Fullname = new Func<string>(delegate() { return person.Firstname + " " + person.Lastname; });
- Console.WriteLine(person.Firstname);
- Console.WriteLine(person.Lastname);
- Console.WriteLine(person.Fullname());
- Console.ReadLine();
- }
- }
As you can see we can point the new object properties to lambda expressions such as Func<string> and define on the spot a function that will return the full name of the person.
Note that on line 12 you need to call the function and not use it as property – person.Fullname()
What will happen if you forget the () by the end of the function name ? (note the change on line 12)
- class Program
- {
- static void Main(string[] args)
- {
- dynamic person = new ExpandoObject();
- person.Firstname="ohad";
- person.Lastname = "israeli";
- person.Fullname = new Func<string>(delegate() { return person.Firstname + " " + person.Lastname; });
- Console.WriteLine(person.Firstname);
- Console.WriteLine(person.Lastname);
- Console.WriteLine(person.Fullname);
- Console.ReadLine();
- }
- }
The result will be the lambda expression itself instead of the result of the lamba expression:
ohad
israeli
System.Func`1[System.String]
You can also add methods and not just functions using the Action expression: (note line 9)
- class Program
- {
- static void Main(string[] args)
- {
- dynamic person = new ExpandoObject();
- person.Firstname="ohad";
- person.Lastname = "israeli";
- person.Fullname = new Func<string>(delegate() { return person.Firstname + " " + person.Lastname; });
- person.CallOhad = new Action(() => { Console.WriteLine("Hi Ohad are you there ?"); });
- Console.WriteLine(person.Firstname);
- Console.WriteLine(person.Lastname);
- Console.WriteLine(person.Fullname());
-
- person.CallOhad();
- Console.ReadLine();
- }
- }
In conclusion dynamic types are cool but and there is a big but !
They are hard to debug and some of their functionality is only being tested at runtime this is why it is very important that whenever you use dynamic types test, test, and do some more testing using unit test of your code.
If you follow the following code you will notice that each of the calls to the properties in lines 11,12,13 begins with a small letter instead of uppercase. This code will compile without any errors but of course the code will fail at runtime as the properties / function names are all uppercase.
- class Program
- {
- static void Main(string[] args)
- {
- dynamic person = new ExpandoObject();
- person.Firstname="ohad";
- person.Lastname = "israeli";
- person.Fullname = new Func<string>(delegate() { return person.Firstname + " " + person.Lastname; });
- person.CallOhad = new Action(() => { Console.WriteLine("Hi Ohad are you there ?"); });
- Console.WriteLine(person.firstname);
- Console.WriteLine(person.lastname);
- Console.WriteLine(person.fullname());
-
- person.CallOhad();
- Console.ReadLine();
- }
- }
This is the second post of what’s new in Visual Studio C# 4.0.
At the former post we reviewed the feature of optional parameters at this post we will concentrate on Named Parameters.
Named Parameters
Lets assume you are writing the following procedure :
- public static void SaySomething(string name, string msg)
- {
- Console.WriteLine(string.Format("Hi {0} !\n{1}", name,msg));
- }
When you want to call it from your code you are using something like:
Code Snippet
- static void Main(string[] args)
- {
- SaySomething("Ohad","What's up?");
- Console.ReadLine();
- }
What’s the problem ?
Although you will have intellisense while you are coding it for the reader of the code its unclear what is the first parameter and what is the second parameter.
This is where Named Parameters gets into the picture. Using named parameter the code becomes much more readable to one who haven’t wrote it.
Code Snippet
- class Program
- {
- static void Main(string[] args)
- {
- SaySomething(name: "Ohad", msg: "What's up?");
- Console.ReadLine();
- }
- public static void SaySomething(string name, string msg)
- {
- Console.WriteLine(string.Format("Hi {0} !\n{1}", name,msg));
- }
- }
Named parameters are specially useful whenever you have multiple optional parameters of the same type. Without using named parameter how would the compiler know if the parameter which is being passed by line 5 is the name or the message.
Code Snippet
- class Program
- {
- static void Main(string[] args)
- {
- SaySomething(name: "Ohad");
- Console.ReadLine();
- }
- public static void SaySomething(string name = "Tirza", string msg = "Hi There")
- {
- Console.WriteLine(string.Format("Hi {0} !\n{1}", name,msg));
- }
- }
More Posts
Next page »