Programmers all over the world will recognize the following book “The C Programming Language”. In fact I hear more people simply refer to it as “Kernighan and Ritchie” and I, like thousands of other developers, had my first introduction to “real” programming concepts and approaches from these very pages. As you can see below this is a fairly old version of the book and was actually “given” to me by an old friend who was attempting to subtly and positively help my career path (my thanks to Phil Robinson).  As I was skimming through this book it got me to consider what programming languages I have been exposed to during my life and the subsequent effect they have had on my career. For me it started with BASIC on a ZX Spectrum +2 as a young teenager. I remember trying to hack into the game, Football Director, and I was fascinated by the logic that helped determine whether my team would win or lose, and reviewing the GOTO statements that determined the flow of the game (which was a rabbit warren by the way). Of all the languages, on all the platforms, in all the PCs, I believe the family of C languages remains the most influential. I default to solving complicated problems in a C based language and then mentally convert as desired … I dream in C. Although I took a significant detour during the hey days of Visual Basic very little of the language remains with me at this point, however, a small part of me still dies every time I end a line with a semi-colon .
My History So here, in order, are the languages that constitute my programming lineage, some of these are relegated to the past (BASIC, 8086 Assembler, Turbo Pascal) others continue to evolve in some form or another (C#), and at least one appears to be taking off with the aid of support libraries. What programming languages guided your path?
There has been a lot of movement in cloud based services recently, especially Google and SkyDrive. Depending on your needs it was clear that the most cost effective and popular were a combination of Dropbox, SkyDrive and Google Drive. For me I had the opportunity to get 25Gb of cloud space for free with SkyDrive and so by default that was the logical choice. Here is a slightly biased comparison. Today Google Drive made some additional announcements (increases in size and integration) and so I took the opportunity to go over the Terms of Service (TOS), and I was a little shocked (bolding and highlighting is mine): Your Content in our Services Some of our Services allow you to submit content. You retain ownership of any intellectual property rights that you hold in that content. In short, what belongs to you stays yours. When you upload or otherwise submit content to our Services, you give Google (and those we work with) a worldwide license to use, host, store, reproduce, modify, create derivative works (such as those resulting from translations, adaptations or other changes we make so that your content works better with our Services), communicate, publish, publicly perform, publicly display and distribute such content. The rights you grant in this license are for the limited purpose of operating, promoting, and improving our Services, and to develop new ones. This license continues even if you stop using our Services (for example, for a business listing you have added to Google Maps). Some Services may offer you ways to access and remove content that has been provided to that Service. Also, in some of our Services, there are terms or settings that narrow the scope of our use of the content submitted in those Services. Make sure you have the necessary rights to grant us this license for any content that you submit to our Services. You can find more information about how Google uses and stores content in the privacy policy or additional terms for particular Services. If you submit feedback or suggestions about our Services, we may use your feedback or suggestions without obligation to you. Let me get this right if I create documents, store my photos, or upload music I produce I automatically give give Google and its partners a free worldwide license in perpetuity? Really? Google can also make derivative works cost free? I think not! Here is the Microsoft Service agreement for comparison. This is just a friendly reminder, please read the TOS for any service you start using, especially the free ones!
One of the things that shocked me most last year was hearing that Windows 8 *is* the tablet strategy for Microsoft. I was fully expecting some compromised OS that straddled between Windows Phone 7 and Windows CE, I then assumed this would represent the middle tier of devices. Build 2011 disabused me of that notion completely. In order to compete on multiple form factors Microsoft appears to be attempting a "One Ring to Rule them All" approach. Having fully reimagined the touch vernacular the idea is that one OS can essentially serve two masters. That you can have all the precision of the mouse and still shift to a fully touch enabled world (Metro). While Microsoft's alliance with Intel and AMD (x86/64) is well documented for Window's main OS there has been a whole class of hardware that has been assiduously avoided, namely ARM based systems. ARM is a 32-bit reduced instruction set computer (RISC) instruction set architecture developed by ARM Holdings. The ARM architecture is the most widely used 32-bit RISC architecture and the ARM processor's power efficiency, performing the same amount of work as other 32-bit processors while consuming one-tenth the amount of electricity. This has resulted in the widespread dominant use of the ARM processor in mobile devices and embedded systems. In 2005, about 98% of the more than one billion mobile phones sold each year used at least one ARM processor. The following is an abbreviated list of devices using the ARM processor for high end touch capable devices: This remains the exact type of consumer hardware Microsoft has traditionally poorly handled. The main focus of the high end ARM processors appears to be: -
All day active use/multiple days standby availability -
High definition multimedia -
Web 2.0 internet experience without sacrificing mobility -
A healthy ecosystem providing diverse apps, integration, for the consumer experience It is important as developers and IT experts to understand that while Windows on ARM (WOA) shares most of the common code and features of Windows 8, it would simultaneously be true that WOA constitutes a radically different branch and version of Windows. WOA enables a new type of PC with significant portions that may not be compatible with Windows 8 on x86/64. There is a clear indication that Microsoft has created all new metro tools for mail, calendaring, contacts, photos, and storage. Even more significant is that WOA will include its own desktop versions of the new Microsoft Word, Excel, PowerPoint, and OneNote. These applications have been redesigned for touch and minimized power consumption. It will be interesting to see how licenses are calculated based on what is essentially two versions of Windows, will I need a new license key for a WOA version of Office? This revelation leads to the question of what kind of development and deployment strategies will be needed when we start making applications that are not part of WinRT but still need to run on both WOA and Windows 8 x86/64? Will the bifurcation of Windows lead to a tax on all development efforts? Is there even an expectation for non Metro apps in the WOA world? Will we simply see a new Platform target?
I have yet to download Visual Studio 11 beta so I may be making a mountain out of a mole hill. I get that sense though that this tablet strategy will end applying some kind of technical tax and make our lives a little more complicated.
UPDATE: Windows RT will be a special versions Windows for WOA, more work for us all. Looks like office will be the only non Metro app applied outside the marketplace. Related Post
I was recently troubleshooting an issue with a dll that just would not install, as in “regsvr32”. For the first time in years I had a non .NET dll that had problems during the command line registration. Since my focus is all .NET recently, I would guess that is has been more than six years since dealing with and registering dlls in this fashion, so for a moment I just sat there wondering where to start. Then thankfully I was reminded of the command line tool Dependency Walker, after loading the dll it became clear what dependencies were missing. What is Dependency Walker(I hear you young .NET devs cry)? Dependency Walker will recursively scan all dependent modules required by a particular application. In the following screenshot I show the result of Dependency Walker evaluating the dependencies of DEPENDS.exe. During a scan it perform the following tasks: - Detects missing files. These are files that are required as a dependency to another module. A symptom of this problem is the "The dynamic link library BAR.DLL could not be found in the specified path..." error.
- Detects invalid Files. This includes files that are not Win32 or Win64 compliant and files that are corrupt. A symptom of this problem is the "The application or DLL BAR.EXE is not a valid Windows image" error.
- Detects import/export mismatches. Verifies that all functions imported by a module are actually exported from the dependent modules. All unresolved import functions are flagged with an error. A symptom of this problem is the "The procedure entry point FOO could not be located in the dynamic link library BAR.DLL" error.
- Detects circular dependency errors. This is a very rare error, but can occur with forwarded functions.
- Detects mismatched CPU types of modules. This occurs if a module built for one CPU tries to load a module built for a different CPU.
- Detects checksum inconsistencies by verifying module checksums to see if any modules have been modified after they were built.
- Detects module collisions by highlighting any modules that fail to load at their preferred base address.
- Detects module initialization failures by tracking calls to module entrypoints and looking for errors.
Dependency Walker can also perform a run-time profile of your application to detect dynamically loaded modules and module initialization failures. You can download Dependency Walker here.
I just downloaded and started using Adobe Muse (Codename) which for me represents the first real attempt to produce a WYSIWYG HTML design tool. I know what you are thinking, there are dozens of these tools out there. There may have been at least half a dozen from MS alone over the last few years. However, I do not believe there has been a single tool I have tried that I have not eventually given up and gone back to manipulating the HTML code directly. If you are an avid InDesign user this is the tool for you. Do not even look at Dreamweaver … check this video out and tell me how easy creating wireframes and web design can be. I will have you note that I have had a couple of unexplained crashes (this is beta), and also the html export feature gives the worst formatted html one could ever hope to see. However, if you plan to only work from the IDE and visual designer, I say take the good with the bad!
When windows phone first came out I was one of the first developers to release my apps into the Marketplace. However, that early adoption and release came at an unfortunate design price, as at the time there were very few compelling and diverse examples of the Metro design style. There were several documents that described the inspiration and source for the Metro styling, however, my personal design background did no really help me to absorb and translate that into a compelling application. I compiled a list of my favorite WP7 metro styled apps in the Marketplace, specifically ones that have used the design framework in a unique and interesting way. Some of them skirt closely to the edge of the “Metroness” but none the less remain true to its core. While reviewing the apps consider the following ideas closely: - Font is critically important
- Spacing can make or break the app
- Panorama view lends itself to intuitive motion
- Lists can include almost any object (picture, text, links) in vertical or horizontal
- Do not be afraid of color
 List of Apps        
|