Mother of all Blog Posts
Building expertise in WPF / Silverlight

· Core Programming Concepts: Declerative programming, Dependency properties, DataBinding, Commands, Triggers, VSM, Control templating, the inheritence model , XAML extensions and control templating
· Transforms and animations - SVG experience helps
· Comprehend the core differences in SL and WPF- lack of Commands and Triggers (Behaviours and VSM are superior anyway), Calling different types of services (WCF, Sockets, Duplex, ADO.NET Data Services, RIA services) à naturally supports good architecture,
· Silverlight 3 - navigation , out of browser experience, popups etc
· MSDN + Adam Nathan book are a great place to kick off

· Petzold’s WPF 3D Book – A great resource for learning 3D in general – it really mixes well 3D maths with the core programmatic constructs of WPF 3D. There are 3 major limitations to WPF 3D: 1) Retained mode graphics have performance issues. 2) for a high level scene graph, the primitives are still primitive – wouldn’t be great if we had intrinsic data structures for rendering NURBS patches. 3) Point animation of a mesh vertex is on the heap (each interpolation is like writing to the same string object) à requires annoying work arrounds.

· Silverlight Animation book – collision detection, kinematrics, particle systems, etc. I like the way that the VSM is leveraged for cartoon like affects and the technique of programmatically manipulating the storyboard as a declarative timer.

· Silverlight Toolkit / WPF Toolkit – especially DataGrid and Charts

· Expression
o Blend - how else would you template your controls. I feel pretty comfortable using this tool(may polish up the data binding side)
o Encoder - media encoding with markers, leveraging IIS smooth streaming

o DeepZoom – creating Image pyramids

o (I have not yet dug deep into expression Design
· RIA Services – a prescriptive model that takes n-tier development to the next level of abstraction.

· Blend Behaviours – abstract out triggers and actions into declarative components

· Perf tools
· Automation using White
· SilverlightSpy
· SL unit testing
· MVVM – the view has a view model and the view model has a model (whose change notifications it observes). Leverage XAML databinding and DelegateCommands (as the VM is out of the Logical Tree)

· Composite Application Library – Constructing a mutiview GUI leveraging MVVM, Loading isolated module via IoC and DI, mapping views to regions - Unity DI Container, DelegateCommands, EventAggreagater, RegionManager etc.

Maths
in order to construct AI algorithms, you need 2 core subsets of knowledge: Programmatic and Mathematic skillsets. Learning Software Engineering through 10 years of practice can yield for me the ability to take a set of algorithms to construct an n-tier solution (with all the –ability adjectives {scalability, maintainability, performability (ha), etc}) while a straight mathematician would flounder on basic programming constructs. By learning the math, I canaggregate knowledge silos - eg in a few hours comprehend the gist of a highly specialized phd thesis that someone spent 5 years writing). To that affect I’ve gone through the following Schaums Guides (plus watched Jason Gibbs maths training DVD in Linear Algebra - http://www.mathtutordvd.com/ )
· Advanced Calculus – reading through this felt like sense of achievement one gets from climbing a mountain. I achieved a decent comprehension

· Probability – slightly simplistic. Stochastic trees are a great mathematical visualization technique for understanding Bayes Theorum. Useful for reasoning under uncertainty.

· Linear Algebra –different techniques for solving systems of linear equations.
· Operations Research – allocation of scarce resources

· Numerical Recipes – function approximation. The notes were slightly sparse.

Putting things into perspective:
· Larry Gonicks history books – a great way to learn the tapestry of history in a compact and humorous manner

· The ascent of money – I’ve always enjoyed Nial Ferguson’s geopolitical and socioeconomic analysis. Can we unify behavioral and quantitative finance?

· Ending Aging – a snapshot of the current state of research into alleviating the affects of the 7 malady categories of aging: - I corresponded with the author during my Bioinformatics days.

· The trouble with physics – by Lee Smolin. String “Theory” (more like conjencture / cult of Ed Witten) is actually based on another unproven conjecture – supersymmetry. It is not currently falsifiable and has turned into consensus science, drawing away from other potential theories such as Twister theory or Loop Quantum Gravity. M theory is just a vague concept and there are an infinite number of string theories – in programming ,we call this a code smell. While it holds mathematically (and has led to new maths such as Guage theory), it wont be the 1st mathematically elegant theory that doenst hold in reality.

· A new kind of science – just like cellular autonoma, Wolfram proposes that complexity evolves out of simple rules. Reads like a pop sci book. Strangely enough, the concepts of quantum or probabilistic states and states that modify rules are not covered!

.NET Parallel Development
· TPL – a .NET 4 scale up stack for data & task parallelization. Various levels of abstraction – PLINQ, parallel iterators, Tasks (similar to an automated threadpool), futures (tasks that promise to asynchronously return values). + many new thread model synchronization locks. see - http://blogs.msdn.com/pfxteam/default.aspx, http://msdn.microsoft.com/en-us/library/dd460693(VS.100).aspx , http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=348f73fd-593d-4b3c-b055-694c50d2b0f3

· DryadLINQ – a declarative scale out API of MS Research for scaling processing out to multiple nodes - SEE http://research.microsoft.com/en-us/projects/DryadLINQ/ , http://connect.microsoft.com/site/sitehome.aspx?SiteID=891

· Accelerator – a non LINQ enabled GPGPU API from ms research which is limited to 2D matrices. It leverages a high level shader to map processing into the GPU - SEE http://research.microsoft.com/en-us/projects/accelerator/default.aspx

· Axum – a research API based upon the agent paradigm which isolates agent interactions through message channels. Feels clunky to me. SEE http://blogs.msdn.com/maestroteam/default.aspx, http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx

· Solver Foundation – (horrendous doco) - Optimization API host exposed as a web service, a C# API, or an excel plugin. It suceeds where Excel Services failed. http://code.msdn.microsoft.com/solverfoundation

· Windows HPC – a grid computing host management environment – includes a prioritized job scheduler and management utilities - SEE http://msdn.microsoft.com/en-us/library/cc907080(VS.85).aspx , http://www.microsoft.com/hpc/en/us/default.aspx
NET 4
· Oslo + Quadrant – still half baked.
· WF 4 – still half baked – currently no state machine or rule engine support evident. Note that persistence and tracking have been abstracted out to Dublin (WAS 2.0) , which wont be released in the NET 4 timeframe.
· Entity Framework – pretty easy to learn these changes
· WCF – discovery, REST templates
· System.Xaml – still half baked
· What happened to Software Factories (Blueprints)?
· Azure – what a mess! SQL Data Services doesn’t work, Cloud Workflows were a fork and have been scrapped and Silverlight SMEWAs require live mesh client! Note: Azure is NOT A GRID COMPUTING PLATFORM!!! I’ll wait for v2 thanks.
Work
· Constructed Silverlight Timeline for Matach
· Constructed prototype of Silverlight media playback system for Youniversity
· Completed Amdoc’s staffing workflow system
· Constructed Southridge WPF labs for MS
· Constructed WPF control Library for Elta
· Attrrnded the Mix conference
· Taught the Metro WPF course in Israel, Australia, New Zealand, Turkey
· App Profiling for IFN - fun with Ants profiler!

· Constructed the Silverlight 3 Courseware Library for MS
· Constructed WPF GIS control and architectured Composite client for current customer.