<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Amr Eldib's Blog</title>
    <description>Postings about technology, software development, and GIS</description>
    <link>https://amreldib.com/blog/</link>
    <image>
      <url>https://amreldib.com/public/images/Amr_small.png</url>
      <title>Amr Eldib</title>
      <link>https://amreldib.com</link>
    </image>
    <pubDate>Fri, 11 Oct 2019 01:13:50 -0700</pubDate>
    <lastBuildDate>Fri, 11 Oct 2019 01:13:50 -0700</lastBuildDate>
    <generator>Jekyll v4.0.0</generator>
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>Social Media without Attention Incentives</title>
          <description>&lt;p&gt;I was watching the first episode of Black Mirror season 3 couple of nights ago titled ‘Nosedive’. Don’t worry, I’m not gonna give any spoilers. But it’s about a world where ranking on social media determines social status. There’s a score associated with everyone.&lt;/p&gt;
&lt;figure&gt;
    &lt;img class=&quot;imageInCenter&quot; alt=&quot;Scene from Black Mirror episode 'Nosedive'&quot; src=&quot;/public/images/blog/SocialMediaWithoutAttentionIncentives/Nosedive.jpg&quot; /&gt;  
    &lt;figcaption&gt;Our distant future&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Guess what? we’re somewhat already there. On Twitter, how we deal with popular tweets/people is different from anyone else. Every person has a number next to their name to indicate their popularity and, indirectly, their worth. Every tweet has numbers next to it indicating its worth: favorites, retweets, replies.&lt;br /&gt;
You’re notified when people like and retweet what you say. It’s a small hit of dopamine to make you happy for a moment.&lt;br /&gt;
But you end up getting addicted. You change what you say (even just slightly) to get more likes and more retweets. You make sure to mention and reply to popular people to get their attention, and have them retweet your tweet hoping it’ll go viral.&lt;br /&gt;
I know this, because I do this.&lt;br /&gt;
There’s a quote from the show:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;I’m just gonna play the numbers game, that’s how the world works.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But, I don’t want to do this anymore. No more numbers.&lt;br /&gt;
&lt;strong&gt;I wrote a &lt;a href=&quot;https://userstyles.org/styles/137512/no-attention&quot;&gt;userstyle&lt;/a&gt; that hides all the attention numbers from Twitter. Tweets will no longer have retweet/likes/reply counts&lt;/strong&gt;.&lt;/p&gt;
&lt;figure&gt;
    &lt;img class=&quot;imageInCenter&quot; alt=&quot;Tweet with numbers removed&quot; src=&quot;/public/images/blog/SocialMediaWithoutAttentionIncentives/Tweet.png&quot; /&gt;  
    &lt;figcaption&gt;Tweets will no longer have retweet/likes/reply counts&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Profile pages will no longer show tweet/likes/media counts.&lt;/p&gt;
&lt;figure&gt;
    &lt;img class=&quot;imageInCenter&quot; alt=&quot;Profile with numbers removed&quot; src=&quot;/public/images/blog/SocialMediaWithoutAttentionIncentives/Profile.png&quot; /&gt;  
    &lt;figcaption&gt;Profile pages will no longer show tweet/likes/media counts&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Notifications page will no longer tell that you’ve been retweeted, liked, or other attention activities. Only replies will show up.&lt;br /&gt;
Removing this attention incentive will hopefully make us saner, and only seek meaningful interactions. If you like something, say something nice. If I write something, I’m hoping it’s to be right, not to be popular.&lt;br /&gt;
I named the userstyle &lt;a href=&quot;https://userstyles.org/styles/137512/no-attention&quot;&gt;‘&lt;em&gt;no-attention&lt;/em&gt;’&lt;/a&gt;. To install it, use &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/stylish/&quot;&gt;Stylish for Firefox&lt;/a&gt; or &lt;a href=&quot;https://chrome.google.com/webstore/detail/stylish/fjnbnpbmkenffdnngjfgmeleoegfcffe&quot;&gt;Stylish for Chrome&lt;/a&gt;, then install the style. Addons for other browsers and more info available on &lt;a href=&quot;https://userstyles.org/&quot;&gt;userstyles home page&lt;/a&gt;.&lt;br /&gt;
I hope you find this useful. If you do, pass it on to your friends.&lt;/p&gt;
</description>
          <pubDate>Thu, 12 Jan 2017 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/SocialMediaWithoutAttentionIncentives/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/SocialMediaWithoutAttentionIncentives/</guid>
          
          <category>Social Media</category>
          
          <category>Project</category>
          
          <category>Black Mirror</category>
          
          <category>Twitter</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
        <item>
          <title>Preparing for a Talk</title>
          <description>&lt;p&gt;I’ve just finished watching &lt;a href=&quot;https://www.youtube.com/watch?v=xte50LJbsTU&quot;&gt;Troy Hunt’s video&lt;/a&gt; on how he prepares for speaking at conferences. I was happy to see that he does dry runs in the same manner that I do; pacing at the living room, talking to empty space while imagining everyone is there, listening, some bored, and some paying attention.&lt;br /&gt;
&lt;a href=&quot;https://www.troyhunt.com/&quot;&gt;Troy&lt;/a&gt; is an excellent speaker, plus being an security expert. Watch &lt;a href=&quot;https://vimeo.com/171897425&quot;&gt;his talk at NDC Oslo&lt;/a&gt; that he was preparing for in the video above.&lt;/p&gt;

&lt;p&gt;While I share much of what Troy does in preparation, I wanted to share a bit more on what I do differently. While some people are gifted at facing a big room with large audience, I’m not sure that I’m. I still feel terrible before I go on stage. Maybe it’s because I don’t do it that often, I’m not a speaker, I just do talks sometimes. Usually, it’s once or twice a year at most.&lt;/p&gt;

&lt;p&gt;To help me calm down, and avoid surprises, I try to plan out as much as I can. So I start with an outline of my talk, then break them down into sections and bullet points, then expand each point into a paragraph or two. Each paragraph/point is accompanied by a slide which are made at the very end of the process. 
While most people start with making slides, I start with speaker notes first.
I write an article and turn it into a talk. The downside to this is that it can be more work, and take longer to prepare, but by now, I did this enough to overcome this problem.&lt;/p&gt;

&lt;p&gt;Knowing exactly what I want to say helps make things predictable. I know how this slide will go, and how it’ll lead to the next slide. I know what is the one sentence to describe this slide. I know how the content of the slide relates to what I want to say. I know where my jokes are, and that there’s enough of them, and not too many. More importantly, I know long I’ll take on stage, and that no side points will derail the whole thing into 15 minutes more than I have allocated.&lt;/p&gt;

&lt;p&gt;Writing out the text of my talk means that I have to memorize what I’m gonna say. I don’t have a very good memory, but memorizing helps test how good my talk is. If I can’t remember what I want to say at a certain slide, then there’s usually something wrong with the flow of my talk, and it needs changing.&lt;/p&gt;

&lt;p&gt;A problem for this approach is that delivering pre-prepared text can be difficult, it’s like reading from a teleprompter, you have to train yourself to seem natural at saying things that you’ve thought of a month ago, and make it seem like you’re just talking normally. The trick here is to understand that you’re writing words to be spoken, and not words to be read. You need to include pauses, voice inflation, speeding up and slowing down, passion (anger, happy, surprise, etc) in your text and not just in your delivery. The more talk-like your text is, the more natural it’ll sound to speak it. Of course, this can’t be done on the first time, but enough dry runs will do that.&lt;/p&gt;

&lt;p&gt;This can seem like a lot, but it really helps me overcome being nervous and not being quick on my feet. It also, as I mentioned, helps me be on time. Last month, I gave a 90-minutes talk in 90 minutes. The margin of error on a talk this long can be big, but planning and trials helps. However, I’m still surprised it turned out so well.&lt;/p&gt;

&lt;p&gt;One tip regarding time is to plan for some sections to be dropped off without breaking your flow. There are presentation software that helps you have optional slides that you can skip with the audience noticing. But the big burden is to plan your talk so that you can do this skipping with breaking down later sections that might rely on something you skipped.&lt;/p&gt;

&lt;p&gt;One big benefit of this approach is, sometimes I lose my train of though during the talk or be not sure of the exact wording, and having to fall back to the text helps me calm down and carry on. It’s strange to be reading from the stage, but for that one slide I needed to get the wording exactly right. With a font large enough for the speaker notes, I can step away from the monitor while being able to read off the monitor. I have to keep looking at the audience between each sentence and the next, and make sure that I use the right pace; a talking pace and not a reading pace. It can be a tough moment, but it’s better than freaking out and trying to figure out where you are in the story.&lt;/p&gt;

&lt;p&gt;Sadly, there’s no recording of my talk from last month. But I’m working on recording the audio for it to go along with the slides. It should be easy enough given that I have a full transcript of what I said. This is another big benefit of this approach. Try it sometime and let me know how it goes. Or, maybe you have an approach you prefer and you’d like to share.&lt;/p&gt;
</description>
          <pubDate>Tue, 05 Jul 2016 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/PreparingForATalk/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/PreparingForATalk/</guid>
          
          <category>Speaking</category>
          
          <category>Tips</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>How to Use IPFS to Fix NPM</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; title=&quot;My Cmder shell after customization&quot; src=&quot;/public/images/blog/HowToUseIpfsToFixNpm/ipfs-npm.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Last night and this morning, everyone is talking about how &lt;a href=&quot;http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/&quot;&gt;one developer took down big number of large JavaScript projects&lt;/a&gt; by &lt;a href=&quot;https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.z1pjotygm&quot;&gt;removing his modules from NPM&lt;/a&gt;.&lt;br /&gt;
People always talk about how NPM is a single point of failure. “&lt;em&gt;boy, if NPM is gone, we’ll be in big trouble&lt;/em&gt;”. Usually the concern is about NPM having problems, or NPM (the company) going evil. We don’t usually think about one package disappearing like what happened yesterday.&lt;/p&gt;

&lt;p&gt;There’s a lot to be said about what happened, and decry the irony of Open Source depending on one company. But, I’m not gonna talk about this. Let’s move directly to one possible solution.&lt;/p&gt;

&lt;p&gt;One solution is to use &lt;a href=&quot;http://ipfs.io/&quot;&gt;IPFS&lt;/a&gt; to refer to packages instead of file names and URLs that point to a location.&lt;br /&gt;
IPFS (InterPlanetary File System, a not-great name by the admission of its creator) is a proposed distribution protocol for addressing content (creating URLs) that points to content using their &lt;em&gt;signature&lt;/em&gt; rather than their location. The signature (the file name) is unique and depends on the content.&lt;br /&gt;
Once a package is created, it gets uploaded to any site, and people can copy it.&lt;br /&gt;
If you ask the network for a certain signature, it’ll get you that file from wherever is closer to you. It uses a &lt;a href=&quot;https://en.wikipedia.org/wiki/Distributed_hash_table&quot;&gt;distributed hash table&lt;/a&gt; (DHT) to find where to find the content.&lt;br /&gt;
Content can still be referred to using a human-friendly name using &lt;a href=&quot;https://github.com/ipfs/examples/tree/master/examples/ipns&quot;&gt;IPNS&lt;/a&gt; (a DNS for IPFS) and (&lt;a href=&quot;https://github.com/ipfs/notes/issues/41&quot;&gt;later&lt;/a&gt;) &lt;a href=&quot;http://namecoin.info/&quot;&gt;Namecoin&lt;/a&gt;.&lt;br /&gt;
&lt;a href=&quot;https://neocities.org/&quot;&gt;Neocities&lt;/a&gt; (the CMS/blog hosting services) is &lt;a href=&quot;https://ipfs.io/ipfs/QmNhFJjGcMPqpuYfxL62VVB9528NXqDNMFXiqN5bgFYiZ1/its-time-for-the-permanent-web.html&quot;&gt;already working&lt;/a&gt; to add IPFS support. By the way, this last link is an IPFS link. So, &lt;a href=&quot;https://github.com/ipfs/go-ipfs&quot;&gt;an implementation is already out there&lt;/a&gt; and can be tested.&lt;br /&gt;
This way, if you decide to put out a release of a package, you don’t have to maintain its hosting forever. As long as someone else is hosting a copy, people will get it. As long as someone has a copy of the file, they can re-upload it (offer it on the network) and it’ll be offered using the same name.&lt;br /&gt;
If you decide to remove your code repository, you aren’t breaking anyone’s code.&lt;br /&gt;
This way, people decide to put their content online package by package and release by release. You can’t go back and remove old stuff you already released.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/ipfs/awesome-ipfs&quot;&gt;awesome-ipfs&lt;/a&gt; has some great resources. &lt;br /&gt;
Here’s a good talk on the motivations and ideas for IPFS&lt;/p&gt;

&lt;div class=&quot;youtube-container&quot;&gt;
   &lt;div class=&quot;youtube-player&quot; data-id=&quot;HUVmypx9HGI&quot;&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Last December, &lt;a href=&quot;https://twitter.com/daviddias&quot;&gt;David Dias&lt;/a&gt; did a demo on one way IPFS could be used to mirror NPM. Here’s a &lt;a href=&quot;https://www.youtube.com/watch?v=-S-Tc7Gl8FM&quot;&gt;video of the talk&lt;/a&gt;, and his &lt;a href=&quot;http://blog.daviddias.me/2015/12/08/stellar-module-management&quot;&gt;blog post on the topic&lt;/a&gt;.&lt;/p&gt;
</description>
          <pubDate>Wed, 23 Mar 2016 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/HowToUseIpfsToFixNpm/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/HowToUseIpfsToFixNpm/</guid>
          
          <category>NPM</category>
          
          <category>IPFS</category>
          
          <category>Open Source</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
        <item>
          <title>Customize Windows Cmder Prompt</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; title=&quot;My Cmder shell after customization&quot; src=&quot;/public/images/blog/CustomizeWindowsCmderPrompt/CmderPrompt.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update (Nov. 26, 2016):&lt;/strong&gt; &lt;em&gt;Cmder 1.3 changed how customizations work. This change was for the better, it’s simpler to apply this customization, you only need to drop in one file in the &lt;strong&gt;config&lt;/strong&gt; folder. I’ve posted the code as &lt;a href=&quot;https://github.com/AmrEldib/cmder-powerline-prompt&quot;&gt;cmder-powerline-prompt&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’m finding myself spending more and more time in the command line. But I use Windows, which isn’t very clever in the command line. It doesn’t have Linux &lt;a href=&quot;http://ohmyz.sh/&quot;&gt;OhMyZsh&lt;/a&gt;, but it has &lt;a href=&quot;http://cmder.net/&quot;&gt;Cmder&lt;/a&gt;, which I like a lot.&lt;br /&gt;
Cmder comes with Git integration. It shows the Git status of current folder. &lt;a href=&quot;https://chocolatey.org/packages/Cmder/1.1.4.101&quot;&gt;Install it from Chocolatey&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What Cmder lacks (as far as I know) is customization packages you can download and install easily.&lt;/p&gt;

&lt;p&gt;I was watching a &lt;a href=&quot;https://youtu.be/zmjfh099zYg?t=10m54s&quot;&gt;video on YouTube&lt;/a&gt; when the speaker showed his Shell, and I wondered if I can get the same prompt on Cmder.&lt;/p&gt;

&lt;p&gt;Cmder uses an &lt;strong&gt;init.bat&lt;/strong&gt; file to set the prompt. It customizes Git using a &lt;strong&gt;git.lua&lt;/strong&gt; file.&lt;br /&gt;
The shell in the video seems to be done using &lt;a href=&quot;https://github.com/powerline/powerline&quot;&gt;powerline&lt;/a&gt; or something similar.&lt;/p&gt;

&lt;p&gt;After lots of poking around, I managed to get the same look in Cmder. Here’s what I’ve done:&lt;br /&gt;
&lt;strong&gt;CAUTION: Please backup your settings before making any changes. These changes work on my machine, not sure how it will affect yours.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Download the &lt;a href=&quot;https://github.com/powerline/fonts&quot;&gt;powerline fonts&lt;/a&gt;, they include the arrow ending and branch symbols. You can use the powershell script included in the downloaded zip file to quickly install those fonts. I used the &lt;strong&gt;Anonymice Powerline&lt;/strong&gt; font with &lt;strong&gt;bold&lt;/strong&gt; and monospace settings.&lt;/li&gt;
  &lt;li&gt;In Cmder main settings, make sure to choose Font Charset as &lt;strong&gt;ANSI&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;In the settings, under &lt;strong&gt;Startup &amp;gt; Tasks&lt;/strong&gt;, pick up where your init.bat is saved. Open the file and replace it with the content of the &lt;a href=&quot;https://gist.github.com/AmrEldib/1d31cd54409a8ec612df#file-init-bat&quot;&gt;init.bat&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;The important changes in &lt;strong&gt;init.bat&lt;/strong&gt; is &lt;a href=&quot;https://gist.github.com/AmrEldib/1d31cd54409a8ec612df#file-init-bat-L12&quot;&gt;line 12&lt;/a&gt; where the prompt is modified.&lt;br /&gt;
&lt;code class=&quot;highlighter-rouge&quot;&gt;@prompt $E[37;44m$P$S{git}$_$E[34;40m{lamb}$S$E[0m&lt;/code&gt;&lt;br /&gt;
This line sets the prompt’s font color and background color. Here’s a &lt;a href=&quot;http://ascii-table.com/ansi-escape-sequences.php&quot;&gt;list of all colors&lt;/a&gt;. I’ve avoided using text attributes to make sure that font color and background colors will match.&lt;/li&gt;
  &lt;li&gt;Find where &lt;strong&gt;Cmder&lt;/strong&gt; is installed, you should find a &lt;strong&gt;config&lt;/strong&gt; folder there.&lt;/li&gt;
  &lt;li&gt;In the &lt;strong&gt;config&lt;/strong&gt; folder, there’s a &lt;strong&gt;git.lua&lt;/strong&gt; file. We’ll replace this with this &lt;a href=&quot;https://gist.github.com/AmrEldib/1d31cd54409a8ec612df#file-git-lua&quot;&gt;git.lua&lt;/a&gt; file.&lt;/li&gt;
  &lt;li&gt;This file adds the Git status to the command prompt if the folder contains a git repo.&lt;/li&gt;
  &lt;li&gt;The changes I’ve made include changing colors, and adding arrow ending and branch symbols.&lt;/li&gt;
  &lt;li&gt;You’ll notice that some characters aren’t readable in the gist (lines 30, 31, 40, 44 and 51). Those are characters that are only included in the powerline fonts. The picture below (from &lt;a href=&quot;https://gist.github.com/agnoster/3712874&quot;&gt;here&lt;/a&gt;) shows the symbols and their unicode number.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; title=&quot;Powerline symbols and their unicode number&quot; src=&quot;/public/images/blog/CustomizeWindowsCmderPrompt/Characters.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The two symbols I’m using are the right arrow for line ending with unicode &lt;strong&gt;E0B0&lt;/strong&gt; and branch with unicode &lt;strong&gt;E0A0&lt;/strong&gt;.&lt;br /&gt;
If you copy the snippets from the gist and those symbols aren’t copied correctly. Go to Windows Character Map and find them using the unicode under the &lt;strong&gt;Anonymice Powerline&lt;/strong&gt; font and copy and paste them in Notepad++ (or any application that will preserve the character).&lt;br /&gt;
Open Cmder and enjoy the new shell.&lt;br /&gt;
If you have any cool customizations for Cmder, please share them in the comments.&lt;/p&gt;
</description>
          <pubDate>Sun, 28 Feb 2016 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/CustomizeWindowsCmderPrompt/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/CustomizeWindowsCmderPrompt/</guid>
          
          <category>Windows</category>
          
          <category>Command line</category>
          
          <category>Customization</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>Proxy Goals and Actual Goals</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; title=&quot;My longest GitHub streak&quot; src=&quot;/public/images/blog/ProxyGoalsAndActualGoals/GitHubContributions-LongestStreak.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;My longest streak on &lt;a href=&quot;https://github.com/AmrEldib&quot;&gt;GitHub&lt;/a&gt; is 129 days. I was aiming for 200 days during a time when I wanted to have measurement for my commitment to learning more stuff, and doing more side work.&lt;br /&gt;
One day I came back from work around 8pm really tired. So, I decided to lay on the bed before jumping into my afternoon routine. I woke up 45 mins after midnight, missing the deadline for my daily contribution.
I won’t say that I almost cried for breaking my long streak, but missing the daily deadline was the first thing that came to my mind when I looked at the time.&lt;br /&gt;
I was very upset, and started searching online for something I heard about git’s ability to re-write history or something, maybe I can trick GitHub. Couldn’t find anything and went back to sleep.&lt;br /&gt;
The next day, I was still upset till the evening when it came time for my daily deadline. &lt;strong&gt;I noticed that I wasn’t stressed like I was the past few weeks&lt;/strong&gt;.&lt;br /&gt;
See, at the start, I had lots of things to contribute. I was building this blog, and it was a lot of work and fun. Then there wasn’t much stuff to do, but I had a goal to achieve. Coming up with things to do was getting hard. Things that had to be small enough that I can do in a day. No, I can’t stop and learn something. Reading or watching a tutorial wasn’t gonna help keep my streak.&lt;br /&gt;
Somewhere along the line, &lt;em&gt;I lost sight of my actual goal of learning more stuff&lt;/em&gt;, and doing more side work, and moved to a proxy-goal (not sure if that’s a word) of keeping a contribution streak on GitHub. I think of a proxy-goal as a measurable goal that you use to indicate whether or not you’re achieving your goal. The proxy-goal became the actual goal, and when the two were at odds, I chose the proxy-goal instead. 
In the last couple of weeks of my streak, I would do small tiny changes 15 mins before midnight to keep my streak going.&lt;br /&gt;
It’s helpful to have a metric of how well you’re doing, and how you’re progressing toward your goal, but it’s important to keep that metric in perspective. When it’s at odds with your actual goal, make sure to choose your actual goal.&lt;br /&gt;
This doesn’t apply only for GitHub contributions. Think of the proxy-goals that are replacing actual goals in your daily life.&lt;/p&gt;

&lt;p&gt;Scott Hanselman started a conversation on his blog about &lt;a href=&quot;http://www.hanselman.com/blog/GitHubActivityGuiltAndTheCodersFitBit.aspx&quot;&gt;GitHub activity guilt&lt;/a&gt; and this was my comment on the topic.&lt;/p&gt;
</description>
          <pubDate>Mon, 08 Feb 2016 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/ProxyGoalsAndActualGoals/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/ProxyGoalsAndActualGoals/</guid>
          
          <category>Personal Development</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Fix Jekyll Case Sensitive URLs On GitHub Pages</title>
          <description>&lt;p&gt;I like to capitalize the first letters in names that doesn’t allow for spaces. It makes it easier to read.&lt;br /&gt;
Consider this name ‘fixjekyllcasesensitiveurlsongithubpages’ compared to this ‘FixJekyllCaseSensitiveUrlsOnGitHubPages’. The first is just a long string of characters while the second is easily readable text even without spaces.&lt;br /&gt;
This is why I like to maintain my URLs to have capital letters. However, GitHub pages URLs are case sensitive. It’s a &lt;a href=&quot;http://stackoverflow.com/questions/25815954/make-github-pages-case-insensitive&quot;&gt;well known issue&lt;/a&gt;.&lt;br /&gt;
While most people just use lower case for their URLs. I didn’t like this option.&lt;br /&gt;
To fix this, I can let the user go to the 404 page and have a script there match the URL entered by the user with the URLs of all pages on the site (while ignoring the casing). If there’s a match, forward the user to the URL with the correct casing.&lt;br /&gt;
To implement this in your Jekyll site hosted on GitHub Pages, add this script (inside a script tag) to your 404 page.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/81a4660fe00da8f11956.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Try it by visiting this URL &lt;a href=&quot;//amreldib.com/blog/howtoaskaquestion/&quot;&gt;amreldib.com/blog/howtoaskaquestion/&lt;/a&gt; which should be &lt;a href=&quot;//amreldib.com/blog/HowToAskAQuestion/&quot;&gt;amreldib.com/blog/HowToAskAQuestion/&lt;/a&gt;&lt;/p&gt;
</description>
          <pubDate>Sat, 06 Feb 2016 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/FixJekyllCaseSensitiveUrlsOnGitHubPages/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/FixJekyllCaseSensitiveUrlsOnGitHubPages/</guid>
          
          <category>Jekyll</category>
          
          <category>GitHub Pages</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>How to Ask a Question</title>
          <description>&lt;p&gt;I work in Technical Support, and I participate in a number of online communities. Not a week goes by without shaking my head when reading a question by someone seeking technical help.&lt;br /&gt;
I consider asking a question a form of communication. Any form of communication can be improved if we follow some guidelines and aim for some goals.&lt;br /&gt;
The main goal is to &lt;strong&gt;get an accurate answer to the question faster&lt;/strong&gt;. This could be achieved by:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Reaching expert audience&lt;/li&gt;
  &lt;li&gt;Maintaining their attention&lt;/li&gt;
  &lt;li&gt;Delivering the right question&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;reaching-expert-audience&quot;&gt;Reaching Expert Audience&lt;/h3&gt;
&lt;p&gt;This is not just about going to the right forum or Q&amp;amp;A site to ask your question. Even in those places, there’s an audience reading your question that’s usually bigger than the experts you’re targeting.&lt;br /&gt;
Very early in your question, &lt;strong&gt;make clear what’s the focus of your question&lt;/strong&gt;. Don’t start with background. It seems like a natural place to start with how things came to be. However, from the reader’s perspective, they want to know if this question is for them or not. Start with the big technology terms you’re using.&lt;br /&gt;
On the other hand, don’t be too specific to avoid pushing away some of your audience. Don’t say something like “Calling Adobe Flex Experts only”. Anyone who’s not an Expert will just move along, and it’s your loss because one of them have the answer to your question. Instead say “I’m having a problem with Adobe Flex”, or better, “I’m getting an error with Adobe Flex” or “I can’t do X with Adobe Flex”.&lt;br /&gt;
&lt;strong&gt;Your starting sentence is the synopsis of your problem&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 id=&quot;maintaining-their-attention&quot;&gt;Maintaining their Attention&lt;/h3&gt;
&lt;p&gt;Now that I have the right audience for my question, I gotta &lt;strong&gt;give them more details to get them thinking&lt;/strong&gt;. The first paragraph of your question is a more detailed description of the problem. It’s not the most detailed description. The first sentence in a foot deep in the water, and the first paragraph is knee deep.&lt;br /&gt;
The first paragraph is the hardest part to write. You might think that the first sentence is more difficult because it’s shorter, but there’s only one (or at most, two) piece of information you need to deliver in the first sentence. The first paragraph is a summary of your problem with enough information to &lt;strong&gt;cause the reader to come up with a suggestion or ask for more details&lt;/strong&gt;.&lt;br /&gt;
There’s a big upside in asking the question in this manner. You’re forced to think about how to phrase, or describe, the problem. This is a slightly different exercise than trying to solve the problem. In stepping back and looking at the problem from a far, you get to see things you’ve missed while neck deep into the details.&lt;br /&gt;
I’ve had clients emailing me with long technical details and attached code files asking for help, only to email me an hour later saying they’ve figured it out even though it wasn’t an easy problem. It’s just when they send the first email, they step away from the problem because someone else is looking into it now. This gives their minds enough space to wonder about the problem from a distance.&lt;br /&gt;
The same kind of thing happens to me as well. I would run into a problem. Frustrated, I run to a coworker asking for help. I start explaining the problem out loud, breaking down what’s wrong, and in the process of describing it I say “you know what? never mind. I found it”. They look at me not understanding what just happened but offering “you’re welcome” as I run back to my desk.&lt;br /&gt;
The first paragraph is about what &lt;em&gt;not&lt;/em&gt; to write more than what to write. Don’t write about the background for the question, don’t write deep technical details like version numbers, don’t write long snippets of your code. &lt;strong&gt;Use your words, don’t just show your work and ask the reader to figure out what’s wrong&lt;/strong&gt;.&lt;br /&gt;
There’s one exception to this which is error messages. These sum up the problem very well that they can cause the reader to offer a suggestion right away. However, they also beg the question: why didn’t you search for the error message. We’ll talk about this in a bit.&lt;/p&gt;

&lt;h3 id=&quot;delivering-the-right-question&quot;&gt;Delivering the Right Question&lt;/h3&gt;
&lt;p&gt;Your first paragraph got the reader thinking. &lt;strong&gt;The rest of your question is about answering the questions they’re most likely to ask, and shooting down the suggestions you’ve already tried&lt;/strong&gt;.&lt;br /&gt;
This might be the place to provide background for your question. However, do so in a gradual manner. First, technical background, then less technical details. Start with “I’m trying to make the user data persistant on the client side”, then later talk about “I’m a contractor building an app for a financial institution”. &lt;strong&gt;Design your question on the assumption that the reader will stop reading half way either to &lt;em&gt;leave&lt;/em&gt; or to &lt;em&gt;answer&lt;/em&gt;&lt;/strong&gt;.&lt;br /&gt;
&lt;strong&gt;Talk about what you’ve tried&lt;/strong&gt;. It’s important to show that asking the question isn’t your first attempt to solve the problem. The reader’s time is precious and you want to show that you care about saving it. Give brief (one sentence) explanation on why this solution didn’t work for you.&lt;br /&gt;
&lt;strong&gt;Provide the technical details about your problem&lt;/strong&gt;. This includes version numbers, configurations that you’ve set up, requirements and limitations you must adhere to. Any details that limit and rule out some of the possible solutions.&lt;br /&gt;
The idea here is to avoid wasting time on long exchanges about things other than solid suggestions you can act on. You don’t want to have a response like: “what version are you using?”. You don’t want to get answer like: “I’ve googled your question and I got this” then a response from you saying “I’ve tried this”. All these exchanges are wasting time and draining the attention of your audience. They’re losing interest in your problem as time goes on. The only people sticking around are the ones who have the same problem as you.&lt;/p&gt;

&lt;h3 id=&quot;general-rules&quot;&gt;General Rules&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Formatting&lt;/strong&gt;&lt;br /&gt;
Formatting is very important. I don’t want to read through a ball of text. I want to be able to scan the text for a specific piece of information. &lt;strong&gt;Bold&lt;/strong&gt; and &lt;em&gt;italics&lt;/em&gt; are your friend. Break your text into paragraphs. Use lists and bullet points anywhere they make sense. Avoid stream-of-consciousness type of writing.&lt;br /&gt;
&lt;strong&gt;Be Mindful of your Readers&lt;/strong&gt;&lt;br /&gt;
These are people who are trying to help you, usually only out of the goodness of their own hearts. Don’t waste their time. Understand that they could be busy if they don’t come back to follow up. Be grateful, not just for their suggestions but even for taking the time to read your question.&lt;br /&gt;
&lt;strong&gt;Finish the Story&lt;/strong&gt;&lt;br /&gt;
When you finally find an answer, post it where you posted the question. You started out asking the Internet for help, it’s only suitable to help the Internet when you can. It’s temping to just move on, but think about all those long forum threads you stumble upon that matches your problem and goes on and on only to end with no good conclusion. It’s very frustrating.&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;You might end up with very short threads if you follow these rules. You can get the answer, or even shorter; no answer. It’s not as exciting as having people come in and ask you simple questions to get basic information or make basic suggestions. This gives the illusion that people are engaged and the solution is just around the corner. However, it’s not. It’s just wasting time, and giving the impression that you didn’t do your part.&lt;br /&gt;
People will read your question and probably end up not having an answer or making a suggestion. You can give them another chance to look at your question by providing an update every time you make some progress.&lt;br /&gt;
Happy troubleshooting!&lt;/p&gt;
</description>
          <pubDate>Wed, 02 Dec 2015 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/HowToAskAQuestion/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/HowToAskAQuestion/</guid>
          
          <category>Tech</category>
          
          <category>Communication</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>Intro to GitHub Talk at MaptimeYVR</title>
          <description>&lt;p&gt;I got a chance last Tuesday to give a session at &lt;a href=&quot;http://www.meetup.com/MaptimeYVR/&quot;&gt;MaptimeYVR&lt;/a&gt; titled 'Intro to GitHub'. It was a lot of fun and a great chance to meet everybody. MaptimeYVR is getting more interesting with every meetup. My thanks to the organizers; &lt;a href=&quot;https://twitter.com/sarahmprz&quot;&gt;Sarah&lt;/a&gt;, Liam and &lt;a href=&quot;https://twitter.com/leejoeyk&quot;&gt;Joey&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; lang=&quot;en&quot;&gt;&lt;p&gt;Getting our Git on at &lt;a href=&quot;https://twitter.com/maptimeYVR&quot;&gt;@maptimeYVR&lt;/a&gt; with &lt;a href=&quot;https://twitter.com/AmrEldib&quot;&gt;@AmrEldib&lt;/a&gt; cc/ &lt;a href=&quot;https://twitter.com/sarahmprz&quot;&gt;@sarahmprz&lt;/a&gt; &lt;a href=&quot;https://twitter.com/mappingmashups&quot;&gt;@mappingmashups&lt;/a&gt; &lt;a href=&quot;http://t.co/PPv5G0Rh9G&quot;&gt;pic.twitter.com/PPv5G0Rh9G&lt;/a&gt;&lt;/p&gt;&amp;mdash; Joey Lee (@leejoeyk) &lt;a href=&quot;https://twitter.com/leejoeyk/status/567919920735870976&quot;&gt;February 18, 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;Here are the &lt;a href=&quot;/slides/introToGitHub/#/&quot;&gt;slides to the talk&lt;/a&gt;. The &lt;a href=&quot;https://github.com/AmrEldib/sampleIntroToGitHub/&quot;&gt;sample is on GitHub&lt;/a&gt;, we'll use it for the exercise next meetup.&lt;/p&gt;
</description>
          <pubDate>Fri, 20 Feb 2015 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/IntroToGitHubTalk/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/IntroToGitHubTalk/</guid>
          
          <category>Talk</category>
          
          <category>GitHub</category>
          
          <category>Maptime</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>Change Style of Firefox DevTools</title>
          <description>&lt;p&gt;I spend a lot of time now in the Firefox Dev Tools. The console has a very nice dark theme which makes things easier but some times that’s not enough. You can find the font a little small (which you can fix with a Ctrl + ‘+’), but mostly after a while you just find yourself bored of looking at the same thing. Time for a bit of change.&lt;br /&gt;
&lt;img class=&quot;imageInCenter&quot; title=&quot;Firefox DevTools with Ubuntu font size 14px&quot; src=&quot;/public/images/blog/ChangeStyleOfFirefoxDevTools/FirefoxDevTools.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After a quick search on DuckDuckGo, I find the &lt;a href=&quot;http://askubuntu.com/questions/426326/how-to-change-firefox-debugger-font-size&quot;&gt;answer&lt;/a&gt; on StackExcange (the AskUbuntu site), and it was really easy.&lt;/p&gt;

&lt;p&gt;Create a new userChrome.css file (You read that right. Before Chrome, chrome just meant window). Create the file under:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;%USERPROFILE%\AppData\Roaming\Mozilla\Firefox\Profiles\&amp;lt;PROFILE NAME&amp;gt;\chrome\userChrome.css
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In the file, add the style you want.&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document regexp(&quot;chrome://browser/content/devtools/.*&quot;) {
    * { 
        font-size: 20px !important 
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: In newer versions of Firefox and in the Firefox Developer Edition, the URL to the devtools is different. You should use this snippet instead:&lt;/p&gt;
&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document regexp(&quot;chrome://devtools/content/.*&quot;) {
	* {
		font-size: 16px !important;
	}
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Restart Firefox.&lt;/p&gt;
</description>
          <pubDate>Mon, 12 Jan 2015 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/ChangeStyleOfFirefoxDevTools/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/ChangeStyleOfFirefoxDevTools/</guid>
          
          <category>Firefox</category>
          
          <category>DevTools</category>
          
          <category>Tips</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>Enable Windows Authentication in Firefox</title>
          <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;TL;DR:&lt;/em&gt;&lt;/strong&gt; for Firefox users, here’s how to integrate Windows Authentication to enable logging like IE (without entering credentials).&lt;/p&gt;

&lt;p&gt;I use Firefox as my primary browser. At work, we’ve just started a big consolidation of all the companies sites and cloud services (that we use) to rely on Windows Authentication. Instead of just Windows and Outlook requiring your Windows credentials, now everything needs them including CRM, messaging service, partner sites, etc. So, I found that I’m entering my credentials over and over all the time.&lt;/p&gt;

&lt;p&gt;IE, of course, integrates Windows Authentication. Firefox, for the longest time I thought, doesn’t.&lt;/p&gt;

&lt;p&gt;But I wanted to avoid this (laziness is the mother of all inventions). So, I did a bit of research and found that Firefox actually does support integrating Windows Authentication. However, it’s done via a white-list of sites that are pre-approved. Once this is configured, signing in is done automatically without having to enter credentials anymore.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;To configure Firefox to skip the Windows credentials dialog, do the following&lt;/u&gt;&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;In the address bar, type &lt;em&gt;about:config&lt;/em&gt; and press Enter.&lt;/li&gt;
  &lt;li&gt;Click “&lt;em&gt;I’ll be careful, I promise!&lt;/em&gt;”.&lt;/li&gt;
  &lt;li&gt;Search for “&lt;em&gt;network.automatic-ntlm-auth.trusted-uris&lt;/em&gt;”.&lt;/li&gt;
  &lt;li&gt;Double-click on the entry to modify its value.&lt;/li&gt;
  &lt;li&gt;Enter a comma-separated list of sites you want to enable Windows Authentication for.&lt;/li&gt;
  &lt;li&gt;The URLs to be added should be the base URL without ‘http://’ in front. This makes it easy to avoid entering the wrong value.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you use Firefox, apply these steps to quickly log into sites that uses Windows authentication.&lt;/p&gt;

&lt;p&gt;If you don’t use Firefox, you really should. Check out &lt;a href=&quot;https://support.mozilla.org/en-US/kb/tab-groups-organize-tabs&quot;&gt;Tab Groups&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/public/images/blog/EnableWindowsAuthenticationInFirefox/TabGroup.jpg&quot;&gt;&lt;img src=&quot;/public/images/blog/EnableWindowsAuthenticationInFirefox/TabGroup.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s better than this :D
&lt;a href=&quot;/public/images/blog/EnableWindowsAuthenticationInFirefox/ChromeTabs.jpg&quot;&gt;&lt;img src=&quot;/public/images/blog/EnableWindowsAuthenticationInFirefox/ChromeTabs.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
          <pubDate>Sat, 27 Sep 2014 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/EnableWindowsAuthenticationInFirefox/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/EnableWindowsAuthenticationInFirefox/</guid>
          
          <category>Security</category>
          
          <category>Tips</category>
          
          <category>Windows</category>
          
          <category>Firefox</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>Chocolatey: Install Software like a Pro</title>
          <description>&lt;p&gt;I use a lot of software, and always there’s a nagging voice in head saying “you’re not using the latest version. Update. Update. Update”. Of course, sometimes that nagging voice is up on the screen asking me to update. However, as fun as using the latest version can be, the process of updating is not as fun. Downloading and installing takes a lot of time. Sometimes you have to uninstall the previous version. Sometimes, you even have to check if there’s a new version yourself. You have to be careful to avoid installing adware. While some software is getting better at this, others (I’m looking at you, Adobe Flash. You really suck) are going backward and ask you to download the software yourself.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/Chocolatey/chocolateyicon.gif&quot; /&gt;&lt;/p&gt;

&lt;p&gt;One the best thing about Linux that all this is taking care of. On Ubuntu, for example, you use apt-get to download and install software and keep it update with a single command.
Now, &lt;a href=&quot;http://chocolatey.org/&quot;&gt;Chocolatey&lt;/a&gt; brings this smooth install and update process to Windows. Chocolatey is an open source free software built on top of &lt;a href=&quot;https://www.nuget.org/&quot;&gt;NuGet&lt;/a&gt;; a package management technology offered as part of Visual Studio.&lt;/p&gt;

&lt;p&gt;Chocolatey offers a &lt;a href=&quot;http://chocolatey.org/packages&quot;&gt;gallery&lt;/a&gt; of software, much like an App Store where you can browse for the application you like, find the command for it, then from your command line, install it.&lt;/p&gt;

&lt;p&gt;First you need to setup Chocolatey on your system, using a PowerShell command:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;@powershell -NoProfile -ExecutionPolicy unrestricted -Command “iex  ((new-object  net.webclient).DownloadString(‘https://chocolatey.org/install.ps1’))”  &amp;amp;&amp;amp; SET PATH=%PATH%;%systemdrive%\chocolatey\bin&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This one line command will download a PowerShell script from Chocolatey and run it, after allowing for unrestricted execution policy (which you disable later).&lt;/p&gt;

&lt;p&gt;After you run this command, you can now install applications. Here’s how to install &lt;a href=&quot;http://chocolatey.org/packages/7zip.install&quot;&gt;7-zip&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;cinst 7zip.install&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This command will install 7-zip under the “Program Files” folder (or “Program Files (x86)” if you use a x64 system). It will also register 7-zip with Chocolatey so that it can be updated later. If 7-zip is already installed, it will be updated (if an update is available), and registered with Chocolatey.&lt;/p&gt;

&lt;p&gt;When you’re picking a package from the Chocolatey gallery, make sure you’re choosing the correct one. Sometimes there are packages with different options. For example: there’s a &lt;a href=&quot;http://chocolatey.org/packages/7zip&quot;&gt;portable package&lt;/a&gt; for 7-zip, and there’s the &lt;a href=&quot;http://chocolatey.org/packages/7zip.install&quot;&gt;install package&lt;/a&gt; that I used above. You can read more about &lt;a href=&quot;https://github.com/chocolatey/chocolatey/wiki/ChocolateyFAQs#wiki-what-distinction-does-chocolatey-make-between-an-installable-and-a-portable-application&quot;&gt;Chocolatey’s install vs. portable&lt;/a&gt; packages.&lt;/p&gt;

&lt;p&gt;While you’re installing your applications, make sure to keep track of all the commands you used. This will be helpful later when you’re installing a new system. In one text file, you can keep track of almost all the applications you’re using.&lt;/p&gt;

&lt;p&gt;Later on, you’ll need to update. Super easy, just type in the command line: &amp;gt; &lt;code class=&quot;highlighter-rouge&quot;&gt;cup all&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you need help remember those commands: &lt;em&gt;cinst&lt;/em&gt; is short of &lt;em&gt;&lt;strong&gt;C&lt;/strong&gt;hocolatey &lt;strong&gt;Inst&lt;/strong&gt;all&lt;/em&gt;. &lt;em&gt;cuninst&lt;/em&gt; is short for &lt;em&gt;&lt;strong&gt;C&lt;/strong&gt;hocolatey &lt;strong&gt;UnInst&lt;/strong&gt;all&lt;/em&gt;. And &lt;em&gt;cup all&lt;/em&gt; is short for &lt;em&gt;&lt;strong&gt;C&lt;/strong&gt;hocolatey &lt;strong&gt;Up&lt;/strong&gt;date &lt;strong&gt;All&lt;/strong&gt;&lt;/em&gt;.
You can read the &lt;a href=&quot;https://github.com/chocolatey/chocolatey/wiki/CommandsReference&quot;&gt;Chocolatey command reference&lt;/a&gt; for more details.&lt;/p&gt;

&lt;p&gt;If you like the ease of Chocolatey but hate the command line, you can use &lt;a href=&quot;http://chocolatey.org/packages/ChocolateyGUI&quot;&gt;Chocolatey GUI&lt;/a&gt; to do the same thing. It’s a little bit slow so far, but it’s very promising.&lt;/p&gt;
</description>
          <pubDate>Sun, 09 Feb 2014 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/Chocolatey/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/Chocolatey/</guid>
          
          <category>Chocolatey</category>
          
          <category>Tools</category>
          
          <category>Tips</category>
          
          <category>Windows</category>
          
          <category>PowerShell</category>
          
          <category>Microsoft</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
        <item>
          <title>Share To Social Networks Using Browser Bookmarks</title>
          <description>&lt;p&gt;I’ve tried many ways to easily share items from my browser to any of the social networks I’m using. Addons came close to working fine but I always worry (maybe unreasonably) about their load on the browser.&lt;/p&gt;

&lt;p&gt;Then, I came across bookmarks (or &lt;em&gt;bookmarklets&lt;/em&gt;) via a &lt;a href=&quot;http://www.hanselman.com/blog/AddSocialSharingLinksToYourBlogWithoutWidgetJavaScript.aspx&quot;&gt;Scott Hanselman’s post&lt;/a&gt; and I found a winner.&lt;/p&gt;

&lt;p&gt;Here are the code snippets for how to share to some of the popular social networks. Simply create a bookmark and provide its location to be the code snippet:&lt;/p&gt;

&lt;h2 id=&quot;twitter&quot;&gt;Twitter&lt;/h2&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/7297744.js&quot;&gt;&lt;/script&gt;

&lt;h2 id=&quot;facebook&quot;&gt;Facebook&lt;/h2&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/7297751.js&quot;&gt;&lt;/script&gt;

&lt;h2 id=&quot;appnet&quot;&gt;App.Net&lt;/h2&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/7297755.js&quot;&gt;&lt;/script&gt;

&lt;h2 id=&quot;springpad&quot;&gt;Springpad&lt;/h2&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/7297760.js&quot;&gt;&lt;/script&gt;

&lt;h2 id=&quot;kindle&quot;&gt;Kindle&lt;/h2&gt;

&lt;p&gt;To send items to Kindle, use &lt;a href=&quot;http://www.klip.me/&quot;&gt;Klip.me&lt;/a&gt;&lt;/p&gt;
</description>
          <pubDate>Sun, 10 Nov 2013 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/ShareToSocialNetworksUsingBrowserBookmarks/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/ShareToSocialNetworksUsingBrowserBookmarks/</guid>
          
          <category>Facebook</category>
          
          <category>Social Networks</category>
          
          <category>Tips</category>
          
          <category>Springpad</category>
          
          <category>App.Net</category>
          
          <category>Twitter</category>
          
          <category>Kindle</category>
          
          <category>Code</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Outlook Out-of-Office Auto-Reply Only to Emails Directed to Me</title>
          <description>&lt;p&gt;Out-of-Office Replies are very helpful and, I must admit, very annoying. I’d love to maximize the first part and minimize the last. I only want to know that someone is out-of-office if I address them directly, not if I CC them.&lt;br /&gt;
Here’s how I set up my Outlook out-of-office automatic replies so that they only go out if the email is directed to me. No auto-reply will be sent if I’m only CC’d on the email.&lt;br /&gt;
These screenshots use Office 2010, but the steps are very similar in other versions.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;In the File/Office menu, open the “Automatic Replies” button.
&lt;a href=&quot;/public/images/blog/OutlookOutOfOfficeAutoReplyOnlyToEmailsDirectedToMe/01-OutOfOfficeButton.png&quot;&gt;&lt;img src=&quot;/public/images/blog/OutlookOutOfOfficeAutoReplyOnlyToEmailsDirectedToMe/01-OutOfOfficeButton.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Select the date range you want replies to go out.&lt;/li&gt;
  &lt;li&gt;Make sure to leave the area below blank. If you fill this area, an email will go out with the message you leave in there.&lt;/li&gt;
  &lt;li&gt;Click the “Rules” button.&lt;br /&gt;
&lt;a href=&quot;/public/images/blog/OutlookOutOfOfficeAutoReplyOnlyToEmailsDirectedToMe/02-BasicInfo.png&quot;&gt;&lt;img src=&quot;/public/images/blog/OutlookOutOfOfficeAutoReplyOnlyToEmailsDirectedToMe/02-BasicInfo.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;In “Automatic Reply Rules” dialog, click “Add Rule…”.&lt;br /&gt;
&lt;a href=&quot;/public/images/blog/OutlookOutOfOfficeAutoReplyOnlyToEmailsDirectedToMe/03-AddRule.png&quot;&gt;&lt;img src=&quot;/public/images/blog/OutlookOutOfOfficeAutoReplyOnlyToEmailsDirectedToMe/03-AddRule.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Check “Sent directly to me” so that emails that are only directly sent to you will be replied to.&lt;/li&gt;
  &lt;li&gt;Check “Reply with” and click “Template..”.&lt;br /&gt;
&lt;a href=&quot;/public/images/blog/OutlookOutOfOfficeAutoReplyOnlyToEmailsDirectedToMe/04-RuleDetails.png&quot;&gt;&lt;img src=&quot;/public/images/blog/OutlookOutOfOfficeAutoReplyOnlyToEmailsDirectedToMe/04-RuleDetails.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;In the email compose window, enter the email message you want to go out.&lt;/li&gt;
  &lt;li&gt;You can add more conditions, more rules, and more actions. Explore the different options and build rules that match your need.&lt;/li&gt;
  &lt;li&gt;Click “Ok”. You’re done.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Enjoy your time out of the office, and less-flooded inboxes.&lt;br /&gt;
Hat tip to &lt;a href=&quot;http://haacked.com/archive/2013/08/28/the-two-email-rule-for-out-of-office-replies.aspx&quot;&gt;Phil Haack&lt;/a&gt; and &lt;a href=&quot;http://www.parisc-linux.org/mailing-lists/outlookooo.html&quot;&gt;Ali Ezzet&lt;/a&gt;.&lt;/p&gt;
</description>
          <pubDate>Wed, 06 Nov 2013 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/OutlookOutOfOfficeAutoReplyOnlyToEmailsDirectedToMe/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/OutlookOutOfOfficeAutoReplyOnlyToEmailsDirectedToMe/</guid>
          
          <category>Tips</category>
          
          <category>Outlook</category>
          
          <category>Microsoft</category>
          
          <category>Office</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Open YouTube Videos in PopUp Window with a Bookmark</title>
          <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; Follow these steps to add a bookmark to your browser that opens YouTube videos in a popup window.&lt;/p&gt;

&lt;p&gt;Aside from my laptop, I use two monitors. This allows my to “multitask” which is fancy talk for having something running/playing in the background while I’m actually working.
Sometimes the thing that is running in the background is a YouTube video. This is great with music videos and long videos that don’t need my full attention. However, I find it annoying to have the YouTube page or video fill the entire screen. What I need is a small window with just the video. I don’t really need the comments, suggestions, header, etc.&lt;/p&gt;

&lt;p&gt;The embed HTML is the key here. You can right-click on the video and directly copy the embed code. It looks like this:
&lt;a href=&quot;/public/images/blog/OpenYouTubeVideosInPopUpWindowWithBookmark/CopyYouTubeEmbedCode.png&quot;&gt;&lt;img src=&quot;/public/images/blog/OpenYouTubeVideosInPopUpWindowWithBookmark/CopyYouTubeEmbedCode.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/7297359.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Embed code has a lot of options that you can view in the &lt;a href=&quot;https://support.google.com/youtube/answer/171780?hl=en#171780&quot;&gt;help section&lt;/a&gt;.&lt;br /&gt;
This embed code is of an iFrame that opens a YouTube page at a certain URL. YouTube would actually take care of removing all of the extra stuff that I don’t need.&lt;br /&gt;
Browser bookmarks can run a JavaScript function which would open a popup window of a YouTube page with just this video.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/7297410.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;The JavaScript function looks at the active browser tab and picks up the unique ID of the video before constructing the embed URL and opening a new browser window with that URL.
To avoid a predictable problem, the function will make sure that you’re on a YouTube page before it opens the popup window. If not, it will display an error message.&lt;/p&gt;

&lt;h3 id=&quot;how-to-add-this-to-my-browser&quot;&gt;How to Add This to My Browser&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Copy this code:&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/AmrEldib/7297410.js&quot;&gt;&lt;/script&gt;&lt;/li&gt;
  &lt;li&gt;Open your browser’s Bookmark window.&lt;/li&gt;
  &lt;li&gt;Create a new bookmark, and give it a name. Say: Popup YouTube Video.&lt;/li&gt;
  &lt;li&gt;In the location, paste the code listed above.&lt;/li&gt;
  &lt;li&gt;You’re all done.&lt;/li&gt;
&lt;/ol&gt;
</description>
          <pubDate>Sun, 03 Nov 2013 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/OpenYouTubeVideosInPopUpWindowWithBookmark/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/OpenYouTubeVideosInPopUpWindowWithBookmark/</guid>
          
          <category>JavaScript</category>
          
          <category>YouTube</category>
          
          <category>Tips</category>
          
          <category>Browsers</category>
          
          <category>Code</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>How to Turn XML Schema (XSD) to Documentation</title>
          <description>&lt;p&gt;&lt;a href=&quot;/public/images/blog/HowToTurnXmlSchemaXsdToDocumentation/VSXmlSchemaEditor-big.png&quot;&gt;
    &lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/HowToTurnXmlSchemaXsdToDocumentation/VSXmlSchemaEditor.png&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, a colleague at work was trying to modify a configuration file in XML format. He wasn’t sure what were the available options for a certain attribute, so we started looking for an answer.   &lt;br /&gt;
The XML configuration file came with a software product and had an &lt;a href=&quot;https://en.wikipedia.org/wiki/XSD&quot;&gt;XSD file&lt;/a&gt;. For me as a developer, I opened the XSD file in Visual Studio and used the XML Schema Editor (shown on the right) to browse its content.   &lt;br /&gt;
However, for him installing Visual Studio wasn’t the best option especially if he wanted to forward more information to a client and let them modify configurations themselves. So, we did a little more digging.   &lt;br /&gt;
&lt;a href=&quot;http://wiki.fiforms.org/index.php/Xs3p&quot;&gt;Xs3p&lt;/a&gt; is a schema documentation generator. It’s simply an XSLT stylesheet, which generates HTML documentation from an XSD schema file.   &lt;br /&gt;
You can download Xs3p &lt;a href=&quot;http://xml.fiforms.org/xs3p/&quot;&gt;here&lt;/a&gt; or &lt;a href=&quot;http://sourceforge.net/projects/xs3p/files/xs3p-1.1.5.zip/download&quot;&gt;direct link&lt;/a&gt; to version 1.1.5   &lt;br /&gt;
 Extract the content of the downloaded ZIP file and place it a folder. We’ll use the file &lt;em&gt;xs3p.xsl&lt;/em&gt;  &lt;br /&gt;
On Windows, you can use MSXML (&lt;a href=&quot;http://www.microsoft.com/en-us/download/details.aspx?id=15697&quot;&gt;Download&lt;/a&gt;) and the MSXSL command utility (&lt;a href=&quot;http://www.microsoft.com/en-us/download/details.aspx?id=21714&quot;&gt;Download&lt;/a&gt;).   &lt;br /&gt;
To use MSXSL, place the downloaded EXE in the same folder as the extracted ZIP file. In the command line browse to that folder, then type a command like this:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/6385853.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Where: &lt;em&gt;myXsd.xsd&lt;/em&gt; is the name of the XSD file. &lt;em&gt;myXsdDocumentation.html&lt;/em&gt; is the name of the HTML file that will be generated by the tool.
        I assume that all three files (XSD, XSL, and output HTML) along with MSXSL.exe are placed in the same folder.   &lt;br /&gt;
Here’s what the output looks like:
&lt;a href=&quot;/public/images/blog/HowToTurnXmlSchemaXsdToDocumentation/SampleOutput-big.png&quot;&gt;&lt;img src=&quot;/public/images/blog/HowToTurnXmlSchemaXsdToDocumentation/SampleOutput.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
You can download view &lt;a href=&quot;/public/images/blog/HowToTurnXmlSchemaXsdToDocumentation/SampleOutputOfMsXslTool.html&quot;&gt;sample HTML output&lt;/a&gt;.&lt;br /&gt;
To make things easier, I wrote a &lt;a href=&quot;/public/images/blog/HowToTurnXmlSchemaXsdToDocumentation/ConvertAllXsdToHtml.ps1&quot;&gt;PowerShell script&lt;/a&gt; that find all the XSD files in the folder where it’s placed and convert them all to HTML. It assumes that both &lt;em&gt;MSXSL.exe&lt;/em&gt; and &lt;em&gt;xs3p.xsl&lt;/em&gt; are in the same folder.
        To use the script, from the command line run this command:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/6386132.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Here’s the script:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/6386145.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;This &lt;a href=&quot;/public/images/blog/HowToTurnXmlSchemaXsdToDocumentation/TurnXmlSchemaToHtml.zip&quot;&gt;ZIP file&lt;/a&gt; include all three files: PowerShell script, &lt;em&gt;MSXSL.exe&lt;/em&gt; and style sheet &lt;em&gt;xs3p.xsl&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;
</description>
          <pubDate>Thu, 29 Aug 2013 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/HowToTurnXmlSchemaXsdToDocumentation/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/HowToTurnXmlSchemaXsdToDocumentation/</guid>
          
          <category>XSD</category>
          
          <category>Windows</category>
          
          <category>XML</category>
          
          <category>PowerShell</category>
          
          <category>Code</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Upgrade Windows Font for Better Arabic Readability</title>
          <description>&lt;p&gt;I was testing Windows 8.1 when I saw something that I liked very much; better Arabic font. I wasn’t going to wait to upgrade all my machines to Windows 8.1 (if I ever do) to get that font. So, I went searching for the reason. I found that Microsoft upgraded the SegoeUI font. Spot the difference in Windows Explorer:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/public/images/blog/UpgradeWindowsFontForBetterArabicReadability/ArabicFont-FilesInWinExplorer-BeforeAndAfter-big.png&quot;&gt;
    &lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/UpgradeWindowsFontForBetterArabicReadability/ArabicFont-FilesInWinExplorer-BeforeAndAfter.png&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.. and in Firefox tab headers:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/public/images/blog/UpgradeWindowsFontForBetterArabicReadability/ArabicFont-HeaderInFirefox-BeforeAndAfer.png&quot;&gt;
    &lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/UpgradeWindowsFontForBetterArabicReadability/ArabicFont-HeaderInFirefox-BeforeAndAfer.png&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To install this font, backup the old font first by going to the Fonts section in the Control Panel and copying all the Segoe fonts.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/public/images/blog/UpgradeWindowsFontForBetterArabicReadability/BackupSegoeFont-big.png&quot;&gt;
    &lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/UpgradeWindowsFontForBetterArabicReadability/BackupSegoeFont.png&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/public/images/blog/UpgradeWindowsFontForBetterArabicReadability/Windows 8 SegoeUI Fonts.zip&quot;&gt;Download&lt;/a&gt; the new font.&lt;/p&gt;

&lt;p&gt;Extract the ZIP file and install it. Just right click all the extracted files and choose Install.
You’ll be asked to replace the old font, click Yes.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/public/images/blog/UpgradeWindowsFontForBetterArabicReadability/ArabicFont-ReplaceFont.png&quot;&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/UpgradeWindowsFontForBetterArabicReadability/ArabicFont-ReplaceFont.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;
</description>
          <pubDate>Thu, 08 Aug 2013 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/UpgradeWindowsFontForBetterArabicReadability/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/UpgradeWindowsFontForBetterArabicReadability/</guid>
          
          <category>Font</category>
          
          <category>Windows</category>
          
          <category>Arabic</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>Add RTL Support and Web Fonts to Tumblr Posts</title>
          <description>&lt;p&gt;&lt;a href=&quot;/public/images/blog/AddRtlSupportAndWebFontsToTumblrPosts/ArabicTumblr_thumb.png&quot;&gt;
    &lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/AddRtlSupportAndWebFontsToTumblrPosts/ArabicTumblr_thumb.png&quot; /&gt;
&lt;/a&gt;
This is my technical blog. My &lt;a href=&quot;http://amreldib.tumblr.com/&quot;&gt;personal blog&lt;/a&gt;, where I write mostly in my native Arabic, is hosted on Tumblr which is a nice platform but is really bad in supporting Arabic and other RTL languages. At least that’s my experience.&lt;/p&gt;

&lt;p&gt;So finally I got sick of it and decided that I’m gonna fix this with some HTML and CSS magic. Maybe with &lt;a href=&quot;http://rtl-this.com/tutorial/how-rtl-your-tumblr-theme&quot;&gt;some help&lt;/a&gt;. I did find that Tumblr has some nice features that helps fixing the problem. Let’s see how.&lt;/p&gt;

&lt;p&gt;Tumblr lets you modify the HTML and insert additional CSS to your page. You gotta be careful when you’re doing this. At least make a backup of your page before you try new changes.&lt;/p&gt;

&lt;p&gt;One nice feature is that you can add &lt;a href=&quot;http://www.tumblr.com/docs/en/custom_themes&quot;&gt;{TagsAsClasses}&lt;/a&gt; as a CSS class. This will allow Tumblr to read the tags you attach to your post and apply them as a CSS class. I’ll use this as a way of marking the Arabic posts that I’d like to display from Right-to-Left. For every one of these posts, I’ll add the tag “arabic” and then Tumblr will apply the CSS class to that post.&lt;/p&gt;

&lt;p&gt;I’ve used a simple theme named &lt;a href=&quot;http://www.tumblr.com/theme/9601&quot;&gt;Quite Big&lt;/a&gt; as my base theme. You’ll find a DIV with the classes “content” and “&lt;em&gt;x&lt;/em&gt;-post”. x-post is not the name of a class but rather text-post, photo-post, quote-post, and link-post. One class for each type of post.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/public/images/blog/AddRtlSupportAndWebFontsToTumblrPosts/TumblrPostsTypes_thumb.png&quot;&gt;&lt;img style=&quot;float: right&quot; src=&quot;/public/images/blog/AddRtlSupportAndWebFontsToTumblrPosts/TumblrPostsTypes_thumb.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll need to find each one of these DIVs and add “{TagsAsClasses}” to its CSS classes.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/5519226.js&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;wait-where-can-i-get-the-html&quot;&gt;Wait, where can I get the HTML?&lt;/h3&gt;

&lt;p&gt;In the &lt;a href=&quot;https://www.tumblr.com/settings&quot;&gt;Settings&lt;/a&gt; section, click on the item at the bottom of the list on the left where you should see your avatar. Next to “Theme”, click “Customize”.
On the left, you’ll find “Edit HTML”.&lt;/p&gt;

&lt;p&gt;After you save the modified HTML. While in the “Customize” mode, scroll down to the bottom in the pane on the left. You’ll find a “Add Custom CSS” section. This is where we’ll add a definition of how we want to display the Arabic posts.&lt;/p&gt;

&lt;p&gt;{TagsAsClasses} allows us to add a tag to any post and apply it as a CSS class. The name of the CSS class must match the name of the tag. In my case, I chose “arabic”. Here’s the CSS I used.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/5519240.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;This will apply the RTL direction, it will align the text to the right, and make the font size a little bit bigger.&lt;/p&gt;

&lt;h3 id=&quot;how-to-use-web-fonts&quot;&gt;How to Use Web Fonts?&lt;/h3&gt;

&lt;p&gt;Now that I went through the posts and added the “arabic” tag and everything is right to left. I need a good font to really make the blog look beautiful. Nothing pleases me when I’m writing Arabic like the &lt;a href=&quot;http://sourceforge.net/projects/amiri/&quot;&gt;Amiri font&lt;/a&gt;. Since it’s available on &lt;a href=&quot;http://www.google.com/fonts/earlyaccess&quot;&gt;Google Web Fonts&lt;/a&gt;, this makes my task much easier.&lt;/p&gt;

&lt;p&gt;First, I import Amiri.css. I go back to the HTML of my pages. Before the very end of the &lt;strong&gt;&lt;em&gt;&amp;lt;style&amp;gt;&lt;/em&gt;&lt;/strong&gt; element in the &lt;strong&gt;&lt;em&gt;&amp;lt;head&amp;gt;&lt;/em&gt;&lt;/strong&gt; (search for &lt;strong&gt;&lt;em&gt;&amp;lt;/style&amp;gt;&lt;/em&gt;&lt;/strong&gt; and place the next line right before it):&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/5519244.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Then I got back to the additional CSS, and slightly modify the CSS to look like this:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/5519246.js&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;what-about-the-headers&quot;&gt;What about the Headers?&lt;/h3&gt;

&lt;p&gt;I notice the headers need a little bit of a change. They don’t have the right font. So, I go back to the HTML, and find the H3 element for the titles, and change it to look like this:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/5519249.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Then modify the CSS to look like this:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/5519196.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Now, the headers and the body are using Amiri and the header has the right size.&lt;/p&gt;

&lt;p&gt;I’ve published the &lt;a href=&quot;https://gist.github.com/AmrEldib/5519192&quot;&gt;modified HTML file&lt;/a&gt; on a GitHub gist if you want to use the same theme. Here is the &lt;a href=&quot;https://gist.github.com/AmrEldib/5519196&quot;&gt;additional CSS&lt;/a&gt;.&lt;/p&gt;
</description>
          <pubDate>Sat, 04 May 2013 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/AddRtlSupportAndWebFontsToTumblrPosts/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/AddRtlSupportAndWebFontsToTumblrPosts/</guid>
          
          <category>Tools</category>
          
          <category>Tumblr</category>
          
          <category>Tips</category>
          
          <category>CSS</category>
          
          <category>HTML</category>
          
          <category>Arabic</category>
          
          <category>RTL</category>
          
          <category>Code</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>How to Ruin Your Technical Session in 10 Easy Steps</title>
          <description>&lt;figure class=&quot;imageOnRight&quot;&gt;
    &lt;img src=&quot;/public/images/blog/HowToRuinYourTechnicalSessionIn10EasySteps/SleepingDuringSeminar.jpg&quot; /&gt;
    &lt;figcaption style=&quot;float: right&quot;&gt;&lt;small&gt;This is gold.&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Recently, I’ve attended a developers’ conference and some of the sessions were a model for how to deliver a passionless boring lecture done so nicely that the only thing interrupting was the noise of my snoring. I wanted to sum up few of the great lessons I’ve learnt from these great sessions.&lt;/p&gt;

&lt;h3 id=&quot;1-start-with-the-obligatory-pointless-show-of-hands&quot;&gt;1. Start with the Obligatory Pointless Show of Hands&lt;/h3&gt;

&lt;p&gt;Nothing engages the audience more than feeling small when asked “Have you heard of JavaScript?” except feeling inadequate when asked “Did anyone try scaling AngularJS with MongoDB using Chrome Canary on Linux Mint?”. But this feeling of engagement quickly builds up when you completely ignore the results of the quick poll and carry on with your session without the slightest modification. Show-of-hands shows that you are down with the latest tricks in the art of presenting.&lt;/p&gt;

&lt;h3 id=&quot;2-speak-in-soft-emotionless-monotone&quot;&gt;2. Speak in Soft Emotionless Monotone&lt;/h3&gt;

&lt;p&gt;Developers’ emotions have devolved over the years because of the constant contact with machines. Showing any emotion might be dangerous, and it’s completely unnecessary. Use a soft monotone that makes all the words sound alike.&lt;/p&gt;

&lt;h3 id=&quot;3-sit-down-and-hide-behind-your-laptop&quot;&gt;3. Sit down and Hide behind your Laptop&lt;/h3&gt;

&lt;p&gt;You’re a busy person who’s been working all day on your hippy standing desk. Feel comfortable sitting behind your monitor and let your soft voice guide your audience through the slides that need no character.&lt;/p&gt;

&lt;h3 id=&quot;4-list-facts-not-experiences&quot;&gt;4. List Facts, not Experiences&lt;/h3&gt;

&lt;p&gt;Your audience traveled hundreds, if not thousands, of miles to learn the facts that they could’ve read in a blog post. They just need it in the form of unsorted incoherent list that is difficult to remember and makes no sense. Make sure to deliver it fast enough so that they can break for launch. If you list 20 facts is better than if they can remember 10.&lt;/p&gt;

&lt;h3 id=&quot;5-avoid-story-lines-or-building-up-to-something-meaningful&quot;&gt;5. Avoid Story lines or Building up to Something Meaningful&lt;/h3&gt;

&lt;p&gt;Stories means emotions. Stories have highs and lows. Stories are interesting. Stories are not facts. Stories are coherent. These are all things we’re trying to avoid.&lt;/p&gt;

&lt;h3 id=&quot;6-jokes-are-for-suckers&quot;&gt;6. Jokes are for Suckers&lt;/h3&gt;

&lt;p&gt;It’s very important to put a distance between you and your audience, not just physical distance but emotional as well. You are a delivery vessel for facts, you’re not there to entertain or be memorable.&lt;/p&gt;

&lt;h3 id=&quot;7-slides-are-for-words-the-more-the-better&quot;&gt;7. Slides are for Words, the More the Better&lt;/h3&gt;

&lt;p&gt;Lifting whole paragraphs and sections from your book is an excellent idea especially if it’s a screenshot not text, so later if the audience gets a hold of your slides they can’t copy the text. The goal here is to test the audience’s ability to focus on listening to you and reading the content of the slide at the same time, especially if they don’t match. Make sure to include couple of URLs that has at least two hyphens and one tilde. No URLs shorteners. Don’t forget to refer to the URLs as “important”.&lt;/p&gt;

&lt;h3 id=&quot;8-the-crowd-loves-your-messy-desktop&quot;&gt;8. The Crowd Loves Your Messy Desktop&lt;/h3&gt;

&lt;p&gt;Make sure to minimize all your applications to show your desktop with a stretched picture of your kid riding a dog on a snowmobile which you took last August. Let them try to guess what is this picture by making it difficult to see behind all the icons you have on your desktop including “Yahoo Messenger” and the folder titled “My uncle’s second weddings photos”. Also, remember to leave your Skype on during the session because you don’t want to miss any important messages.&lt;/p&gt;

&lt;h3 id=&quot;9-technical-sessions-are-a-test-of-the-crowds-endurance&quot;&gt;9. Technical Sessions are a Test of the Crowd’s Endurance&lt;/h3&gt;

&lt;p&gt;So, the longer the session, the better. A continuous hour that goes on and on and on is good enough, but if you can sneak in few minutes at the end to finish the last 15 slides, that’s okay too.&lt;/p&gt;

&lt;h3 id=&quot;10-answering-questions-is-a-private-discussion&quot;&gt;10. Answering Questions is a Private Discussion&lt;/h3&gt;

&lt;p&gt;When a person asks a question, try to answer it in the most private manner possible. Ignore that the person’s voice was too low that no one other than you heard it. Get geeky and make references to acronyms that no one understands. Just make sure that the person who asked the question barely understands the answer, and no one else even understood the question.&lt;/p&gt;

&lt;p&gt;These are few tips on how to make your technical session the worst ever. I excel at only few of these, but working on some of the others. I wish you all the luck and look forward to your crappy presentation soon.&lt;/p&gt;
</description>
          <pubDate>Mon, 29 Apr 2013 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/HowToRuinYourTechnicalSessionIn10EasySteps/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/HowToRuinYourTechnicalSessionIn10EasySteps/</guid>
          
          <category>Tips</category>
          
          <category>Presentation</category>
          
          <category>Community</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Real-Time GIS Using SignalR and Esri's JavaScript API</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; title=&quot;SignalR&quot; src=&quot;/public/images/blog/RealTimeGisUsingSignalrAndEsriJsapi/SignalR.jpg&quot; /&gt;
&lt;img class=&quot;imageOnRight&quot; title=&quot;Javascript&quot; src=&quot;/public/images/blog/RealTimeGisUsingSignalrAndEsriJsapi/JavascriptLogo.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Everybody loves command centers. We all would love to be Capitan Kirk, setting there seeing information coming in from all over the place, and we can act on it without having to do much work.&lt;/p&gt;

&lt;p&gt;The problem with building command centers is that they represent a big unnecessary load on the servers. Command centers now are not like the Star Trek command centers. No, they’re hundreds of users connected to your service, each trying to command their own one decision which in aggregate with hundreds of other users form the output of the system.&lt;/p&gt;

&lt;p&gt;These hundreds of computers calling the server every few seconds checking if there’s an update or not represent a big unnecessary load on the server. What I prefer is to call the server when I know that there’s an update, or better, have the server call me, the client, when there’s an update.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;That’s where SignalR comes in.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://signalr.net/&quot;&gt;SignalR&lt;/a&gt; is an open source library that let’s you build front-end real-time applications using JavaScript (or .NET). On the back-end you’ll use .NET.&lt;/p&gt;

&lt;p&gt;SignalR was a side project started by two guys; &lt;a href=&quot;https://twitter.com/davidfowl&quot;&gt;David Fowler&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/DamianEdwards&quot;&gt;Damian Edwards&lt;/a&gt;. The &lt;a href=&quot;https://github.com/SignalR/SignalR&quot;&gt;source code&lt;/a&gt; is hosted on GitHub. The project got so much support that &lt;a href=&quot;http://www.asp.net/signalr/open-source&quot;&gt;Microsoft is now supporting&lt;/a&gt; it as part of its ASP.NET family even while maintaining it’s status as an open source project developed in the open.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.hanselminutes.com/352/making-open-source-work-at-microsoft-with-signalr-and-damian-edwards&quot;&gt;Listen&lt;/a&gt; to Damian Edwards interviewed by Scott Hanselman about SignalR.&lt;br /&gt;
&lt;a href=&quot;http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump-Start/Building-Web-Apps-with-ASPNET-Jump-Start-08-Real-time-Communication-with-SignalR&quot;&gt;Watch&lt;/a&gt; Damian Edwards and Scott Hanselman demo how to use SignalR.&lt;/p&gt;

&lt;p&gt;SignalR makes it incredibly simple to add real-time functionality to your application.&lt;/p&gt;

&lt;p&gt;It’s simple because it provides you with a way to just call a function on the client-side. Just RPC a function on the client-side.&lt;/p&gt;

&lt;p&gt;It’s simple because your code will work – without you having to change it – with a number of different technologies under the hood.&lt;/p&gt;

&lt;p&gt;It starts with WebSockets, and falls back to other technologies if it’s not available.&lt;/p&gt;

&lt;p&gt;There are two examples for SignalR you can check out right now: &lt;a href=&quot;http://jabbr.net/&quot;&gt;Jabbr&lt;/a&gt; which is a chat room service. And &lt;a href=&quot;http://shootr.signalr.net/&quot;&gt;ShootR&lt;/a&gt;; a space craft shooter game built with HTML5.&lt;/p&gt;

&lt;p&gt;SignalR is split into a .NET component on the server side, and a JavaScript component on the client side. Basically, you create a class that inherits from a Hub class and whatever public method you create is now callable from the client side.&lt;/p&gt;

&lt;p&gt;The important thing is that you can define client side functions that are also callable from the server side.&lt;/p&gt;

&lt;p&gt;We can use this to add real-time capability to an ArcGIS JavaScript API application. Using a &lt;a href=&quot;http://help.arcgis.com/en/webapi/javascript/arcgis/jssamples/graphics_add.html&quot;&gt;sample from the documentation&lt;/a&gt;, I’ve added the real-time capability using a C# class and few modifications to the client side JavaScript.&lt;/p&gt;

&lt;p&gt;Here’s a video for how the final proof-of-concept looks like:&lt;/p&gt;

&lt;div class=&quot;youtube-container&quot;&gt;
   &lt;div class=&quot;youtube-player&quot; data-id=&quot;kY3AQL6n2-8&quot;&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The code is all up on &lt;a href=&quot;https://github.com/AmrEldib/RealTimeGisWithSignalR&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I was invited to speak at Esri DevSummit 2013 on March 28, 2013. Here are the &lt;a href=&quot;/public/images/blog/RealTimeGisUsingSignalrAndEsriJsapi/Real-Time GIS Using SignalR and Esri's JavaScript API.pdf&quot;&gt;slides for my talk&lt;/a&gt;. They provide few more details.&lt;/p&gt;

&lt;p&gt;There’s a few book on SignalR out now, you can get &lt;a href=&quot;http://www.campusmvp.net/signalr-ebook/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
          <pubDate>Thu, 28 Mar 2013 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/RealTimeGisUsingSignalrAndEsriJsapi/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/RealTimeGisUsingSignalrAndEsriJsapi/</guid>
          
          <category>JavaScript</category>
          
          <category>GIS</category>
          
          <category>DevSummit</category>
          
          <category>Esri</category>
          
          <category>SignalR</category>
          
          <category>Presentation</category>
          
          <category>ArcGIS</category>
          
          <category>Code</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>The Five Stages of Grief over Google Reader Shutdown</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; title=&quot;Google Reader&quot; src=&quot;/public/images/blog/FiveStagesOfGriefOverGoogleReaderShutdown/GoogleReaderLogo.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A quick look on Twitter, you notice how quickly the Internet is going through the five stages of grief over the &lt;a href=&quot;http://googleblog.blogspot.ca/2013/03/a-second-spring-of-cleaning.html&quot;&gt;shutdown of Google Reader&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Denial&quot;&gt;Denial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/FiveStagesOfGriefOverGoogleReaderShutdown/Tweets-1-01.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Anger&quot;&gt;Anger&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/FiveStagesOfGriefOverGoogleReaderShutdown/Tweets-2-01.png&quot; /&gt;
&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/FiveStagesOfGriefOverGoogleReaderShutdown/Tweets-2-02.png&quot; /&gt;
&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/FiveStagesOfGriefOverGoogleReaderShutdown/Tweets-2-03.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Bargaining&quot;&gt;Bargaining&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/FiveStagesOfGriefOverGoogleReaderShutdown/Tweets-3-01.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Depression_(mood)&quot;&gt;Depression&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/FiveStagesOfGriefOverGoogleReaderShutdown/Tweets-4-01.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Acceptance&quot;&gt;Acceptance&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/FiveStagesOfGriefOverGoogleReaderShutdown/Tweets-5-01.png&quot; /&gt;
&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/FiveStagesOfGriefOverGoogleReaderShutdown/Tweets-5-01.png&quot; /&gt;&lt;/p&gt;
</description>
          <pubDate>Wed, 13 Mar 2013 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/FiveStagesOfGriefOverGoogleReaderShutdown/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/FiveStagesOfGriefOverGoogleReaderShutdown/</guid>
          
          <category>GoogleReader</category>
          
          <category>Google</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Using Intellisense with Esri's JavaScript API in Visual Studio</title>
          <description>&lt;p&gt;We all love Intellisense in Visual Studio, but with JavaScript is a little difficult to do that given it’s a dynamic language. However, most JavaScript libraries now comes with VSDoc files that provide a way to add intellisense to JavaScript in Visual Studio (and other IDEs). 
This &lt;a href=&quot;http://blog.craigtp.co.uk/post/Javascript-jQuery-Intellisense-in-Visual-Studio-2012.aspx&quot;&gt;post&lt;/a&gt; describe how to add the VSDoc files of any JavaScript library to your project in Visual Studio (Some of the images in this post are from &lt;a href=&quot;http://blog.craigtp.co.uk/post/Javascript-jQuery-Intellisense-in-Visual-Studio-2012.aspx&quot;&gt;here&lt;/a&gt;). In this post, I’ll expand on that to add intellisense for the Esri JavaScript API (JSAPI). 
First, download the VSDoc file for the JSAPI from &lt;a href=&quot;http://help.arcgis.com/en/webapi/javascript/arcgis/jshelp/jsapi_vsdoc12_v33.zip&quot;&gt;here&lt;/a&gt; (direct link to Zip file). Updated version of the file could be found &lt;a href=&quot;http://help.arcgis.com/en/webapi/javascript/arcgis/jsapi/#api_codeassist&quot;&gt;here&lt;/a&gt;. 
Thanks to &lt;span class=&quot;usertitle&quot;&gt;&lt;a href=&quot;http://forums.arcgis.com/members/1411-kenbuja&quot;&gt;Ken Buja&lt;/a&gt; who provided the updated file on &lt;a href=&quot;http://forums.arcgis.com/threads/78957-Is-the-VSDoc-for-JSAPI-Up-to-Date&quot;&gt;Esri JSAPI forum&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;

&lt;h3 id=&quot;visual-studio-2012&quot;&gt;Visual Studio 2012&lt;/h3&gt;
&lt;p&gt;Open the Options Dialog&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/public/images/blog/UsingIntellisenseWithEsriJsapiInVisualStudio/1-OpenOptionsDialog.png&quot; alt=&quot;Open Options Dialog&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Under Text Editor &amp;gt; JavaScript &amp;gt; Intellisense &amp;gt; References, switch to Implicit (Web) in the drop down list, and make sure that “~/Scripts/_references.js” is added.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/public/images/blog/UsingIntellisenseWithEsriJsapiInVisualStudio/2-PrepareJsReferences.png&quot; alt=&quot;Prepare Javascript References&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This will tell Visual Studio that in any project, you will place a file named “_references.js” under a folder named “Scripts” at the root of the project, and in that file you will add references to the JavaScript API files with intellisense. You can change the file name or folder to anything you like.&lt;/p&gt;

&lt;p&gt;Now, let’s add the _references.js file. Add a new item under the Scripts folder.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/public/images/blog/UsingIntellisenseWithEsriJsapiInVisualStudio/3-AddNewItem.png&quot; alt=&quot;Add New File&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Then, name the new file _references.js&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/public/images/blog/UsingIntellisenseWithEsriJsapiInVisualStudio/4-AddReferencesFile.png&quot; alt=&quot;Add Reference File&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In the new file, add references to the VSDoc file you included in your project. You can simply drag the file from the Solution Explorer and drop it on to the file.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/public/images/blog/UsingIntellisenseWithEsriJsapiInVisualStudio/5-ContentOfReferenceFile.png&quot; alt=&quot;Content of Reference File&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can see in this file, I’ve added references to jQuery, SignalR, and the JSAPI. 
Now, you’ll get intellisense in your JavaScript file.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/public/images/blog/UsingIntellisenseWithEsriJsapiInVisualStudio/6-EsriJsApiIntellisenseVS2012.png&quot; alt=&quot;Intellisense in VS 2012&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;visual-studio-2010&quot;&gt;Visual Studio 2010&lt;/h3&gt;
&lt;p&gt;In Visual Studio 2010, there’s no section in Options to add a reference to the _references.js file. So, you’ll need to add a reference to that file in each file you’re working on.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/public/images/blog/UsingIntellisenseWithEsriJsapiInVisualStudio/7-AddingReferenceFileInVS2010.png&quot; alt=&quot;Adding Reference File in VS 2010&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You’ll get the same results.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/public/images/blog/UsingIntellisenseWithEsriJsapiInVisualStudio/8-EsriJsApiIntellisenseVS2010.png&quot; alt=&quot;Intellisense in VS 2010&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: I’ve updated the links to VSDoc file to the latest version.&lt;/p&gt;

</description>
          <pubDate>Sun, 03 Mar 2013 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/UsingIntellisenseWithEsriJsapiInVisualStudio/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/UsingIntellisenseWithEsriJsapiInVisualStudio/</guid>
          
          <category>JavaScript</category>
          
          <category>VS2012</category>
          
          <category>GIS</category>
          
          <category>Esri</category>
          
          <category>VS2010</category>
          
          <category>Visual Studio</category>
          
          <category>ArcGIS</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
        <item>
          <title>Personal Clouds</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; title=&quot;Cloud&quot; src=&quot;/public/images/blog/PersonalClouds/CloudIcon.png&quot; /&gt;
“The Cloud is coming”. Actually, it’s more like “The cloud is here”. It’s being forced upon us on every platform (Almost every platform, at least, Windows, OSX, iOS, Ubuntu and Android). With the spread of smartphones, the cloud now not only makes sense but is also useful.&lt;/p&gt;

&lt;p&gt;Let me go back a step to make a distinction. 
There are two meanings for the word “The Cloud”:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;One is common in IT departments, although not very popular, I assume. Think Amazon Cloud Services, and Windows Azure. We’ll call it the Cloud.&lt;/li&gt;
  &lt;li&gt;The other is common between end users. Think iCloud, SkyDrive and Office Web Apps. This is more like Cloud Services; it’s services that live in the Cloud.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only an advancement in the first made the second possible. Giant software companies are now building these huge data centers that can be used in a very efficient way. Unlike before, when renting a server meant that you actually were allocated a physical server (or a folder on a server) in a certain data center. Those days, if the machine stopped, or the data center lost power that meant that your web site went offline. Now, your web application is hosted in a Virtual Machine that – along with 1000s or other VMs – form a layer between you and the physical server. Now, the server – or even the data center – can go offline and your application would still continue. Maybe with few minutes of downtime if you were running a single instance of VM.&lt;/p&gt;

&lt;p&gt;Another advancement that is directly affecting these cloud services is the spread of smartphones and tablets. These cloud services play one of two roles:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Back-end to an application that runs on two different devices and shares state through the cloud. The simplest example is a text editor running on your phone modifying a file on Dropbox. Every time you modify the file, it get synced to your computer where you can continue your edits using a different text editor. These are two different applications running on two different devices, yet they’re sharing the state of the data they’re manipulating.&lt;/li&gt;
  &lt;li&gt;Server-side application available on multiple platforms. Think Evernote. You can access it through your phone, your desktop client, any web browser. You think it’s the same application which technically is not true. There’s a web application, maybe written in Ruby. A Windows client that could written in .NET. An iPhone app written in Objective-C. These are three different application that share state through Evernote’s servers but more importantly they share a lot of backend services like OCR, search, archiving, and other. That’s why you consider it one application. That’s why it’s one application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In either case (and they’re very similar) the cloud is extremely useful. Being able to move seamlessly from one device to another is incredible and we’re just starting. In few years, we should be able to move from one device to another for a much larger number of applications that we do now. As more applications is built directly to the cloud, compared to now where web applications are modified to include these capabilities.
While the cloud offer a great capability to users, it offers even bigger advantages to big software companies. They now control your digital life. I spent the last five years of my life writing all these tiny tweets, 140-characters at a time, all 36,000+ of them. Now, I can’t get them back. Twitter has sucked them into a void. They won’t let me download them. They won’t let me search them. They won’t let me even browse them. Meanwhile, Twitter is building this profile of my interests and feeding me all these ads about all the silly things I demonstrated that I care about.
I can’t get out of Twitter, I’ve invested five of years into it. I’ve built networks of friends. I need twitter more than they need me, it seems. When you cut off 3&lt;sup&gt;rd&lt;/sup&gt; party developers, or block my favorite desktop client or change the terms of services; all are things I don’t agree of, but not enough to make me leave the service.
Same goes for many other services. After a while, there’s nothing you can do about changes to the service when you don’t agree of them. Google can change Google Reader by shutting down sharing, and force you to use Google+, but you won’t leave. Facebook can change their terms of service or privacy policy, and you would just click “I Accept”. Nothing you could do really.
Let me sum up what I see is the problem with these services in three – not so – brief points:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Privacy&lt;/strong&gt;: your data is not just yours anymore. Your data can be mined, copied, passed to law enforcement, peaked at by bored employees, or stolen by hackers who are now shooting at larger targets.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Freedom&lt;/strong&gt;: you may only run the features and functionality that are available and permitted by the software vendor. If the vendor upgrades the service to include more – or less – features, you have no choice to roll back to another version. If you’re using a feature that only few users like, that feature will likely be removed. Your online petition won’t really help bring it back. You may integrate this software with other services that are permitted by the software vendor. If there’s a service or functionality you’d like but is not available, you can’t easily build your own. You’re being handed fully cooked meals instead of ingredients you can put together to make something new.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Competition&lt;/strong&gt;: these companies that are building full solutions are the ones in a better position to survive the competition. If you’re building a service that does only one thing, (I’m looking at you, Dropbox) you are at a worse position than your competitor whose building two things into their service (to follow on the example, iCloud and SkyDrive). &lt;em&gt;Integration&lt;/em&gt;. Windows 8, and the whole family of new Windows products, is built on the promise of integration. Windows on your phone, Windows on your PC, Windows on your tablet, and Windows on your Game console and TV set. Companies that are building two features/things into their service have an incentive to make you use their new shinny third feature even though it’s much worse than the competition. They can integrate it better than the competition. Notice how ‘Files’ are taking a back seat in all these services. There are no files any more. On your phone, there are no files, there are only apps. People think of files are a pain to handle, because there are so many of them and you have to arrange them in folders and remember where you stored them. They are a pain. But files are very important because they allow for mobility of your data. Any application that can read this file is an application that you can move to. If one application does a certain feature that your default application doesn’t do, you can move to it as long as it can read that file format. Some applications use proprietary file formats but eventually open standard file format tend to dominate. With apps, you can’t move from one app to another because there are no files. You’re stuck with that app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can look at these problems and think that they’re not very important or that you don’t affect you very much or even think that it’s a natural advancement or how computers work now. I see them as warning signs.
There must be a solution.
I consider the benefits of the cloud and cloud services to be huge. It’s something that you can’t live without once you get used to it. Living off the cloud is not an option.
At its core, the cloud is a computer that is always on running a certain piece of software. Actually it’s some number of computers running each with a specific software. I have a Dropbox computer, a Gmail computer, a twitter computer, and so on. If I can get these pieces of software to run on my machine, and make that machine available online and accessible to my phone and other devices then I would have my own cloud.
What I need is a Virtual Machine, only accessible to me (or any service/person I give and control permission to), that is running a server-side operating system and a software that replaces each service I’m using. It would have an email server, a calendar, a cloud storage service, a synchronization service, a node of social media, a blog, a Wiki, and any other type of cloud service I’m using.
There are alternatives to a lot of the services that any user is using daily. Instead of &lt;a href=&quot;http://www.blogger.com/&quot;&gt;Blogger&lt;/a&gt;, use your own &lt;a href=&quot;http://wordpress.org/&quot;&gt;Wordpress&lt;/a&gt;. Instead of &lt;a href=&quot;http://www.gmail.com/&quot;&gt;Gmail&lt;/a&gt;, use &lt;a href=&quot;http://www.smartertools.com/smartermail/mail-server-software.aspx&quot;&gt;SmarterMail&lt;/a&gt;, &lt;a href=&quot;http://www.zimbra.com/&quot;&gt;Zimbra&lt;/a&gt;, or &lt;a href=&quot;http://www.sendmail.com/sm/open_source/&quot;&gt;Sendmail&lt;/a&gt;. Instead of &lt;a href=&quot;https://www.dropbox.com/&quot;&gt;Dropbox&lt;/a&gt;, use &lt;a href=&quot;http://www.tonido.com/&quot;&gt;Tonido&lt;/a&gt; or &lt;a href=&quot;http://sparkleshare.org/&quot;&gt;SparkleShare&lt;/a&gt;. Instead of &lt;a href=&quot;http://flickr.com/&quot;&gt;Flickr&lt;/a&gt; or &lt;a href=&quot;http://instagram.com/&quot;&gt;Instagram&lt;/a&gt;, use &lt;a href=&quot;http://theopenphotoproject.org/&quot;&gt;OpenPhoto&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There are few services that doesn’t have great alternatives but they can be built.
For such proposal to work, &lt;strike&gt;two&lt;/strike&gt; three key issues have to be addressed:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Ease of Management&lt;/strong&gt;: 
in any cloud service, all you need to manage the service is sign up. You don’t need to worry about updates, maintenance or troubleshooting any problems. Running your own cloud will definitely come a certain level of trouble. Think taking a cab vs. owning a car. It shouldn’t be so much pain. It should be relatively easy at least for techies in the beginning. With all these years of software development experience, it should be possible now to build a piece of software that is possible to troubleshoot by a non-techie. A dashboard with shiny gauges and handles should show status and allow control of these services.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Integration&lt;/strong&gt;: 
these alternatives, that I’ve listed some of above, are built in isolation but they shouldn’t stay that way. They should integrate to offer a complete solution. Either by bridges that are small pieces of software that makes one service communicate with another without being aware of it, or by all these services adhering to a standard API to perform most common tasks.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Mobile Support&lt;/strong&gt;: 
one of the main reasons of having a always-available service is to be able to access from your smartphone. Support for smartphones is a must for any cloud service, commercial or personal. This support can be through web or native apps, depending on the kind of service consumed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Frankly, I don’t know what to make of this idea. I’m certainly not the first to come forward with some sort of proposal for a Personal Cloud. I’m aware of at least one other proposal (by &lt;a href=&quot;https://twitter.com/windley&quot;&gt;@windley&lt;/a&gt;) which can be found &lt;a href=&quot;http://www.windley.com/cloudos/&quot;&gt;here&lt;/a&gt; but it’s more of a complete platform for personal clouds that require building a new type of operating system. Promising idea but strikes more as a Computer Science project rather than a piece of software than can be built and used in the near future.
I think this could be a big project that brings together all the pieces of open source projects together in one proposal that stands side by side with current offers from Apple, Microsoft and Google. Not only that it would an alternative, but also it would be good for software and for the benefit of users.&lt;/p&gt;

&lt;p&gt;Update: Earlier version of this post didn’t included Mobile Support as a key issue to be addressed when building personal clouds.&lt;/p&gt;
</description>
          <pubDate>Sun, 16 Sep 2012 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/PersonalClouds/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/PersonalClouds/</guid>
          
          <category>Cloud</category>
          
          <category>Open Source</category>
          
          <category>Windows</category>
          
          <category>Smartphone</category>
          
          <category>Android</category>
          
          <category>IT Industry</category>
          
          <category>Apple</category>
          
          <category>Microsoft</category>
          
          <category>MacOS</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
        <item>
          <title>EgyGeeks: on Building an Online Community</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; title=&quot;EgyGeeks&quot; src=&quot;/public/images/blog/EgyGeeksBuildingOnlineCommunity/EgyGeeksLogo.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A little over two years ago, a group of techies got together for a Skype conversation. Mohamed Meligy tells &lt;a href=&quot;http://gurustop.net/blog/2010/04/05/join-the-egyptian-geeks-on-skype-weekly/&quot;&gt;the story&lt;/a&gt;. &lt;em&gt;It was a great talk and we really enjoyed it&lt;/em&gt;, he says and I remember.&lt;/p&gt;

&lt;p&gt;What started as a group of people “geeking out” on Skype transformed into something that is a little bit more. “Let’s have some sessions where someone tells us about a topic they know”, someone said and it so it was. It continued for a while. There are few things I think I learnt from that phase:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;It Takes Time&lt;/strong&gt;: one sessions seems like it wasn’t that good, the next one didn’t have a big audience, don’t worry about it. Just keep going. You’re doing good. Effort + Time + Learn from mistakes = Better Results.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;An Online Community is Different from an Offline Community&lt;/strong&gt;: I gave one of these sessions, and it was one of most difficult longest sessions I gave; it was my first online session. When I’m in front of an audience, I keep going and build on their feedback. Start with a joke, they laugh then I can try another, they don’t then it’s information from then on. I can see when they’re bored, when they’re interested, when they’re just lost. I can do some course correction and damage control along the way. In an online session, I don’t have any of that feedback, it’s one long hour of me just talking. They could be rolling on the floor laughing at my jokes, and I wouldn’t know about it. They could be surfing the web, and I’d be thinking “Oh, I’m kicking ass today”. Online communities by their nature are different from offline communities. They’re not offline communities plus the convenience of availability, asynchronous communication, and never ending memory. They look the same, but they’re not the same. Pay attention to that.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Lots of Silent Participants&lt;/strong&gt;: A lot of people will attend and be part of your community and not say anything. Don’t make them feel bad that they’re not participating and don’t make them feel like they have to participate. These are your audience. They are what makes your community possible. If not for them, you’d be just a guy talking. Also, you’re not smarter than them. You just feeling like talking and they don’t. When you get a chance to hear from them, you’ll see that they have a lot to add.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Logistics are a Pain&lt;/strong&gt;: A lot of time went into finding free tools that we can use to hold online meetings. There’s a lot of tools, but you’re looking for a specific set of features that match your needs and you have to give up some of these because none of them have all of what you’re looking for.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over time, those who are more vocal in their participation wanted to make this online gatherings into a community. &lt;a href=&quot;http://www.egygeeks.net/&quot;&gt;EgyGeeks&lt;/a&gt;, we would call it, and lots of activities would be part of it.&lt;/p&gt;

&lt;p&gt;One activity stood out as: long lasting, easy to start, and kinda cool is podcasting. In the Arab tech world, there’s one podcast that I know of: &lt;a href=&quot;http://www.DotNetArabi.com&quot;&gt;Dot Net Arabi&lt;/a&gt; for the always-delightful &lt;a href=&quot;https://twitter.com/EmadAshi&quot;&gt;Emad Alashi&lt;/a&gt; who’s done a great job of maintaining that podcast. He models it after the &lt;a href=&quot;http://hanselminutes.com/&quot;&gt;Hanselmintues&lt;/a&gt; podcast for &lt;a href=&quot;https://twitter.com/shanselman/&quot;&gt;Scott Hanselman&lt;/a&gt;. It’s short to-the-point interview with a developer and is strictly about specifics of technology. “You’re here to learn something” is the idea.&lt;/p&gt;

&lt;p&gt;We wanted to offer something a bit different. Less of technology specific, or about technology specifics, and more of a community building exercise. Less about “what we do” and more about “how we do it”. There’s a lot of good developers in Egypt. There’s a lot of mediocre developers who can be good if given the chance. But one thing I’m sure of is: there’s a bad software industry in Egypt (and in the Arab world by extent). Wrong practices, bad motivations and incentives, and no meaningful community. (Individual exceptions exists, but they’re still exceptions, and individual). This podcast would be about replacing bad habits with good ones by informing people about what’s out there and how it’s possible, and how it relates to you as a local developer.&lt;/p&gt;

&lt;p&gt;One idea that comes to mind when listening to one of these technology podcast is “Well, they work in Silicon valley” or “That’s not how we do it here” or whatever other idea brought to you by the inferiority complex in each of us. But if you start talking to other people, you’ll find that they have the same problems, they’re looking at the same solutions, they’re having the same obstacles, and in your conversations you can remove them. We’re willing to listen and participate of these American podcasts, and communities but not in our own and that should change.&lt;/p&gt;

&lt;p&gt;A lot of thinking went into the format, length, style, and other aspects of the podcast. Let me tell you a little bit of what I learnt:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Format doesn’t matter, Style does&lt;/strong&gt;: Format could be interview, circle of friends talking, host and circle of guests and friends, or else. This is not really that important. What’s important is the style of the conversation: it must be clear, obvious, inviting, to-the-point, easy to follow, and takes into account that there’s an audience. Feel free to use acronyms about the topic you’re talking about, just make sure to explain to the audience what it is. There’s one person listening who got annoyed by your exclusion of him, and will never listen to your podcast again. Don’t make inside jokes, invite everyone to enjoy the conversation as you are.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Keep It Short&lt;/strong&gt;: I love long podcasts, I listen to &lt;a href=&quot;http://twit.tv/ww&quot;&gt;Windows Weekly&lt;/a&gt; and &lt;a href=&quot;http://twit.tv/twit&quot;&gt;Twit&lt;/a&gt;, and they sometime reach two hours per episode. Both great shows and made greater by the length of the show. I advocated a longer show (about an hour), everyone else said no, let’s make it 20-30 minutes. I thought of each episode to be a block of information and complete case about a certain topic, and they thought of the audience. Let me tell you, they were right and I was wrong. People listen to podcasts on their computer, and I listen on my cell phone when outside. People are busy, and I’m not. People dedicate a block of time to listen to a podcast while I multitask. I download the podcast and save it while people just stream it. Consider the audience, and you’re not necessarily representative of them.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Release Quickly, Release Often&lt;/strong&gt;: I’ll use a software phrase to explain this point. Podcasting is like anything else. When you’re starting you don’t know anything about it. There’s no podcasting school. Learn from your mistakes, correct them, next time will be better. Just keep it steady, don’t say “we sucked last time, so I don’t feel like recording this week”. Say “we sucked last time because of _____, so this time we’ll fix it”.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Audio Quality, Audio Quality, Audio Quality&lt;/strong&gt;: You can make a great podcast of background noise and inaudible discussion, but I’m not sure that’s what you’re audience is looking for.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Logistics are a Pain&lt;/strong&gt;: They are. This includes recording, hosting, audio editing, publishing, getting the word out and coordinating a meeting time for people who live in four different time zones that span the earth (literally).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This post comes after following a long &lt;a href=&quot;https://www.facebook.com/groups/egyptian.geeks/permalink/443626555677058/&quot;&gt;Facebook thread&lt;/a&gt; on the &lt;a href=&quot;https://www.facebook.com/groups/egyptian.geeks/&quot;&gt;Egyptian Geeks group&lt;/a&gt; by &lt;a href=&quot;https://twitter.com/Bashmohandes/&quot;&gt;Mohamed “Bashmohandes” Hossam&lt;/a&gt;  discussing the idea of starting a podcast of their own which I think is a great idea. There was a discussion of what happened to EgyGeeks podcast. What happened simply is, the Arab Spring. Last EgyGeeks episode was published on January 20, 2011, five days before the revolution in Egypt. Since then, no one was really in the mood to geek out. We certainly weren’t. Things are now coming to a relative clam (I hope they are). We’re not committing to anything yet but before Ramadan we were discussing the idea of coming back. I hope this happens soon.&lt;/p&gt;
</description>
          <pubDate>Wed, 08 Aug 2012 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/EgyGeeksBuildingOnlineCommunity/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/EgyGeeksBuildingOnlineCommunity/</guid>
          
          <category>Podcast</category>
          
          <category>EgyGeeks</category>
          
          <category>Community</category>
          
          <category>Egypt</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
        <item>
          <title>An App Store for the Rest of Us</title>
          <description>&lt;p&gt;I’ve blogged a year ago about App Stores, calling that &lt;a href=&quot;/blog/EverybodyGetsAnAppStore&quot;&gt;everybody gets an App Store&lt;/a&gt; or as Scott Hanselman &lt;a href=&quot;https://twitter.com/#!/shanselman/status/144635686966919168&quot;&gt;tweeted&lt;/a&gt; it “There’s an App Store for that!”. I had hope for Microsoft to build a better app store that isn’t like Apple’s. So much for my hopes that were crushed when the details of Windows 8’s store was &lt;a href=&quot;http://www.zdnet.com/blog/microsoft/microsoft-previews-windows-8-app-store-launching-with-the-beta-in-late-february/11340&quot;&gt;revealed last month&lt;/a&gt;. Microsoft &lt;a href=&quot;http://www.winrumors.com/microsoft-promises-developers-a-bigger-bite-of-the-apple-with-its-windows-8-app-store/&quot;&gt;promised developers a bigger bite&lt;/a&gt; of the apple, bigger than Apple’s. 80% rather than 70%. Your app qualify for the bigger cut if your sales exceed 25,000$.&lt;/p&gt;

&lt;p&gt;While that seems generous, I still didn’t like the phrase Microsoft used to describe taking a percentage of your revenue; “Revenue Sharing”.&lt;/p&gt;

&lt;div class=&quot;youtube-container&quot;&gt;
   &lt;div class=&quot;youtube-player&quot; data-id=&quot;37E3jQIs2AA&quot;&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Imagine the government re-labeling taxes as “Revenue Sharing”.&lt;/p&gt;

&lt;p&gt;So, Microsoft creates a platform (if we can pass upgrading Windows as creating a new platform), announces that the only way you can get applications of that platform is through their app store and then takes away a percentage out of every single copy sold on that platform.&lt;/p&gt;

&lt;p&gt;Imagine you’re a tiny shop building applications for Windows. Now, you want to switch your app that costs 10$ to the new Metro-style UI of Windows 8. How are you going to handle pricing? Are you giving up $3 to Microsoft and reducing your income by 30% or are you going to raise your price to make room for the new cost and piss off your customers who have seen price increase with no features to justify it which eventually will lead (at least some) customers to jump ship to other products.&lt;/p&gt;

&lt;p&gt;Why is a 30% (or even 20%) cut out of every copy sold on Windows Store justified? Is Microsoft not making enough money from every single copy of Windows running on 90% of computers on the planet? Do they really need to have 30% share of the entire software revenue on top of Windows revenue.&lt;/p&gt;

&lt;p&gt;What exactly justifies taking a 30% cut? Hosting the application, distributing updates, reviews capabilities, all these doesn’t justify taking a percentage of revenue. No, it’s the monopoly. “You wanna build an app for this platform, then we’ll share revenue”. It’s all part of the Apple-ification of Microsoft. Redmond has been lifting pages out of Apple’s playbook, but this time they’ve gone too far.&lt;/p&gt;

&lt;p&gt;Apple has always used monopoly over its platform as a revenue generator. “Use our hardware”, “Use our software”, developers build little tools to add functionality to MacOS only to find Apple copy their ideas in the next release of the operating system and claim credit for it. Microsoft has always been unlike that. They celebrate partnership with other hardware and software vendors. They open up the chance for developers to build tools to cover up for Windows shortcomings. “Live and let live”. Not any more, it seems.&lt;/p&gt;

&lt;p&gt;It’s also the “consumerization”. Putting the consumer first. Let business, power users and tech people take a back seat for a bit. The average Joe is the center of attention. He doesn’t want better software or more control, doesn’t care about customization, just make it easier and more shiny even with fewer functionality. Maybe it’s just me, but consumerization ruins general-purpose computation and PCs as we know it today. Consumerization turns PCs and Computers into appliances. One for each function. They deprive me from the ability to create and turn me into a consumer to whatever big companies give me.&lt;/p&gt;

&lt;p&gt;I understand that this a lot to blame on an app store but it’s not the new functionality that bothers me. It’s the mentality with which it’s offered. An app store for Windows is a great feature that helps developers offer and distribute their applications. It’s been long over due. But Microsoft is taking the wrong approach to deliver this feature. If I were to build an app store for Windows, I would do the following:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Make it a new way to get applications, not the only way&lt;/strong&gt;: Users should choose to use an app store because it’s better not because it’s the only way. At least a billion PC user in the world, I’m not gonna claim what’s best for them&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Developers can host their own apps&lt;/strong&gt;: If you’re a developer and want to host your own app, that’s fine. An app store is only an entry point to discover all the different app repositories offered by all developers.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Recommendations not Control&lt;/strong&gt;: I believe that it’s important to guide average users to what’s best for them. “You shouldn’t use this applications because it’s buggy”. But not do that by anointing yourself King of the world. When a user purchase an app from a developer, it’s an agreement between the two and the platform vendor has nothing to do with it. I know that this app is buggy but I still would like to use it, it’s performing a function that I really need right now, I don’t want for the developer to comply with your review process. As a platform vendor who cares about how your platform is performing and used, you can use recommendations. “Microsoft doesn’t recommend this app because of performance issues” or “because of privacy issues”, “Please read for more details”. Developers would get an explanation for the recommendation and be able to fix the problem. Microsoft gets to place its recommendation high in the list next to the application description. This recommendation would really affect user’s decision and wouldn’t be restrictive to users who know what they’re doing.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Standards, Standards, Standards&lt;/strong&gt;: For this app store to be really open, and for it offer place for innovation by other software vendors, it has to rely of standards. A standard to how to discover apps, how to install them, license them, and update them. Standards that describe how these different process interact with each other, how two processes implemented by two different vendors can still work together. Microsoft can start by offering this standard and other would join.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s a shame really that Microsoft is taking over the software market like this. In times where there are attempts by governments to control the Internet, in more &lt;a href=&quot;http://en.wikipedia.org/wiki/SOPA&quot;&gt;ways&lt;/a&gt; than &lt;a href=&quot;http://www.usatoday.com/tech/news/internetprivacy/2011-02-15-kill-switch_N.htm&quot;&gt;one&lt;/a&gt;. It doesn’t help that giant software companies are restricting computers as well.&lt;/p&gt;
</description>
          <pubDate>Fri, 13 Jan 2012 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/AppStoreForTheRestOfUs/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/AppStoreForTheRestOfUs/</guid>
          
          <category>Windows</category>
          
          <category>App Store</category>
          
          <category>IT Industry</category>
          
          <category>Apple</category>
          
          <category>Microsoft</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Sync Windows Live Writer Posts Between Computers</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; title=&quot;Windows Live Writer&quot; src=&quot;/public/images/blog/SyncWindowsLiveWriterPostsBetweenComputers/Windows_Live_Writer_logo.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;With all the different PCs between work and home, desktops and laptops, synchronization is becoming very important. I wanted to sync blog drafts between different computers which turned out to be very simple. Unfortunately, Windows Live doesn’t offer a solution out of the box, even though Windows Live Essentials comes with Live Mesh along with Live Writer. It’s a matter of putting two and two together which what I’ll do.&lt;/p&gt;

&lt;p&gt;First, &lt;a href=&quot;http://www.lehsys.com/2011/04/how-to-change-the-drafts-and-recent-posts-folder-in-windows-live-writer-2011/&quot;&gt;change the posts folder of WLW&lt;/a&gt; (Windows Live Writer):&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Open up regedit (in Win7, just type “regedit” into the start menu).&lt;/li&gt;
  &lt;li&gt;Navigate to &lt;strong&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows Live\Writer&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Right click on the “Writer” folder in the left pane and choose New &amp;gt; String Value&lt;/li&gt;
  &lt;li&gt;Name the value &lt;strong&gt;PostsDirectory&lt;/strong&gt; and then double-click on it to edit:
    &lt;ul&gt;
      &lt;li&gt;You can try pointing it to your documents folder, which is normally “C:\Users\&amp;lt;your-username&amp;gt;\Documents&quot; in Win7&lt;/li&gt;
      &lt;li&gt;Or point it somewhere else. Note that Writer will create two child folders wherever you point it: &lt;strong&gt;Drafts&lt;/strong&gt; and &lt;strong&gt;Recent Posts&lt;/strong&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The folder I switch to is a folder under the folder I keep synced with Live Mesh. On the other computer, do the same steps. Change the posts folder to the folder you keep synced with Live Mesh. You’ll need to copy your existing posts and drafts from their original location which normally is &lt;strong&gt;&lt;em&gt;C:\Users[User Name]\Documents\My Weblog Posts&lt;/em&gt;&lt;/strong&gt; &lt;br /&gt;
Now you can start a post on my computer and finish it on the other. More importantly, you now have a backup of all your drafts on your SkyDrive.&lt;br /&gt;
You can, of course, use Dropbox or any other synchronization service to keep the posts in sync.&lt;/p&gt;
</description>
          <pubDate>Wed, 11 Jan 2012 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/SyncWindowsLiveWriterPostsBetweenComputers/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/SyncWindowsLiveWriterPostsBetweenComputers/</guid>
          
          <category>Tools</category>
          
          <category>Windows Live Writer</category>
          
          <category>Windows Live</category>
          
          <category>Sync</category>
          
          <category>Microsoft</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
        <item>
          <title>Mozilla: Beyond Firefox</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; title=&quot;Mozilla&quot; src=&quot;/public/images/blog/MozillaBeyondFirefox/MozillaLogo.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Who doesn’t already know &lt;a href=&quot;http://www.mozilla.org/en-US/firefox/fx/&quot;&gt;Firefox&lt;/a&gt;? But what other projects is &lt;a href=&quot;http://www.mozilla.org/&quot;&gt;Mozilla&lt;/a&gt; working on? &lt;br /&gt;
I’ve taken an interest lately in finding out more about Mozilla. I think it all started with reading some of the “&lt;a href=&quot;https://wiki.mozilla.org/index.php?title=Mozilla.org/Contribute/Stories&amp;amp;amp;diff=377200&amp;amp;amp;oldid=prev&quot; title=&quot;Mozilla.org/Contribute/Stories&amp;amp;amp;diff=377200&amp;amp;amp;oldid=prev&quot;&gt;How I got started with Mozilla&lt;/a&gt;” stories on the &lt;a href=&quot;http://planet.mozilla.org/&quot;&gt;Planet Mozilla&lt;/a&gt; feed. &lt;br /&gt;
I’ve always been interested in Mozilla’s work. It’s not open source applications that they build. Most companies now build some tool and open the source code to everyone. This is a noble effort on their part but I don’t think that what open source development is about. It’s about “Open” before “Source”. Having a community-driven open development process is the key here. Involve the community in the process designing features, and building them. Invite developers to listen in on your meetings. It’s a great learning tool for new developers who can learn about what it’s like to work on a team. This is what I really admire about Mozilla, the open process. I’ll list later in this post some links on where you can see for yourself what I’m talking about.&lt;/p&gt;

&lt;p&gt;Before I talk about all those projects, I want to take a moment to mention the &lt;a href=&quot;http://www.mozilla.org/about/manifesto.en.html&quot;&gt;Mozilla manifesto&lt;/a&gt; (which I translated to &lt;a href=&quot;http://www.mozilla.org/about/manifesto.ar.html&quot;&gt;Arabic&lt;/a&gt; back in 2009). Take a minute to read it. It might seem a high level goal that is not related to daily operations but reading a &lt;a href=&quot;http://philikon.wordpress.com/2011/12/11/take-webos-mozilla/&quot;&gt;post about webOS and Mozilla&lt;/a&gt; lately, I watched how it’s on everyone’s mind. I think it really helps the mozillians stay focused on keeping the Internet open when they measure their decisions against the manifesto.&lt;/p&gt;

&lt;h3 id=&quot;firefox-aurora-and-nightly&quot;&gt;Firefox, Aurora and Nightly&lt;/h3&gt;
&lt;p&gt;There was always a nightly build of Firefox that if you search for it you can find an FTP page for it but it wasn’t official. With the new approach of versioning and releasing Firefox, nightly builds of Firefox have an official name “Nightly”. Last year, Mozilla came up with the 3 different names and &lt;a href=&quot;http://downloadsquad.switched.com/2011/04/11/new-firefox-nightly-and-aurora-logos-unearthed-and-how-to-enabl/&quot;&gt;inspiring logos&lt;/a&gt; to make it easier to adopt beta version. Firefox is the stable final release for the masses, Aurora is the beta release, it’s stable but could have few bugs. Nightly is cutting edge and updates every night. I use Nightly and love that there’s a 64 bit version of it. You can get it from &lt;a href=&quot;http://nightly.mozilla.org/&quot;&gt;Nightly’s page&lt;/a&gt;. You can also follow Nightly news on &lt;a href=&quot;https://twitter.com/#!/firefoxnightly&quot;&gt;@FirefoxNightly&lt;/a&gt; or &lt;a href=&quot;http://firefoxnightly.tumblr.com/&quot;&gt;Tumblr&lt;/a&gt;. They post details of the upcoming features. For more details, here’s &lt;a href=&quot;https://wiki.mozilla.org/Features/Release_Tracking&quot;&gt;a complete list of features of Firefox, Aurora and Nightly&lt;/a&gt;. Here’s an example of a feature that should land soon in Nightly, the &lt;a href=&quot;http://people.mozilla.com/~jboriss/specs/home_tab_first_iteration_spec1.png&quot;&gt;new Home Tab&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;mozilla-labs&quot;&gt;Mozilla Labs&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://mozillalabs.com/&quot;&gt;Mozilla labs&lt;/a&gt; is the home of many great ideas that usually are built as addons to Firefox. Some of these projects “graduate” and become part of Firefox like:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://mozillalabs.com/jetpack/&quot;&gt;Jetpack&lt;/a&gt;: the restart-less addons platform.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://mozillalabs.com/personas/&quot;&gt;Personas&lt;/a&gt;: which provides an easy way to skin Firefox.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://mozillalabs.com/sync/&quot;&gt;Sync&lt;/a&gt;: the indispensable sync capability to keep your Firefox profile up to date on multiple computers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other projects are not so lucky and are not active anymore including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://mozillalabs.com/ubiquity/&quot;&gt;Ubiquity&lt;/a&gt;: one of my favorite projects. Task-centric natural-language-based command line that brings web tasks from any web site to your fingertips. It’s extensible and builds on web standards (HTML, CSS, and JavaScript).&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://mozillalabs.com/prism/&quot;&gt;Prism&lt;/a&gt;: remember how Microsoft annoyed the heck out of everyone with the new innovation “Pin a website to taskbar” feature in IE9. Well, before that there was Prism. Run any web app as a desktop application with the help of Firefox.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Meanwhile, a number of projects is always active:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://mozillalabs.com/testpilot/&quot;&gt;Test Pilot&lt;/a&gt;: collects usage data and user feedback while maintaining user’s privacy.  &amp;lt;li&amp;gt;&lt;a href=&quot;http://mozillalabs.com/contacts/&quot;&gt;Contacts&lt;/a&gt;: centralizes the user’s contacts in the browser and gives access to online services when requested and allowed.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://mozillalabs.com/skywriter/&quot;&gt;Skywriter&lt;/a&gt;: a web-based code editor.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;browserid&quot;&gt;BrowserID&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/OpenID&quot;&gt;OpenID&lt;/a&gt; was a noble effort to outsource and centralize authentication of all the websites that we deal with everyday in a way that removes the hassle. For so reason, mainly the long ugly un-memorable URL, OpenID didn’t take over the web in the way it was hoped to.&lt;br /&gt;
Mozilla is take a shot at this problem with &lt;a href=&quot;http://www.BrowserID.org&quot;&gt;BrowserID&lt;/a&gt;. Instead of outsourcing authentication to a third party, BrowserID uses the browser to authenticate users using their email address. You add your address as your browser ID and verify it by clicking a link in an email you receive from the BrowserID service then every site wants to authenticate you can rely on BrowserID for that. Watch the video for a demo:&lt;/p&gt;

&lt;div class=&quot;youtube-container&quot;&gt;
   &lt;div class=&quot;youtube-player&quot; data-id=&quot;l0t9yDLAmFo&quot;&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;More info on BrowserID is &lt;a href=&quot;http://identity.mozilla.com/post/7616727542/introducing-browserid-a-better-way-to-sign-in&quot;&gt;the introduction post&lt;/a&gt; or on &lt;a href=&quot;http://identity.mozilla.com/&quot;&gt;Identity at Mozilla&lt;/a&gt; page. Here’s a &lt;a href=&quot;https://browserid.org/developers&quot;&gt;quick tutorial for developers&lt;/a&gt;, the &lt;a href=&quot;http://myfavoritebeer.org/&quot;&gt;demo site&lt;/a&gt; from the video. You can follow the development or contribute on &lt;a href=&quot;https://github.com/mozilla/browserid&quot;&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;webfwd&quot;&gt;WebFWD&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://webfwd.org&quot;&gt;WebFWD&lt;/a&gt; (Web Forward) is a new program from Mozilla to support open source projects with mentorship, access to Mozilla global network and infrastructure and resources. If you have an open source project that helps keep the web open, you can qualify for support from Mozilla. Read a brief introduction &lt;a href=&quot;https://webfwd.org/about/index.html&quot;&gt;here&lt;/a&gt; or follow the program’s news on their &lt;a href=&quot;http://blog.webfwd.org/&quot;&gt;blog&lt;/a&gt; or &lt;a href=&quot;https://twitter.com/#!/mozwebfwd&quot;&gt;@MozWebFWD&lt;/a&gt; or watch some &lt;a href=&quot;http://vimeo.com/webfwd&quot;&gt;videos&lt;/a&gt;.&lt;br /&gt;
&lt;a href=&quot;http://bigbluebutton.org/&quot;&gt;BigBlueButton&lt;/a&gt; is one of the projects participating in Mozilla’s WebFWD. It’s an open source project that enables universities and colleges to deliver high quality learning experience to remote students. Here are &lt;a href=&quot;http://bigbluebutton.org/content/videos&quot;&gt;some videos showing how BigBlueButton works&lt;/a&gt;. It’s open source, &lt;a href=&quot;http://code.google.com/p/bigbluebutton/&quot;&gt;download it now&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;mozilla-popcorn&quot;&gt;Mozilla Popcorn&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://mozillapopcorn.org/&quot;&gt;Mozilla Popcorn&lt;/a&gt; tries to break videos from a big blob into browse-able element, this is how I see it. Videos, even though they’re everywhere on the web now, are still one element. You press play and watch. You can’t search in a video, you can’t make the video interact with other elements or contents that are related to this video. Popcorn tries to bring the web into video.&lt;/p&gt;

&lt;p&gt;Watch the &lt;a href=&quot;http://katehudsondesign.com/demos/popcornmacbeth/&quot;&gt;Shakespeare demo&lt;/a&gt; to get an idea of what Popcorn can do, it’s awesome (you’ll need a modern browser with HTML5 capabilities). Follow the project’s news on their &lt;a href=&quot;http://mozillapopcorn.org/blog/&quot;&gt;blog&lt;/a&gt; or &lt;a href=&quot;https://twitter.com/#!/popcornjs&quot;&gt;@PopcornJS&lt;/a&gt;. &lt;a href=&quot;http://mozillapopcorn.org/popcornjs/&quot;&gt;Download a copy&lt;/a&gt;, or &lt;a href=&quot;https://github.com/webmademovies/popcorn-js&quot;&gt;follow the development on Github&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;what-else&quot;&gt;What Else?&lt;/h3&gt;
&lt;p&gt;There’s one more project I’d like to talk about, it’s the &lt;a href=&quot;https://wiki.mozilla.org/B2G&quot;&gt;Boot to Gecko mobile OS&lt;/a&gt;. I think it’s a big enough topic that it merits its own post especially I don’t know much about it and would like to do more reading on it. If you have good resources on the topic, please mention them in the comments.&lt;br /&gt;
This was a quick tour of the Mozilla projects that really interested me over those past couple of weeks. I’m sure there are much more of them our there. If the list is missing your favorite project, mention it in the comments or blog about it, I’d love to read more about it.&lt;br /&gt;
Follow &lt;a href=&quot;https://twitter.com/#!/firefox&quot;&gt;@Firefox&lt;/a&gt; or on &lt;a href=&quot;https://www.facebook.com/Firefox&quot;&gt;Facebook&lt;/a&gt; or &lt;a href=&quot;https://www.mozilla.org/contribute/&quot;&gt;Contribute&lt;/a&gt; effort to the organization. Get some &lt;a href=&quot;http://store.mozilla.org/&quot;&gt;Mozilla and Firefox gear&lt;/a&gt; or &lt;a href=&quot;https://donate.mozilla.org/page/contribute/openwebfund?WT.ac=shirt_us&quot;&gt;Donate and get a free shirt&lt;/a&gt;.&lt;/p&gt;
</description>
          <pubDate>Sat, 07 Jan 2012 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/MozillaBeyondFirefox/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/MozillaBeyondFirefox/</guid>
          
          <category>Web</category>
          
          <category>Mozilla</category>
          
          <category>IT Industry</category>
          
          <category>Mozilla Nightly</category>
          
          <category>Firefox</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
        <item>
          <title>On Ad Blocking</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; title=&quot;AdBlock Plus&quot; src=&quot;/public/images/blog/OnAdBlocking/AdBlockPlusLogo.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I was reading this &lt;a href=&quot;http://monogatari.doukut.su/2011/11/why-ad-blocking-is-not-moral-dilemma.html&quot;&gt;blog post&lt;/a&gt; on &lt;a href=&quot;http://planet.mozilla.org/&quot;&gt;Planet Mozilla&lt;/a&gt; feed on the moral dilemma on using Ad blockers and I left a comment that is the idea behind this post. I use an &lt;a href=&quot;http://adblockplus.org/en/&quot;&gt;Ad blocker&lt;/a&gt; and I’m aware that I’m not doing good to the sites that I visit. I agree that Ads build brand recognition and by not looking at them, I might be taking away revenue from those sites.&lt;/p&gt;

&lt;p&gt;This is why I disable my Ad blocker for almost all the sites that:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;I use regularly and want to support.&lt;/li&gt;
  &lt;li&gt;Their ads are not an assault on my eyes or doesn’t offend me.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I think that the reason this ad blocking started is because the ad providers (and indirectly the site owners) took unfair advantage of their users and threw all the crap that they could find at them (remember the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pop-up_ad&quot;&gt;good old days of pop-ups&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Ad providers are doing a terrible job in matching sites’ content with ads. You go to a website to read a serious article and find an ad that is completely different and unserious just because this user’s profile at the ad provider indicates that they might be interested in this ad.&lt;/p&gt;

&lt;p&gt;Content is subtle, but visual distraction can’t be ignored. Ads give no regard to the page’s colors and insert a foreign object with completely different colors. Some ads don’t even care about having the correct size. Example is below (Click for bigger picture).&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/public/images/blog/OnAdBlocking/BestAdPlacementEver.jpg&quot;&gt;&lt;img class=&quot;imageInCenter&quot; title=&quot;Best Ad Placement Ever!&quot; src=&quot;/public/images/blog/OnAdBlocking/BestAdPlacementEver_Small.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some sites don’t even care and display ads that are stupid and offensive. &lt;a href=&quot;/public/images/blog/OnAdBlocking/AwfulAd.jpg&quot;&gt;Here’s an example&lt;/a&gt; of a (supposed to be respected) newspaper web site displaying (what is practically if not really) ad for a porn site. Some web sites don’t care about their users as much as they care about ad revenue. I understand that it’s a tough business, but I know a bad business strategy when I see one. Having no minimum when it comes to what is an acceptable ad is a bad business strategy.&lt;/p&gt;

&lt;p&gt;Some content provider think that “Content + Ad = Money” without thinking through what content or what ads. Those content providers will never imagine that one good option sometimes is displaying no ad at all. Users will respond to those providers by using Ad blockers.&lt;/p&gt;

&lt;p&gt;Instead of considering whether or not ad blocking should be a moral dilemma (which I can actually agree on), we should ask ourselves ‘Why are users blocking ads?’.&lt;/p&gt;
</description>
          <pubDate>Sat, 19 Nov 2011 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/OnAdBlocking/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/OnAdBlocking/</guid>
          
          <category>Web</category>
          
          <category>Mozilla</category>
          
          <category>Ads</category>
          
          <category>Browsers</category>
          
          <category>IT Industry</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Mirroring Hard drives Using PowerShell and SyncToy</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; title=&quot;PowerShell&quot; src=&quot;/public/images/blog/MirroringHardDrivesUsingPowerShellAndSyncToy/PowerShellLogo.jpg&quot; /&gt;
&lt;img class=&quot;imageOnRight&quot; title=&quot;SyncToy&quot; src=&quot;/public/images/blog/MirroringHardDrivesUsingPowerShellAndSyncToy/SyncToyLogo.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;My main protection against hard drive failure for a long time has been &lt;a href=&quot;http://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_1&quot;&gt;RAID 1&lt;/a&gt;. I would get two identical hard drives and RAID them so that everything I do on the first drive would be replicated on the second. One time, this actually saved me from a hard drive failure with almost zero down time.&lt;/p&gt;

&lt;p&gt;I can say that this has worked out very well for a long time until one day I made a stupid mistake and accidently chose the wrong drive when installing Windows. I wiped out the data drive and sure enough RAID has mirrored everything I did. It was 4 days of crying, recovering data with &lt;a href=&quot;http://diskdigger.org/&quot;&gt;DiskDigger&lt;/a&gt;, banging my head on the desk, recovering data, more crying, and so on. Since then, I dropped the RAID 1 on all my hard drives and switched to using SyncToy to mirror identical disks once a day.&lt;/p&gt;

&lt;p&gt;SyncToy is very simple to use and you can &lt;a href=&quot;http://www.pchell.com/support/synctoy.shtml&quot;&gt;use it with Windows Task Scheduler&lt;/a&gt; to sync the drives at night. However, I ran into two main problems: Copying SQL Server database files, and Copying mounted VHD files. These files won’t get copied if they’re in use. To solve this problem, I need to stop the SQL Server service, and un-mount the VHD file before mirroring the drives. To do that and after &lt;a href=&quot;/blog/PowerShellStudyNotes/&quot;&gt;learning all about it&lt;/a&gt;, I’ll be using PowerShell.&lt;/p&gt;

&lt;h3 id=&quot;running-powershell-scripts&quot;&gt;Running PowerShell Scripts&lt;/h3&gt;

&lt;p&gt;The first thing to try out is running PowerShell scripts in Windows. If you’re running Windows 7 like I’m, you could run into the issue of restricted execution policy. If you try to run a PowerShell script, any script, you’ll find this error message:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;File C:\test.ps1 cannot be loaded because the execution of scripts is disabled on this system.&lt;br /&gt;
Please see “get-help about_signing” for more details.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is caused by Windows limiting the ability to run PowerShell scripts by default. You can get the status of the execution policy using the PowerShell cmdlet &lt;strong&gt;&lt;em&gt;Get-ExecutionPolicy&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/9d8b320ac7052d41ac21.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;To change the status of the execution policy use the &lt;strong&gt;&lt;em&gt;Set-ExecutionPolicy&lt;/em&gt;&lt;/strong&gt; cmdlet. Here, I’m switching to “Unrestricted”:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/e54827459976f658bfd9.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Changing the execution policy is a one-time thing, you won’t have to worry about it again. Now, your Windows 7 is ready to run PowerShell scripts. You can read all about execution policy and running PowerShell scripts on Windows in this &lt;a href=&quot;http://technet.microsoft.com/en-us/library/ee176949.aspx&quot;&gt;TechNet article&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;running-powershell-scripts-using-task-scheduler&quot;&gt;Running PowerShell Scripts using Task Scheduler&lt;/h3&gt;

&lt;p&gt;The Task Scheduler will be responsible for running the script. It can’t run it directly, we’ll have to run PowerShell.exe and pass the script as an argument. It’s like running a PowerShell script from the command line. To do that we enter the PowerShell.exe path followed by &lt;strong&gt;“&amp;amp;&lt;/strong&gt; then the path to the script surrounded by single or double quotes (&lt;a href=&quot;http://www.leeholmes.com/blog/2006/05/05/running-powershell-scripts-from-cmd-exe/&quot;&gt;Source&lt;/a&gt;). This helps with running scripts that have space in their path. Here’s an example:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/69e497e506991ef80213.js&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;copying-database-files&quot;&gt;Copying Database Files&lt;/h3&gt;

&lt;p&gt;Before we start writing the script, we’ll have to test copying the database file. I stopped the SQL service using the Services management console and tried to copy the file but it failed. Database files by default are not owned by your Windows user account. You have to take ownership of the files (the MDF file and the Log file) and grant your Windows account sufficient permission to be able to copy the files. You can use the Properties dialog to take ownership of the files. I do that and now I can copy the files.&lt;/p&gt;

&lt;p&gt;I can write all the commands in the PowerShell script directly, but I would rather break down the script into reusable functions. To prepare to copy the database files, I have 3 functions; check the status of the SQL service, stop the service and start it. I would like to maintain the status of my SQL service as it is after the mirroring is complete. I want to stop the service and start it again only if it was actually running.&lt;/p&gt;

&lt;p&gt;Checking the service status, stopping it, and starting it is the same for all services and is not related to SQL Server. You can read all about it &lt;a href=&quot;http://www.computerperformance.co.uk/powershell/powershell_service_start.htm&quot;&gt;here&lt;/a&gt;. We can simply use the commands &lt;strong&gt;&lt;em&gt;Get-Service&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Stop-Service&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;Start-Service&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I’m writing the functions in a bit of a generic way so that I can use them later in other scripts without having to change their content (only their name have to change). For example, I’m passing the name of the service. Here’s the &lt;strong&gt;&lt;em&gt;Get-SqlServiceStatus&lt;/em&gt;&lt;/strong&gt; function as an example:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/de4e018fe11a98b42a18.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;&lt;img style=&quot;float: right&quot; src=&quot;/public/images/blog/MirroringHardDrivesUsingPowerShellAndSyncToy/SqlServicePropertiesWindow.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;All I need now is the name of the SQL service on my computer. To get the name of the service, navigate to the service properties dialog and pick the name of the service (not the display name). Make sure to use PowerShell escape characters to enter the name correctly. For example: “&lt;strong&gt;MSSQL$SQLEXPRESS&lt;/strong&gt;” have a dollar sign ($), so I have to add a backtick before the dollar sign to make PowerShell parse the name correctly “&lt;strong&gt;MSSQL`$SQLEXPRESS&lt;/strong&gt;”.&lt;/p&gt;

&lt;h3 id=&quot;mounting-vhds&quot;&gt;Mounting VHDs&lt;/h3&gt;

&lt;p&gt;I think that the common way to mount a VHD in PowerShell is using &lt;a href=&quot;http://en.wikipedia.org/wiki/Windows_Management_Instrumentation&quot;&gt;WMI&lt;/a&gt; (Windows Management Instrumentation). A quick search online will confirm this. However, WMI is not available for Windows 7, it’s for Windows Server. We can’t mount the VHD file using WMI because the namespace “Root\Virtualization” is &lt;a href=&quot;http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/a08ad18f-4b6a-46a0-bd1f-274fbbc5b737&quot;&gt;not available on Windows 7&lt;/a&gt;. This namespace include the class that could be used to mount the VHD file. If you’re running Windows Server and can use WMI, here’s a &lt;a href=&quot;http://blogs.msdn.com/b/virtual_pc_guy/archive/2008/02/01/mounting-a-virtual-hard-disk-with-hyper-v.aspx&quot;&gt;description of how to mount virtual hard drives with HyperV and WMI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Aside from using WMI, normally we’d mount a VHD using the &lt;a href=&quot;http://www.windows7news.com/2010/01/14/how-to-automatically-attach-vhd-images-in-windows-7/&quot;&gt;DiskPart command&lt;/a&gt;. To do that, create a file and name it AttachMyVHD.s for example and add this to it:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/b47cb7552a1c3f0f7b19.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Then create a Windows command (.cmd) file that call the diskpart command and pass this file to it.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/d46e8dc1768e7ea1d656.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;In the S file, we’re selecting the VHD by specifying its location, then attaching it. In the Windows command file, we’re passing the S file to the DiskPart command.&lt;/p&gt;

&lt;p&gt;In PowerShell, we’ll just execute the Windows command file. This &lt;strong&gt;Mount-Codebox&lt;/strong&gt; function declares a variable with the location of the Windows command file. Codebox is the name of the VHD file I’m using.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/051466db496e139157e7.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;To unmount a VHD, you can do the same thing, except in the S file, use &lt;strong&gt;&lt;em&gt;detach vdisk&lt;/em&gt;&lt;/strong&gt; instead of &lt;strong&gt;&lt;em&gt;attach vdisk&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before we unmount the VHD and re-mount it after the mirroring, we need to check if it’s already mounted. We don’t want our script to change an existing status, we want it to maintain it. If the VHD is not already mounted, don’t try to unmount, then re-mount it at the end. Just skip this step altogether.&lt;/p&gt;

&lt;p&gt;To check if the VHD is already mounted, we’ll just check if the drive it creates exists or not. To check if a drive exists, we’ll use the &lt;strong&gt;&lt;em&gt;&lt;a href=&quot;http://powershell.com/cs/media/p/202.aspx&quot;&gt;Exists-Drive function&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/344b1f9540712a2bc064.js&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;run-synctoy&quot;&gt;Run SyncToy&lt;/h3&gt;

&lt;p&gt;To run SyncToy from PowerShell, we’ll use the same way we called the Windows command file above; using the &lt;strong&gt;&lt;em&gt;&amp;amp;&lt;/em&gt;&lt;/strong&gt; symbol to execute the SyncToy EXE file. We’ll call the SyncToyCmd.exe file which is the command line equivalent of the application so we can pass the name of the backup plan as an argument. If you use the command line to call SyncToyCmd, it’ll look like this:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/e6ae51bdea7072ccce1d.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;We’ll create the &lt;strong&gt;&lt;em&gt;Run-SyncToy&lt;/em&gt;&lt;/strong&gt; function with the backup plan name as an input so we can call it multiple times for different plans.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/dd5fbc9b204197435976.js&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;write-powershell-output-to-file&quot;&gt;Write PowerShell Output to File&lt;/h3&gt;

&lt;p&gt;Logically, I’m running this script overnight and I would like to understand what happened while I’m away, so we’ll write the output of the script to a log file named with the date of when the script ran.&lt;/p&gt;

&lt;p&gt;To write the output of any PowerShell command or function to file, use the &lt;strong&gt;&lt;em&gt;Out-File&lt;/em&gt;&lt;/strong&gt; cmdlet. This &lt;a href=&quot;http://technet.microsoft.com/en-us/library/ee176924.aspx&quot;&gt;TechNet page&lt;/a&gt; explains how to use it. Example:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/3581c3aff5aee81dc2f9.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;This line write the output of the &lt;strong&gt;&lt;em&gt;Get-ChildItem&lt;/em&gt;&lt;/strong&gt; cmdlet to the text file named &lt;strong&gt;&lt;em&gt;MyOutputFile.txt&lt;/em&gt;&lt;/strong&gt; under the D drive. Notice the use of the two arguments –&lt;strong&gt;&lt;em&gt;Append&lt;/em&gt;&lt;/strong&gt;  (which appends to the file if it already exists) and –&lt;strong&gt;&lt;em&gt;Force&lt;/em&gt;&lt;/strong&gt; (which creates the file if it doesn’t exist).&lt;/p&gt;

&lt;p&gt;We’ll need to stamp the file name with time of when the script ran, to do that we’ll use the &lt;strong&gt;&lt;em&gt;Get-Date&lt;/em&gt;&lt;/strong&gt; cmdlet and the argument –&lt;strong&gt;&lt;em&gt;Format&lt;/em&gt;&lt;/strong&gt;. Example:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/4eaa69ac18f22a30d78b.js&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;putting-it-all-together&quot;&gt;Putting It All Together&lt;/h3&gt;

&lt;p&gt;You can notice that all the work above just creates functions to be used in the main body of the script. Here’s where we put it all together.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/e1a12ddee601bd80480c.js&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;try-it-out-yourself&quot;&gt;Try It Out Yourself&lt;/h3&gt;

&lt;p&gt;You probably have a different backup strategy, but you can still take advantage of PowerShell and SyncToy in a whole host of other scenarios. &lt;a href=&quot;https://gist.github.com/AmrEldib/e1a12ddee601bd80480c/download&quot;&gt;Download the script here&lt;/a&gt;. Tweak it till it fit your requirements and please leave a comment below if you have a question or found a bug somewhere in the script. Even if not for mirroring hard drives, this still was a nice exercise for using PowerShell.&lt;/p&gt;
</description>
          <pubDate>Fri, 18 Nov 2011 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/MirroringHardDrivesUsingPowerShellAndSyncToy/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/MirroringHardDrivesUsingPowerShellAndSyncToy/</guid>
          
          <category>.NET</category>
          
          <category>VHD</category>
          
          <category>Virtualization</category>
          
          <category>SyncToy</category>
          
          <category>PowerShell</category>
          
          <category>SQL Server</category>
          
          <category>Backup</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>How To Ruin Your Public Beta</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; title=&quot;Adobe&quot; src=&quot;/public/images/blog/HowToRuinYourPublicBeta/AdobeLogo.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Couple of days ago, I downloaded and installed the latest beta of Adobe Flash (11.2.202.18 Beta 1). I downloaded the IE version and the non-IE version, and the x64 version. I like to test out the latest betas of almost all the software that I’m using; &lt;a href=&quot;/blog/WhatIUsePart2/&quot;&gt;I use Mozilla Nightly and Chrome beta&lt;/a&gt; (just updated to version 17 today). It’s my way of staying updated and keeping up with what’s coming next. I understand that I have to take some hits for using beta software but in return I get to enjoy all the new ideas months before everyone else, and every once in a blue moon I get to affect some feature in some upcoming release by providing feedback.&lt;/p&gt;

&lt;p&gt;After I installed Flash, I started noticing this annoying beta disclaimer appearing on YouTube videos (a Flash element).&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; title=&quot;Beta disclaimer on YouTube Videos&quot; src=&quot;/public/images/blog/HowToRuinYourPublicBeta/FlashBetaDisclaimer01.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; title=&quot;Beta disclaimer on Audible Sample button&quot; src=&quot;/public/images/blog/HowToRuinYourPublicBeta/FlashBetaDisclaimer02.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I ignored it at first, but then it started being really annoying. It’s hiding the full screen button in the YouTube player as you can see above. Then it started to get really annoying when it showed up on really small Flash elements; elements that are so small that I couldn’t see anything other than the disclaimer (look at the small Audible “Sample” button on the right). Naturally, I turned to Bing to start finding a solution for this annoyance. I found this &lt;a href=&quot;http://forums.adobe.com/thread/797926?start=0&amp;amp;tstart=0&quot;&gt;post on Adobe forums&lt;/a&gt;. Here’s the answer from an Adobe employee:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;Incubator builds are not preview, alpha or beta quality. It’s before that state - this is code under active development. The watermark is a visual indicator of that fact. Many companies follow this practice for pre-release software - &lt;strong&gt;for example, Microsoft Windows pre-release builds have a watermark with version in the bottom right corner of the screen&lt;/strong&gt; to indicate it an evaluation and not a final version.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Also, Flash Player is one of the most widely distributed pieces of software and our audience is quite broad. End users are by far our biggest customer segment. &lt;strong&gt;We need to make sure people - developer or end user - that install Incubator builds know and understand what they’re getting themselves into.&lt;/strong&gt; In the past, we have seen links to previews and betas delivered out of context of the content we have on Labs that explains that pre-releases have not yet gone through security review, may not be stable, etc. These builds don’t give users auto-update notification and can make it difficult for a user to install a release player (because it is a later version, or you must run the uninstaller before you install a different version).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So, there’s no way to remove the disclaimer. Now, beta users who are willing to use such an early beta of a software like Flash (which is a component more than a software) are not stupid users. They understand that this is a beta, they accept the risks of using such a software, they just don’t want to be annoyed by a stupid disclaimer.&lt;/p&gt;

&lt;p&gt;Someone argued in the forum post with a beta user about how Adobe is right and the beta users are wrong in complaining about this. One thing said is:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;With all due respect tom, your comments are the very reason why Adobe tends not to let things publically available this early. They are afraid that people like you will make comments/judgments like this. You need to understand a little bit about software development, this is called an alpha build.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not only that Adobe has already made this beta public, so they should just accept how users react. It also this a little condescending to assume that the user doesn’t know anything about software development, especially something as simple as what an alpha build is.&lt;/p&gt;

&lt;p&gt;To go back to the example that Adobe used to defend their choice, the beta disclaimer in Windows is actually an option in Windows that &lt;a href=&quot;http://www.windowssquad.com/how-to-display-windows-7-build-version-number-on-desktop/23/&quot;&gt;you can turn on even in a non-beta release&lt;/a&gt;. Microsoft just chooses to turn it on by default in a beta release and leaves to the users the option to turn it off if they want to.&lt;/p&gt;

&lt;p&gt;Beta users are volunteers who come to you as a software maker and give you a great opportunity to take advantage of their time to test out your software and find out bugs and usage scenarios about it that you wouldn’t imagine. Their reward shouldn’t be that you treat them like crap and tell them that they’re wrong and don’t understand how software works. Their reward should be to make their lives easier, to welcome their feedback and suggestions, to treat them like they’re part of the team.&lt;/p&gt;

&lt;p&gt;Mozilla gives beta users access to a &lt;a href=&quot;http://input.mozilla.com/en-US/&quot;&gt;feedback dashboard&lt;/a&gt;. They give them a button that is very simple to use with happy face and sad face and you only need to write a single sentence to say what’s on your mind. You don’t have to register, you don’t have to answer a survey or pick from a list. No, it’s a minimum barrier of entry, because they want you feedback and they’ll figure out how to make most of it.&lt;/p&gt;

&lt;p&gt;A public beta is not just publishing an early release of your upcoming version. It’s a process of including a new member in your development team; the public. Like any other member that is joining your team, if you don’t have a job description for them, or have tools ready for them to use, it’s all a waste of time and money. And what do Adobe do to this team member who is providing feedback, they decline their most basic feedback to have an option to turn this thing off. It’s a shame for Adobe to miss up something as simple as this. But others might say “What else is new?”.&lt;/p&gt;

&lt;p&gt;I’m uninstalling this early beta of Flash and going back to the version before that.&lt;/p&gt;
</description>
          <pubDate>Sat, 05 Nov 2011 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/HowToRuinYourPublicBeta/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/HowToRuinYourPublicBeta/</guid>
          
          <category>Software Development</category>
          
          <category>Adobe</category>
          
          <category>IT Industry</category>
          
          <category>Flash</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>PowerShell Study Notes</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/PowerShellStudyNotes/PowerShellLogo.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Last week, I found a great PowerShell tutorial over at &lt;a href=&quot;http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=powershell-intro&quot;&gt;Pluralsight&lt;/a&gt; (by &lt;a href=&quot;http://arcanecode.com&quot;&gt;Robert Cain&lt;/a&gt;). PowerShell has been a topic that I wanted to learn about for quite a while. As any power user/geek type of person, the command line is my friend but the standard DOS command line has been the same for years. That’s why PowerShell seemed so compiling. But the fact that it’s based on/using .NET objects and that it’s now integrated in Visual Studio 2010 made it a priority to understand what it’s all about.&lt;/p&gt;

&lt;p&gt;I finished the tutorial in a day. It’s less than 3 hours long and it’s pretty straight forward. I went over the tutorial again for a deeper understanding and took down some notes that I’m attacking to this post (You can &lt;a href=&quot;/public/images/blog/PowerShellStudyNotes/PowerShell Study Notes.docx&quot;&gt;view the document online here&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;I also found &lt;a href=&quot;http://www.powershellpro.com/powershell-tutorial-introduction/&quot;&gt;another tutorial here&lt;/a&gt;, that is a series of posts with more details on PowerShell. You’ll find the list of posts in the series on the right side under the title “PowerShell Tutorials”.&lt;/p&gt;

&lt;p&gt;Basically PowerShell is a command line that handles .NET objects so that when a command return a result that result is a .NET object that you can retrieve the values of its properties or execute its methods. Even if the result is a simple string or integer, it’s a string object or int object.&lt;/p&gt;

&lt;p&gt;PowerShell is built with three very nice concepts in mind. &lt;strong&gt;One&lt;/strong&gt;, it has a script language built-in that has the basic capabilities and concepts of any programming language. Most are like .NET languages but always check your assumptions as it might lead to some confusion. &lt;strong&gt;Two&lt;/strong&gt;, it uses aliases for commands, so you’ll find that most DOS and Linux commands are supported; not as native commands but rather as aliases to native commands. &lt;strong&gt;Three&lt;/strong&gt;, it uses providers to support additional commands. For example, you can load the SQL provider and access SQL objects.&lt;/p&gt;

&lt;p&gt;I don’t want to dive too much into the topic, but I thought I should sum it up to get you interested if you’re new to it.&lt;/p&gt;

&lt;p&gt;Meanwhile, I hope the study notes can help. You can &lt;a href=&quot;https://www.pluralsight-training.net/microsoft/Subscribe/Step1?isTrial=True&quot;&gt;try out the Pluralsight courses here&lt;/a&gt;, they have very reasonable &lt;a href=&quot;http://www.pluralsight-training.net/microsoft/Products/Individual&quot;&gt;subscription plans&lt;/a&gt;. You can follow them and thank them on &lt;a href=&quot;https://www.facebook.com/pluralsight&quot;&gt;their Facebook page&lt;/a&gt; if you like their stuff.&lt;/p&gt;
</description>
          <pubDate>Tue, 01 Nov 2011 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/PowerShellStudyNotes/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/PowerShellStudyNotes/</guid>
          
          <category>.NET</category>
          
          <category>PowerShell</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
        <item>
          <title>What I Use, Part 2</title>
          <description>&lt;p&gt;A few weeks I started with the hardware in &lt;a href=&quot;https://amreldib.com/blog/WhatIUsePart1/&quot;&gt;Part 1&lt;/a&gt;, today I continue with the software and services.&lt;/p&gt;

&lt;h3 id=&quot;operating-system&quot;&gt;Operating System&lt;/h3&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part2/WhatIUse2-Windows7.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Windows, what else? For a .NET developer, it’s really difficult to use another OS on your primary machine. I’m not a big fan of MacOS. Apple’s strength is in hardware not software, Windows is the best OS to run on a Mac. However, I love the idea of Linux. Not just the free and open source part of it, but the customizability of it. MacOS does few things very well and doesn’t let you draw outside the lines. Windows does a lot of things in mediocre to good way but because of the huge user base it has been turned upside down and inside out so many times to let a great degree of customization. Linux does everything in a poor way if you’re a beginner and great way if you’re a pro. Linux allows for a big degree of customization that is too much to resist for a power user. I’d love to switch to Linux (probably, Ubuntu) on my primary machine. Meanwhile, this post is coming to you from Windows 7 x64.&lt;/p&gt;

&lt;h3 id=&quot;browsers&quot;&gt;Browsers&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://nightly.mozilla.org/&quot;&gt;&lt;strong&gt;Mozilla Nightly&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part2/WhatIUse2-FirefoxAuroraNightlyLogo.jpg&quot; /&gt;
Mozilla really made it easy to follow up on the different editions of Firefox when they announced &lt;a href=&quot;http://www.mozilla.org/en-US/firefox/channel/&quot;&gt;Aurora&lt;/a&gt; and &lt;a href=&quot;http://nightly.mozilla.org/&quot;&gt;Nightly&lt;/a&gt;. Nightly updates everyday but gives a sneak peak into all the latest features. Nightly have another advantage over Firefox, its x64 edition. This requires using a x64 edition of Flash which is finally &lt;a href=&quot;http://get.adobe.com/flashplayer/otherversions/&quot;&gt;available from Adobe&lt;/a&gt;. It’s also causes giving up on Silverlight (sadly doesn’t have a x64 edition).&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part2/WhatIUse2-IE9.jpg&quot; /&gt;
&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part2/WhatIUse2-Chrome.jpg&quot; /&gt;
Other than Firefox, I’d like to keep other browsers installed for testing web applications on multiple browsers. Chrome is a really good browser that I would probably use if it wasn’t for Firefox and the fact that it’s built by Google. The monster is big enough and doesn’t need more reach into our personal data.&lt;/p&gt;

&lt;p&gt;Internet Explorer is already installed with Windows, but with IE9 you don’t have to hate it so much. It’s fast but have very few features compared to Firefox and Chrome.&lt;/p&gt;

&lt;h3 id=&quot;documents&quot;&gt;Documents&lt;/h3&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part2/WhatIUse2-Office2010.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Office with Windows is a no-brainer. Unlike most people, I really like the ribbon. Over versions 2007 and 2010, I discovered a lot of features because of the ribbon. Word and Excel are the applications that I use the most, but I really like Visio which is a great tool for visualizing ideas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.foxitsoftware.com/Secure_PDF_Reader/&quot;&gt;Foxit Reader&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Like most people, for a long time, I used Adobe Reader as the PDF reader. It was the only one out there, until Foxit Reader came along and put speed into PDF reading. Version 5 of Foxit kept the great features but switched its visual appearance which made it a bit difficult to use it.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader.html&quot;&gt;&lt;strong&gt;Sumatra PDF&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sumatra PDF is free, open source, fast and lightweight. Works really well, except it doesn’t have a tabbed interface which I got used to after using Foxit for a while.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.pdfforge.org/&quot;&gt;&lt;strong&gt;PDFCreator&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Easily create PDFs using a printer. I’ve noticed an error when printing an Arabic document, but it works well for the occasional PDF printing.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://notepad-plus-plus.org/&quot;&gt;&lt;strong&gt;Notepad++&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Are you still not using Notepad++, really? really?&lt;/p&gt;

&lt;h3 id=&quot;dev-tools&quot;&gt;Dev Tools&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.virtualbox.org/&quot;&gt;&lt;strong&gt;VirtualBox&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VMware is great, but VirtualBox is just as good. I’ve wrote before about &lt;a href=&quot;/blog/VMBasedDevelopmentEnvironment/&quot;&gt;how I use virtualization in development&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.getpaint.net/&quot;&gt;&lt;strong&gt;Paint.NET&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As far as I can remember, this was the first .NET open source application I use on regular basis and actually enjoy using. Paint.NET is really powerful and cover all the image editing scenarios that I need either as a developer or a power user.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://icofx.ro/&quot;&gt;&lt;strong&gt;IcoFx&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a developer, I don’t really create any icons but sometimes, I need to modify an icon. IcoFx works really well. Version 2.0 is now only a shareware but version 1.6 is a freeware. You can &lt;a href=&quot;http://www.filehippo.com/download_icofx/6890/&quot;&gt;download it here&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;visual-studio-2010-extensions&quot;&gt;Visual Studio 2010 Extensions&lt;/h3&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part2/WhatIUse2-VisualStudio2010.jpg&quot; /&gt;
I thought it would be fitting to list the VS 2010 extensions that I use. It’s really easy to figure out their use from the title.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/4b92b6ad-f563-4705-8f7b-7f85ba3cc6bb/&quot;&gt;Highlight all occurrences of selected word&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/e792686d-542b-474a-8c55-630980e72c30&quot;&gt;Indent Guides&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/e5f41ad9-4edc-4912-bca3-91147db95b99/&quot;&gt;PowerCommands for Visual Studio 2010&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef/&quot;&gt;Productivity Power Tools&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/fc504cc6-5808-4da8-ae86-8d3f9ed81606&quot;&gt;Reference Assistant&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/7c8341f1-ebac-40c8-92c2-476db8d523ce&quot;&gt;Spell Checker&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/1c54d1bd-d898-4705-903f-fa4a319b50f2?SRC=Home&quot;&gt;VS10x Code Map&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;cloud-file-storage&quot;&gt;Cloud File Storage&lt;/h3&gt;

&lt;p&gt;With all the different offerings of file storage in the cloud, if difficult to pick just one. Almost all of them are free (at least have a free starting package that is enough for the occasional use). Here’s how I use different tools for different purpose.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part2/WhatIUse2-Dropbox.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If you’re using a file that needs to be synced across different devices, then Dropbox is your best choice. It’s easy, fast and you’re dealing with a local file so it’s easy to forget that you’re actually syncing a file. Dropbox is great for sharing files with friends, because most people have it. Refer a friend to Dropbox or take advantage or their offers to increase space, I’ve increased mine to 4.5 GB (They have up to 10GB of free space).&lt;/p&gt;

&lt;p&gt;The downside of Dropbox is privacy. Their use of duplication technology to store one copy of a file across all users means that they’re reading every file you upload.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://explore.live.com/windows-live-essentials?os=other&quot;&gt;&lt;strong&gt;Live Mesh and SkyDrive&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part2/WhatIUse2-SkyDrive.png&quot; /&gt;
For a Windows Phone user, SkyDrive is an essential part of the service. Photos are uploaded automatically and Office documents as well. SkyDrive is great in terms of size. Can’t go wrong with 25GB of free space. Live Mesh on the other hand is more of remote access tool rather than a file sync tool. It’s only available on Windows, so it can’t sync with a lot of devices. However, SkyDrive and Live Mesh are making great advances, and I expect that I’ll be using more of them compared to Dropbox.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.tonido.com/&quot;&gt;&lt;strong&gt;Tonido&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part2/WhatIUse2-Tonido.png&quot; /&gt;
If you worry about your privacy in anyway, you’ll love Tonido. It lets you set up your own server offering your files for access over the Internet. The way it works is you install a small piece of software on your home machine (for example), register a sub-domain with Tonido for free, then the folders on the home machine are now available for access from any of Tonido’s clients including Web and all major smart phones (iPhone, Android, and WP7). It’s free and super easy to use. The downside is that access to your files depend on your Internet upload speed which is usually much lower than your download speed. However, Tonido acts as fall-back solution to Dropbox and SkyDrive, whatever file is not available on either service can be accessed via Tonido. Also, it’s great for accessing files through the phone when within the house WiFi range. If it detects that you’re within the same LAN as the server, it won’t go through the Internet but rather through the LAN directly which is much faster. The upside of Tonido is you can access all of your files all the time for free from anywhere.&lt;/p&gt;

&lt;h3 id=&quot;social-media-and-communication&quot;&gt;Social Media and Communication&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://www.metrotwit.com/&quot;&gt;&lt;strong&gt;MetroTwit&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was never a fan of TweetDeck, and MetroTwit came along to offer a strong replacement. I was an early adopter to support a .NET/WPF project that seemed to have potential. But later it turned into a strong contender for best Twitter client on Windows. It’s really beautiful, based on the new Metro UI that is the cornerstone of WP7. It has almost all of the features that make for a great Twitter experience. However, if you’re a heavy Twitter user like I’m, you’ll start to run into the sluggishness that MetroTwit starts to have when dealing with really big numbers of tweets. The Plugin Container that hosts the displayed media (when playing a YouTube video or viewing a photo in-place) crashes often. This doesn’t affect the application itself, but it’s one of the areas that need work for the application to come out of beta. After all, it’s still the best Twitter client I’ve used.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.trillian.im/&quot;&gt;&lt;strong&gt;Trillian&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a very long time, I’ve used Google Talk (which has become very very boring after not receiving any updates for the last 4 years at least) and Windows Live Messenger (good example of the unnecessarily  bloated software from Microsoft) everyday. Now Trillian comes along to replace both with slick interface, attractive features, and great degree of control and customization that please a power user like me.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.skype.com/intl/en-us/home&quot;&gt;&lt;strong&gt;Skype&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Skype is like Twitter, you hate the software but love the service and can’t really replace it.&lt;/p&gt;

&lt;h3 id=&quot;file-management&quot;&gt;File Management&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://www.cubicreality.com/&quot;&gt;&lt;strong&gt;CubicExplorer&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are number of alternatives for Windows Explorer out there. Most of them are built for the super geek power user, but CubicExplorer actually works for the regular power user who wants to have bookmarks, restore session, and multi tabs. It’s free and open source, have nice themes and other web-browser-like functionality. Downside is that it’s built by one person and sometimes it can go for months without updates (which could be fine, there isn’t a lot of updates needed in the file browser world).&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.codesector.com/teracopy.php&quot;&gt;&lt;strong&gt;TeraCopy&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Throw away this awful Windows copier and replace it with TeraCopy. It supports pause and resume, listing handled files, and it completely replace Windows copier.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.daemon-tools.cc/eng/products/dtLite&quot;&gt;&lt;strong&gt;Daemon Lite&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Until Windows 8 comes along with native support for mounting ISO files, Daemon Lite is my tool of choice. Using ISO files has become much more common than it use to be, and it has become a natural replacement for using CDs/DVDs. I haven’t used my DVD in a long time, and I have gone for few months without it when I ran out of ports. ISOs are much more convenient, and the proliferation of 8 and 16GBs USB sticks has made it more convenient. Even when installing Windows, I can use a USB stick with a &lt;a href=&quot;http://download.cnet.com/Windows-7-USB-DVD-Download-Tool/3000-18513_4-10972600.html&quot;&gt;simple utility&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://infrarecorder.org/&quot;&gt;&lt;strong&gt;InfraRecorder&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This utility is built originally to burn CDs/DVDs but I use it exclusively to create ISOs. Free and works great.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://calibre-ebook.com/&quot;&gt;Calibre&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Calibre is not really for managing files but digital books are a form of books. For a Kindle user like me who uses Kindle for more than reading books (reading articles, and blog posts), Calibre really helps keep my library in order. It can download and edit books metadata, can manage books on the Kindle, and can grab RSS items and turn them into e-books and place them automatically on your Kindle (or any other e-book reader). Try it.&lt;/p&gt;

&lt;h3 id=&quot;media&quot;&gt;Media&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.videolan.org/vlc/&quot;&gt;VLC&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part2/WhatIUse2-VLC.jpg&quot; /&gt;
To play any video, use VLC. It’s that simple. Video are not like music where other features of the application would matter. For videos there’s only one feature that matter, Can I play it? with VLC the answer is always â€œYesâ€‌.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.zune.net/en-US/products/software/download/default.htm&quot;&gt;Zune&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve tried so many music player software but the Zune desktop player have great library features (for podcasts as well, not just music) and it has excellent UI design that makes it a lot of fun.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.freemake.com/&quot;&gt;Freemake (Audio Converter, Video Downloader, and Video Converter)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While Widows Live Movie Maker and iMovie can edit movies, they can’t help with the step before that; getting some material to use in your video. You can download a YouTube video with Freemake, extract the audio track off of it, convert it to any format and then use it in your video. All free, all works really well.&lt;/p&gt;

&lt;h3 id=&quot;utilities&quot;&gt;Utilities&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://download.cnet.com/Windows-7-USB-DVD-Download-Tool/3000-18513_4-10972600.html&quot;&gt;&lt;strong&gt;Windows 7 USB/DVD Download Tool&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy a Windows DVD/ISO to a USB thumb drive and install Windows from it using this utility.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.filehippo.com/&quot;&gt;&lt;strong&gt;FileHippo&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not only a great source for applications but also its â€œUpdate Checkerâ€‌ can keep most of your applications up to date. Try using Scheduled Task to check for updates once a week instead of check on system startup.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.piriform.com/&quot;&gt;&lt;strong&gt;CCleaner, Speecy and Defraggler&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All great utilities from Piriform. You can clean up caches and temp files using CCleaner. Watch out before you clean up something you might consider important like Browser History.&lt;/p&gt;

&lt;p&gt;Speecy gives you a detailed report on your machine and hardware.&lt;/p&gt;

&lt;p&gt;Defraggler is a really good replacement for Win Defrag.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.microsoft.com/download/en/details.aspx?id=15155&quot;&gt;&lt;strong&gt;SyncToy&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Very simple tool from Microsoft to keep two folders (or drives) in sync. You can &lt;a href=&quot;http://www.howtogeek.com/howto/25046/schedule-synctoy-to-run-automatically-with-task-scheduler-in-windows-7/&quot;&gt;use Task Scheduler to run it at specific times&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.danielnetsoftware.com/en-US/&quot;&gt;&lt;strong&gt;Logon Screen&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I use my computer for very long hours and this simple (and nicely built) utility introduces a little change that makes it a little less boring. Here’s a &lt;a href=&quot;http://blog.seanmartell.com/2011/04/21/nightly-and-aurora-space-quest-goodies/&quot;&gt;nice background&lt;/a&gt; to use on your lock screen for all Firefox fans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.softperfect.com/products/networx/&quot;&gt;NetWorx&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Small utility to keep an eye on how much bandwidth you’re using.&lt;/p&gt;
</description>
          <pubDate>Mon, 24 Oct 2011 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/WhatIUsePart2/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/WhatIUsePart2/</guid>
          
          <category>Mozilla</category>
          
          <category>Windows</category>
          
          <category>Chrome</category>
          
          <category>Microsoft</category>
          
          <category>Mozilla Nightly</category>
          
          <category>Ubuntu</category>
          
          <category>Firefox</category>
          
          <category>Tools</category>
          
          <category>Windows Live</category>
          
          <category>Internet Explorer</category>
          
          <category>VirtualBox</category>
          
          <category>Visual Studio</category>
          
          <category>Google</category>
          
          <category>IE9</category>
          
          <category>MacOS</category>
          
          <category>Office</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
        <item>
          <title>What I Use, Part 1</title>
          <description>&lt;p&gt;One way you can tell a geek is by looking at their setup. Setup is not just computer, OS and applications, but all surrounding elements that they use on daily basis. And it’s not the elements of that setup that makes it unique but rather how they come together and the story behind each element.&lt;/p&gt;

&lt;p&gt;Here’s my humble attempt to describe mine.&lt;/p&gt;

&lt;h3 id=&quot;hardware&quot;&gt;Hardware&lt;/h3&gt;

&lt;p&gt;I prefer desktops to laptops. For me, if you’re not using the portability of a laptop, then you’re just wasting money on an expensive piece of hardware that you can’t upgrade and risk void its warranty just by trying to open it up. While desktops are huge compared to laptops and need their own desk, they’re cheaper, easily upgradable, and can’t be left on the bus. Also, desktops are very durable. I’m in my fourth year with this machine and it’s still working very well. Yes, it has received multiple upgrades but from the outside it all looks the same.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Case&lt;/strong&gt;&lt;br /&gt;
&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part1/MasterCooler03.jpg&quot; /&gt;
I use a &lt;a href=&quot;http://www.coolermaster-usa.com/product.php?category_id=18&amp;amp;product_id=2700&quot;&gt;Cooler Master 1000&lt;/a&gt; box for my own machine. Standing in the store picking this box is a bit difficult because you don’t really realize the benefit of getting such a big box with an expensive price tag, but let me tell you, it’s worth every penny. It’s not just how quite and cool it is, and not just that it had fit all my upgrades, but it’s the little things too. I can easily tear it down, clean it up and put it back together in 2 hours, something that I like to do once every 6 months.&lt;/p&gt;

&lt;p&gt;The Cooler Master comes with screwless doors and hard drive bays, removable air filters, and two long metal handles for carrying it around, not that you have to, it’s a 38 lbs box, so you might want to avoid carrying it.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part1/MasterCooler01.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Processor&lt;/strong&gt;&lt;br /&gt;
While I love AMD, and think that it’s very competitive with Intel. I got a very good deal on my &lt;a href=&quot;http://ark.intel.com/products/33922/Intel-Core2-Quad-Processor-Q9300-%286M-Cache-2_50-GHz-1333-MHz-FSB%29&quot;&gt;Intel Core 2 Quad Q9300&lt;/a&gt; (overclocked to 3.0 GHz) which was almost the latest when I got it. My strategy when getting hardware is to get the latest item when it comes to components that are long term like processors. You’re not gonna change your processor every year or two, it’s something that should live for 4 to 5 years on a day to day machine and then be moved to a secondary machine for the next 5 years. So, you get the latest product within your price range and 3 years later it’s still as powerful as the new line of products.&lt;/p&gt;

&lt;p&gt;The Core 2 Quad is setting on top an ASUS Maximus RoG (Republic of Gaming) motherboard. It has excellent overclocking capabilities and great bios software, with great audio card, and plenty of all forms of ports (USB, and external SATA).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;br /&gt;
I’ve started with 2 x 2GB of Corsair DDR3 RAM overclocked to 1600 MHz, I’ve followed with another 2 x 2GB to take full advantage of all slots and offer enough RAM for hosted VMs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Graphics Card&lt;/strong&gt;&lt;br /&gt;
I can’t really brag too much about the Graphics card, an ATI Radeon HD 3800, because by the time you pick a graphics card and the time you reach the store to buy it, there’s already a graphics card that has been released that makes yours seems old. What I can do is say that this ATI Radeon card has worked and is still working great for me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hard Drive&lt;/strong&gt;&lt;br /&gt;
&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part1/KingstonSSD02.jpg&quot; /&gt;
The only thing I don’t have from the original computer that I assembled more than 3 years ago is the hard drives. All gone and replaced with new ones. Data grows at an unreasonable rate and the falling prices of hard drives tempt you into following the rule of “Don’t Delete Anything”.&lt;/p&gt;

&lt;p&gt;My main backup strategy was to use RAID. If I’m gonna need a hard drive to store a copy of my data as a backup, then I would just get two of the same hard drive, make them a mirror of each other and in the process get a faster reading speed. This plan worked great to protect against hard drive failure which actually happened when one drive failed and was replaced with all data not affected. One flaw with this plan though, when I accidently chose the wrong drive when installing a new Windows, I wiped out not only the hard drive but also its mirror. In the span of the 7 seconds it took me to realize the stupid mistake that I’ve made, I had lost the partition table on both drives, and basically the map to all my data. I was able to recover my data sector by sector in a very long and painful process but the marks are still on the wall from where I banged my head as a punishment. Now, I’ve removed the RAID and just use &lt;a href=&quot;http://www.microsoft.com/download/en/details.aspx?id=15155&quot;&gt;SyncToy&lt;/a&gt; to sync between the two mirrors once a day to protect from hard drive failure and accidental stupidity.&lt;/p&gt;

&lt;p&gt;I use a 120GB Kingston SSDNow V+100 Sold State Drive for my OS drive. The idea is always to totally separate Windows from your data. I don’t ever use “My Documents” or the desktop to store any important data (or really any data at all). The idea is that the OS can go at anytime. You can update Windows after installing this beta software and boom it’s BSOD and you can’t even go into the safe mode to figure out what the problem is. Backup will help you but restoring a 60GB of Windows is much easer than restoring 1TB of Windows and data just to get Windows working again.&lt;/p&gt;

&lt;p&gt;I use a solid state drive only for the OS since they’re very expensive. However, the effect they have on boot time and startup time of applications is obvious to the naked eye. I’m still not comfortable moving to SSDs for storing data. The idea of hard drives failing without any warning signs is worrying. I’m too accustomed to physical hard drives to move to SSDs. Of course all these worries will disappear when SSDs are affordable because the difference in performance is just that obvious.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part1/DellMonitor01.jpg&quot; /&gt;
&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part1/DellMonitor02.jpg&quot; /&gt;
&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part1/DellMonitor03.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitors&lt;/strong&gt;&lt;br /&gt;
One thing that laptops can’t beat for sure is multiple monitors and monitor size. I use two Dell WFP wide screen series monitors. One is 24” and the other 22”. I was surprised to know that Dell makes the best monitors but it’s true. However, I have to say that the 24” is much better than the 22”. I don’t mean in terms of size but rather color. For some reason, the white (the most obvious example) is not quite the same on the two screens. Maybe it’s the settings but I think it’s a slight difference in the model. Advice: if you want to get two or more monitors, try to get the same monitor, even if it’s not the best quality, but the consistency between the different monitors is worth it.&lt;/p&gt;

&lt;p&gt;One thing I really like about these Dell monitors is the adjustable handles. You can change height, rotation, tilt without moving the base. One thing I hate about these monitors is that they make me hate my work monitor. Getting used to using two monitors with certain setup and quality makes other monitors seem awful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mouse and Keyboard&lt;/strong&gt;&lt;br /&gt;
&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/WhatIUse2011Part1/LogitechPerformanceMouseMX01.jpg&quot; /&gt;
Logitech is your best friend here. Microsoft makes a noble effort and always comes out with new good products, but I’m super picky about the mouse and keyboard. I need to not looking at them at all and I need to do shortcut as much stuff as possible.&lt;/p&gt;

&lt;p&gt;I use a &lt;a href=&quot;http://www.logitech.com/en-us/mice-pointers/mice/devices/5845&quot;&gt;Logitech Performance Mouse MX&lt;/a&gt; with (an impressive) 10 buttons. Only 9 of them are programmable with 1 button physical button for fast scrolling. However, it works great for browsing, you don’t need a keyboard for going back and forward. It also works great as a remote control for media player with volume control (up, down and mute) and Play/Pause control. You’ll have to use Logitech software to program these buttons because this is not the default setting. I’ve tried so many settings until I settled on this one and you can come up with your own of course.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/WhatIUse2011Part1/LogitechWave01.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Logitech completes the comfort to my fingers with &lt;a href=&quot;http://www.logitech.com/en-us/keyboards/keyboard/devices/5994&quot;&gt;Logitech Wave&lt;/a&gt;. While it’s not cordless, I love the rubber pad below the keyboard where I could rest my hands. I takes a while to get used to the Home/End/Delete buttons of this keyboard and sometimes confuses you when you switch to another keyboard with two rows of 6 buttons but you’ll get used to it.&lt;/p&gt;

&lt;p&gt;I don’t really use the programmed keys because I never got used to using them not on this keyboard or any other really.&lt;/p&gt;

&lt;p&gt;Recently, I’ve switched to &lt;a href=&quot;http://www.microsoft.com/hardware/en-us/p/wireless-comfort-desktop-5000/CSD-00001&quot;&gt;Microsoft Comfort Desktop 5000&lt;/a&gt; which have a very nice wireless keyboard that is much quitter than the Logitech, but I’m not too crazy about the mouse. Still, nothing beats a 10-buttons mouse.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/WhatIUse2011Part1/MicrosoftComfortDesktop01.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I have another PC that I use as a file server and to store my backups. AMD is the perfect balance between getting stuff done and doing it on the cheap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phone&lt;/strong&gt;&lt;br /&gt;
&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatIUse2011Part1/SamsungFocus01.jpg&quot; /&gt;
Some people think it’s tough being a Windows Phone guy. You’re surrounded by a lot of iPhone, Android and Blackberry fan boys who can’t stop telling you how great their phones are. For me, even though I’m surrounded by those people (the only people I know who have a Windows Phone are on Twitter). However, it’s really easy having a Windows Phone. It plays really well with all the Microsoft services that I use. But more importantly, I think that Microsoft struck a nice balance between iPhone and Android. WP7 (Windows Phone 7) is easy to use and fast like an iPhone and is open and easy to develop to like Android. Before you hate me for comparing WP7 to your favorite mobile platform, I’m just saying that it’s taking the best of both worlds and not copying anyone. Actually, one thing I really like about WP7 is that it didn’t copy iPhone UI which was super cool when it first came out but now is very old compared to the Metro UI of WP7.&lt;/p&gt;

&lt;p&gt;I have a &lt;a href=&quot;http://www.samsung.com/us/mobile/cell-phones/SGH-I917ZKAATT&quot;&gt;Samsung Focus&lt;/a&gt; phone which is super light and has a great screen.&lt;/p&gt;

&lt;p&gt;This post was supposed to describe all my setup, but it ran very long so I’ll break into multiple posts. This was most of my hardware, next up will be the software. Hopefully soon.&lt;/p&gt;

&lt;p&gt;I wrote about software and tools in &lt;a href=&quot;https://amreldib.com/blog/WhatIUsePart2/&quot;&gt;Part 2&lt;/a&gt;.&lt;/p&gt;
</description>
          <pubDate>Sat, 17 Sep 2011 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/WhatIUsePart1/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/WhatIUsePart1/</guid>
          
          <category>iPhone</category>
          
          <category>Dell</category>
          
          <category>Consumer Devices</category>
          
          <category>Android</category>
          
          <category>Personal</category>
          
          <category>Microsoft</category>
          
          <category>Corsair</category>
          
          <category>Kingston</category>
          
          <category>Tools</category>
          
          <category>Hardware</category>
          
          <category>Logitech</category>
          
          <category>AMD</category>
          
          <category>WP7</category>
          
          <category>Intel</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>How to fix WLW Backup problem with Windows x64</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/HowToFixWlwBackupProblemWithWindowsx64/Windows_Live_Writer_logo.png&quot; /&gt;
I, like most bloggers out there, love Windows Live Writer. One problem I have with it is that I have to set it up whenever I re-install Windows. Long ago I found that I can backup all my posts (recently posted and drafts) just copying the two folders “Drafts” and “Recent Posts” from the folder&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;C:\Users\&amp;lt;UserName&amp;gt;\Documents\My Weblog Posts&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;However, I wanted to backup more than that. I wanted to backup my blog configurations and other settings. So, I searched a little bit (using &lt;a href=&quot;http://www.kngine.com/&quot;&gt;Kngine&lt;/a&gt; which is great, give it a try) and I found &lt;a href=&quot;http://wlwbackup.codeplex.com/&quot;&gt;WLW Backup tool&lt;/a&gt; that can backup blog settings, drafts, recent posts, and plugins. The link I’ve listed here is for the project on CodePlex where the project went open source by its developer &lt;a href=&quot;http://scottisafool.wordpress.com/&quot;&gt;Scott Lovegrover&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Before I found this latest version I downloaded version 2.0 and tried to backup my WLW settings and an error occurred.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;System.BadImageFormatException: Could not load file or assembly ‘CabLib, Version=6.9.26.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. An attempt was made to load a program with an incorrect format.&lt;br /&gt;
File name: ‘CabLib, Version=6.9.26.0, Culture=neutral, PublicKeyToken=null’&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The application comes in two simple assemblies LiveWriterBackup.exe and CabLib.dll (and two icons). &lt;a href=&quot;http://www.codeproject.com/KB/files/CABCompressExtract.aspx&quot;&gt;CabLib.dll&lt;/a&gt; is compression and extraction library that LiveWriterBackup.exe is using to compress all the backed up files into one file. This was a .NET exception, so I got interested and started to try to fix the problem. Reading the error, it seems like LiveWriterBackup.exe can’t find CabLib.dll. A bit of searching, and I found that &lt;a href=&quot;http://sharepoint400.blogspot.com/2011/02/could-not-load-file-or-assembly-cablib.html&quot;&gt;some SharePoint developers&lt;/a&gt; were having the same problem with the CabLib.dll file. They fixed it by replacing the CabLib.dll with the x64 version. I tried that but now I got a new error:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;System.IO.FileLoadException: Could not load file or assembly ‘CabLib, Version=6.9.26.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Seems like the two assemblies didn’t really match. Instead of getting around it, I needed to fix the actual problem. Why can’t LiveWriterBackup.exe find CabLib.dll? Maybe there’s a bug with the application itself. I decided to look inside. I fired up &lt;a href=&quot;http://www.telerik.com/products/decompiler.aspx&quot;&gt;JustDecompile&lt;/a&gt; and loaded the LiveWriterBackup.exe. The executable have a direct reference to CabLib.dll and don’t have any assumptions other than how .NET assemblies &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/15hyw9x3%28v=VS.100%29.aspx&quot;&gt;find other assemblies&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Back to search. Remove some search words and try different combinations. Then I found the solution on a &lt;a href=&quot;http://www.cnblogs.com/atfield/archive/2009/04/03/1429286.html&quot;&gt;Chinese blog&lt;/a&gt;.&lt;br /&gt;
&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/HowToFixWlwBackupProblemWithWindowsx64/clip_image006[4].jpg&quot; /&gt;
God bless Google translation which &lt;a href=&quot;http://translate.google.com/translate?sl=zh-CN&amp;amp;tl=en&amp;amp;js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;u=http%3A%2F%2Fwww.cnblogs.com%2Fatfield%2Farchive%2F2009%2F04%2F03%2F1429286.html&quot;&gt;came to the rescue&lt;/a&gt;. The problem wasn’t in the CabLib.dll but rather in LiveWriterBackup.exe which was built with the setting “Any CPU” on a 32bit machine so all it’s testing went okey. But when tried on a 64bit machine like mine, it actually ran as a 64bit application trying to call a 32bit CabLib.dll. You can see that in the screenshot of Task Manager. You can see 32bit applications have a *32 next to them while the LiveWriterBackup.exe process doesn’t.&lt;/p&gt;

&lt;p&gt;So the solution is get an executable that is built for 32 bit configurations. Or we just use &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms164699%28VS.80%29.aspx&quot;&gt;Corflags&lt;/a&gt;. It’s a tool that allows you to configure the CorFlags section of the header of an executable. It’s what Rafeel Rivera was referring to in his &lt;a href=&quot;http://www.hanselman.com/blog/HanselminutesPodcastEpisodeRollup273Through280GlimpseJavaScriptKinectScriptPolyGlotAzureWindowsAndGraphDatabases.aspx&quot;&gt;recording&lt;/a&gt; (listen &lt;a href=&quot;http://www.hanselminutes.com/default.aspx?showID=299&quot;&gt;here&lt;/a&gt;) with Scott Hanselman as “flipping bits” which seems to be a known term. Here’s “&lt;em&gt;&lt;a href=&quot;http://blogs.msdn.com/b/joshwil/archive/2005/05/06/415191.aspx&quot;&gt;Flipping bits on managed images to make them load with the right bitness&lt;/a&gt;&lt;/em&gt;”&lt;/p&gt;

&lt;p&gt;I just browsed using the command line to the location of the Corflags executable (C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin) and I ran the command&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Corflags “C:\Program Files (x86)\Windows Live Writer Backup\LiveWriterBackup.exe” /32BIT+&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tried again to backup settings and it worked. Testing on x64 machines is necessary as x64 machines are becoming more and more popular. Also, try not to build to “Any CPU” unless you test on all CPUs. More importantly, when debugging try to know the bitness of all the participating assemblies that are causing trouble.&lt;/p&gt;

&lt;p&gt;Happy debugging.&lt;/p&gt;
</description>
          <pubDate>Wed, 07 Sep 2011 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/HowToFixWlwBackupProblemWithWindowsx64/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/HowToFixWlwBackupProblemWithWindowsx64/</guid>
          
          <category>Tools</category>
          
          <category>.NET</category>
          
          <category>Windows Live Writer</category>
          
          <category>Windows Live</category>
          
          <category>Debugging</category>
          
          <category>Backup</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>Everybody Gets an App Store</title>
          <description>&lt;p&gt;When I hear all the news about all the new app stores for the big three (Apple, Google and Microsoft), all I can think of is Opera giving away cars to her audience. “You get a Car, You get a Car, You get a Car. Every …body … gets … a … Car”. Watch the &lt;a href=&quot;https://www.youtube.com/watch?v=XcI-rHO0yko&quot;&gt;video&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Of course, giant platform-developing software companies don’t really need cars, it seems like they’re making up for it with App Stores.&lt;/p&gt;

&lt;p&gt;iPhone has an &lt;a href=&quot;http://www.apple.com/iphone/apps-for-iphone/&quot;&gt;App Store&lt;/a&gt;, so Windows Mobile got a Marketplace. Google Chrome got a &lt;a href=&quot;https://chrome.google.com/webstore&quot;&gt;Chrome Web Store&lt;/a&gt; (this one – in particular – I’ll get to in a minute). On Thursday Jan. 6, Apple launched the &lt;a href=&quot;http://www.apple.com/mac/app-store/&quot;&gt;Mac App Store&lt;/a&gt;. Microsoft built a &lt;a href=&quot;http://www.microsoft.com/windowsphone/en-us/apps/default.aspx&quot;&gt;Marketplace for Windows Phone 7&lt;/a&gt; and is &lt;a href=&quot;http://www.winsupersite.com/article/paul-thurrotts-wininfo/New-Tile-Based-Shell-App-Model-and-App-Store-Coming-in-Windows-8-.aspx&quot;&gt;rumored to create an App Store for Windows 8&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I can easily see the benefits of having an App Store. For beginner users, it makes it very easy to find, install and maintain applications. Also, I can easily see app stores be a big success. An obvious example is the iPhone App Store, &lt;a href=&quot;http://en.wikipedia.org/wiki/App_Store#Number_of_launched_applications&quot;&gt;300,000+ apps with 7,000,000,000+ downloads&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This, of course, comes with a cost. Mostly paid by the app developers, not by the store owner. For example, Apple takes away 30% off the payment for all downloads through the app store. It’s the software equivalent of taxes. Beyond hosting your app, its updates, and including it in the search results, I’m not sure what the cost is for.&lt;/p&gt;

&lt;p&gt;Then comes the Guidelines. For you to include any app to Apple’s app store (iPhone or Mac), your app have go through an approval process where you submit it to Apple where it would be reviewed and either accepted or rejected. Apple provides feedback on the reason why your app was rejected. Developers had different experience with the review process over time. In Sept. 2010, Apple released official guidelines for the review process which seems like a no brainer for such a process but somehow was delayed all this time.&lt;/p&gt;

&lt;p&gt;Just like GUI (with Macintosh), and cell phones (with the iPhone), with the app review process, Apple has revolutionized Censorship. Somehow, Apple managed to make censorship cool. Look at it, unshaved, with a black turtleneck, it’s so cool and we all have to abide by it.&lt;/p&gt;

&lt;p&gt;But nothing fascinates me more than &lt;a href=&quot;https://chrome.google.com/webstore&quot;&gt;Chrome Web Store&lt;/a&gt;. Wait, don’t click the link, you have to install Chrome browser first to be able to “install” any of the “apps” (wink wink). I have to say, it’s an admirable effort by Google to put together – by far – the most fancy bookmark collection I have ever seen.&lt;/p&gt;

&lt;p&gt;How bad is the Chrome Web Store. The &lt;a href=&quot;https://chrome.google.com/webstore/detail/blpcfgokakmgnkcojhhkbfbldkacnbeo&quot;&gt;YouTube app&lt;/a&gt; of the &lt;a href=&quot;http://www.youtube.com/&quot;&gt;YouTube website&lt;/a&gt;, which is the largest video-sharing website, a &lt;a href=&quot;http://en.wikinews.org/wiki/Google_purchases_YouTube_for_$1.65_billion&quot;&gt;$1.65 billion&lt;/a&gt; valued website that got its own &lt;a href=&quot;http://en.wikipedia.org/wiki/CNN-YouTube_presidential_debates&quot;&gt;presidential debates&lt;/a&gt;. Yes, that YouTube got only 3 out of 5 stars on Chrome web store and one of the comments says it all “Nice link”.&lt;/p&gt;

&lt;p&gt;Microsoft, as usual, late but eventually better decided to have its own App Store. Not only for the newly released Windows Phone 7, but also for Windows. Of course, they call it “Marketplace” because if they call it App Store, we might think it’s the exact same thing as Apple’s.&lt;/p&gt;

&lt;p&gt;In the case of smart phones, since their beginning they had app stores and people got used to the idea of installing all their apps through the app store. Users have nothing to compare it to. Developers never tried to go outside the guidelines because what’s the point of developing an app that you know will be rejected by the only distribution channel available. It’s a loss that developers’ innovation be restricted like this under the banner of consistent user experience and application stability.&lt;/p&gt;

&lt;p&gt;In the case of desktops, users do have something to compare app stores to. Developers have always worked with no guidelines to restrict what they can do with applications. Yes, this has caused applications like viruses, Trojans, and key loggers to be developed. But, these are a tiny fraction of all the applications that were developed and we can’t live without today.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://downloadsquad.switched.com/2011/01/08/vlc-for-iphone-and-ipad-get-pulled-from-the-app-store/&quot;&gt;Apple has pulled VLC from its App Store&lt;/a&gt;. VLC is an application that is essential to any computer that plays video. So when it gets pulled or rejected, it will get it’s own post on all tech blogs. But what about Joe Developer who develops the next killer app. His application won’t get a blog post when it gets rejected because Joe didn’t exactly follow the guidelines of the app store, and Joe doesn’t have a way of distributing this application other than the app store. Even if he does manage to find another distribution channel, it won’t get him the visibility of being on the vendor’s app store.&lt;/p&gt;

&lt;p&gt;App Store Can’t be Walled Gardens. They don’t need just to have &lt;a href=&quot;http://wmpoweruser.com/windows-phone-7-marketplace-search-updated/&quot;&gt;better search&lt;/a&gt;, or &lt;a href=&quot;http://gizmodo.com/5403986/itunes-enters-the-web-browser-with-itunes-preview&quot;&gt;access through a browser&lt;/a&gt;. They need to be Open. Open to developers with no ridiculous sign up fees, or commission on every download. Open with no guidelines that &lt;a href=&quot;http://developer.apple.com/appstore/guidelines.html&quot;&gt;require me to sign up just to read it&lt;/a&gt;. App stores can implement a system of recommendation where you can “Strongly Oppose” the apps you don’t like but don’t make a choice for me as a user.&lt;/p&gt;

&lt;p&gt;If the purpose of App Stores is to offer a central point for distributing software to users, then let’s make that. But if the purpose is to make a new revenue generator, and turn platforms and its applications into a software that runs extensions and addons, then we all, developers and users, are screwed.&lt;/p&gt;
</description>
          <pubDate>Mon, 10 Jan 2011 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/EverybodyGetsAnAppStore/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/EverybodyGetsAnAppStore/</guid>
          
          <category>iPhone</category>
          
          <category>Windows</category>
          
          <category>Chrome</category>
          
          <category>App Store</category>
          
          <category>Google</category>
          
          <category>IT Industry</category>
          
          <category>Apple</category>
          
          <category>Microsoft</category>
          
          <category>WP7</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
        <item>
          <title>Don't Hate My Code</title>
          <description>&lt;p&gt;One very common problem that occurs when a new team takes over an existing project is their desire to “just move some stuff around”. That’s a code word for “I can’t believe that you’re calling this crap a software application” :D. This, of course, varies from one project to the other. Sometimes it’s justified and is for good reasons and other times it’s not. The reason is not the desire of the new team to make a quick impact (although sometimes that’s the case “You know, we had to fix a lot of stuff behind the scene”). But most of the time the reason is derived from the simple fact that reading code is much harder than writing it.&lt;br /&gt;
A programming language, like any other language, just because you know all the letters and all the words doesn’t mean you can parse the intended meaning. A code block, in its own way, is written to convey a certain intent to computers as their primary audience but also to other developers as a secondary audience. Some programming languages don’t care about developers and just target computers, like &lt;a href=&quot;http://en.wikipedia.org/wiki/Assembly_language&quot;&gt;Assembly Language&lt;/a&gt;. &lt;br /&gt;
The problem with new teams is that they never think that one day they, too, would be the “old team”. The way to really solve this problem (having to rewrite/re-organize/restructure the codebase) is to write code in a clear enough way that anyone can understand it. Then, one day this will be common enough that you’ll understand what you are getting as anyone would understand what you are giving (Day dreaming?) (actually, on second thought, I’ll remove the question mark).&lt;br /&gt;
The point is: _Don’t just write “good code”, write “readable good code”.&lt;br /&gt;
However, modifying your code to be more readable is burdening your code with a responsibility that it shouldn’t have. When you read the part above about conveying intent, you’ll notice that the whole point of making the code readable is to give the reader an insight into my thought process. How did I arrive to the decision of structuring the code like that?&lt;br /&gt;
Code is not easy to read because it’s not in sequence, you don’t know where to start and where to end and you can’t read one part of it and figure out the rest.&lt;br /&gt;
My code has to come with that insight into my thought process. Here’s what I would do (and what I do do) to make this happen:&lt;/p&gt;

&lt;h5 id=&quot;write-in-bullet-points&quot;&gt;Write in Bullet Points&lt;/h5&gt;
&lt;p&gt;Programmers don’t want to read a long story. They want simple concise quick-to-read scannable sorted items that are not affected by how bad my morning coffee was.&lt;/p&gt;

&lt;p&gt;I’m not specifying what type of document. This goes for all documents.&lt;/p&gt;

&lt;h5 id=&quot;use-xml-documentation&quot;&gt;Use XML Documentation&lt;/h5&gt;

&lt;p&gt;You know, the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/b2s063f7%28v=VS.100%29.aspx&quot;&gt;little green XML tags&lt;/a&gt; before each member. .NET developers would know those. My summary for the “DoSomething” method used to be “Does something”. I stopped doing that when I read this description on somebody else’s code. Now, I take a moment and describe what is the “Something”, what do I mean by “Do”, what kind of output does the method deliver and what impact it has on the system, what assumptions it requires. Take a moment to think. Always take a moment.&lt;/p&gt;

&lt;h5 id=&quot;write-comments-first&quot;&gt;Write Comments First&lt;/h5&gt;

&lt;p&gt;Comments for code that has been already written tend to describe what the code does. “Loop through list until find target value” instead of “Find target value in list”. Changes to how the objective is achieved would impact the description even though the objective didn’t change. If I removed the loop and used a method to find the target value, I wouldn’t have to change “Find target value in list”.&lt;/p&gt;

&lt;p&gt;Writing comments before code aims at outlining what is the objective of this method (or a code block within the method) and what are the logical steps and the possible scenarios that the method handles. Think of it this way, you’re a senior developer who doesn’t write code anymore but helps junior developers write the code. Use the comments to outline how the juniors will reach their goal, think in big picture (big as in the objective of the method and class). Don’t care about how you’re reading the text file, think about what do you want to do with the content of the file after it’s read. Later, you’ll go to the junior developer role and think about the optimum way to read a text file. This is done in iterations, feedback from the junior could affect the outline set by the senior who made assumptions about how this would work. Some changes have to be made to the outline to accommodate that.&lt;/p&gt;

&lt;p&gt;Eventually, the comments would describe the steps that the method goes through to reach its goal. Reading code would add more details about the specific technical implementation while reading the comments would only give you a summary.&lt;/p&gt;

&lt;h5 id=&quot;its-not-personal-its-technical&quot;&gt;It’s Not Personal, It’s Technical&lt;/h5&gt;

&lt;p&gt;Don’t include details about people, events, dates, timeline, or progress in the project documents. Keep those items separate in their own documents. These “Team Documents” are for temporary consumption mainly by management, sometimes they’re useful for historical record but they don’t matter for new teams who just wants to read the code.&lt;/p&gt;

&lt;h5 id=&quot;use-meaningful-names-with-standard-naming-convention&quot;&gt;Use Meaningful Names with Standard Naming Convention&lt;/h5&gt;

&lt;p&gt;Use “i” for counter and “x” for quick math operations. Beyond that, use meaningful names that helps the reader keep track of the code flow.&lt;/p&gt;

&lt;p&gt;Use standard naming convention to name and write the names of different members. I use the naming conventions of the &lt;a href=&quot;http://www.amazon.com/Framework-Design-Guidelines-Conventions-Libraries/dp/0321545613&quot;&gt;Framework Design Guidelines&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As a standard rule, pet names doesn’t count as meaningful names, unless you pet is named “UserAccountID”.&lt;/p&gt;

&lt;h5 id=&quot;make-it-part-of-the-process-use-documents-to-make-decisions&quot;&gt;Make It Part of the Process. Use Documents to Make Decisions&lt;/h5&gt;

&lt;p&gt;Some developers look at documentation as “I’ll get to it if/when I have time”. Not only that they never have time, but also they’re missing the point of why they should use documents in the first place. I use documents to collaborate with team members on making decisions about the different possible solutions of a specific problem. I use documents to define, scope, list possible solutions and their upsides and downsides and eventually choose the solution.&lt;/p&gt;

&lt;p&gt;Communicating technical details through documents is much easier than through discussions which tends to easily stray away from the main topic, include a lot of not-fully-thought ideas, and require real time interaction (meetings which are difficult for remote teams and time consuming for… what’s the word for non-remote teams).&lt;/p&gt;

&lt;h5 id=&quot;keep-documents-updated&quot;&gt;Keep Documents Updated&lt;/h5&gt;

&lt;p&gt;If you’re like me, and you use documents as an intro to writing code. It’s important to keep documents updated with the changes you made later to the code you wrote earlier.&lt;/p&gt;

&lt;h5 id=&quot;use-a-tool&quot;&gt;Use a Tool&lt;/h5&gt;

&lt;p&gt;Using a tool like a &lt;a href=&quot;http://sharepoint.microsoft.com/en-us/Pages/default.aspx&quot;&gt;SharePoint&lt;/a&gt; document library or a &lt;a href=&quot;http://en.wikipedia.org/wiki/Wiki&quot;&gt;Wiki&lt;/a&gt; (I like &lt;a href=&quot;http://www.screwturn.eu/&quot;&gt;Screwturn&lt;/a&gt;) would encourage developers to participate in this addition to their daily tasks. It wouldn’t be just a collection of documents stored in some folder. It would be an essential part of the daily work.&lt;/p&gt;

&lt;h5 id=&quot;keep-versions-dont-throw-anything-away&quot;&gt;Keep Versions. Don’t Throw Anything Away&lt;/h5&gt;

&lt;p&gt;Using a tool helps you keep versions of the documents. This lets you review the progress of each document and makes you able to go back to earlier solutions that you dismissed earlier but could be viable now.&lt;/p&gt;

&lt;h5 id=&quot;know-when-to-stop&quot;&gt;Know When to Stop&lt;/h5&gt;

&lt;p&gt;Keep documents updated, make it part of the process, keep versions, write comments, bla bla bla. Remember that you’re getting paid to write code and create software. Using documents to build software can be really helpful but it’s not building software. Put a ceiling on how many documents and how much details you’re producing and make it supplemental to writing code. If it’s not going to lead to better code, don’t do it. Eventually you’ll find the balance the fits your process.&lt;/p&gt;
</description>
          <pubDate>Wed, 29 Sep 2010 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/DontHateMyCode/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/DontHateMyCode/</guid>
          
          <category>Software Development</category>
          
          <category>.NET</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
        <item>
          <title>VM-based Development Environment</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/VMBasedDevelopmentEnvironment/VirtualBox.png&quot; /&gt;
&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/VMBasedDevelopmentEnvironment/VMware.png&quot; /&gt;
I love VMs. To have a sandbox inside which there’s an operating system of your choice where you can try anything and not fear its effect on your host machine, that is empowering.&lt;/p&gt;

&lt;p&gt;I started using VMs a long time ago, but recently I moved to what I call a “VM-based Development Environment”. As a GIS developer, I have a problem which is that &lt;a href=&quot;http://www.esri.com/products/index.html#desktop_gis_panel&quot;&gt;ArcGIS&lt;/a&gt; (the main GIS application/platform I’m using) doesn’t allow for side-by-side installation. So, if you want to install version 9.3.1, you have to uninstall version 9.3. And those are two different versions against which you have to develop and test your code.&lt;/p&gt;

&lt;p&gt;Over the years, I had a simple solution. Pick a version that I mostly work with and install on my development machine. If I’m moving to a new project that needs a different version, I would uninstall the version I’m using and install the new one. This is, aside from being painful and inefficient, an outdated solution and it created another problem that I found out about at the end of one project I was working on.&lt;/p&gt;

&lt;p&gt;Because my personal machine was updated and I install all these kinds of applications with their requirements, there was a software requirement I didn’t add to the installation package and that caused a problem on one client’s machine.&lt;/p&gt;

&lt;p&gt;When I started using VMs, I moved the secondary versions of ArcGIS (the ones other than the version I’m mainly using) to VMs. Also, VMs helped with testing, especially when testing installation packages using snapshots (I’ll talk about that later). However, when I faced the missing requirement problem, I decided to take VMs a step further.&lt;/p&gt;

&lt;p&gt;I’m using my machine for my personal software (Browser, Outlook, Office, Video, Music, Social Media, etc), and removed all development-related software (including ArcGIS) to a Virtual Machine. So when I work on code, I turn on a VM and start coding on a machine that has the least number of software installed.&lt;/p&gt;

&lt;h3 id=&quot;ups&quot;&gt;Ups&lt;/h3&gt;

&lt;p&gt;Moving all development work to a VM offer number of advantages:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;To quote a development concept “Separation of Concerns”. you can have a different VM for each project if you want, if the development software is different for each project, the operating system your team is using is different, or even you just want a different mode for each project.&lt;/li&gt;
  &lt;li&gt;Clean-slate machine can help you easily identify the requirements of your code and detect the software it might conflict with.&lt;/li&gt;
  &lt;li&gt;Working on Client-Server project where you want to deploy to a server and develop or test in a environment similar to the production environment.&lt;/li&gt;
  &lt;li&gt;Create a VM and pass to other team members and you’ve got yourself a unified development environment for all team members.&lt;/li&gt;
  &lt;li&gt;You can expand on the concept and create other VMs that can help with tasks related to development like a source code server, continuous integration server, etc.&lt;/li&gt;
  &lt;li&gt;If you want to upgrade or re-install Windows on your host machine or even moved across the country to a whole new machine, copy few files and you still have your development environment intact.&lt;/li&gt;
  &lt;li&gt;Distracted by all the e-mails, IMs, and tweets, just click “Full Screen” and you can easily shut all the annoyance on your host machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;tips&quot;&gt;Tips&lt;/h3&gt;

&lt;p&gt;Building a VM is not that difficult but if you’re going to create number of VMs, few if not tens, maybe I can help with some tips:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Categorize Your Machines&lt;/strong&gt;: I have 4 classes of VMs:
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Base&lt;/strong&gt;: a building block I use to install all other VMs. It’s an installed and updated OS with the very basic applications (Browser, Anti-virus, etc) that makes it very easy to install a new VM within minutes. You can also have a base for specific environments like Visual Studio 2008 or 2010.&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Dev&lt;/strong&gt;: a machine for development. I Turn it on and start banging on the keyboard like a monkey :)&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Lab&lt;/strong&gt;: I use those for testing. It’s important to have different operating system with all variations (x86 and x64 for example).&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Sandbox&lt;/strong&gt;: want to try something that you’re not sure is completely safe? want to try a trial product that you could remove later but could leave all these bits of crap behind? Use a sandbox.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Come Up with a Naming Convention&lt;/strong&gt;: I usually name a VM with a meaningful name that easily explain its configurations, like this&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;VMClass-OS-InstructionSet-VisualStudioVersion&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;for example:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Dev-7-x64-10&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;is a development machine with Windows 7 x64 and Visual Studio 2010&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Use Memorable Names&lt;/strong&gt;: in addition to the naming convention, I give memorable names to the machines I use most frequently. It also helps if those names represent the different classes. For example, I give cities names to Dev machines (Cairo, Phoenix, Jakarta, etc), and I give names of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Periodic_table&quot;&gt;periodic table&lt;/a&gt; elements to Lab machines (Neon, Cobalt, Titanium, etc).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Understand Your Virtualization Software&lt;/strong&gt;: whether you’re using &lt;a href=&quot;http://www.vmware.com/&quot;&gt;VMware Desktop&lt;/a&gt;, &lt;a href=&quot;http://www.microsoft.com/windows/virtual-pc/&quot;&gt;Microsoft Virtual PC&lt;/a&gt;, or &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;VirtualBox&lt;/a&gt;. Make sure to fully understand the capabilities of the software, otherwise you could be missing out on some features that could help you.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Use Snapshots&lt;/strong&gt;: one feature that VMs offer that host machines doesn’t very well is ‘Snapshots’. Snapshots helps you save the state of a machine and easily return to it with a click of a button. It’s like Windows’ Restore Point or Mac’s Time Machine but much much faster. You can also have a tree of snapshots.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Create a CodeBox&lt;/strong&gt;: To share code between different machines, either create a separate virtual hard drive and store all your data on it or create a shared folder on your host machine and map it as a network drive. I use the first choice because it’s easier to backup (just copy a few files), and avoid a potential security problem of having a shared folder. Be aware of the fine differences of creating a virtual hard drive between different virtualization software and make sure that virtual hard drive persistence doesn’t depend on VM persistence.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;downs&quot;&gt;Downs&lt;/h3&gt;

&lt;p&gt;Using VMs as your main development environment isn’t hassle-free and it does have its own disadvantages:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Memory Monster&lt;/strong&gt;: VMs require that you allocate full memory capacity to them once they’re on. So, you better throw away that 3-years old 2GB laptop. If you want to use VMs, you must have at least 4GB RAM. You’re gonna be using a VM for development which means longer hours where you can’t tolerate using a 1GB RAM machine. Do you? :). With 4GB you can have 2GB for your host and 2GB for the VM but you’ll miss out on the benefits of running another VM. Upgrade to 8GB to get full power.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Code Not at Your Fingertips&lt;/strong&gt;: If no Visual Studio installed on your host machine, you have to turn on (or de-hibernate) a VM to get to your code. That takes about just a minute but it’s still something.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Maintenance, Maintenance, Maintenance&lt;/strong&gt;: all these VMs require taking care of. Updating Windows, anti-virus, and applications is a headache because it’s not fully automated. Mainly I focus on the few machines I’m using, but once a month, I start all Base machines to keep them updated.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;imageInCenter&quot;&gt;
    &lt;a href=&quot;/public/images/blog/VMBasedDevelopmentEnvironment/TwoUpdateWindowsSmall.png&quot;&gt;
        &lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/VMBasedDevelopmentEnvironment/TwoUpdateWindowsSmall.png&quot; /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;Two Update Windows, one for a VM and the other for my host machine.&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Gigabytes to Spare&lt;/strong&gt;: you should have a lot of those because a plain simple Windows 7 machine with no software uses about 12GB of hard drive space.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve used VMs for development for quite a while now, and I feel that it improved how I work. Give it a try a let me know if it helped.&lt;/p&gt;
</description>
          <pubDate>Sun, 15 Aug 2010 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/VMBasedDevelopmentEnvironment/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/VMBasedDevelopmentEnvironment/</guid>
          
          <category>VMware</category>
          
          <category>Tools</category>
          
          <category>Software Development</category>
          
          <category>Windows</category>
          
          <category>Virtualization</category>
          
          <category>VirtualBox</category>
          
          <category>Visual Studio</category>
          
          <category>Microsoft Virtual PC</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
    
      
        <item>
          <title>Configuring log4net and Using the AppLogger Class - Part 2</title>
          <description>&lt;p&gt;&lt;em&gt;Read the &lt;a href=&quot;/ConfiguringLog4netPart1/&quot;&gt;Part 1&lt;/a&gt; for an intro to this post.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The AppLogger class is a class I use to encapsulate log4net and make easy to use. By “ease of use” I mean less lines for me to write to start logging. But, this ease of use comes on the expense of customizability. The AppLogger class is not built to fit your (or all) needs necessarily but with little work it can.&lt;/p&gt;

&lt;p&gt;AppLogger contains my preferred configurations for both debug and release builds, and it embeds the XML configurations into the output assembly, while reducing the number of lines I need to write to initiate logging.&lt;/p&gt;

&lt;p&gt;I’ve uploaded a copy of the project (VS2008 project) containing the class to my SkyDrive. You can find it &lt;a href=&quot;http://cid-a0f4e46186f7cce4.office.live.com/self.aspx/Public/Blog/AppLogger/AppLoggerClass.7z&quot;&gt;here&lt;/a&gt; (To decompress the project files, use &lt;a href=&quot;http://www.7-zip.org/&quot;&gt;7zip&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Normally, you would add AppLogger and the XML configuration files to your project and include it under the namespace you’re using. This way you would avoid adding another assembly to your project. For the purpose of distributing the code, I created a separate project and a separate namespace. Also, the project is using .NET framework 2.0, but it should work fine on any later version.&lt;/p&gt;

&lt;p&gt;Let’s check out the project files&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/ConfiguringLog4netPart2/AppLogger-ProjectFiles.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;LoggerInitializationException&lt;/strong&gt; is a fancy way of throwing an exception, it doesn’t really hold any more information than a regular exception but you can modify it to do just that.&lt;/p&gt;

&lt;p&gt;The files &lt;strong&gt;Log4netDebugConfigurations&lt;/strong&gt; &amp;amp; &lt;strong&gt;Log4netReleaseConfigurations&lt;/strong&gt; in the &lt;strong&gt;Resources&lt;/strong&gt; folder are used to configure log4net in the Debug and Release build configurations. In this example, they have the same configurations.&lt;/p&gt;

&lt;p&gt;The configurations use a &lt;a href=&quot;http://logging.apache.org/log4net/release/sdk/log4net.Appender.RollingFileAppender.html&quot;&gt;Rolling File Appender&lt;/a&gt; which writes to file until the file reaches a certain size (1MB in this case), then it renames the file by adding a number and write to a new file with the name you chose.&lt;/p&gt;

&lt;p&gt;The pattern used in the configurations for each line in the log is&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/f4e684971160e4ea8855.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;It adds the &lt;strong&gt;date/time stamp&lt;/strong&gt;, &lt;strong&gt;thread&lt;/strong&gt;, &lt;strong&gt;level&lt;/strong&gt; (Debug, Info, Warn, Error, Fatal), name of the &lt;strong&gt;logger&lt;/strong&gt;, and &lt;strong&gt;message&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can notice in the configuration file that the file name is not specified.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/4086774fa1f098a48f8b.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;This is intentioned as we’ll replace it at runtime.&lt;br /&gt;
AppLogger is written so that you can log using just one line of code without any preparations, like this:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/e1968212ba7d9fadcca0.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;The &lt;strong&gt;Logger&lt;/strong&gt; property is a static property that holds an &lt;strong&gt;AppLogger&lt;/strong&gt; object and it doesn’t need to be set. If you are calling the property for the first time, it will create a new &lt;strong&gt;AppLogger&lt;/strong&gt; object and return it to the calling method.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/a7dffcaa5ff49218bf91.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;The &lt;strong&gt;AppLogger&lt;/strong&gt; constructor takes care of configuring log4net using the embedded XML files based on the build configurations.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/0bdc92291fd92f9ed336.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;You can see that the constructor creates a file in the Temp folder (for ups and downs of this choice, read &lt;a href=&quot;/ConfiguringLog4netPart1/&quot;&gt;Part 1&lt;/a&gt;), and modifies the XML file before configuring log4net with a stream of the file. Then it sets the &lt;strong&gt;LogFilePath&lt;/strong&gt; property with a path to the log file.&lt;/p&gt;

&lt;p&gt;It also uses preprocessor directives (&lt;strong&gt;#if DEBUG&lt;/strong&gt;) to configure log4net differently in the debug and release configurations. You can make the code less in size by using the same configurations. This constructor happens to use the same configuration but I wanted to show that you can use different configurations.
By default, AppLogger will suppress its errors. So even if initialization failed or any other error occurs, logging will stop but you don’t have to modify your code to catch any exceptions.&lt;/p&gt;

&lt;p&gt;If you want to catch logging exceptions, you can change the &lt;strong&gt;SuppressError&lt;/strong&gt; property by writing:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/82a2b5f03f54b2555b78.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;AppLogger makes it easy and fast to start logging but it has its downsides as well. Calling the &lt;strong&gt;AppLogger.Logger&lt;/strong&gt; static property has a performance overhead more than other properties since it checks if the logger hasn’t been created yet. If your application has one entry point (Console application, Windows application, etc.) you can move the initialization code to the entry point and get rid of the overhead.&lt;/p&gt;

&lt;p&gt;Also, the configuration I’m using creates a log file with a name that is not predefined which makes it difficult to find sometimes unless you use the &lt;strong&gt;LogFilePath&lt;/strong&gt; property. You can change the configurations to fit your workflow, as this fits mine.
I’ve used the AppLogger class for number of projects and it’s working fine, I hope it helps you as well.&lt;/p&gt;

&lt;p&gt;Feel free to offer any suggestions or questions in the comments.
The code is offered under the Creative Commons Attribution 2.5 Canada License. You can use and modify this code, you can use it in commercial and non-commercial work. Kindly attribute this code to its original author.&lt;/p&gt;
</description>
          <pubDate>Sat, 24 Jul 2010 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/ConfiguringLog4netPart2/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/ConfiguringLog4netPart2/</guid>
          
          <category>.NET</category>
          
          <category>Logging</category>
          
          <category>C#</category>
          
          <category>Visual Studio</category>
          
          <category>Code</category>
          
          <category>log4net</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Configuring log4net and Using the AppLogger Class - Part 1</title>
          <description>&lt;p&gt;It’s been quite a while since I started using log4net for logging, and it changed how I debug applications. I found it much easier to find the source of an error by reading the log after the application crashes rather than using the step-by-step debugging in Visual Studio.&lt;/p&gt;

&lt;p&gt;I started using log4net after reading an excellent tutorial by Jim Christopher on his blog &lt;a href=&quot;http://www.beefycode.com/&quot;&gt;BeefyCode&lt;/a&gt;. You can find a list of all the posts in the tutorial &lt;a href=&quot;http://www.beefycode.com/post/Log4Net-Tutorials-and-Resources.aspx&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Some people prefer to log the application activities for debugging purposes only which works well in desktop applications that doesn’t have a mechanism for sending the log back to the developer in case of unexpected behavior. This has its obvious upside, which is improving the application performance by avoiding logging. To limit logging to debugging purposes only, simply surround all logging code with the conditional preprocessor directive #if.&lt;/p&gt;

&lt;p&gt;For the using statements:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/a47245174b9b0e4e297d.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;And for the logging code:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/dabf83db0a6450605e12.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;There are different choices for a destination of your application’s log, Database, Console, File, System event log, Memory, E-mail, Telnet, and even &lt;a href=&quot;http://caseywatson.com/2009/07/07/log4net-twitter-awesome/&quot;&gt;Twitter&lt;/a&gt; which I don’t think is very practical (no one would follow a feed that delivers only bad news).&lt;/p&gt;

&lt;p&gt;Those different destinations offer different advantages and are fit for different scenarios. You can use the preprocessor directive to apply different configurations for debugging and release.&lt;/p&gt;

&lt;p&gt;One obvious scenario is to use a database for debugging and a file for release. In a large development environment where different individuals work on development and testing, logging to a database offers some advantages like keeping a record of how the application behaves and easily sharing that record among different team members. With simple tools and shared procedure, this log can be linked to the issue tracking system within the organization.&lt;/p&gt;

&lt;p&gt;I use a text file as a destination. It’s easy to set up and use and not so difficult to read. I also use a XML file for configurations rather than programmatically (which only few prefer). I found that the best of both worlds is to embed the configurations file in the application resources and then stream it at runtime to configure the logger using the stream.&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/32551c94813e78d24298.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;This helps solving one of the problems I ran into, which is configuring log4net for the release version. In the debug mode, you can easily hard code the path to the destination file and you have administrator privileges to write to any folder you like. In the release mode, you can’t really control – or predict – the environment where the logger will work. You have to plan for something safe that you know will work in any environment.&lt;/p&gt;

&lt;p&gt;Writing log to the application installation folder does not work under Windows 7 (or Vista). Unless the application is running as an administrator, logging will fail. Try to use the Application Data folder or the Temp folder.&lt;/p&gt;

&lt;p&gt;In the Application Data folder, you have to manage the growing number of files as the application continues to log to them but you have the advantage of being able to keep the log files (unless the user goes to the folder and delete the files, nothing will happen to them).&lt;/p&gt;

&lt;p&gt;In the Temp folder, you have to avoid creating a file with a name that already exist, and your log file will probably be deleted by the next time you run the application.&lt;/p&gt;

&lt;p&gt;I create a log file in the Temp folder because I don’t really need the log file beyond the current session, and to avoid creating a file with a duplicate name simply use:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/AmrEldib/c742277b8302fff05b67.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;Now, I want to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Configure log4net using XML file.&lt;/li&gt;
  &lt;li&gt;Determine the path to the log file at runtime.&lt;/li&gt;
  &lt;li&gt;Avoid shipping a configuration file with the assembly (include the configuration file inside the assembly).&lt;/li&gt;
  &lt;li&gt;Reduce the number of lines I have to write to initiate logging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To do all that, and reuse the solution across all the projects I work on, I use the AppLogger class. How use it and how it works is a topic of &lt;a href=&quot;/ConfiguringLog4netPart2/&quot;&gt;another post&lt;/a&gt;.&lt;/p&gt;
</description>
          <pubDate>Sun, 18 Jul 2010 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/ConfiguringLog4netPart1/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/ConfiguringLog4netPart1/</guid>
          
          <category>.NET</category>
          
          <category>Logging</category>
          
          <category>C#</category>
          
          <category>Visual Studio</category>
          
          <category>Code</category>
          
          <category>log4net</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Filtering Search Results by Site</title>
          <description>&lt;p&gt;I like &lt;a href=&quot;http://www.bing.com/&quot;&gt;Bing&lt;/a&gt; and I’ve been using it since its launch last year. One of the ways that can improve my experience with Bing is to make it easier to filter search results by a certain URL. I do this filtering a lot so I’m used to using the keyword “site:” in the search box, what is difficult about it is entering the URL. So, I’m suggesting a new addition to the UI that can be optional where users will opt-in to use it.&lt;/p&gt;

&lt;p&gt;Simply add a small dropdown list next to the search box from which the user can select the URL he wants to filter results by. The items in the list are customizable and appear as a short alias that can be easily remembered by the user.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/FilteringSearchResultsBySite/SearchSitesUI01.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When the user selects an item from the list, the item’s alias is displayed next to the dropdown button with an italic font.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/FilteringSearchResultsBySite/SearchSitesUI02.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When the user hovers over the alias in italic, a tooltip is displayed to show the full URL of the site with which the results are filtered.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/FilteringSearchResultsBySite/SearchSitesUI03.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;At the bottom of the list, the item “Customize this list…” that can help with adding, editing and removing items in the list.
 I think this is a feature that can be (relatively) easily implemented and I’m sure that it will help a lot of users out there. I hope it can find its way to implementation soon.&lt;/p&gt;
</description>
          <pubDate>Thu, 01 Jul 2010 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/FilteringSearchResultsBySite/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/FilteringSearchResultsBySite/</guid>
          
          <category>Bing</category>
          
          <category>Microsoft</category>
          
          <category>Wish List</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Updated Release of Arabic Translation for CubicExplorer</title>
          <description>&lt;p&gt;A year ago, &lt;a href=&quot;/CubicExplorerArabicTranslationAvailable/&quot;&gt;I released&lt;/a&gt; an Arabic translation for my favorite alternative of Windows Explorer, Cubic Explorer. After a year of updates of the software, I thought the translation might need some updating and I also noticed some mistakes that needed to be fixed.&lt;/p&gt;

&lt;p&gt;Now you can get an updated release of the translation (release 1.1). You can find it &lt;a href=&quot;/public/images/blog/UpdatedReleaseOfArabicTranslationForCubicExplorer/default.po&quot;&gt;here&lt;/a&gt;. This translation works with Cubic Explorer release 0.91.0.1223 (SVN Snapshot) which you can get &lt;a href=&quot;http://www.cubicreality.com/2010/01/15/notes-week-2-polished-info-bar-and-ces-future/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hopefully the updated translation will be included in the installer very soon.&lt;/p&gt;

&lt;p&gt;Enjoy.&lt;/p&gt;
</description>
          <pubDate>Sun, 17 Jan 2010 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/UpdatedReleaseOfArabicTranslationForCubicExplorer/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/UpdatedReleaseOfArabicTranslationForCubicExplorer/</guid>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>New Firefox Addons Collection for the New Year</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/NewFirefoxAddonsCollection/FirefoxLogo.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It’s been a good year for Firefox and Mozilla. They released the &lt;a href=&quot;http://www.mozilla.com/en-US/&quot;&gt;3.5 version&lt;/a&gt; with lots of improvements. We celebrated &lt;a href=&quot;http://www.spreadfirefox.com/5years/en-US/&quot;&gt;five years&lt;/a&gt; of Firefox. &lt;a href=&quot;http://ubiquity.mozilla.com/&quot;&gt;Ubiquity&lt;/a&gt; has become more stable, got lots more of &lt;a href=&quot;https://wiki.mozilla.org/Labs/Ubiquity/Commands_In_The_Wild&quot;&gt;commands&lt;/a&gt;, &lt;a href=&quot;http://www.getpersonas.com/en-US/&quot;&gt;Personas&lt;/a&gt; reached the 2.0 milestone and the &lt;a href=&quot;http://www.mozillamessaging.com/en-US/thunderbird/&quot;&gt;Thunderbird 3.0&lt;/a&gt; looks really great. Firefox 3.5 has become the &lt;a href=&quot;http://www.downloadsquad.com/2009/12/21/firefox-3-5-passes-ie7-as-most-poluar-web-browser/&quot;&gt;most popular browser&lt;/a&gt; on the web.&lt;/p&gt;

&lt;p&gt;To celebrate this year and the one to come, I created a collection of the addons I use on daily basis. Maybe some of them can help you like it help me.&lt;/p&gt;

&lt;p&gt;To view the contents of the collection please visit &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/collection/amreldib2010collection&quot;&gt;this page&lt;/a&gt;. Here’s a list of the addons in the collection:&lt;/p&gt;

&lt;p&gt;##Appearance&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/14284?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;Strata40&lt;/strong&gt;&lt;/a&gt; and &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/14762?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;StrataBuddy&lt;/strong&gt;&lt;/a&gt; (Windows Only) gives you the look and feel of the mockups of Firefox 4.0 which makes your browser looks great in Windows 7.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3895?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;Personal Menu&lt;/strong&gt;&lt;/a&gt; puts all Firefox menus in one place and hides the menu bar.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1951?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;Fission&lt;/strong&gt;&lt;/a&gt; displays the progress bar in the address bar.&lt;/p&gt;

&lt;p&gt;##Tabs&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/14644?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;Tab Progress Bar&lt;/a&gt;&lt;/strong&gt; shows a little progress bar in tab header.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1122?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;TabMixPlus&lt;/a&gt;&lt;/strong&gt; what can I say. Nothing is like having complete and total control over your browser tabs. Take 20 minutes of your time to go through all the configurations and then export it to a file a keep it in a safe place.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/4882?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;TabScope&lt;/a&gt;&lt;/strong&gt; lets you peek at the other tabs that aren’t in focus like Windows live thumbnail for applications in the taskbar. Scroll page in the preview and even click links. You can control the size of the preview.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/5244?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;Ctrl-Tab&lt;/a&gt;&lt;/strong&gt; displays a preview of all tabs while switching between them just like Windows 7 Alt + Tab.&lt;/p&gt;

&lt;p&gt;##Work-ish&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/8381?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;Evernote Web Clipper&lt;/a&gt;&lt;/strong&gt; if you’re not using Evernote, it’s probably because you’re using OneNote.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/12003?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;Clip to OneNote&lt;/strong&gt;&lt;/a&gt; if you’re not using OneNote, it’s because you’re using Evernote.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/7661?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;Read it Later&lt;/a&gt;&lt;/strong&gt; this is definitely for work. You mark web pages you’re interested in and then read later at work :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/5579?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;Cooliris&lt;/a&gt;&lt;/strong&gt; (Windows Only) great tool for slideshowing any picture collection. Look at a wall of pictures and zoom in to any one for details. Love it.&lt;/p&gt;

&lt;p&gt;##Development&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/2489?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;CacheViewer&lt;/a&gt;&lt;/strong&gt; easily browse and search your browser cache. Open a file or save it to disk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1843?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;Firebug&lt;/a&gt;&lt;/strong&gt; debugging CSS never been easier.&lt;/p&gt;

&lt;p&gt;##Firefox Utilities&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1865?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;Adblock Plus&lt;/a&gt;&lt;/strong&gt; blocks ads like they don’t exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1759?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;Organize Status Bar&lt;/a&gt;&lt;/strong&gt; controls how all those other addons are arranged in the status bar.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3497?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;United States English Dictionary&lt;/strong&gt;&lt;/a&gt; you need this if you stink at spelling like I do.&lt;/p&gt;

&lt;p&gt;##Download&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3006?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;Video DownloadHelper&lt;/strong&gt;&lt;/a&gt; helps you download video. It’s that simple really.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/26?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;Download Statusbar&lt;/a&gt;&lt;/strong&gt; puts downloading status in the status bar with simple pause, resume, cancel, rename, open and even delete.&lt;/p&gt;

&lt;p&gt;##Little Things that Matter&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3201?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;PastoGo&lt;/a&gt;&lt;/strong&gt; Don’t paste a link in the address bar then click the ‘Go’ button. Have the link the clipboard and just click the ‘PastoGo’ button. Place it next to the address bar and make sure it opens links in a new tab.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1330?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;CuteMenus - Crystal SVG&lt;/strong&gt;&lt;/a&gt; makes all menus cuter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1812?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;CoLT&lt;/a&gt;&lt;/strong&gt; I installed this a long time ago, and one day I uninstalled it because I wasn’t sure what it does, my life was difficult for a couple of days.&lt;/p&gt;

&lt;p&gt;##For Mozilla Groupies&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/9527?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;Ubiquity&lt;/strong&gt;&lt;/a&gt; is a one-stop command line to do everything web-related. Search, check the whether, send quick e-mail, tweet, you name it. Make sure to download the latest beta from &lt;a href=&quot;http://ubiquity.mozilla.com/&quot;&gt;the Ubiquity website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/12025?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;JetPack&lt;/strong&gt;&lt;/a&gt; is the future of Firefox addons. No restart for installation or updates with the same functionality and awesomeness. Try visiting the jetpacks gallery to find a little awesomeness now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/13661?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;TestPilot&lt;/a&gt;&lt;/strong&gt; if you want to help Firefox development just by using Firefox. Use this addon to collect anonymous statistics about your usage. TestPilot asks you to participates in tests and shows the data it collected before submitting it.&lt;/p&gt;

&lt;p&gt;##Arabic and International&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1117?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;FoxClocks&lt;/strong&gt;&lt;/a&gt; it’s really not nice to call your overseas friends at a late hour. This helps avoiding that.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3677?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;&lt;strong&gt;Arabic Spell-Check Dictionary&lt;/strong&gt;&lt;/a&gt; to spell-check Arabic writing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/4270?collection_uuid=88e5ddd4-504b-afac-7ab6-6331c8a6b40a&quot;&gt;PrayTimes&lt;/a&gt;&lt;/strong&gt; stop browsing for a little time to pray.&lt;/p&gt;

&lt;p&gt;Hope you enjoy this and found it useful. Happy New Year.&lt;/p&gt;
</description>
          <pubDate>Tue, 29 Dec 2009 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/NewFirefoxAddonsCollection/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/NewFirefoxAddonsCollection/</guid>
          
          <category>Tools</category>
          
          <category>Mozilla</category>
          
          <category>Firefox</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Time to Start Versioning Web Applications</title>
          <description>&lt;p&gt;It’s clear to me with every newly released version of a web application that we need a mechanism for users to choose which web app release to use.&lt;/p&gt;

&lt;p&gt;With the rollout of new features in Facebook and this week the new ReTweeting feature in Twitter, users acted negatively to these new features. For some of features, the company would eventually have to roll back the new feature(s).&lt;/p&gt;

&lt;p&gt;However, some users actually like the new features and want to keep them. It’s a lose-lose for the company rolling out the new feature. Not only because some users are upset but also they also already lost all the effort going into developing and deploying those features.&lt;/p&gt;

&lt;p&gt;From the start, the concept of versioning was missing from the web, mainly because we were using web sites. Now that we’re using web applications, I don’t see why we can’t keep track of application versions.&lt;/p&gt;

&lt;p&gt;Let’s differentiate between two kinds of updates, Minor and Major. There are some updates that are important to be deployed to everyone like fixes, security updates, and performance improvements. These updates are ‘Minor’ updates that have to be applied to everyone. Other updates that include rolling out new features are ‘Major’ updates that users login one day and say to themselves “What the hell happened here?”.&lt;/p&gt;

&lt;p&gt;There are two ways that companies are using to update their web applications right now. The first is to incrementally roll out one feature at a time like Twitter introducing the new ‘ReTweeting’ feature. The other is introducing totally new interface with new features like the new Hotmail and Facebook lite.&lt;/p&gt;

&lt;p&gt;Any web applications (or at least the ones affecting big number of users) should have an option for users to either opt-out of new features (in case of incrementally rolled-out features) or to simply choose which version to use.&lt;/p&gt;

&lt;p&gt;This requires companies to keep clear and announced track of application version. It also requires them to keep different version of their application deployed which will eventually lead to applying &lt;a href=&quot;http://en.wikipedia.org/wiki/End-of-life_%28product%29&quot;&gt;End-of-Life&lt;/a&gt; concept to web applications as it’s applied to desktop applications.&lt;/p&gt;

&lt;p&gt;As time goes on, more and more of our activities are going into web applications instead of desktop applications. And while users appreciate the removal of application management overhead, they don’t appreciate software companies defining how and when they should use those applications. To put it in a cheap populist chant “Power to the People”.&lt;/p&gt;
</description>
          <pubDate>Fri, 13 Nov 2009 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/VersioningWebApps/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/VersioningWebApps/</guid>
          
          <category>IT Industry</category>
          
          <category>Wish List</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
      
    
      
    
      
        <item>
          <title>CubicExplorer Arabic Translation Available</title>
          <description>&lt;p&gt;There are many Windows Explorer alternatives available on the web. The one that I’m using is &lt;a href=&quot;http://www.cubicreality.com/cubicexplorer/download/&quot; title=&quot;Download CubicExplorer 0.8 (Freeware)&quot;&gt;CubicExplorer&lt;/a&gt; which is pretty cool. It supports tabs, saving sessions, multiple sessions, bookmarks, bookmarks grouping, themes, and localization (here are some &lt;a href=&quot;http://www.cubicreality.com/cubicexplorer/screenshots/&quot; title=&quot;Screenshots of CubicExplorer&quot;&gt;screenshots&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;I’m contributing to CubicExplorer with the Arabic translation in an effort to make it more available to the Arabic user. The translation file is not integrated in the application build yet. You can get the link to the translation file from the &lt;a href=&quot;http://www.cubicreality.com/forum/index.php?topic=874.0&quot; title=&quot;CubicExplorer Arabic Translation Page&quot;&gt;CubicExplorer&lt;/a&gt; forum, or you can download the file directly from my &lt;a href=&quot;/public/images/blog/CubicExplorerArabicTranslationAvailable/default.po&quot; title=&quot;CubicExplorer Arabic Translation File&quot;&gt;SkyDrive page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The translation works with the RC3 release of the 0.9 version of the application which is pretty stable. I recommend that you download the RC3 release rather than the 0.8 version. You can find the RC3 release at &lt;a href=&quot;http://www.cubicreality.com/forum/index.php?topic=791.0&quot; title=&quot;Download CubicExplorer 0.9 RC3 (Freeware)&quot;&gt;this page&lt;/a&gt; (or directly to the &lt;a href=&quot;http://cubicreality.pp.fi/files/ce/CubicExplorer_0.90rc3_Setup.exe&quot; title=&quot;Download CubicExplorer 0.9 RC3 (Freeware - Executable)&quot;&gt;executable&lt;/a&gt; file or the &lt;a href=&quot;http://cubicreality.pp.fi/files/ce/CubicExplorer_0.90rc3.zip&quot; title=&quot;Download CubicExplorer 0.9 RC3 (Freeware - zip package)&quot;&gt;zip package&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Enjoy it.&lt;/p&gt;
</description>
          <pubDate>Fri, 02 Jan 2009 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/CubicExplorerArabicTranslationAvailable/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/CubicExplorerArabicTranslationAvailable/</guid>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Windows 7: Missing the Point</title>
          <description>&lt;p&gt;With everyone reviewing the first “beta” of Windows 7, I wouldn’t say that this is a first look. If you haven’t seen these snapshots before, you’re definitely not online.&lt;/p&gt;

&lt;p&gt;Two quick notes before we start. &lt;strong&gt;First&lt;/strong&gt;, It’s not really a beta, it’s just Build 7000 which the Microsoft &lt;a href=&quot;http://www.microsoft.com/windows/windows-7/&quot;&gt;page&lt;/a&gt; for Windows 7 doesn’t confirm as an official beta. However they have a “What’s coming in the Windows 7 beta” title in the page. &lt;strong&gt;Second&lt;/strong&gt;, how I got it and how can you. It’s out there, man. you know it, I know it, even Microsoft knows it. Anyway, Let’s dive in.&lt;/p&gt;

&lt;p&gt;Was it 20 minutes? maybe a little more, I’m not sure. But I’m sure that the installation is much faster than Vista and XP. The installation is pretty much straight forward and similar to Vista except for the option to setup a “homegroup” which was the first thing to grab my attention (only because I saw the new task bar in snapshots. We’ll get to that later).&lt;/p&gt;

&lt;p&gt;Homegroup is simply a simple way to create a home network. The name is – I think – an opposite to Workgroup which is the nickname for any network group with no domain controller. So, Other than the name, how’s a Homegroup is different from a Workgroup?&lt;/p&gt;

&lt;p&gt;&lt;a title=&quot;Click for larger image&quot; href=&quot;/public/images/blog/Windows7MissingPoint/Win7-CreateHomegroupStep2.jpg&quot;&gt;
    &lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/Windows7MissingPoint/Win7-CreateHomegroupStep2-Zoom.jpg&quot; /&gt;
&lt;/a&gt;
It’s easier to create/join a Homegroup. Open a Windows Explorer and choose “Homegroup” on the left and you get the wizard. When you click to create a homegroup you get the option to share a “Library”.&lt;/p&gt;

&lt;p&gt;Library is a new word for me, so I decided to follow what it means. I found in the task bar an icon with a folder in it.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/Windows7MissingPoint/Win7-TaskbarWithWindowsExplorer.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I assumed that it’s “My Computer” or “Computer” (since Microsoft decided in Vista that it’s not mine anymore) but it turns out to be Windows Explorer and it opens on “libraries”&lt;/p&gt;

&lt;p&gt;&lt;a title=&quot;Click for larger image&quot; href=&quot;/public/images/blog/Windows7MissingPoint/Win7-LibrariesBig.jpg&quot;&gt;
    &lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/Windows7MissingPoint/Win7-LibrariesSmall.jpg&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Interesting, so is this like &lt;a href=&quot;http://en.wikipedia.org/wiki/Virtual_folder#Windows&quot;&gt;Virtual folders&lt;/a&gt; from Vista that never really made it to mainstream? Yes, but with a different approach. Virtual folders was &lt;a href=&quot;http://www.winsupersite.com/showcase/winvista_virtualfolders.asp&quot;&gt;a shortcut to the results of search keyword&lt;/a&gt; except the results are dynamic. It wasn’t a snapshot of the results but a shortcut to the search. In Windows 7, a library is a pool of the content of many folders in one view which is great if you want to find things quickly unless those things have the same name because the view doesn’t show content with the same name differently. so you can easily end up with this.&lt;/p&gt;

&lt;p&gt;&lt;a title=&quot;Click for larger image&quot; href=&quot;/public/images/blog/Windows7MissingPoint/Win7-LibraryViewBig.jpg&quot;&gt;
    &lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/Windows7MissingPoint/Win7-LibraryViewSmall.jpg&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, a library is a folder of folders which is cool but my question is “Why?”. Isn’t the whole point of folders is to keep things organized and if you want to find them use “Search”. The only logical benefit of libraries is to combine the content of different folders in your machine and offer them in one entry point on a Homegroup which is exclusive to Windows 7 machines (a note in the Help section) at Home (at least for now, not clear if it’s offered through Windows Server).&lt;/p&gt;

&lt;p&gt;What I’m trying to say – again - is “Why?”. Libraries in Windows 7 are replacing “My Documents”. If you click “Documents” in Start menu, windows explorer opens on the “Documents” library. So, Microsoft is pushing libraries as the default option (with no obvious chance for the user to change this default).&lt;/p&gt;

&lt;p&gt;Anyway, what’s the default folders included in this Documents library? Two folders, [My] Documents and Public Documents. This choice brings another subject to my attention. My Documents. There are couple of issues here:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Anyone who ever had to suddenly re-install Windows (which is a big portion of the Windows population) knows very well that keeping files under My Documents is a bad bad bad idea. Why there isn’t a way to easily change the default location of My Documents, anyway?&lt;/li&gt;
  &lt;li&gt;The default and only breakdown of folders includes Documents, Downloads, Favorites, Music, Pictures, Videos (and other less famous ones). Of course you can create new folders, but Microsoft is treating those folders specially, they’re referenced in all Microsoft application in Windows and sometimes you can’t get rid of them. Like Windows Media Player you can’t remove the “Users” folder. You can only “Ignore” it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/Windows7MissingPoint/MediaPlayer-LibraryFolders.jpg&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Other than My Documents, there are also Public Documents. Now, you can share My Documents and you can share Public Documents. In Windows 7 they’re combined in the Documents library. Again, the urging question, “Why?”. What’s the point of having two folders?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Back to libraries in Windows 7&lt;/strong&gt;, if you take a look at the &lt;a href=&quot;/public/images/blog/Windows7MissingPoint/Win7-CreateHomegroupStep2.jpg&quot;&gt;image&lt;/a&gt; of the wizard. You’ll notice that you can select the libraries to share and they’re only limited to the default libraries created by Microsoft (by the way, if you shared a default library after you have deleted it. It will be created again!!!). Now, What about “My” libraries? the ones that I created. I have to use something similar to “Share” in Windows Vista. &lt;em&gt;How is this faster or simpler?&lt;/em&gt; Why can’t the windows Users folder be easily customizable and expandable. Why can’t it have profiles based on the user category? Does Microsoft really think that ALL Windows users are the same? I want to be able to apply a certain User folder based on my category (Student, Power user, Developer, Mum, etc.) and I want those profiles to be expandable, editable and created by the community.&lt;/p&gt;

&lt;p&gt;For my first look at Windows 7, Microsoft is missing the point on why they’re making changes. Not only for the libraries, but also for the new taskbar. But that’s another post.&lt;/p&gt;
</description>
          <pubDate>Mon, 29 Dec 2008 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/Windows7MissingPoint/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/Windows7MissingPoint/</guid>
          
          <category>Windows</category>
          
          <category>Microsoft</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>How Firefox can outlast other browsers?</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/HowFirefoxCanOutlastOtherBrowsers/firefox.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It’s probably not news by now, but you should know up front. I  really like Firefox. I favor it over &lt;a href=&quot;http://blogs.zdnet.com/security/?p=2328&quot;&gt;IE&lt;/a&gt;, &lt;a href=&quot;http://www.microsoft-watch.com/content/web_services_browser/chrome_privacy_is_full_of_dents.html&quot;&gt;Chrome&lt;/a&gt;, that &lt;a href=&quot;http://www.informationweek.com/news/internet/browsers/showArticle.jhtml?articleID=209800452&quot;&gt;Apple thing&lt;/a&gt;, &lt;a href=&quot;http://my.opera.com/haavard/blog/2007/02/28/opera-did-not-respond-to-security-vulner&quot;&gt;Opera&lt;/a&gt;, and even &lt;a href=&quot;http://news.bbc.co.uk/1/hi/entertainment/7776129.stm&quot;&gt;Oprah&lt;/a&gt; (these are the only links I could find, really). But my favorite software is in – shall we say – “danger”. It’s being attacked by all the other competitors who are planning its end. Okey, that’s a little over-dramatic.&lt;/p&gt;

&lt;p&gt;With the release of Google Chrome and replacing Firefox in Google package (who is the idiot who didn’t see that coming?), everybody knows that the browser war is far more interesting now than ever. Even though that IE is the front runner which everybody should be after, but with its 70+ % market share, it’s more realistic to consider the Firefox-Chrome race more interesting.&lt;/p&gt;

&lt;p&gt;Even though the difference in market share between the Firefox 20% and the 3-months-old Chrome is significant, the weight of Google and its control over Mozilla cash-supply (after 2011) closes the gap between the two. Google’s &lt;a href=&quot;/blog/HowFirefoxMakesMoney/&quot;&gt;deal with Mozilla&lt;/a&gt; to share advertisement revenues offers Mozilla a big share of its annual revenue. Shutting down this deal might significantly affect Mozilla and it will cause a big reaction from the community against Google until the next time they decide to google something (I wanted to say ‘search’, but.. c’mon). Mozilla has to figure this out starting now, and I hope they’re doing that.&lt;/p&gt;

&lt;p&gt;Meanwhile, the market share battle is on between the two browsers. Chrome could enjoy a temporary spike in its market share (it &lt;a href=&quot;http://www.tgdaily.com/content/view/39174/118/&quot;&gt;did&lt;/a&gt;) by all the power users who are curious about the brand new browser (I was one of them). But when the dust settle, Firefox users return to their browsers just to avoid missing the not-so-secret weapon of Extensions.&lt;/p&gt;

&lt;p&gt;When was the last time you tried a &lt;a href=&quot;http://www.mozilla.com/en-US/&quot;&gt;bare Firefox&lt;/a&gt; with absolutely no extensions? it’s really awkward experience. Extensions are what makes Firefox a really special software. It’s all the little things that saves you seconds but really brings the web to your finger tips. It’s going to take Chrome along time to build a community that can match the effort of the Mozilla community.&lt;/p&gt;

&lt;p&gt;But for Firefox to really survive, it must go on the offense. Tackle the IE market share rather than worrying about Chrome.&lt;/p&gt;

&lt;p&gt;Since it’s extensions that distinguish Firefox, they somehow should be available to the average user as they are to the power user. Most average users don’t use advanced tools because they simply don’t know they have the option. I watched a guy using Edit &amp;gt; Copy because he doesn’t know about Ctrl+C and context menus (seriously). Mozilla should make an effort to somehow offer the average user the blessings of extensions. Maybe they’re already doing that by &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/fashionyourfirefox&quot;&gt;‘Fashion your Firefox’&lt;/a&gt; but it’s still a web page that the average user needs to go to first. Try to put extensions more front and center.&lt;/p&gt;

&lt;p&gt;Then, there’s the distribution problem. Most average users don’t really user IE, they use the ‘internet’ through the blue ‘e’ icon. The whole concept of browser and better browser is missing for these people. So, these are like 20% of IE share (I’m totally making those numbers up). 40% don’t care about the browser to choose the better one. 35% don’t know why they should switch, they really think that this is the best browser. and 5% are stupid because they know it’s a bad browser but they’re using it anyway (of course, I’m excluding IE testers). What I’m trying to say is a large share of IE users are using it because it’s pre-loaded and this is a problem not only for Firefox but also for Chrome. Apply tried to go through the back door and push Safari through iTunes. I don’t think that this has made a huge difference but it’s worth the shot.&lt;/p&gt;

&lt;p&gt;Frankly, I don’t know how to solve the distribution problem. But I know this, until Google figures about a way to solve it, Chrome is not going to make a lot of progress in Firefox market share. I hope ;)&lt;/p&gt;
</description>
          <pubDate>Wed, 17 Dec 2008 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/HowFirefoxCanOutlastOtherBrowsers/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/HowFirefoxCanOutlastOtherBrowsers/</guid>
          
          <category>Google</category>
          
          <category>Microsoft</category>
          
          <category>Firefox</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Raising Expectations</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/RaisingExpectations/WindowsGuy.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;If you’re following up with the US presidential election these days, you probably heard about Bill Clinton &lt;a href=&quot;http://blogs.abcnews.com/politicalradar/2008/09/bill-clinton-pr.html&quot;&gt;praising&lt;/a&gt; Sarah Palin and describing her as a candidate who can’t be underestimated. Even though Sarah Palin has been proven to be a &lt;a href=&quot;http://www.youtube.com/watch?v=SlQo-IYNkwg&quot;&gt;political joke&lt;/a&gt; that is &lt;a href=&quot;http://www.youtube.com/watch?v=qaSECfQqty8&quot;&gt;clearly&lt;/a&gt; not qualified to run anything not to mention a superpower. Add this to the Clinton’s (newly found) support for Obama, it’s easy to find yourself wondering what’s Bill doin’. The answer is simple, he’s raising expectations for Sarah Palin, making her look like someone who’s is very tough to beat so that when the fight is over and she won then Bill was right and if she lost then she’s letting everybody down.&lt;/p&gt;

&lt;p&gt;Now, I hear your question from the minute you started reading. What does this has to do with anything that I ever wrote about? It’s simple really, Bill Clinton is a very skilled politician but Microsoft maybe not so much.&lt;/p&gt;

&lt;p&gt;Couple of weeks ago, Microsoft started rolling out the “highly anticipated” ad campaign starring Jerry Seinfeld. Here are three facts about this campaign. First, People were waiting for months for Microsoft’s response to &lt;a href=&quot;http://en.wikipedia.org/wiki/Get_a_Mac&quot;&gt;“Get a Mac”&lt;/a&gt; campaign by Apple. Second, All the buzz through August was about how Microsoft is spending 300 millions on a counter-attack ad campaign led by an &lt;a href=&quot;http://www.cpbgroup.com/&quot;&gt;agency&lt;/a&gt; that is known for its re-branding experience. And last, The &lt;a href=&quot;http://blogs.zdnet.com/BTL/?p=9905&quot;&gt;negative&lt;/a&gt; reviews started 90 seconds after the first run of the first ad that didn’t deliver any kind of message.&lt;/p&gt;

&lt;p&gt;Now, contrast Microsoft’s ads rollout strategy with what Bill Clinton did in the ABC interview and you’ll figure out one killer mistake that Microsoft is doing. Whenever I’m watching one of those ads, all I can think of is “300 millions for this”. Other people are even adding “crap” to my question. Even though we don’t know what the 300 millions are actually for (they could be for production, for distribution or both) But the important thing is that all we can think of is that Microsoft’s counter punch that costs more than a year and 300 million dollars is a not-so-funny joke between Gates and Seinfeld. It’s not the first time that Microsoft has done this mistake, remember the roll out of Vista, back when it was longhorn, people were very excited about Aero and the new Windows that just looks fantastic. And then there was the waiting, the features cutting to finish the waiting, and UAC messages. Over time people started getting used to how exciting Vista looks like and when it was time for it to be released it was like “So, what else is new”.&lt;/p&gt;

&lt;p&gt;I can understand Microsoft’s reasons for involving the community in the development process by providing feedback and participating in testing. But let me revise those two reasons for a second. Feedback like suggesting features and tweaking existing features based on suggesting is an endless meaningless process. With all do respect to feedback, there’s a limit to people’s involvement in the process. Software design is simply not a democracy where anyone can be the designer and everyone can vote on design. If Microsoft don’t trust their own designers to build the right thing then maybe they should fire them and get other people who they can trust. Users involvement in Microsoft’s products via feedback is certainly not helping products being better and it’s not helping making users feel like they’re part of the process because at the end of the day they’re paying for those products, how can I help build something and then you’re charging me for it. As for testing, Microsoft can always test their products in a controlled environment by professional teams without &lt;a href=&quot;http://www.microsoft.com/presspass/press/2006/sep06/09-05WindowsVistaIndustryPR.mspx&quot;&gt;having 5 million users testing it like they did with Vista&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Even if there are more reasons to involve the community in the development process, this still doesn’t justify letting products out in the open very early and giving away the excitement factor months before the final release and raising expectations for what the final release will look like.&lt;/p&gt;

&lt;p&gt;You can say that Microsoft started avoiding this mistake with Windows 7 by setting a very strict secrecy policy (even with the leak of some screenshots) described as &lt;a href=&quot;http://www.microsoft2.net/2008/04/27/translucency-vs-transparency-blog-post/&quot;&gt;translucency Vs. transparency&lt;/a&gt; (credited to Steven Sinofsky who is the senior VP for windows) which is widely &lt;a href=&quot;http://blogs.zdnet.com/microsoft/?p=1406&quot;&gt;criticized&lt;/a&gt; by critics and Microsoft news bloggers that with no news coming out of Redmond will probably have nothing to blog about.&lt;/p&gt;

&lt;p&gt;To sum up. Microsoft, stop building expectations for your products and find a balance between how to share info with the media, partners, and community and how to roll out the excitement very near to the shipping date.&lt;/p&gt;
</description>
          <pubDate>Sun, 21 Sep 2008 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/RaisingExpectations/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/RaisingExpectations/</guid>
          
          <category>IT Industry</category>
          
          <category>Apple</category>
          
          <category>Microsoft</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>What Google Reader is missing?</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/WhatGoogleReaderIsMissing/GoogleReaderLogo.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I must confess something. Google Reader really changed a part of my life. Before it, I used to spend - at least - 5 times the time I’m spending now to keep track of all those web sites and blogs (actually I’m spending the same time but I’m following up with 5 times the content). Even though I’m a great fan as it’s obvious. Lately, I think I’m having some problems with Reader. They’re not really problems but more like I’ve pushed the application to its limit that I need something more. Something like:&lt;/p&gt;

&lt;p&gt;**&quot;No, thanks&quot; button in feed preview:
**Whenever you’re reviewing a feed from the recommendations page and you realize that you don’t want this feed anymore, you have to go back to the recommendations page and click the &quot;No, Thanks&quot; button to make room for other feeds. Why can’t I get a button in the top banner while I’m reviewing the feed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keep the preview banner visible.&lt;/strong&gt;
The banner on the top while I’m reviewing the feed should be kept visible so that I can decide on the feed quickly and don’t have to scroll back up and click &quot;Subscribe&quot; or &quot;No, Thanks&quot; (which is not really there as I described earlier).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&quot;Show me More&quot; button in the Top Recommendation section to show three more suggestions.&lt;/strong&gt;
I really like the small badge on the top right of the home page that shows the top recommendations. If only I can quickly display 3 more feeds without having to view the recommendations page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Control the keywords of recommendations.&lt;/strong&gt;
I’ve subscribed to tens of feeds through the recommendations page that is &lt;a href=&quot;http://www.google.com/support/reader/bin/answer.py?hl=en&amp;amp;answer=80468&quot; title=&quot;How do feed recommendations work?&quot;&gt;reading my subscriptions&lt;/a&gt; and bringing me more feeds that are like my subscriptions (totally violating my privacy without even asking if I like to do this or not or even giving me a chance to turn it off but whatever). But sometimes I want to add more topics without subscribing to feeds of that topic and without searching for a feed. This way I can include this topic in my daily 5 minutes preview of recommended feeds.
**
Sort unread items from old to new while keeping the read items visible.**
Whenever I travel or away from any PC for couple of days, I get back and I find 1000+ posts (which takes me either 5 hours or 1 second to read). Reading the news section of my feeds is the most troubling one in this situation because I get the latest updates on sports (for example) before the pre-match analysis (which I love especially when I can find out the results 2 seconds after I read them to find out how ridiculous those sports analysts are. They’re starting to be more like political analysts and we’re way off topic now). Of course I can sort the posts by oldest which will show me the older posts first but will also give me the already read posts. And I can also only show the unread posts which will solve this problem but will prevent me from reading the already read posts (which I like to do every once in a while just for fun). What I want is to be able to display all posts (not just the unread ones) and while they’re sorted by oldest. Something like scrolling down to the first unread post and then go through them to the newer ones. I don’t travel that much but maybe I will if I have this feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More clever use of the Home page.&lt;/strong&gt;
Most of the time I finish reading all the posts. So I go back to the Home page which is empty now because I finished reading all the posts. The message tells me that I can browse the recommendations or go to Google news. But I don’t want to do this, I just want something to fill this area. Something like bigger recommendations badge, clip of Google news that displays the kind of news that I would be interested in (like news from my hometown or ones that match my subscriptions keywords, you know more violation of my privacy type of thing).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read later folder/section.&lt;/strong&gt;
I don’t know what the Starred folder is for, I just used it to mark stuff to be read later. But that not the way I wanted to always be. I wanna be able to see how many items I have marked to be read later.&lt;/p&gt;

&lt;p&gt;  That’s it for now, maybe I have more demands later. If I’m sending this as a letter to Google, I would probably sign it as &quot;yours truely, lazy reader lover&quot; :).&lt;/p&gt;
</description>
          <pubDate>Sat, 16 Aug 2008 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/WhatGoogleReaderIsMissing/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/WhatGoogleReaderIsMissing/</guid>
          
          <category>Google</category>
          
          <category>Wish List</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Why Help Suck (2 of 2)</title>
          <description>&lt;p&gt;It doesn’t really matter why exactly help system has become inefficient (if it ever were efficient). That fact by itself is not that important unless we do something about it. If you’re developing software and you’re considering developing a help system for your product. Here are some Does and Don’ts that could help you.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Use screen casts instead of how-to guides: important part of any help system is the how-to guide (step-by-step description of how to do a specific task). Screen casts are videos capturing the user’s (in this case, the tutor’s) behavior on screen while performing a task. Videos are way cooler than how-to guides, and they’re not that hard to produce. Those videos have to be described in text in a way that would make it easy for the user to find a video using search.*   Focus on search: the problem with categorization is that no two people can ever agree on how to categorize any content. No matter how organized and simple your categorization might be, it will always be hard for some people to follow because they’re not aware of all the content and that’s why they don’t understand why would you put this topic under this category not that one. Search goes around all that hassle by directly jumping to what’s related to the user’s input. You can optimize your content for search by adding the different forms of questions that might be asked about each topic. This way when users asks those questions, they can find them and hence their answers. You might as well tell the users that it’s okey to ask their questions in plain English because they don’t really expect that.*   Use search engines to index your help system: since search should be the central focus of the start page of any help system, if you’re using an online help system you might as well use a search engine as your primary search engine to search your help system. All major search engines offer powerful tools to use their search as the primary search for any web site.*   Offer categories as alternative: the Office 2007 Ribbon is one of the best things ever, but some people just didn’t like it. Don’t do the same mistake as Microsoft and drop categorization completely and only relay on search (they dropped menus and toolbars completely and only relied on the ribbon). Two reasons: some users might not know exactly what they’re looking for, browsing can help them. Other users use the topics related to the result of their search to find out more information about the software (Related topics. that sound like another thing you can do).*   Offer related topics: some users use help to learn about the software, it’s a very hands-on approach. On the side of each page (not necessarily on the side, it could be up and down as well), make a list of the topics that are related to the topic is being displayed sorted by their relativity to the displayed topic. You could also create another section similar to the idea of “People who browsed this, also browsed..”. Offer a list of the topic that are not directly related to this topic but can be linked to it.&lt;/li&gt;
  &lt;li&gt;Avoid endless hierarchies: categories should have a limited number of levels. Avoid having 20 levels of subcategories that will never guide a user to their destination, it will only drive them mad.&lt;/li&gt;
  &lt;li&gt;Avoid confusing titles: while browsing your content, topics titles are not only representing the content of that topic, they are pretty much the topic. No one we’ll go through a topic unless it’s exactly what he’s looking for and if the title is not clear enough to speak for the topic, no one will read it. If the titles of your pages doesn’t seem clear enough for the average user, modify them or make it clear that you’re applying some naming conventions and list their meanings.&lt;/li&gt;
  &lt;li&gt;Audience-Sensitive content: wouldn’t it be great if my help system can speak to me? And I don’t mean “speak” as in the act of talking, but more like as in using a language that I can understand. One major problem with help systems is that the content is used according to the concept “one size fits all”. If you’re looking for a piece of information, it’s there; you just have to find it. And finding that piece of information isn’t just about finding what page it’s on. It’s also about finding in what part of the page it is. Average users find themselves scrolling through pages of details on how a file is being streamed as binary before it’s transmitted over the TCP/IP protocol and how it’s being… zzz. Power users find themselves scrolling through pages of introductions on how to create a new file and a description of the Open File window. An audience sensitive content would offer different forms of the same content depending on the level of user’s proficiency determined by the user. Users are promoted to select their level of proficiency in the software and other topics that are related to the software. For example, a user that has experience in the previous version of the software doesn’t need to know about how features work; he only needs to know about the differences between the two versions. This kind of content can be developed by carefully tagging each paragraph of the content and just hiding and showing those paragraphs depending on the user’s preferences.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All this is great (I’m sure you agree ;) ), but is it really what you want? Do you want your help system to be efficient enough that users can actually learn and solve their problems without contact your support line or attending your courses? Maybe it’s not, but that’s another story.&lt;/p&gt;

</description>
          <pubDate>Tue, 29 Jul 2008 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/WhyHelpSuck2/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/WhyHelpSuck2/</guid>
          
          <category>Software Development</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Why Help Suck (1 of 2)</title>
          <description>&lt;p&gt;Ever used the help system? Of course you have. Hated it? Of course you did. No body likes to go into the Help menu and just browse the Help Content. Everybody seems to try to use those other resources (forums, blogs, screen casts, etc.) to learn how to go around the software they’re using. Since this is quite clear, why would you bother build a Help Contents for your software. Most software vendors already know that, yet the only obvious enhancement in Help systems is to make it online. In other words, make it everywhere.&lt;/p&gt;

&lt;p&gt;But what’s wrong with Help. I mean we know it’s not the best thing, but what’s exactly is wrong with it.&lt;/p&gt;

&lt;p&gt;First, It’s a lot of reading. No body likes to read that much, even book lovers, they read for fun and knowledge not for solving problems. It’s like those emergency instructions, the plane is going down, your hair is on fire and you’re reading the emergency instructions. Users don’t want to read those long pages just to figure out an solution to their problem, they want “Help”. They want answers to their questions, which are most likely not to be included in the frequently asked questions (I don’t know where do these come from anyway).&lt;/p&gt;

&lt;p&gt;Second, when users turn to help, they’re looking for answers. That means Search, right? well, &lt;a href=&quot;http://en.wikipedia.org/wiki/Microsoft_Compiled_HTML_Help&quot;&gt;CHM&lt;/a&gt; (the most used format for help files) have a terrible search capabilities and results. The problem with using plain search for help is it’s not optimized for finding answers for questions. A user should be able to enter a question and get an answer for it. Online help system have better search capabilities but they still lead to the same boring content.&lt;/p&gt;

&lt;p&gt;Finally, It’s not that help content is long and unreadable. It’s that “everybody” has to read (or rather scan) it to get any information out of it. A beginner user doesn’t need to know every little detail that a power user might be looking for. Users don’t just want answers to their questions, they also want that answer in a way they understand.&lt;/p&gt;

&lt;p&gt;But it’s not like help systems are that bad all the way and no one tried to make them better. Some companies are actually trying. The new Vista help looks pretty good.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;imageInCenter&quot; src=&quot;/public/images/blog/WhyHelpSuck1/SnapshotOfVistaHelpSystem.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can see from the snapshot that:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Search is front and center in the help window, it’s your primarily entry point.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Windows Basics is the first item in the “Find an answer” section. Because it’s a help system for Windows which is the most basic thing, the users expected to land here are beginners (and I mean people who need a second to tell the difference between a mouse and a keyboard).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Windows Online Help is important because offline help can’t be updated as online help. It should be reached easily.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Most software application put “What’s New” up front, which is not a topic for help but rather a topic for white papers. Good job to keep the section but put it at the end of the list.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Also, because the expected users are beginners, it’s logical to offer them a chance to contact someone for help.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The offline help sign switch the search box results to include results from online help.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Other help systems include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Option to comment on the content page where users can add their own experience and discuss the content of the page.*   Social tools to share the content of those pages.*   Discussion forums.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of that seems fine but still not enough. What would it take for a help system not to suck. Let’s leave that to another post.&lt;/p&gt;
</description>
          <pubDate>Thu, 17 Jul 2008 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/WhyHelpSuck1/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/WhyHelpSuck1/</guid>
          
          <category>Software Development</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Firefox 3 is here..</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/Firefox3/FirefoxLogo.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Of course by now you already know that Firefox 3 has been released yesterday. Instead of just talking about how great the new version seems to be, I’m gonna cover the release coverage. Here’s a sum up of some interesting links about the new Firefox.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://people.mozilla.com/~beltzner/overview-of-firefox3.swf&quot;&gt;Watch it in action&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.dria.org/wordpress/archives/2008/06/12/655/&quot;&gt;Field Guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://feeds.gawker.com/~r/lifehacker/full/~3/313932919/power-users-guide-to-firefox-3&quot;&gt;Field Guide for Power Users&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Download Count&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.spreadfirefox.com/en-US/worldrecord&quot;&gt;Spread Firefox: Download Day&lt;/a&gt;: An attempt by the Firefox community to set a Guinness world record for the most downloads of an application in 24 hours.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://john.jubjubs.net/2008/06/18/firefox-3s-first-24-hours/&quot;&gt;Firefox 3 passes 8 million downloads in the first 24 hours&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;News Coverage&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://news.sky.com/skynews/article/0,,91221-1319341,00.html&quot;&gt;Firefox 3 on Sky News&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://origin.mercurynews.com/opinion/ci_9620844&quot;&gt;Article about the effect of community on Firefox&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.forbes.com/technology/personaltech/2008/06/17/firefox-new-browser-tech-internet-cx_bc_0617firefox.html&quot;&gt;Forbes article on why Firefox matter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Funny stuff&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/8345192@N03/2588850084/&quot;&gt;IE team sends a cake to the Firefox team&lt;/a&gt; (also &lt;a href=&quot;http://www.flickr.com/photos/robceemoz/2587912633/&quot;&gt;here&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.0xdeadbeef.com/weblog/?p=389&quot;&gt;The Colbert bump for Firefox 3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.spreadfirefox.com/en-US/worldrecord/certificate_form&quot;&gt;Get a download certificate from Mozilla&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
    .. enjoy your new Firefox everyone.
&lt;/p&gt;
</description>
          <pubDate>Wed, 18 Jun 2008 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/Firefox3/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/Firefox3/</guid>
          
          <category>Firefox</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Getting on the Geo Train</title>
          <description>&lt;p&gt;So, looks like Acrobat 9 is getting map support. But instead of talking about what is it exactly what Acrobat 9 is supporting (which you find &lt;a href=&quot;http://www.adobe.com/products/acrobatproextended/&quot;&gt;here&lt;/a&gt;), I’m gonna focus on with the question &quot;why&quot;. Acrobat has no relation with GIS or GeoWeb, but it seems like Geo info is the next big thing (or at least one of them) where everyone wants to get a part of it (of course, not as big as advertisement). Google Earth (currently &lt;a href=&quot;http://code.google.com/apis/earth/&quot;&gt;accessible&lt;/a&gt; at any browser near you), Live maps (with the amazing &lt;a href=&quot;http://en.wikipedia.org/wiki/Live_Search_Maps#Bird.27s_eye_view&quot;&gt;bird’s eye&lt;/a&gt; functionality), and yahoo maps are on the geo train for a while now as GIS (or to be more specific geo-info) is being brought to the masses by car navigation devices, and cell phone embedded GPSs.&lt;/p&gt;

&lt;p&gt;But even &quot;Why&quot; is not the key question here, &quot;Who&quot; is. Geo-enabled apps are being brought to the masses by companies that had close to no existence in the GIS market, 3 or 4 years ago. &lt;a href=&quot;http://www.esri.com&quot;&gt;ESRI&lt;/a&gt;, &lt;a href=&quot;http://www.erdas.com&quot;&gt;ERDAS&lt;/a&gt;, &lt;a href=&quot;http://www.intergraph.com&quot;&gt;Intergraph&lt;/a&gt; and other GIS software vendors who has been in this business for years if not decades, are not the ones who is bringing GIS to the masses. On the contrary, these companies still have no significant - or even absolutely no - contribution to GeoWeb.&lt;/p&gt;

&lt;p&gt;So, instead of simplifying GIS in a way that would make the average Joe be able to explode its full potential. The regular databases and information systems are being extended to store X and Y coordinates to represent locations on a map. This extending is a big step, but it only limits the functionalities to answering the questions of how far, how large, and which is closer.&lt;/p&gt;

&lt;p&gt;Of course, it’s up to the GIS software vendors not to bring GIS to the masses. It could be their idea to keep low profile and enjoy their share of the GIS market without a competition with the big guys (GIS market was &lt;a href=&quot;http://www.gisdevelopment.net/magazine/years/2004/dec/setting1.htm&quot;&gt;estimated in 2004 to be  2.2B$, where software represent 64%&lt;/a&gt;). A friend of mine who works for a GIS software vendor told about how they’re avoiding their software in comparison with Google Earth to avoid explaining why their software is that expensive. This kind of behavior is what is keeping the GIS genie in the bottle, and it will go on until the attitude changes (I don’t see why) or another software vendor gets in the market and maybe change the rules a bit.&lt;/p&gt;

&lt;p&gt;Until then, we’re just watching more people getting on the geo train.&lt;/p&gt;
</description>
          <pubDate>Tue, 10 Jun 2008 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/GettingOnTheGeoTrain/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/GettingOnTheGeoTrain/</guid>
          
          <category>GIS</category>
          
          <category>GeoWeb</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>It's Getting Really Old</title>
          <description>&lt;p&gt;Yesterday, I watched the &lt;a href=&quot;http://www.youtube.com/watch?v=-Iewhh9a1tA&quot;&gt;new&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Get_a_Mac&quot;&gt;“Get A Mac”&lt;/a&gt; ad. And unlike other &lt;a href=&quot;http://www.youtube.com/view_play_list?p=3097C6C21AADCE7E&quot;&gt;ads&lt;/a&gt; before, no new Mac features were introduced and the joke wasn’t even that funny. There is no doubt about the fact that Mac OS market share is feeding on Windows users, it’s not like new users are growing on trees here. But, there’s no need to be that destructive. The Get A Mac ad campaign started out by making a point which was that Mac is better than PC and Mac OS X is better than any other OS (a.k.a. windows) because it has lots of stuff. And every ad used to tell the story of a certain feature. Like the &lt;a href=&quot;http://www.youtube.com/watch?v=ToOSg5cEX7c&quot;&gt;one&lt;/a&gt; that has many Macs that are taking about Time Machine feature, which is if you’re a regular windows user wouldn’t know that windows had something similar since XP which is “Restore Point” but it had never been an easy to use or popular feature that is worth making an ad for.&lt;/p&gt;

&lt;p&gt;Then the ads became just funny, like the &lt;a href=&quot;http://www.youtube.com/watch?v=ZMGfLa3s48w&quot;&gt;one&lt;/a&gt; with the group therapy where there’s no point other than making fun of Vista and branding Mac as the cool kid in the block more than it already is. But when you start over profiting from anything, it backfires.&lt;/p&gt;

&lt;p&gt;Some people are asking “How do they get away with it” as in how can a company say something that mean about another company and not get sued. I don’t know, I’m not a lawyer, but I think that they - Apple - don’t wanna get away with it, they don’t care. Apple always been a fan of making fun of competitors. There was the famous &lt;a href=&quot;http://www.youtube.com/watch?v=R706isyDrqI&quot;&gt;“1984”&lt;/a&gt; ad that pictured IBM as the dominate dictator who is brain-washing everyone. And I remember those banners in Mac World conference couple of years ago that said “Redmond, Start your Photocopiers” (as in Microsoft is copying everything Apple is doing). And of course, tons of Steve Jobs’s &lt;a href=&quot;http://www.youtube.com/watch?v=zhy7ehkgWcg&quot;&gt;remarks on competitors&lt;/a&gt; in Mac World demos. It’s a natural extension of Apple’s arrogant attitude drawn from their CEO’s ego.&lt;/p&gt;

&lt;p&gt;Don’t get me wrong, I admire Steve Jobs, the guy built Apple &lt;a href=&quot;http://en.wikipedia.org/wiki/Steve_Jobs#Return_to_Apple&quot;&gt;twice&lt;/a&gt;, and if you wanna know the man himself, just watch his Stanford commencement address &lt;a href=&quot;http://www.youtube.com/watch?v=UF8uR6Z6KLc&quot;&gt;speech&lt;/a&gt; in 2005 (really wise stuff) but there’s no doubt that Steve’s ego is really burning Apple’s bridges with other companies. Once in 1997, Apple needed help from Microsoft for its resurrection. Of course, Microsoft got a fair deal (settlements for for Patent disputes, IE as the default browser on Mac, and revenues from Office for Mac and Apple shares) but if Microsoft knew that Apple would be mocking Vista like they are now, I’m sure Microsoft would have been thinking this through.&lt;/p&gt;
</description>
          <pubDate>Wed, 04 Jun 2008 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/ItsGettingReallyOld/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/ItsGettingReallyOld/</guid>
          
          <category>Apple</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Personalized TV Guide</title>
          <description>&lt;p&gt;I was watching TV this morning and I went through my 37-channels favorite list and I found nothing interesting to watch. So, I turned to the TV guide. I don’t use the guide that much so here’s my impression. SHOCKED. the TV guide is listing more than 800 channels, how am I supposed to go through these. Of course there’s a categorization for shows by theme, channel, or title.  Maybe other cable boxes even have search. But, that’s not what I want to do, I just want to watch a good show, I don’t know what it is but I want it and I want it now. I got frustrated with the TV guide so I turned off the TV and turned to the computer to check my Gmail, I opened a new e-mail and I found this small ad in the top banner about something related to the e-mail I’m reading right at the same moment. So, I thought what if my TV (or rather cable box) can do that.&lt;/p&gt;

&lt;p&gt;Here’s the idea, What if TV channels have enough metadata to suggest shows to the viewer. Metadata can include Show Rating, Theme, Production Year, Cast Names. The viewer selects his/her favorite picks in each of these categories and there’s magic. It’s simple matter of mix and match.&lt;/p&gt;

&lt;p&gt;Now, here’s the problem, I don’t know how cable boxes work, I don’t have a cable company to apply something like this. So, I thought I just put this out there for anyone to apply it. But I reserve the right of having one of those cable boxes for free.&lt;/p&gt;

&lt;p&gt;By the way, if by any chance, someone already applied this idea, let me know.&lt;/p&gt;
</description>
          <pubDate>Fri, 30 May 2008 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/PersonalizedTvGuide/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/PersonalizedTvGuide/</guid>
          
          <category>Consumer Devices</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>GIS, GPS, LBS, and GeoWeb: They're different, People</title>
          <description>&lt;p&gt;When I tell anyone one that I work in &lt;a href=&quot;http://en.wikipedia.org/wiki/Geographic_information_system&quot;&gt;GIS&lt;/a&gt; and tell them about what it’s about, I always get the response of &quot;Oh, I know what that is, it’s the little screen in my car with the navigator&quot;. No people, that’s &lt;a href=&quot;http://en.wikipedia.org/wiki/Global_Positioning_System&quot;&gt;GPS&lt;/a&gt;. Smarter responses include &quot;Is that part of GPS?&quot; and &quot;Yeah, I know what that is, I use Google Maps&quot;. But All of that is still not GIS. So, I’m gonna write this down for one last time and the next person to ask me about what I’m doing for living, I’ll just give him the link for this post.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GPS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s start with the most known one, GPS. The Global Positioning System is a network of satellites that orbits around the earth at let a receiver device determine its location, speed, direction, and time. The receiver device (which is commonly known as &quot;GPS&quot;) needs to be connected to at least 4 satellites to determine its location, and hence speed, direction and time. GPS is an American system, and it’s the only completely implemented global navigation satellite system. There are other GNSS like Russian &lt;a href=&quot;http://en.wikipedia.org/wiki/GLONASS&quot;&gt;GLONASS&lt;/a&gt;, European &lt;a href=&quot;http://en.wikipedia.org/wiki/Galileo_positioning_system&quot;&gt;Galileo&lt;/a&gt;, the proposed Chinese &lt;a href=&quot;http://en.wikipedia.org/wiki/COMPASS_navigation_system&quot;&gt;COMPASS&lt;/a&gt;, and Indian &lt;a href=&quot;http://en.wikipedia.org/wiki/Indian_Regional_Navigational_Satellite_System&quot;&gt;IRNSS&lt;/a&gt;. GPS devices are now widely, not just used but also, integrated into other devices like cars, smart phones, and cameras.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GIS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Geographic Information System is the implementation of database for spatial data. If a database can have text, numbers, dates, and photos, it can have maps as well. It’s not just about the location, it’s about querying the location and analyzing that location with respect to other locations. It’s just like querying and analyzing tabular data. The only difference is that if a picture is worth a thousand words, a map is worth a thousand pictures.&lt;/p&gt;

&lt;p&gt;GIS is a mix of science (Geography), information systems, and modern software technologies that hasn’t - unfortunately - exploit the potentials of GIS yet, but hopefully one day it will.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GeoWeb&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the new buzz, and I think we owe the credit to &lt;a href=&quot;http://en.wikipedia.org/wiki/Keyhole,_Inc.&quot;&gt;Keyhole&lt;/a&gt;. Keyhole was the company that created the software that we know now as Google Earth. In 2004, Google acquired Keyhole and changed their paid software to a free software that we all use now.&lt;/p&gt;

&lt;p&gt;It was Google Earth and its user generated content that required the creation of this new term &quot;GeoWeb&quot;. GeoWeb is basically to provide a geographic dimension to the information on the web. You want to find a house in your area, but what really defines &quot;Your Area&quot;, it’s where you think is close to you and you can’t define that unless you use a map.&lt;/p&gt;

&lt;p&gt;Even though GeoWeb is the natural evolution of GIS - It’s GIS for the public, where everyone can search, add, or analyze spatial-based information -, the GeoWeb didn’t come from a GIS software company but rather a company founded only in 2001.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LBS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Location-based_service&quot;&gt;Location Based Services&lt;/a&gt; is the product of GIS, GPS, GeoWeb, and mobile computing. Here’s a scenario of what LBS can offer, you’re on the go and you want to find the nearest favorite sports store, you pick up your cell phone and connect to the Internet to get that info, easy, then you get directions to the store and as you move, the cell phone adjusts the route and suggests other routs depending on the traffic and how long is the route, still easy. As you approach the store you get a message telling you that there’s another sports store near by that is offering 50% discount on exactly what you’re looking for. Now, that’s not easy. Of course there are &lt;a href=&quot;http://en.wikipedia.org/wiki/Location-based_service#LBS_applications&quot;&gt;other applications&lt;/a&gt; to LBS, but this is one of its most widely known ones. It’s about offering the right information at the right time in the right location so you can act on it immediately, and if that info is an ad, that mean there gonna be &lt;a href=&quot;http://www.google.com&quot;&gt;people&lt;/a&gt; looking forward for LBS.&lt;/p&gt;

&lt;p&gt;Google has been working building an &lt;a href=&quot;http://gigaom.com/2006/08/15/google-launches-wifi-network-in-mountain-view/&quot;&gt;alternative&lt;/a&gt; to LBS that can be implemented now. Based on a free widely available WiFi network, Google can distribute ads to those logging in to the network with their Google account.&lt;/p&gt;

&lt;p&gt;Downside, Privacy. LBS - in my opinion as one whose working in GIS - is a major violation of privacy. It’s not just that the service providers know who you are and what you’re interested in, but also where you are and where you’ve been. Your location is identified in real time but also could be logged very easily. And who knows who’s listening.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anyway&lt;/strong&gt;, forget about the differences between the technical terms. One thing is for sure, Location is next big buzz.&lt;/p&gt;

</description>
          <pubDate>Wed, 21 May 2008 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/GisGpsLbsGeoweb/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/GisGpsLbsGeoweb/</guid>
          
          <category>GIS</category>
          
          <category>GeoWeb</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Microsoft vs. Google: Is it a real fight?</title>
          <description>&lt;p&gt;I think it would be fair to say that there seem to be a competition going on between Microsoft and Google. It’s ridiculous to deny it since Microsoft is making all of those moves to compete with Google (Enhancing &lt;a href=&quot;http://www.microsoft.com/windows/products/winfamily/desktopsearch/default.mspx&quot;&gt;Windows&lt;/a&gt; Search, Ballmer &lt;a href=&quot;http://web-advertising.suite101.com/article.cfm/microsoft_advertising_strategy&quot;&gt;announcing&lt;/a&gt; that 25% of Microsoft revenues would come from advertising, &lt;a href=&quot;http://www.microsoft.com/presspass/press/2007/aug07/08-13MSaQuantivePR.mspx&quot;&gt;acquisition&lt;/a&gt; of aQuantive for 6B$, and &lt;a href=&quot;http://www.microsoft.com/presspass/press/2008/feb08/02-01CorpNewsPR.mspx&quot;&gt;offer&lt;/a&gt; to buy Yahoo! for more than 44B$). Even though the two companies doesn’t share much of battlegrounds (search and online advertising, which both represent a fraction of Microsoft revenues), The two companies - especially Microsoft - seem to be more concerned with one another more and more. Why is that?&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;A few years back when Google was on the rise, the question &quot;How can stop Google?&quot; was naturally followed by &quot;Could it be Microsoft?&quot;. The collision of the two powers is a natural course of events, and Microsoft is thinking &quot;let’s do it now before Google &lt;a href=&quot;http://www.alleyinsider.com/2008/5/google_to_surpass_size_of_microsoft_windows_in_2009&quot;&gt;gets too big&lt;/a&gt; to handle&quot;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Google expanding its products to provide cheap (free is cheap, right?) only-core-widely-used-features everywhere-accessible alternatives to Microsoft products (for example, Google Docs vs Office) is threatening Microsoft future revenues. It kinda feels like Netscape replacing windows all over again. Microsoft is thinking &quot;It’s not about generating more profit, it’s a matter of national security&quot;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The business model offered by Google, a company offering free products that makes millions of dollars, is more effective than Microsoft traditional-software-company business model. Microsoft is thinking &quot;Adopt it or beat it, or maybe adopt it and beat everybody else&quot;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Google’s products are the closest thing to Microsoft’s Software-as-a-Service licensing model that was supposed to replace the traditional license model currently used. Microsoft is probably thinking &quot;Those Google guys stole my idea and they’re making money of it, I’ll #&amp;amp;jlk%fn&amp;amp;h!i* them&quot;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Online advertising is generating more profit everyday. Microsoft is thinking &quot;Why not get a bigger piece of the pie&quot;.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Well, we’ve established that there is a fight. But how real is it?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Microsoft can avoid the &lt;a href=&quot;http://www.alleyinsider.com/2008/5/google_to_surpass_size_of_microsoft_windows_in_2009#comment-4829b325796c7a88001709b4&quot;&gt;&quot;If Google is winning, then we must be losing&quot;&lt;/a&gt; attitude which seem be driving the company lately, like the Microhoo merger that will take at least a year to be active because of all the in-house arrangements that has to happen. Stopping that attitude will make the fight look much less intense.&lt;/li&gt;
  &lt;li&gt;Microsoft should take a moment and re-plan its online strategy, at least to avoid all the redundant services (for example, &lt;a href=&quot;https://www.foldershare.com/welcome.aspx&quot;&gt;Folder Share&lt;/a&gt;, &lt;a href=&quot;http://skydrive.live.com/&quot;&gt;SkyDrive&lt;/a&gt;, and &lt;a href=&quot;https://www.mesh.com/Welcome/Welcome.aspx&quot;&gt;Live Mesh&lt;/a&gt;). This might give Microsoft’s effort in online services a chance to compete with Google in that area.&lt;/li&gt;
  &lt;li&gt;Even though online advertising is driving Google’s revenues, Google’s services is what’s threatening Microsoft. And while it’s a good strategy to directly compete in online advertising which will dry Google funds for building those services, it’s still sufficient to build better services - or software - to limit Google services’ affect on Microsoft revenues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How real is the fight, if someone came out on top.. then, it’s real.&lt;/p&gt;
</description>
          <pubDate>Sat, 17 May 2008 00:00:00 -0700</pubDate>
          <link>https://amreldib.com//blog/MicrosoftVsGoogle/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/MicrosoftVsGoogle/</guid>
          
          <category>Google</category>
          
          <category>IT Industry</category>
          
          <category>Microsoft</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Internet Day to Day Tools - for Geeks Only</title>
          <description>&lt;p&gt;As you use the Internet on daily basis, either in work or home or both, for business or pleasure, you spend more and more time in front of your browser. Over the last month, I’ve been trying to cut down the time I spend on daily activities on the Internet. Here are some of the tools that helped me do that and others that introduce some really great benefits that might come in handy for you too..&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Essential Tools&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt; &lt;a href=&quot;http://www.mozilla.com/en-US/&quot;&gt;&lt;strong&gt;Firefox&lt;/strong&gt;&lt;/a&gt;: There’s one feature in firefox that IE can’t compete with, and that is Extensions. When I was on the edge between using IE or Firefox, Extensions - and themes also - was the winning card for firefox.*   &lt;a href=&quot;http://www.google.com/reader&quot;&gt;&lt;strong&gt;Google Reader&lt;/strong&gt;&lt;/a&gt;: Great Web based RSS reader from Google. Not only you get to follow your favorite RSS feeds through this simple well-designed Ajax interface, but also, you can share the posts you find most interesting directly with your friends, you can also have a URL of page listing those posts. You can also receive links of feeds as recommended by Google (of course, through inspecting your data) which can be very accurate.*   &lt;strong&gt;&lt;a href=&quot;http://windowslivewriter.spaces.live.com/&quot;&gt;Windows Live Writer&lt;/a&gt;&lt;/strong&gt;: very cool blog writer tool from Microsoft. With colorful very nice interface, WLW is open to large number of blogging services, starting of course with Windows Live.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/browse/type:3&quot;&gt;&lt;strong&gt;Spell-check dictionaries&lt;/strong&gt;&lt;/a&gt;: you can get spell check as you’re writing e-mails or any text in web pages in firefox by installing the dictionaries of the languages you use. It might be not as accurate in corrections as Office but at least it’s gonna catch the wrong words.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/2109&quot;&gt;&lt;strong&gt;FEBE&lt;/strong&gt;&lt;/a&gt;: Backup firefox data including extensions, themes, bookmarks, preferences, cookies, and many more..&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Development and Technology&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.codeproject.com/script/News/List.aspx&quot;&gt;&lt;strong&gt;CodeProject Newletter&lt;/strong&gt;&lt;/a&gt;: a careful daily selection of 8 IT industry and development headlines with very hilarious comments. You need to register in &lt;a href=&quot;http://www.codeproject.com&quot;&gt;CodeProject&lt;/a&gt; to receive this newsletter.*   &lt;a href=&quot;http://www.codinghorror.com/blog/archives/000682.html&quot;&gt;&lt;strong&gt;Jeff Atwood Visual Studio Settings&lt;/strong&gt;&lt;/a&gt;: Great VS color schema for both 2005 and 2008. &lt;a href=&quot;http://www.codinghorror.com/blog/files/exported-font-and-colors-for-jeff-atwood-sept-19.zip&quot;&gt;Download Here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bookmarks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/4496&quot;&gt;&lt;strong&gt;Online Bookmark Manager - StartAid&lt;/strong&gt;&lt;/a&gt;: Haven’t you ever want to show your friend that web site that you bookmarked couple a days ago, but you can’t remember the URL. Bookmarks (or Favorites for IE users) is a great tool but you depend on it too much that it makes you forget URL. StartAid helps you solve this problem by offering an online bookmark manager that has a web interface in a folder hierarchy with the ability to show those bookmarks in a firefox menu just like firefox bookmarks and a side tab to offer search capabilities. Also, sharing bookmarks and searching others’ bookmarks are great features offered by this extension.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/2410&quot;&gt;&lt;strong&gt;Foxmarks Bookmark Synchronizer&lt;/strong&gt;&lt;/a&gt;: If you’re using firefox on more than one machine, you would like to sync your bookmarks between those machines. This extension helps do that.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Google-Related&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/6076&quot;&gt;&lt;strong&gt;Better Gmail 2&lt;/strong&gt;&lt;/a&gt;: Adds enhancements to the GMail web page. You can prefer &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/4866&quot;&gt;Better Gmail&lt;/a&gt;, you can read the differences &lt;a href=&quot;http://lifehacker.com/software/exclusive-lifehacker-download/better-gmail-2-firefox-extension-for-new-gmail-320618.php&quot;&gt;here&lt;/a&gt;.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1320&quot;&gt;&lt;strong&gt;Gmail Manager&lt;/strong&gt;&lt;/a&gt;: manages Gmail accounts and shows notifications of new e-mails.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3977&quot;&gt;&lt;strong&gt;Google Reader Notifier&lt;/strong&gt;&lt;/a&gt;: notification of Google Reader updates.*   &lt;a href=&quot;http://gears.google.com/&quot;&gt;&lt;strong&gt;Google Gears&lt;/strong&gt;&lt;/a&gt;: this doesn’t really adds direct tool to the browser, but it enables web applications to provide offline functionality using JavaScript APIs. A functionality that is nice to have if you’re using laptop.*   &lt;a href=&quot;http://www.google.com/tools/firefox/browsersync/&quot;&gt;&lt;strong&gt;Google Browser Sync&lt;/strong&gt;&lt;/a&gt;: This extension from Google continuously synchronizes including bookmarks, history, persistent cookies, and saved passwords – across multiple computers.*   &lt;a href=&quot;http://www.google.com/notebook&quot;&gt;&lt;strong&gt;Google Notebook&lt;/strong&gt;&lt;/a&gt;: allows you to store notes on web pages using a popup in your browser.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/918&quot;&gt;&lt;strong&gt;gTranslate&lt;/strong&gt;&lt;/a&gt;: Translates the selected text via Google Translate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Firefox Interface Customization&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1812&quot;&gt;&lt;strong&gt;CoLT&lt;/strong&gt;&lt;/a&gt;: Adds a Copy Link Text item to the browser’s context menu along with the Copy Link Location item.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1330&quot;&gt;&lt;strong&gt;CuteMenus&lt;/strong&gt;&lt;/a&gt;: Adds icons to all menus.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3176&quot;&gt;&lt;strong&gt;Favicon Picker 2&lt;/strong&gt;&lt;/a&gt;: adds UI for replacing bookmarks icon.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1951&quot;&gt;&lt;strong&gt;Fission&lt;/strong&gt;&lt;/a&gt;: puts the progress bar in the address bar like Safari.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/4882&quot;&gt;&lt;strong&gt;Tab Scope&lt;/strong&gt;&lt;/a&gt;: Vista-like live thumbnails for firefox tabs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Other tools&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.skype.com&quot;&gt;&lt;strong&gt;Skype&lt;/strong&gt;&lt;/a&gt;: turns every phone number on each web page to a click-able link that can be called directly using Skype.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/2194&quot;&gt;&lt;strong&gt;SearchWith&lt;/strong&gt;&lt;/a&gt;: search selected text with various search services from context menu.*   &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/5490&quot;&gt;&lt;strong&gt;MrUptime&lt;/strong&gt;&lt;/a&gt;: Get notified when an unavalible web site starts to work again.*   &lt;a href=&quot;http://www.ideashower.com/ideas/active/read-it-later/&quot;&gt;&lt;strong&gt;Read it Later&lt;/strong&gt;&lt;/a&gt;: Save pages to read later instead of keeping them as open tabs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let us know what tools are you using…&lt;/p&gt;
</description>
          <pubDate>Wed, 26 Dec 2007 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/InternetDayToDayToolsForGeeksOnly/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/InternetDayToDayToolsForGeeksOnly/</guid>
          
          <category>Tools</category>
          
          <category>Personal</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Windows 7: What it's Rumored to Have, and What It should Have</title>
          <description>&lt;p&gt;As the year is coming to an end, everyone is gazing into the future and making predictions for 2008. So, I thought I’d gaze a little into the future of Windows..&lt;/p&gt;

&lt;p&gt;Windows 7 is the codename for the next windows version, as you all might know by now. Until now, number of features of the next windows has been &lt;a href=&quot;http://arstechnica.com/news.ars/post/20071112-early-windows-7-feature-list-leaked-to-the-public.html?rel&quot;&gt;leaked&lt;/a&gt;/&lt;a href=&quot;http://arstechnica.com/news.ars/post/20071218-reality-check-what-we-know-and-dont-about-windows-7.html&quot;&gt;rumored&lt;/a&gt; recently, even &lt;a href=&quot;http://apcmag.com/7668/beyond_vista_windows_7_what_we_know_so_far&quot;&gt;some snapshots were claimed to of windows 7&lt;/a&gt;. The list contains some obvious, known, demanded, and - of course - copied features, like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Virtual machines for legacy software:&lt;/strong&gt; one of the main reasons for the late adoption for Vista by users is for incompatibility for most software. And as Windows team would want to make larger modifications in the OS, they should worry more about this issue. Apple people had a similar situation when moving from OS 9 to OS X, to overcome this they had &quot;Classic&quot; programs run in a virtual machine mode. With the &lt;a href=&quot;http://en.wikipedia.org/wiki/Windows_Server_2008#Hyper-V&quot;&gt;Hyper-V&lt;/a&gt; feature in the new Windows Server 2008, it’s possible for Microsoft to think about including a virtual machine mode to run classic programs too. This would give the development team the advantage of making as much modifications as they want.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. New smaller kernel:&lt;/strong&gt; Vista is installed in almost 14GB (just the windows folder on my machine) unlike XP that is around 3GB, if we’re going to continue on this ratio.. we’ll be seeing a 100GB OS soon. It’s not about hard disk size, HDs gets more GBs every year with cheaper prices. It’s about re-building the core of system instead modifying the existing one. Microsoft didn’t change much of the core of windows since NT, maybe it’s time to do so.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. **&lt;a href=&quot;http://en.wikipedia.org/wiki/WinFS&quot;&gt;**WinFS**&lt;/a&gt;&lt;/strong&gt;:** Microsoft promised to include WinFS in Vista and they didn’t. WinFS is as fancy idea as it’s wanted. WinFS is announced to be included in ADO.NET Entity Framework and SQL Server 2008. In November 2006, Steve Ballmer &lt;a href=&quot;http://www.crn.com/software/196600671&quot;&gt;said&lt;/a&gt; that WinFS will be integrated in the windows codebase after the development has fully completed, which should be in time for Windows 7.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Entirely new look:&lt;/strong&gt; Vista got a new GUI , Areo, with significant new look, but the experience is the same as XP. Microsoft should inspect the real needs of the users and modify the experience to fit that, like they did in Office 2007. Luckily enough, &lt;a href=&quot;http://www.microsoft.com/presspass/exec/ssinofsky/default.mspx&quot;&gt;Steven Sinofsky&lt;/a&gt; who is the Senior Vice President for the Windows Engineering Group, was responsible for developing Office 2007. Maybe he’ll do the same in the new position..&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. De-coupling the interface from the explorer shell:&lt;/strong&gt; sounds like a complicated inner behind-the-scene feature, but actually this would affect the user interface in a great way. Now, you can change the whole interface and still make full benefit of the shell.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Multi-touch Support:&lt;/strong&gt; with Microsoft Surface going from research to production and Support for Tablet-PCs, Supporting Multi-touch in windows seems like a good idea.&lt;/p&gt;

&lt;p&gt;That’s what Windows 7 is most likely to have according to number of articles, but what it should have..&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Better file operation management:&lt;/strong&gt; Don’t you just hate how XP is handling copy operations. If you don’t, try to copy two files in parallel rather than in sequence, it’ll take you almost twice as much time. Or try to copy/move a large folder to another drive and after half an hour you get this message that there’s no enough space. What if you left your machine and came back in an hour assuming that copying is in progress but actually it’s not. Also, There’s the un-explainable waiting before displaying the confirmation message when trying to delete a large number of files. Well, that was in XP, what about Vista? I tell you, it’s even worse.. I miss the good old days of XP when it comes to copying. In Vista, you can’t rename/delete/move any file on the System drive without getting all those confirmation messages (at least 3 messages). And it’s also slow, and when I say slow, I mean sloooooow. Of course, I don’t need to mention the crazy estimated time counter, One time, &lt;a href=&quot;http://microsoft.blognewschannel.com/archives/2007/12/07/vista-file-copying-is-blazing-fast/&quot;&gt;Vista indicated that it needs 129 years to complete the remaining 7.55MB&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It’s not that hard to have better copy operation. Check out those copy managers like &lt;a href=&quot;http://www.copyhandler.com/en/downloads/4.html&quot;&gt;Copy Handler&lt;/a&gt;, and &lt;a href=&quot;http://www.ranvik.net/totalcopy/&quot;&gt;Total Copy&lt;/a&gt;. That’s not impossible to do, right? Copy operations in windows needs Pause and Resume capabilities, better handling for parallel copying, fault tolerance for network failure when copying over network or for removable devices, Minimize to tray button, centralized window for all operations and maybe history recording, and to put more human common sense in the sequence of messages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Less/No **&lt;a href=&quot;http://en.wikipedia.org/wiki/User_Account_Control&quot;&gt;**UAC (User Account Control)**&lt;/a&gt;&lt;/strong&gt; pop-ups:** If you didn’t hear about UAC and how it operates, expect a moment of panic when your first UAC message pop up. But don’t worry, you’ll get used to it, as more and more are coming your way.&lt;/p&gt;

&lt;p&gt;For those how hasn’t experienced UAC, here’s how it work. The screen turns to black in the same way it turns off, and then in about a moment everything is grayed and here’s your UAC message, why the suspense? and for what? No UAC message has ever warned me about something I don’t know, instead it treats Visual Studio 2005, VMware Workstation, and Real Player as they’re programs that are about to violate my machine.&lt;/p&gt;

&lt;p&gt;Of course, the principle idea behind UAC is running applications processes in a standard user privileges until the user grant them higher privileges. But, it’s handled very badly as a user experience and most importantly, Applications still not playing nicely with it. Microsoft is putting avoiding UAC messages as an essential part in their conditions to grant application the &quot;Certified for Vista&quot; logo. But that’s just for small companies or close partners to Microsoft, other wise, the user has face those messages on daily basis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Less minimum requirements:&lt;/strong&gt; One of the primary reasons for Vista’s low distribution numbers is the high configurations that are set as minimum requirements for running the OS. And don’t get fooled with the &quot;Vista Capable&quot; statement, this’s just mean that you’re gonna be running the OS, but we’re not sure about other programs. To run Vista in a comfortable way, you need a dual core processor, and 2GB of RAM, not to mention a upper-medium graphics card.&lt;/p&gt;

&lt;p&gt;It’s not that difficult to expect when new hardware will be available, and when it will be mainstream. The hardware (Processors, Memory, and Graphic Cards like Intel, AMD, MSI, and those people) companies and PCs (Desktop and laptops like HP, Dell, and Toshiba) companies, they have road maps for these things and they can tell you if you lunch an OS in 2010 what kind of configuration will be available. If Microsoft took couple of hours to search on the Internet for these information (even without using &lt;a href=&quot;http://www.google.com&quot;&gt;Google&lt;/a&gt;), you should be able to fix the Vista hardware mistake.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Themes:&lt;/strong&gt; Microsoft promised to enable themes in both XP and Vista, but didn’t deliver. Large number of applications are allowing themes and actually helping developers and designers building themes, and also a large number of applications are turning to web applications which can change their looks every now and then or even allowing personalization. Microsoft should keep their promise this time, if they make one..&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. .NET framework built into Windows core:&lt;/strong&gt; The idea behind the &lt;a href=&quot;http://en.wikipedia.org/wiki/Common_Language_Runtime&quot;&gt;CLR&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Just-in-time_compilation&quot;&gt;JIT compilation&lt;/a&gt; of the .net framework is to allow converting written code in the time of execution to the code appropriate to the platform which the application is running on, like the &lt;a href=&quot;http://en.wikipedia.org/wiki/Just-in-time_compilation&quot;&gt;Java Virtual Machine&lt;/a&gt;. But wait a minute, Isn’t Microsoft only releasing .net framework for the Windows platform. Yes, &lt;a href=&quot;http://en.wikipedia.org/wiki/Shared_Source_Common_Language_Infrastructure&quot;&gt;they’re sharing source of the CLI&lt;/a&gt; and Novell is building &lt;a href=&quot;http://en.wikipedia.org/wiki/Mono_%28software%29&quot;&gt;Mono&lt;/a&gt; but .net applications are not really platform independent. On the other hand, Maybe Microsoft’s perfect chance to push the .net as a development option for commercial software (and not just solutions) built by enterprises is to play their favorite move and integrate .net into the core of Windows.&lt;/p&gt;

&lt;p&gt;If Microsoft pushed the framework into the core of the system and done it right, maybe that’s will help overcoming the performance problem known for the .net applications.&lt;/p&gt;

&lt;p&gt;I don’t know if this is possible or not, but maybe it’s worth thinking about.&lt;/p&gt;

&lt;p&gt;What do you think.. what would you like the next windows version, Windows 7, to have.. let us know..&lt;/p&gt;
</description>
          <pubDate>Mon, 24 Dec 2007 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/Windows7Rumors/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/Windows7Rumors/</guid>
          
          <category>Windows</category>
          
          <category>IT Industry</category>
          
          <category>Microsoft</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>How Firefox Makes Money</title>
          <description>&lt;p&gt;&lt;img class=&quot;imageOnRight&quot; src=&quot;/public/images/blog/HowFirefoxMakesMoney/FirefoxLogo.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Ever wondered how firefox is still running even though all of Mozilla’s products are for free..&lt;/p&gt;

&lt;p&gt;First, it must be denotations, the “Best Browser Implementing Web Standards” - according to Mozilla - must be receiving lots of denotations from its wide user base. But There are actually two Mozillas, the Foundation and the Corporation.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://en.wikipedia.org/wiki/Mozilla_Foundation&quot;&gt;Foundation&lt;/a&gt; is a non-profit organization that handles the leadership for the open source Mozilla project, the polices, key infrastructure, trademarks and that stuff. Its revenue is tax-exempt status under the U.S. tax code as it’s based in Mountain View, California.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://en.wikipedia.org/wiki/Mozilla_Corporation&quot;&gt;Corporation&lt;/a&gt; is a subsidiary of the foundation that coordinates the development of internet-related applications such as &lt;a href=&quot;http://en.wikipedia.org/wiki/Mozilla_Firefox&quot;&gt;firefox&lt;/a&gt;. It also depends on denotations but there’s also a deal with Google that whenever a user uses that little search box on the top right and he/she clicks an ad in the search results offered by Google, Mozilla gets 80% of the revenue. That little box is &lt;a href=&quot;http://www.calacanis.com/2006/03/06/firefox-mozilla-corporation-mozilla-foundation-made-72m-last/&quot;&gt;rumored&lt;/a&gt; to had made $72M last year. It’s &lt;a href=&quot;http://en.wikipedia.org/wiki/Mozilla_Foundation&quot;&gt;confirmed&lt;/a&gt; (by Wikipedia, read the Financing section) that $61.5M were Mozilla’s revenues in 2006 because of the little box out of a total $66.8M of revenues.&lt;/p&gt;

&lt;p&gt;It’s good to see Mozilla going strong financially as they are technically. Looks like the red fox is gonna be sticking around for a while.. bad news for the guys in Redmond..&lt;/p&gt;
</description>
          <pubDate>Wed, 12 Dec 2007 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/HowFirefoxMakesMoney/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/HowFirefoxMakesMoney/</guid>
          
          <category>IT Industry</category>
          
          <category>Firefox</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
        <item>
          <title>Welcome to my blog</title>
          <description>&lt;p&gt;Welcome to my blog,
This is my second trial to have a blog, visit my my &lt;a href=&quot;http://amrgis.spaces.live.com/&quot;&gt;old blog&lt;/a&gt; at live spaces. last time I tried to write complete full articles about technologies. even though that was great, I was too busy to find enough time to research a subject to write about. This time I’m gonna try to do it differently…
Try to stick around, and let’s see how is goes…&lt;/p&gt;

&lt;p&gt;Amr&lt;/p&gt;
</description>
          <pubDate>Thu, 29 Nov 2007 00:00:00 -0800</pubDate>
          <link>https://amreldib.com//blog/WelcomeToMyBlog/</link>
          <guid isPermaLink="true">https://amreldib.com//blog/WelcomeToMyBlog/</guid>
          
          <category>My Blog</category>
          
          
          <category>blog</category>
          
        </item>
      
    
      
    
  </channel>
</rss>
