🇵🇸 Call for a #CeasefireNOW 🇵🇸

Act Now

NOT Another Post About Estimation

I was involved in a project that was given 10 days to finish, the tight schedule was due to budget reasons. The client explained to me his requirements and then asked for an estimate for details. We stood in front of the whiteboard, broke down the features and then started estimating the time for these features, until we reached feature x. In my technical life I’ve been beaten by over-simplified requirements far too many times, so as simple as feature x sounded I strongly felt that it might stretch. Subsequently, this influenced my opinion of giving feature x three days, against which the client of course argued back. ...

June 22, 2014 Â· Emad Alashi

Consultant Skills: Knowledge Depth & Breadth

It’s a crazy era for IT! everyday new concepts, libraries, products, and even languages are introduced; so many solutions for so many problems. It is indeed the era of specialization. There is absolutely no way to grasp all this knowledge, specialization and concentration of knowledge has to occur, and we must choose a technology to specialize in. But… (You knew this was coming, didn’t you)… this is not good enough! Before you jump on me and start yelling “But you just confessed; it’s impossible!”, let me explain. ...

April 2, 2014 Â· Emad Alashi

On Building Quality Software

The 2nd main cause of buggy software (time pressure is #1), is laziness and boredom. Every job in this life consists of a “core”, which is the most challenging and most exciting part of the job, and a “chore”, which is the boring and tedious part. Let’s take a chef as an example; he is an artist whose art is producing quality food, a process that involves mixing precisely-scaled ingredients, perfectly stirred on a period of time, or fried on the grill with an artistic movement…all are actions that the chef consider as crucial part (core) of the process producing the magnificent product of his. On the other hand, the chef sometimes has to chop onion into xxx-small size of chops, a task that may be really boring to him (I wouldn’t blame him!). Being such a boring task, the chef is tempted to getaway with just xx-small size of chops; after all 95% of the meal preparation is there! So he ships the dish to the customer. The customer tastes it, he generally likes it, but something is wrong…”ah!”, the customer discovers, “I am chewing pieces of onion!”. He almost rated the restaurant 4.5/5, but just that last bit ruined it! 3/5 is the final rate. ...

March 4, 2014 Â· Emad Alashi

Update Database with Dbup When Deploying With Kudu

Update: @DavidEbbo checked the post and thankfully he notified me that we don’t need to use the RESTapi to add an environment variable to Kudu on Azure; we can use the AppSettings in the portal. ——- Kudu is a deployment engine that enables websites to deploy directly from git repository, it is the one behind git deployments in Azure Web Sites. Two things I loved about Kudu: you can use it locally in your environments, and it is open source! ...

January 19, 2014 Â· Emad Alashi

Complicated Software? Or Solving Everything At Once? Message To Product Owners

As software developers, we happen to come across many business problems with various complexity levels. Although this complexity depends on the nature of the domain sometimes, what I have noticed that product owners add a lot to this complexity themselves without a need! For once, software developers are innocent here; the product owner, the entrepreneur, or the man behind the niche, these people have a very big responsibility on defining the complexity of the system; most of the time, the complexity introduced to the software was because they wanted to solve everything with a button, maybe two! ...

November 22, 2013 Â· Emad Alashi

OAuth Authentication in OWIN

Last week I got the chance to speak on the Victoria .net user group, presenting OAuth authentication (and authentication in general) in the new .net web world of OWIN. You can find below the link to the source code, the presentation slides, and the video on Youtube. Source code on GitHub For some reason the animation doesn’t work on Slideshare, maybe because it was Office 2013 OAuth in the new .NET world (OWIN) from Emad Alashi Enjoy 🙂 ...

November 19, 2013 Â· Emad Alashi

Consultants’ Skills: Story Telling

You have to listen to two words only before Cristian Prieto grasp your attention till the very end of his talk, even if it was about cats! everybody just goes silent, listening carefully, staring and waiting for more!…and the secret behind it, as I see it, is HE IS A PERFECT STORY-TELLER! Let’s face it, people like stories; we watch movies, we read novels, even news sounds much more interesting when there is a “story” behind it! it is the nature of humans. ...

June 7, 2013 Â· Emad Alashi

ASP.NET Routing & MVC Presentation

Last week I delivered my first talk in Melbourne: “ASP.NET Routing & MVC” with the .net user group VIC.NET. Even though there was a problem with time control due to reasons out of hand, the audience stayed till the very end of the presentation; good to know that the presentation didn’t suck that much :D. Here are the slides: https://www.slideshare.net/slideshow/aspnet-routing-mvc/15438666

December 1, 2012 Â· Emad Alashi

Performance Counters For Multiple Processes With Same Name

There are couple of posts talking about this subject: when you have multiple process’s with the same name, it’s not straightforward to figure out which performance counter instance represents which process. The suggestion would be to use the process ID and the “ID Process” performance counter (This is not the essence of this post, if you know this already scroll down). To explain this further let’s say we have two web applications with two different application pools that we wish to monitor their consumption of memory (though probably there are better ways to do it). The worker process for a web application on IIS is a w3wp.exe process, so for our two web applications we will have two w3wp.exe process’s running like the following: ...

October 13, 2012 Â· Emad Alashi

Microsoft.Web.Administration for IIS

Update: In addition to this post, you can check as well the valuable post of Stuart Cullinans’s. One of the recent projects I worked on involved managing IIS programmatically, and I found the proper tool for it, meet “Microsoft.Web.Administration”. You can read about this library’s purpose in its own page above; what I will list here are three points I noticed while dealing with the library: I couldn’t find where to download, or install the library from, it appeared to be residing in “C:\Windows\SysWOW64\inetsrv\Microsoft.Web.Administration.dll” and yes my OS is 64-bit I am not sure where you can find that on a 32-bit machine The main class ServerManager reads data the moment it’s created only, it will NOT maintain a valid state after the initial read; for example, consider the following snippet: static WorkerProcess currentWP; static void Main(string[] args) { currentWP = new ServerManager().ApplicationPools[0].WorkerProcesses[0]; while (!Console.ReadLine().Equals("quit")) { Console.WriteLine(currentWP.ProcessId.ToString()); } } This code snippet will get the first WorkerProcess of the first Application Pool in the local IIS. Run the code, enter bogus input just to make sure the loop works, and you will find on the Console the W3WP Process Id displayed (e.g. 4295). ...

September 11, 2012 Â· Emad Alashi