February 26, 2013
It’s been awhile since I was into a book that much. It’s not amazingly written but its story has kept me engaged from the beginning to end, every night after work, listening to its audio book on my commutes, and dedicate a full weekend for it – the weekend is priceless for a software engineer as you all might know. I highly recommend this book for all the value creators.
The book is a fictional story about Alex Stapleton, an advertising agency owner, and his struggle to convert his business into a sellable one. With the help of his friend Ted, he converts the business from a struggling one that relies too heavily upon him and a single, overly demanding client, to a highly-focused one that thrives without his constant low-level involvement.
If you’ve read many business books on the subject of entrepreneurship and management, these concepts will seem very familiar, but set in a slightly different context. Throughout the book, I felt that the content borrowed heavily from the E-Myth – who the author credits in the appendix. The important variation from E-Myth is that the owner is preparing to sell the business. Everything he does in terms of automating and streamlining the operations is done within the framework of the question: "How will this help me sell this company?"
After the story concludes, the author summarizes the key points, which seems a little redundant but helpful, along with some personal experiences. The greatest flaw of this book is that it never addresses the problems you might have at different points along this process. Again, I highly recommend this book and I hope I get the time to read again next year.
February 16, 2013
Two months ago I was invited to a meeting with the Egyptian activists and Aldostour party supporters Sherif Mansour, Zaid Salah, and Amgad Abdelhafez at one of the Egyptian cafes at the Arabic Steinway in Astoria. We were discussing our local plan, projects and activities for the upcoming months. Among other projects we agreed on initiating an effort to build a mobile app for the party and help provide another means of communication for a growing mobile user community.
The technical goals for the app development can simply be summarized in:
1. Cross platform mobile development: One codebase – easier development, testing and maintenance. The app should be Installed as a native app for as many devices as possible, this includes iOS, Android, Windows Phone, Blackberry, etc.
The existence of many frameworks like RhoMobile, PhoneGap, Appcelerator, Mosync, Corona, etc. – more info here – made it a little hard to pick one in the limited time we had. Based on the online reviews and recommendations, I have narrowed this down to PhoneGap and Appcelerator.
The App is still a work-in-progress. We are planning to release a beta version by the end of March. Please contact me @waleedeg if you would like to join the development team or know more.
December 31, 2011
- Voyage through time – Ahmed Zeweil – 3-Star
- Developer’s Workshop to COM and ATL 3.0 – Andrew W. Troelsen – 3-Star
- Advanced Windows Debugging – Hewardt and Pravat – 4-Star
- The Data Warehouse ToolKit – Margy Ross – 4-Star
- The Google Resume – Gayle McDowell – 5-Star
- Inside the Microsoft Build Engine – Sayed Hashimi – 4-Star
- Learning Perl (the llama book) – Randal Schwartz – 4-Star
- Large Scale C++ Software Design – John Lakos – 3-Star
- Exceptional C++ – Herb Sutter – 4-Star
- Into the wild – Jon Krakauer – 3-Star
- The big 5-oh – Sandra D. Bricker – 2-Star
- Be your own best publicist – Jessica Kleiman and Meryl Cooper – 3-Star
- Automating System Administration with Perl – David Blank-Edelman – 1-Star
- Windows Internals 5th edition – Mark Russinovish – 3-Star
- Emotional Intelligence 2.0 – Travis Bradberry and Jean Greaves – 2-Star
- Windows via C/C++ – Jeffrey M. Richter, Christophe Nasarre – 5-Star
- More Exceptional C++ – Herb Sutter – 3-Star
- Programming Windows Azure – Sriram Krishnan – 4-Star
- Azure in Action – Chris Hay and Brain Prince – 1-Star
- Introducing HTML5 – Bruce Lawson and Remy Sharp – 3-Star
- Outliers – Malcolm GladWell – 4-Star
Ratings: 5-Star: Must read; 1-Star: Don’t waste your time
This was the list of books I was fortunate to read last year, I hope you find them inspiring and useful, and maybe share yours too. I’ve the books available if you want any of them for free.
Happy New Year!
September 5, 2011
Writing shell extensions is one of those programming tasks in which C++ (with the help of a library like ATL) excels – an MSFT explained here why it is better to avoid .NET for writing shell extensions.
Michael Dunn (a former Visual C++ MVP) wrote a very interesting series of tutorials on CodeProject on developing shell extensions, they are worth listing and sharing:
- A step-by-step tutorial on writing shell extensions.
- A tutorial on writing a shell extension that operates on multiple files at once.
- A tutorial on writing a shell extension that shows pop-up info for files.
- A tutorial on writing a shell extension that provides custom drag and drop functionality.
- A tutorial on writing a shell extension that adds pages to the properties dialog of files.
- A tutorial on writing a shell extension that can be used on the Send To menu.
- A tutorial on using owner-drawn menus in a context menu shell extensions, and on making a context menu extension that responds to a right-click in a directory background.
- A tutorial on adding columns to Explorer’s details view via a column handler shell extension.
- A tutorial on writing an extension to customize the icons displayed for a file type.
June 10, 2011
I’ve been looking for an efficient way to delete all items in a list using the SharePoint list webservice, a few friends have helped me with some good references to get it done by using CAML (@AhmedIG) or by using CSOM (Haytham), you can check them out and see if they solve the problem under your constrains, the challenging part of the problem is you usually don’t produce the item IDs for a list and just allow the SP to do the job for you, you also might discard maintaining the item IDs in your newly created or loaded items in your items collection.
In order to create the below XML batch we will need to build the delete method tags using the existing items’ IDs, so additional IDs retrieval would be required to create a single delete batch (using the GetListItems web service method, as long as we are using the SP list web-service only in our context)
The solution starts here, a method returns an ArrayList of item IDs, to be used by the batch delete method. The GetListIDs method uses the GetListItems web service method to retrieve one field only – the Item ID – of all the items in the list.
And here’s the Delete method which already takes the IDs ArrayList returned by the GetListIDs method then constructs one delete XML batch, and we’re done, all items are deleted in one shot.
June 7, 2011
A simple task as adding an item to a SharePoint list has a lot of good-to-know stuff attached to it, the first problem-solving track I toke was using the Windows SharePoint Services classes to construct objects like the SPSite, and SPWeb and for the good reasons this wouldn’t work as I’m doing some data integration processing on a remote integration service (pulling data from different sources, do some processing, and then inserting them into a SharePoint list), as the other objects will allow you to construct them if and only if the script will run on the SP host machine so there’s no other way except using the SharePoint Web-Services to access site-collection lists remotely. after digging here and there for the best way to do it, I finally created the following chuck of code on my pilot project – the code has some tips that would save you a few hours of debugging..
Some helpful resources:
April 25, 2011
When it comes to writing a code library and you wish to write a function that takes both function pointers and functors then it’s the right time for you to use templates. The templated function will deduce the proper type for the functor or function pointer, and both functors and function pointers are used in the exact same way – they both look like function calls – so the code in the function will compile fine.
For example, let’s say you had this simple little find_matching_numbers function that takes a vector and returns a vector of all numbers for which a given function returns true.
We could convert this function to allow either functors or function pointers by templating on the type of the second argument: