Friday, November 11, 2011

Two days ago, I attended the IASA(International Association of Software Architects) meeting in Atlanta (http://www.iasaglobal.org/iasa/Atlanta_Chapter.asp) . The presenter Joseph DeCarlo   spoke about doing iOS development in the enterprise. After the presentation, I got to talking with him about his development experience. We spoke about a variety of topics; like his move from the .Net development to Mac development, and we spent time discussing SCM(Source Control Management) packages - including  TFS(Team Foundation System) and Git. The team he works with is moving away from TFS as they felt that TFS was "too heavy" a process, and they moved to Git to make thier development process  "lighter" (more agile).  I have been trying to get my employer to move toward TFS as a standard (what we are required to use now is an abomination from the software graveyards) - so this was an interesting discussion for me.  It left the impression that the Distributed version control approach, in this case Git, added an agility to a team, that TFS might not have.

 

Joseph DeCarlo said that he has learned enough about Git to teach it, and do presentations on it. When he first started looking at Git he was not so sure about it, and then he read two books about it, and was sold - to the point that he claims he would not use another source control system.  He said that the impact of using Git on his development experience was as large as going from C++ to .Net ( he worked  for 8 or more years in each of them). The discussion made me want to finally pull the trigger on doing the install of Git on my machine.

 

I still looked at some more posts on the "Git vs Mercurial" topic(more info gathering) -

 this post  tries to claim that Git is like MacGyver and Mercurial is like James Bond -it  was well written - however is a bit dated now - as Mercurial has added some new functionality (see the comments on the post).

Within this post,  the point is made that the community of developers is more important than the tool - which I agree with, and in my mind decides the tool to some degree- If that is the community that is working on the stuff I am interested in.

And finally a post from someone who used both products for over a year, proficient in both - it speaks about how you approach the "version control hygiene" can impact the entire project in using Git.

 

I have access to Safari Online, so getting books to read on a topic is great - and I looked up a couple of books on Git. From the book Pro Git - by Scott Chacone,  in the first chapter of the book, he cited the link  http://code.google.com/p/msysgit/ I had put in my earlier research post on "Git or Mercurial".  The link  from that site to "Install msysgit"went to https://github.com/msysgit/msysgit/wiki/InstallMSysGit - which went nowhere for me  --not reachable  - but there on the far left of the page ( http://code.google.com/p/msysgit/) are several install (exe) programs - I downloaded and ran the Full install program;  The executable  compiled and setup Git on my machine and the last bit of the install shows commands to create the shortcuts - I created a Start Menu and Desktop shortcut.  So now I have pulled the trigger and can  explore Git on my own.

 

 The experience of running the install (pretty painless) was far easier to do - than to do the research. I just like to know what it is I am getting into, and have an interest in seeing that there is a value in going in any certain direction before I go there. The discussion with Joseph DeCarlo had given me the push I needed to pull the trigger.

 

Now I have to learn the basics of how to use it!

After the install the help file is great place to start.

 

C:\msysgit\msysgit\doc\git\html\git.htm

 

BTW - I Did encounter an interesting interactive Git "cheat sheet"  ; (click in the horizontal bars you find there) - but need to learn the basics first.


 I hope I can carve out the time to learn it, and use it,  at least to some degree - over the next year.

Friday, November 11, 2011 11:30:50 AM (Eastern Standard Time, UTC-05:00)
 Sunday, October 30, 2011
A few years ago, I heard about  a product that was in development called Mole that was used for .Net debugging visualization(now the company is called Moloscope). Today, I came across a "topic category" called "moles" in a question on Stackoverflow- initially I thought this was the same thing- but it is not. Apparently, Microsoft research developed an  Isolation framework that allows test code to create a "detour" - a detour can replace the .Net framework calls with your own delegate - to execute your unit test with - by reworking the IL code for the .Net Framework code. The Microsoft Research group named it Moles. A one letter difference between very different tools.

The Moles Framework was new to me,  and since it was connected to Pex, a "white box" testing tool I heard about back in 2008, - I was very interested in knowing more on this. Code Project has an article on the combination of Pex and Moles usage in testing applications.

In the StackOverflow question I started with, there were links to three training videos on the use of Pex and Moles, delivered by Peli de Halleux in a class in Spain, so it starts in Spanish but the class is in English.  'Video Part 1'(00:58) starts with a software test that requires access to a hard disk - and by the end of the video they have replaced that test disk access with a Moles delegate and even step into the debugger with it. This video used overlays to ensure you had a camera view of the instructor or monitor - even when people were walking in front of a camera - your view is of the subject (some walk throughs do occur) -so it is one of the better live presentation video recordings I have seen. 'Video Part 2' (1:57), and 'Video Part 3'(2:26).

InfoQ has a video presentation entitled "Test First v.Next with Pex and Moles"  presented by David Star (from Pluralsight) given at DevTeach in Belgium during October 2011. In the presentation he introduces Pex, and then the use of Code Contracts which Pex recognizes, and then works in how to use Moles framework. This presentation is a good introduction to the use of all three tools for development work. Mr Star clarifies the framework as not being a "mock" framework.

The combination of the tools should prove useful in the right context. With an end goal of having good tests for your code, and where you need to fake, detour, round some difficult bits that can cause issues.

Sunday, October 30, 2011 11:11:40 AM (Eastern Standard Time, UTC-05:00)
 Monday, October 17, 2011
Quite by accident, I stumbled into Mary Jo Foley's article that mentioned the Microsoft Research Project  Drawbridge - and a Channel9 video on this.
From the Channel 9 description:
Drawbridge is a research prototype
of a new form of virtualization for application sandboxing. Drawbridge combines two core technologies: First, a picoprocess, which is a process-based isolation container with a minimal kernel API surface. Second, a library OS, which is a version of Windows enlightened to run efficiently within a picoprocess. Drawbridge combines two ideas from the literature, the picoprocess and the library OS, to provide a new form of computing, which retains the benefits of secure isolation, persistent compatibility, and execution continuity, but with drastically lower resource overheads.

Some time ago, there was an idea of each application having its own Virtual Machine space to run in - and it looks like this is another step toward that goal. Not sure it will make it into Windows 8, but it would not surprise me to see this as part of Windows 9. The Drastically reduced overhead, makes me wonder if they can get this to run on an ARM processor, or phone.

In the video, the indicate that they performed an experiment of running 25 Windows 2008 R2 web servers on a 16GB machine, and then when the switched the Web Servers to use the Drawbridge approach, they were getting "north" of 270 on the same hardware -of course they would have to be very lightly used web sites.

By refactoring the API layers to other modes (pulling Win32k.dll  into a user mode layer - and a usermode version NTUM that communicates through a new "Security Monitor" that exposes only 35 functions to the NTOSKRNL) they reduced the footprint of what is needed - and this could be getting small enough to run on a phone.

The Win32K that expects a Keyboard,  mouse, and clipboard, ends up communicating to a version of the Remote Desktop Server process (on the same machine) that emulates communicating over a network - within the processes - all isolated like a virtual machine. In fact the GUI requires using RDP to the instance that Drawbridge sets up.

Because this is all running stateless - it can save the state of the Drawbridge application - compressed, and send the application to another machine - rehydrate the application state - from any machine that can get to the cloud - due to the sandbox around the application.

It also reduced the threat surface - so it is also a very strong security play.

It is very much a prototype for a small team, and there is a good deal of work to get it to work with GPU processing - e.g. not working with IE9 right now. But it is a very promising direction that I expect to hear more about -hopefully before Windows 10.. :)


Monday, October 17, 2011 8:25:01 PM (Eastern Standard Time, UTC-05:00)
 Thursday, October 06, 2011
I had the realization, that this music player I use while working, has a calming and focusing effect on me. A co-worker had pointed this out a few days ago, that when things get crazy I probably turn to some type of music to 'reset' and get back on track.

I remembered that musical instruments became something I turned to when young, about the time my parents divorced. I also have a memory of wearing headphones for the very first time about the age of 11.

Music and programming have been known to go together for decades.. they have been key in my professional life.
The music blocks out distractions and helps me to reduce 'context switches' and that improves my productivity.

I just had not realized how long I have been doing this, until I remembered that first set of headphones.

Everyone has to find something that gives them that 'reset' to bring back the focus - and produce their best.

Thursday, October 06, 2011 9:46:11 AM (Eastern Standard Time, UTC-05:00)
 Wednesday, August 17, 2011
Firefox 6 came out during the last week. I then see a few tools that highlight using JavaScript to process what you would expect from something in native code via a plugin.
An MP3 decoder written within JavaScript
http://jsmad.org/

A PDF viewer written in Javascript - with footnotes, color, diagrams.

http://andreasgal.github.com/pdf.js/web/viewer.html#7

This ties back to the Hanselman interview with Erik Meijer -where he refers to JavaScript as the Assembly language of the web. The low level code that other tools are beginning to compile to -example Script# and other tools - that Hanselman followed up with in additional episodes.

All this makes me wonder what is coming in Windows 8. (maybe this is why the Build Conference sold out months ahead of the event?)

However - the MP3 player link above works in Firefox and not in IE9. So there is more work to be done in the browser area, but the efforts in this area of late are really noticeable. (IE8, IE9, beta of IE10 - Firefox 4, 5 and 6 were not that far apart .. maybe too close together for some). The rapid changes to the Google Chrome browser. This increasing pace and direction of standards in the browsers is interesting, and when tied to mobile phones, and tablets as the new devices, becomes more interesting and intriguing as to where computing in general is moving. Virtualization of computing resources, cloud integration, with those hardware changes,makes for a very dynamic landscape for the 2nd decade of the 21st century.

That dynamic element, for the computing world - in this decade, assumes the world economies can stay afloat...the force that will determine acceleration, or collapse at this point.


Wednesday, August 17, 2011 9:48:55 PM (Eastern Standard Time, UTC-05:00)