Saturday, November 14, 2009
Saturday, October 31, 2009
A bit more info on my talk:
Microsoft's Expression Blend 3 has a baked-in tool called SketchFlow, targeted directly at prototyping your WPF and Silverlight applications. In this talk, I'll walk through building a prototype and exercising several SketchFlow features available out-of-the-box. I'll also show how easy it is to distribute a prototype and get back annotated feedback from your reviewers.
A bit more info about the code camp (from cmapcodecamp.org): The Code Camp will run from 8:30am - 5:30pm with 20-25 awesome sessions covering a wide range of database, software and portal development topics. It's totally free. No gimmicks. No sales pitches. Enjoy breakfast and lunch at no charge while you mingle with your peers. To register for this event, visit here.
For even more info, visit http://www.cmapcodecamp.org/.
Saturday, October 10, 2009
Here are the presentation materials.
Some takeaways we discussed:
- SketchFlow is not just for WPF and Silverlight prototyping! While it certainly fits well with a WPF/Silverlight project because of the consistent toolset (using Blend for both prototyping and "real" form development), there's nothing stopping you from prototyping a WinForms or asp.net application.
- SketchFlow has a built-in feedback and markup mechanism (for the reviewers), and annotations (for the prototype author)
- SketchFlow provides a screen navigation map, navigation links, and animation links. The latter allows you to provide "what-if" simulated user actions without actually wiring these animations up to a specific UI element. This is very useful to show alternate behaviors for a given action - recall the demo I showed with PassEmployeeAnimation and FailEmployeeAnimation.
- SketchFlow projects are simple to build and deploy. Silverlight deployment is easier than WPF deployment: just copy your packaged prototype to a website virtual directory, as we saw today on my laptop at http://localhost:9999/)
- SketchFlow helps remove the distraction of pixel-peepers who get distracted by exact look-n-feel of production-style user controls and graphics.
- You can work with your prototype screens just like any other XAML form from a Silverlight or WPF app: you can easily view the XAML and make changes to things like a listbox DataTemplate (as I demonstrated with the Interview Question listbox).
- Last, but not least: Since there's no real code behind the prototype, you won't get stuck in the prototype-gets-turned-into-a-real-app trap.
Wednesday, October 7, 2009
A few days ago, I attended the Richmond Code Camp, but as an attendee instead of a presenter. Though I'm still kicking myself for not signing up to speak there, I must admit that the Richmond Code Camp was a very valuable experience to me. In case you're on the fence about attending a Code Camp in your area, let me share a few of my takeaways and (possibly) sway your decision.
For the community, by the community
Code Camps are free for attendees. And the content is presented by volunteers. At RCC, speaker experience varied from first-timer to seasoned MVP. Some were local, some came from hundreds of miles away. Some showed slides, some cranked code. Regardless, these presenters took time to build some great learning material, posted samples on their blogs, and made themselves available for Q&A during (and even after) their sessions.
If you've been trying to meet some people who are knowledgeable (or experts) in a particular area, Code Camps are great for that. At RCC, there were experts in so many area: XNA, presentation patterns, .NET memory management, CLR and DLR inner workings, LINQ and expression trees, ORM, git... the list goes on and on. It was very easy to meet people, exchange contact info (twitter seemed to be the most popular way), find out about user groups, even inquire about possible career opportunities. I'm now following a slew of people I met at RCC, and it's great seeing the contributions they make to the developer community.
Not just for beginners
You might think Code Camps are more beginner-oriented. While there are beginner sessions (many, in fact), there are definitely advanced topics as well. At RCC, some of the more advanced topics covered expression trees and in-memory lambda compilation; C# garbage collection algorithms and performance issues; app dev with XML databases; and Cloud Computing with Azure, just to name a few.
When I signed up for RCC, I was content just being an attendee. As soon as I showed up, though, I was kicking myself for not preparing a talk! This was a great group of people, and there was definitely a level of excitement buzzing through the halls (and on Twitter - just check out #RicCC). This was a great venue for sharing.
The Fall Season of Code Camps is upon us. Several are coming up soon, including Philadelpha PA, Charlotte NC, Columbia MD, and Reston VA just to name a few. If you have the time, I urge you to visit one, either as an attendee or as a presenter. If you've ever wanted to do a tech talk, but find the crowds intimidating, Code Camps are very relaxed and casual, with sometimes no more than 10-15 people in a classroom. And... people tend to be very understanding if things don't go exactly to plan (projector woes, lost slides, crashing code... "it" happens...).
To find out about the Code Camps and user group meetings in your area, check out Community Megaphone, a great resource built by G. Andrew Duthie, a Microsoft Developer Evangelist in the Northern Virginia area.
Did I sway you?
Thursday, September 17, 2009
The archived presentation will be available online in about a week.
Slides are available here.
Thursday, September 10, 2009
Stick around afterward for Q&A, plenty of pizza, and an ASP.NET 4.0 talk by Kevin Jones, a local Microsoft MVP.
Wednesday, August 12, 2009
Wednesday, July 22, 2009
- Two days after official RTM: OEMs
- August 6: Downloadable for ISVs, IHV's, TechNet subscribers, MSDN subscribers
- August 7: Downloadable for Volume Licence with Software Assurance (English only)
- August 16: Downloadable for Partner Program Gold / Certified members (English-only)
- August 23: Downloadable for Action Pack subscribers (English Only)
- September 1: Purchasing for Volume License without Software Assurance (no mention of specific language availability)
- By October 1: Downloadable for Partner Program Gold / Certified members, Action Pack subscribers, TechNet subscribers, MSDN subscribers (remaining languages)
- October 22: Purchasing at retail locations
Tuesday, July 21, 2009
I just finished writing up details of the new cloud service creation wizard on the RDA Architecture blog. You can see that here.
The Microsoft Azure team published a feature summary and download link here.
Wednesday, July 15, 2009
Friday, July 10, 2009
Tuesday, July 7, 2009
Thursday, July 2, 2009
Yes, WPF lets you do some cool things with animation, but it is also a platform for building real world applications. This presentation will start in shallow end of WPF basics and then dive deeper into architecture. I will cover the following topics:
- Why move from WinForms to WPF? Pros vs. (almost no) con's.
- WPF architecture overview: what to know, what to embrace, etc.
- Pattern focus: ViewModel
- WPF vs. Silverlight (strictly from a feature perspective): What advantages and disadvantages are there?
- Introduction to CompositeWPF (this one goes to 11).
Here's the schedule:
- 6:30-7:00 - n00b Presentation: Getting Generic by Dean Fiala
- 7:00-7:30 - Pizza/Announcements
- 7:30-9:00 - Featured Presentation: WPF (me)
Thursday, June 25, 2009
- Shutdown Guest becomes Power Off. This is equivalent to yanking the power cord.
- Restart Guest becomes Reset. This is equivalent to yanking the power cord, plugging it back in, and restarting the machine.
Thursday, June 18, 2009
Info, signup and address here: https://www.clicktoattend.com/invitation.aspx?code=138684
Friday, May 22, 2009
It's finally here - this Saturday, starting at 8am, is the Northern Virginia Code Camp (www.novacodecamp.org). Last I heard, registration is around 250 attendees.
I just double-checked the schedule. My session, Intro to Composite Frameworks with Prism (now named CompositeWPF), is at 10:15.
See the full schedule here.
Wednesday, May 20, 2009
"In this interview,David Makogon, senior consultant of RDA, discusses how to architect user interface code to improve testability. A common issue associated with testing code that is tightly tied to user interface (UI) such as a button click event is that when a user interface is modified, the underlying code has to be re-tested. By decoupling the UI code from core programming logic and behavior through use of supervising controllers and views -- a modified Model View Controller (MVC) design pattern that is well explained by Martin Fowler, the need to re-testing the code of the programming logic and behavior is greatly reduced and even eliminated."
Thursday, April 30, 2009
This week, I found myself in Atlanta to work with a new client. As this was my first time flying into ATL, I guess I didn't get the memo about how to navigate smoothly through the airport and rental car process. While I sit here waiting for my plane to board, let me offer a few tidbits of wisdom, so that other travelers may avoid some frustrations. If nothing else, read my blurb on airport security…
Take the train
The terminals are connected by light-rail train. If you’re on an airline such as AirTran (which I’m on), you’re likely to end up in Gate C or D (the last one being E). I’m guessing it’s close to a mile to walk to baggage claim and ground transportation. Yes, there are people-mover ramps, but if you’re not up for the walk, do yourself a favor and hop on board for a quick ride.
Rental car – bypass the lines
Ah, the luxury of Avis Preferred. I finally made it to the main area of ATL and saw the Avis counter. I figured I could finagle my way into a car upgrade. Not a chance… I think the saying “Have a slow day…” applies here. Dozens on line, and the agents had no sense of urgency at all. Take my advice: If you’re Avis Preferred (or Insert-your-favorite-rental-company Insert-your-favorite-Special-Program), head straight for the bus. From what I can tell, the bus only comes by every 10-15 minutes, so no dilly-dallying.
I can’t suggest much, but I highly recommend Pappadeaux Seafood Restaurant.
Car rental return
If you’re returning a rental car, be sure your on-file credit card on your rental account is the one you plan on using. This makes the return process painless – they scan the car, inspect the car, print a receipt – DONE. I, on the other hand, needed to switch cards. BIG mistake, as now I had to head to the little Avis office and wait on line. Only 6 people in front of me, but it took about 30 minutes. When it was finally my turn, I stared in utter amazement as the agent started typing, one slow key at a time, my entire rental itinerary. I was going to comment about missing my flight, but I was too afraid I’d cause her to fat-finger a key and have to start over.
Ok, this one is a true gem (thanks to my co-worker Michael Sparks for tipping me off to this). Assuming you’re already checked in, head straight to the North Terminal. Go to the far-left side of the terminal and follow the signs for the security checkpoint. There, tucked away to the left, is a set of check-in lanes that typically has no crowd (or at least much less than the other gates). The airport was very crowded when I arrived, but I was through security in just a few minutes.
Thursday, April 23, 2009
Wednesday, April 22, 2009
Tuesday, April 21, 2009
Saturday, March 28, 2009
- No way! (definitely would have killed the proposal)
- Sure, but you're gonna pay through the nose! (good chance that would have killed the proposal)
- You must not know anything about the photography business! (nice way to insult the customer's intelligence, and kill the proposal)
Wednesday, March 18, 2009
Today's MIX 09 Keynote in Las Vegas was hosted by Scott Guthrie. As much as I had hoped to attend, my Vegas trip didn't materialize. However, I watched the live stream and, to be honest, I was blown away by the sheer number of announcements. If you followed my tweets, you probably have a good idea of all the technical goodness. Here's a consolidated summary, with links to the various downloads.Expression Web 3
- SuperPreview feature – view rendering across all browser types and versions. Split-screen designer, fullscreen-mode, allows comparison of “baseline” browser vew and alternative browser view side-by-side. Also “overlay” mode – stacks two browser views, to help identify differences.
- Supports both local browsers and cloud service, to allow for rendering on browsers not installed locally (e.g. Safari for Mac)
- Easy to compare multiple versions of IE without having each browser version installed
- Beta available right now: http://www.microsoft.com/expression/try-it/blendpreview.aspx
- Web forms: more control over viewstate, html markup, improvements in data binding and url routing
- Improvements to Ajax stack and jQuery support
- Client–side templates and databinding, along with additional REST support
- Velocity caching engine
- SharePoint editing/debugging within Visual Studio IDE
- Publishing and deployment improvements, including database deployment
- Still a CTP - get the latest here
- Ten new extensions available, including secure FTP, WebDAV, app request routing
- Grab the new extensions here.
- Provides single source for all components required for Web platform installation.
- Version 2 (beta) already includes support for just-released ASP.NET MVC 1.0.
- Grab the latest v2 beta here.
- Free apps to download and use
- Anyone can add an app to the gallery
- Visit the gallery here.
- Available now.
- View detailed information here.
- FastCGI support (allows 3rd-party programming languages like php)
- .NET full trust
- Raw ADO.NET support
- View details here.
- New program designed to help startup companies get up and running quickly
- Includes software and licensing support for 3-year period
- Includes marketing, business development opportunities, hosting partners
- Free to qualifying startups
- Read details here.
- Demo performed by startup StackOverflow.com, a BizSpark member
- GPU acceleration support (on Windows and Mac)
- New CODEC support (h.264, aac, MPEG-4)
- Raw bitstream API
- Improved logging for media analytics
- Perspective 3D
- Bitmap / pixel API
- Deep linking, navigation page framework (for interfacing with browser navigation)
- ClearType support
- Multi-touch support
- Library caching (download and cache to local system)
- Data binding improvements
- Multi-tier data (support for data context updates in Silverlight pushing updates to the server)
- Binary XML
- Out-of-browser experience - Silverlight app runs like a desktop app, yet still within a sandbox (and still dependent only on the Silverlight runtime bits). Supported on both Windows and Mac
- Offline awareness (with network status change events)
- V3 download is apparently 40K less than V2 download!
- Get the latest beta here. Warning: once you install the Beta tools, you now have a Silverlight 3-only development environment, so maybe go with a VPC...
- New product, available today.
- Includes live streaming (in beta, available today)
- Edge-caching. Akamai has already announced services to support this
- For more info and installation details, go here.
- Includes new SketchFlow tool offering sketching/prototyping, complete with transitions, collaboration tool (free SketchFlow player), all built into Blend.
- Version control support
- Xaml IntelliSense
- Photoshop PSD import, including preservation of layers (as well as the ability to selectively toggle layers)
- Grab the preview here.
Wednesday, February 18, 2009
So what is this? Basically, if you're building any type of UI-driven application, you have a few choices for wiring up your "View" to the underlying logic driving the view. Here are two:
- Inline. This is where you jam all your code in the "code-behind." For instance: the user clicks a button, that button has a button_clicked() event handler, and you shove a bunch of code right into that event handler.
- Model-View-Controller (or some derivative). This is where the "view" is limited to the UI portion of your app - buttons, boxes, etc. In the code-behind, you make a call to a "controller," notifying it that something happened (like HEY - THE USER CLICKED ME, THE SAVE BUTTON!!!). Then it's up to the controller to ask the view for stuff (like the info the user typed in) and save it to the model (maybe a database or something).