South Florida Code Camp 2019
Posted by bsstahl on 2019-03-03 and Filed Under: event
Thanks again to all the organizers, speakers and attendees of the 2019 South Florida Code Camp. As always, it was an amazing and fun experience.
The slides for my presentation are online Intro to WebAssembly and Blazor and the Blazor Chutes & Ladders Simulation sample code can be found in my AIDemos GitHub Repo.
Three Awesome Months
Posted by bsstahl on 2019-02-26 and Filed Under: event
The next few months are going to be absolutely amazing. We've got some great events coming up in March and April right here in the Valley of the Sun. In addition, I currently have 4 conferences scheduled in 4 different countries on 2 continents.
AZGiveCamp IX - Presented by Quicken Loans - March 8th-10th
The most important occasion coming up is the 9th AZGiveCamp Hackathon of Help. This year, we're very fortunate to have Quicken Loans presenting our event and hosting it at their new facility in downtown Phoenix. At AZGiveCamp, Arizona's finest technologists will put their skills to work creating software for some great local charity organizations. We help them help our community by using our skills to create tools that help them further their mission.
Visual Studio 2019 Arizona Launch - April 16th
Another fun event for developers in the valley is the Visual Studio 2019 Arizona Launch event being hosted at Galvanize. We'll have some great speakers talking about how Visual Studio 2019 is a more productive, modern, and innovative environment for building software.
Around the World
In March, I'll be visiting opposite ends of the east coast of North America.
First, on March 2nd, I'll be attending the always amazing South Florida Code Camp in Fort Lauderdale. This event is right up there with the biggest community conferences in the country and is always worth attending. This will be the 7th year I've presented at SoFlaCC. If you're in the area I hope you'll attend.
Later in March, I cross the border into Canada to attend ConFoo Montreal. This will be my first trip ever to Montreal so I hope the March weather is kind to this 35 year Phoenix resident. The event runs from March 13th - 15th and there will be 2 Canadiens games during the time I am there so I should be able to get to at least one of them.
In May I get to do a short tour of Europe, spending 2 weeks at conferences in Budapest, Hungary (Craft Conference), and Marbella, Spain (J on the Beach). While I have done some traveling in Europe before, I have never been to Spain or Hungary so I am really looking forward to experiencing the history and culture that these two cities have to offer.
Keep up With Me
I maintain a list of my presentations, both past and upcoming, on the Community Speaker page of this blog. I also try to document my conference experiences @email@example.com. If you are going to be attending any of these events, please be sure to ping me and let me know.
SoCalCodeCamp Slide Decks
Posted by bsstahl on 2018-11-10 and Filed Under: event
The slide decks for my two talks at SoCalCodeCamp USC from November 10, 2018 are below.
Thanks to all of the organizers and attendees of this always amazing event.
AZGiveCamp IX-Save the Date
Posted by bsstahl on 2018-10-31 and Filed Under: event
March 8th–10th 2019
Mark your calendars to block-out the weekend of March 8th 2019 for the next AZGiveCamp Hackathon-of-Help. More details will be coming very soon so keep an eye on AZGiveCamp.org and Meetup for all the particulars as soon as they are available. I’m looking forward to seeing you all at our 9th event, helping those who help our community.
Intro to WebAssembly Using Blazor
Posted by bsstahl on 2018-09-26 and Filed Under: event
I will be speaking tonight, 9/26/2018 at the Northwest Valley .NET User Group and tomorrow, 9/27/2018 at the Southeast Valley .NET User Group. I will be speaking on the subject of WebAssembly. The talk will go into what WebAssembly programs look and act like, and how they run, then explore how we as .NET developers can write WebAssembly programs with Microsoft’s experimental platform, Blazor.
Want to run your .NET Standard code directly in the browser on the client-side without the need for transpilers or browser plug-ins? Well, now you can with WebAssembly and Blazor.
WebAssembly (WASM) is the W3C specification that will be used to provide the next generation of development tools for the web and beyond. Blazor is Microsoft's experiment that allows ASP.Net developers to create web pages that do much of the scripting work in C# using WASM.
Come join us as we explore the basics of WebAssembly and how WASM can be used to run existing C# code client side in the browser. You will walk away with an understanding of what WebAssembly and Blazor can do for you and how to immediately get started running your own .NET code in the browser.
The slide deck for these presentations can be found here IntroToWasmAndBlazor-201809.pdf.
Desert Code Camp – October 2017
Posted by bsstahl on 2017-10-16 and Filed Under: event
Another great Desert Code Camp is in the books. A huge shout-out to all of the organizers, speakers & attendees for making the event so awesome.
I was privileged to be able to deliver two talks during this event:
A Developer’s Survey of AI Techniques: Artificial Intelligence is far more than just machine learning. There are a variety of tools and techniques that systems use to make rational decisions on our behalf. In this survey designed specifically for software developers, we explore a variety of these methods using demo code written in c#. You will leave with an understanding of the breadth of AI methodologies as well as when and how they might be used. You will also have a library of sample code available for reference.
AI that can Reason "Why": One of the big problems with Artificial Intelligences is that while they are often able to give us the best possible solution to a problem, they are rarely able to reason about why that solution is the best. For those times where it is important to understand the why as well as the what, Hybrid AI systems can be used to get the best of both worlds. In this introduction to Hybrid AI systems, we'll design and build one such system that can solve a complex problem for us, and still provide information about why each decision was made so we can evaluate those decisions and learn from our AI's insights.
Please feel free to contact me @firstname.lastname@example.org with any questions or comments on these or any of my presentations.
A Developer’s Survey of AI Techniques
Posted by bsstahl on 2017-06-22 and Filed Under: event
The slide deck for my talk “A Developer’s Survey of AI Techniques” can be found here, while the demo code can be found on GitHub.
The talk explores some of the different techniques used to create Artificial Intelligences using the example of a Chutes & Ladders game. Various AIs are developed using different strategies for playing a variant of the game, using different techniques for deciding where on the game board to move.
If you would like me to deliver this talk, or any of my talks, at your User Group or Conference, please contact me.
Posted by bsstahl on 2017-05-06 and Filed Under: event
The slide deck for my presentation “Examples of Microservice Architectures” can be found here.
There isn't one clear answer to the question "what does a micro-service architecture look like?" so it can be very enlightening to see some existing implementations. In this presentation, we will look at 2 different applications that would not traditionally be thought of as candidates for a service-oriented approach. We'll look at how they were implemented and what benefits the micro-services architecture brought to the table for each application.
Demo Code for Testing in Visual Studio 2017
Posted by bsstahl on 2017-03-16 and Filed Under: event
The demo code for my presentation on Testing in Visual Studio 2017 at the VS2017 Launch event can be found on GitHub. There are 2 branches to this repository, the Main branch which holds the completed demo, and the DemoStart branch which holds the starting point of the demonstration in case you would like to implement the sample yourself.
The demo shows how Microsoft Fakes (formerly Moles) can be used to create tests against code that does not implement a reusable interface. This can be done without having to resort to integration style tests or writing extra wrapper code just to implement an interface. During my launch presentation, I also use this code to demonstrate the use of Intellitest (formerly Pex) to generate exploratory tests.
A Busy October and November
Posted by bsstahl on 2016-10-05 and Filed Under: event
The next two months are packed with tons of great technical events that I am really looking forward to. Below are some of the events that I am involved with and will be attending between now and the end of November. I hope to run into you at these events. If you see me, please don’t hesitate to say “hi”. I do love to talk tech.
Desert Code Camp makes its triumphant return from hiatus this weekend at Chandler-Gilbert Community College in the south-east valley. I will be delivering my talk, “A Developer’s Guide to Finding Optimal Solutions” which is an introduction to combinatorial optimization designed specifically for software developers, at 9:45 am in room CHO-110.
IT/DevConnections – Las Vegas NV– October 10th-13th 2016
One of my favorite large conferences of the year is IT/DevConnections in Las Vegas. This year marks my 4th attendance at this event, the 2nd as a speaker. I will be delivering the talk, “Dynamic Optimization – One Algorithm All Programmers Should Know”, a programmer’s introduction to Dynamic Programming, at 2:15 pm on October 13th in Brislecone 2 at the Aria Resort.
This year marks my 2nd attendance at the Atlanta Code Camp. My 1st experience there, last year when I presented on Dynamic Programming, was a big part of the inspiration for drilling deeper into the topic of combinatorial optimization. As such, I return to Atlanta this year with my new talk on the subject, “A Developer’s Guide to Finding Optimal Solutions”.
NWVDNUG & SEVDNUG – Phoenix AZ – Oct 26th and 27th
It is not yet confirmed as of this publication but I have a really great, internationally renown speaker lined-up for the Northwest Valley and Southeast Valley .NET User Groups this month. Final arrangements are currently being made so keep an eye on meetup.com for each group for the details to be published as soon as they are finalized.
SoCalCodeCamp – Los Angeles CA, November 12th – 13th 2016
I have attended many instances of the Southern California Code camp, but this will only be my 2nd time at the Los Angeles incarnation of this event. My 1st time there, last year, I was struck by the old-school beauty of the old school campus and facilities at USC when I presented my talk on Dynamic Programming. This year, I will follow that up with my new, more general overview on the subject of finding optimal solutions.
NWVDNUG & SEVDNUG – Phoenix AZ – Nov 16th and 17th
Our good friend Jeremy Clark (blog, twitter) makes his annual tour of the Valley’s .NET User Groups to talk to us, once again, about many of the things you need to know about .NET and Software Engineering to make your development better. Jeremy will give a different talk each night so be sure to sign-up at the meetup sites and come to both meetings.
AZGiveCamp is Breaking the Mold
Posted by bsstahl on 2016-08-11 and Filed Under: event
The organizing team of AZGiveCamp recently announced that we would be hosting a one-day Hackathon for Humanitarian Toolbox on Saturday, August 27th, from 8:30 am to 5pm at Ticketmaster in Scottsdale, AZ. This event is a bit of a departure for us. We have been looking for ways to evolve the organization to host more and different coding-for-charity events while continuing our mission to to help charitable and non-profit organizations in our community meet their technology needs. We hope you’ll join us for this first experiment with other event types at AZGiveCamp.
AZGiveCamp’s flagship event is our Hackathon of Help. We have had the privilege of hosting 7 such events in the Valley of the Sun so far, with our 8th scheduled for March of 2017. These events take up an entire weekend and are designed to put multiple charity and non-profit organizations together with multiple development teams. The teams are tasked with taking a project from idea to completion in the course of one weekend. During these events, participants may chose to camp out at the event facility, stay up and work on their projects, or go home at night, returning to continue the project in the morning until the final turnover on Sunday afternoon. These events are technology agnostic, with the specific technologies to be used determined by the teams themselves.
By contrast, the AZGiveCamp Humanitarian Toolbox Hackathon will be only a 1-day event. Participants will work on a single project, the Humanitarian Toolbox (htBox) allReady project, for which the technologies, design, and many of the features have already been chosen and implemented. We will be lending our support to this worthy organization by adding features, upgrading tooling, and writing tests against the existing code base. This event will not be judged by how many projects we complete, but by how much better-off the project is when we are done.
For those not familiar with Humanitarian Toolbox, they are an organization that sets up projects to assist humanitarian organizations. Their current project, dubbed allReady, is designed to organize the preparedness campaigns of the Red Cross and other disaster response groups. The project is implemented in ASP.NET Core MVC with a Cordova client. Participants need to have at least a basic comfort level with one or both of these technologies, along with the appropriate development tools, to be an effective contributor to this project. Specifics of the required tools can be found on the event page on Meetup.
We hope you’ll join us at this and future AZGiveCamp events.
Dynamic Optimization Presentation
Posted by bsstahl on 2015-10-21 and Filed Under: event
I hope you’ve had an opportunity to see my presentation, “Dynamic Optimization – One Technique all Programmers Should Know” at a Code Camp or User Group near you. If so, and you want to have a copy of the slide deck for your very own, you can see it embedded below, or use the direct link to the Powerpoint here.
The subject of this presentation is using a technique called Dynamic Programming to solve problems that have more than one possible solution. This technique works very well when used to solve problems that are recursive in nature. One of the best things about this technique is that it guarantees that the solution it produces is the best possible solution.
We look at three examples during the presentation, the first is done only “on paper” and is an example of using this technique to solve a knapsack problem. The second example is done in pseudo-code and solves a linear best-path problem in the game of Chutes & Ladders. Finally, we drop into Visual Studio to solve a 2-dimensional best-path problem. Sample code for both of the last 2 examples can be found in GitHub.
Keep an eye on my Speaking Engagements Page for opportunities to see this presentation live. If you are a user group or conference organizer, you can contact me to schedule an in-person presentation. This presentation is a lot of fun to deliver and has been received extremely well at Code Camps and User Groups across the country.
Speaking Engagements for October 2015
Posted by bsstahl on 2015-09-30 and Filed Under: event
I am really looking forward to October because I have 3 awesome events that I’ll be speaking, and learning, at:
- The first event for the month is Code Camp NYC in Manhattan on October 10th. I have attending this event once before and loved it. I’m really looking forward to being there again.
- Next up is Atlanta Code Camp on October 24th. This will be my 1st time at this event, and my 1st time in Atlanta in many years. Hopefully, people will have some helpful suggestions for what to see and do when I am not at the Code Camp.
- Finally, I’ll be speaking at .NET Group – Southern Nevada’s .NET User Group in Las Vegas on October 29th. I’ve spoken in Las Vegas at the Code Camp there before, but have never had the privilege of attending their user group.
I have several other event possibilities in the works for November and beyond. I’ll announce them here periodically, but you can always see my schedule, as well as past events and the talks I am currently giving, using the “Speaking Engagements” link above.
SOA–Beyond the Buzzwords
Posted by bsstahl on 2014-06-28 and Filed Under: event development
For those who saw my code camp presentation, “SOA – Beyond the Buzzwords”, you can find the slide deck here.
There is much more to building a Service Oriented Architecture than just creating services. SOA services can be much more difficult to build, requiring more analysis and design work up-front than a non-service-enabled system or a system that relies on CRUD-style data services. In this session, we will look at real-world examples of SOAs, examining what a good SOA might look like, what conditions present a good opportunity to use a Service Oriented Architecture, and how we can make the process more agile. We will also look at some practical tips to help make your services more extensible and maintainable.
For those who haven’t yet seen this presentation, I will be giving this session at several other code camps and user groups around the US between now and the end of the year. Keep an eye on my Speaking Engagements page to know where and when I will be presenting.
Posted by bsstahl on 2013-02-06 and Filed Under: event
Here is an update on where and when I’ll be delivering presentations about software development in .NET over the next few months. I still have some availability left for the H1 2013 and H2 is effectively wide open. You can request me as a speaker by Contacting Me.
Southern Most User Group in Key West FL on February 7th - “Code Portability in .NET”
South Florida Code Camp in Ft. Lauderdale FL on February 9th - “Building a DSL Using an OData Source”
Desert Code Camp on April 20th in Gilbert AZ – “Building a DSL Using an OData Source”
Twin Cities Code Camp in Minneapolis MN on April 27th – “Code Portability in .NET”
SELA Dev Conference in Tel-Aviv Israel on May 5-9 – a full day seminar version of “.NET TDD Kickstart” as well as “Code Portability in .NET”
CodeStock in Knoxville TN on July 12-13 “Code Portability in .NET” (assuming the attendees vote for my session)
I hope to see you at one or more of these events.
Code Sample for My TDD Kickstart Sessions
Posted by bsstahl on 2012-02-13 and Filed Under: development
The complete, working application for my .NET TDD Kickstart sessions can be found here.
Unzip the files into a solution folder and open the Demo.sln solution in a version of Visual Studio 2010 that has Unit Testing capability (Professional, Premium or Ultimate). Immediately, you should be able to compile the whole solution, and successfully execute the tests in the Bss.QueueMonitor.Test and Bss.Timing.Test libraries.
To get the tests in the other two test libraries (Bss.QueueMonitor.Data.EF.Test & Bss.QueueMonitor.IntegrationTest) to pass, you will need to create the database used to store the monitored data in the data-tier and integration tests, and enable MSMQ on your system so that a queue to be monitored can be created for the Integration test.
The solution is configured to use a SQLExpress database called TDDDemo. You can use any name or SQL implementation you like, you’ll just need to update the configuration of all of the test libraries to use the new connection. The script to execute in the new database to create the table needed to run the tests can be found in the Bss.QueueMonitor.Data.EF library and is called QueueDepthModel.edmx.sql.
You can install Message Queuing on computers running Windows 7 by using Programs and Features in the Control Panel. You do not need to create any specific queue because the integration test creates a queue for each test individually, then deletes the queue when the test is complete.
If you have any questions or comments about this sample, please start a conversation in the Fediverse @email@example.com or Contact Me.
.NET TDD Kickstart
Posted by bsstahl on 2012-01-26 and Filed Under: event development
I head out to Fullerton tomorrow for the start of my .NET TDD Kickstart world tour.
In this session, the speaker and the audience will "pair up" for a coding session which will serve as an introduction to Test Driven Development in an Agile environment. We will use C#, Visual Studio and Rhino Mocks to unit test code to be built both with and without dependencies. We will also highlight some of the common issues encountered during TDD and discuss strategies for overcoming them.
I will be presenting this session at numerous venues around the country this year, including, so far:
If you are interested in having me present this or another session at your event, please contact me.
There is much more than an hour’s worth of material to be presented, so instead of trying to rush through everything I want to talk about during this time, I’ve instead taken some questions from this presentation and posted them below. Please contact me if you have any additional questions, need clarification, or if you have an suggestions or additions to these lists.
Update: I have moved the FAQ list here to allow it to be maintained separately from this post.
AZGiveCamp III is Oct 21st-23rd
Posted by bsstahl on 2011-10-12 and Filed Under: event
It's AZGiveCamp time again! Our third event is coming up in under 2 weeks, Oct 21st-23rd 2011 at the Park Central Mall (Central Ave. between Thomas and Osborn) in midtown Phoenix. Please sign-up to volunteer as a developer, designer, or analyst on our Meetup Page or see AZGiveCamp.org for more details.
Special appeal: we need graphic designers! If you’re a pro or amateur, it doesn’t matter. Designers are always the most popular people at any GiveCamp!
Those who participated in the last 2 events already know that AZGiveCamp is the local component of a national event where the software development community comes together to support local charities and non-profits by developing or improving their web sites and applications. It's fun, it's agile, it's geeky, and it's good for the community.
We had a fantastic time at the last 2 events and, in Arizona alone, have helped more than 20 non-profits with their development needs. As someone who has now participated in GiveCamps as both a participant and as an organizer, I can honestly say the experience is very, very, worthwhile.
You can find out more about AZGiveCamp at https://www.azgivecamp.org and about the national organization at https://givecamp.org.
I am very excited about this event and look forward to working with all of you at AZGiveCamp III.
Why I Am Attending the Pluralsight “Algorithms and Data Structures” Webcast
Posted by bsstahl on 2011-08-24 and Filed Under: event development
When I started at Arizona State University (ASU) about twenty-six years ago, I’d already been programming for five or six years, and building applications for a year or two. I’d done things like create hacking tools and WarGames dialers for my own use, and I’d built a few applications for businesses where I was doing lookups and filing information that was specific to that business, but all of that was very heavy on code and light on technique and reusability. I knew how to use variables and arrays, I knew how to make the computer do what I wanted it to do, but I didn’t know how to write good code. At ASU, there were two classes that I had take freshman year that were part of the Engineering & Applied Sciences core, that really woke me up to the world of Computer Science and the things that we, as engineers, can do with our code. Those classes were “Data Structures in Pascal” and “Discreet Mathematics”. These two classes are really the only classes where I have specific memories of the things I learned so long ago.
I remember, very clearly, in the data structures class, learning about linked-lists. I remember the realm of possibilities that I saw when introduced to this data structure. This really very simple data structure showed me tremendous power as a flexible, reusable foundational element, that dwarfed arrays and the other tools I knew at the time. Linked lists showed me how I could hold the same values as I held in an array with addition metadata that gave me the tools to access the values in a different way, in a way that made more sense for the use-case. I saw in these structures a tool I could use to build reusable frameworks that could operate on data in a way that was much more use-case specific. For example, I could use linked-lists to create a queue structure. Then, if the use-case dictated, I could extend that structure to hold a priority and make the queue priority based. These things, while possible just using flat arrays, were much more difficult and harder to reuse. Other structures like binary-trees had impact on me as well, but nothing like the fundamental power of the linked-list.
I remember, in the discreet math class, learning about algorithms that were, in effect, practical uses of math for programmers. Although that class was not officially geared towards programmers, it was very easy to see why it was a core requirement for the College of Engineering & Applied Sciences. I remember learning about various sorting algorithms and encryption methods, optimum path algorithms and best-fit criteria. Basically, I learned ways of applying mathematics to everyday problems I faced when writing code. As with the data structures class, my horizons were significantly expanded by this knowledge and I have used these tools, and my understanding of these tools, to some degree every day since.
For me, making the decision that I wanted to be a software engineer, as opposed to a hardware engineer, didn’t occur until after I started college. The two classes I have described, had a big impact on proving to me that my talent, and my passion, was for software and that programming was the path that I wanted to take in life.
Now, I see an opportunity, 26 years later, to refresh my memory and update my skills on some of these topics. There have been many changes in software engineering since my time in college. The .NET Framework now provides many of the foundational structures I use daily, and, with the help of generics, those structures will often work in a strongly-typed way on any data type I choose. These topics helped establish the course of my career and I am looking forward to seeing how the tools, and the use of these tools, has changed over time. While I realize that I cannot recreate the “eureka experience” of my original awakening, and that you cannot squeeze 2 full-semester classes into a 1-hour presentation, I am still very excited about attending the Pluralsight webcast on Algorithms and Data Structures tomorrow.
Wiffle Ball for Charity
Posted by bsstahl on 2011-06-28 and Filed Under: event
On a personal note, I’ve signed-up to play in the Reggie Sanders Foundation’s Wiffle Ball tournament which is part of the MLB All Star Weekend. The event is being held at Salt River Fields at Talking Stick on Saturday morning, July 9th at 9am. On hand will be former MLB players and other celebrities and the event is to benefit the Southwest Autism Research and Resource Center (SARRC). If you are interested in playing, sponsoring, or attending, please contact John Zackery at (602) 421-3479 or by email at jzackery (at) gmail (dot) com.
Annual Scott Guthrie Day in the Valley
Posted by bsstahl on 2011-04-06 and Filed Under: event
I am very excited to once again be attending the annual Day of ScottGu in Arizona. If you haven't been to this event before, you need to sign up right now (below). Those who have been to previous events are probably already signed-up. For more information, see the text below the signup form or the AZGroups website.
It's here again - Mr. Scott Guthrie is coming back to Arizona. And this year we're bringing special A-LIST guest, Mark Russinovich. Scott is a Vice President at Microsoft in charge of the Web Stack (ASP.net + Silverlight + a bunch of other stuff) Scott has made a special visit to the Arizona.net User Group since 2003 and is committed to the Arizona.net community as long as we can continue to support the event (in attendance).
ScottGu runs a bunch of business product lines inside Microsoft, most revolving around the Web Stack. This included ASP.net Web Forms, MVC, NuGet, Silverlight, and I'm sure a bunch of other things that aren't even public (hint hint).
So What Will ScottGu be demo'ing? Answer: I don't know. Scott says it will be magical like always, but at this moment, I'm not sure what he's going to be talking about.
But maybe that's even a better schedule to have. In years past, I have literally had to rush Mr. Scott Guthrie off the stage, which seems silly. Silly in that we wait all year for him to show up, and then don't give him the time he wants. So this year we're having less sponsored stage time, and more Scott Guthrie Time. (insert hoops and hollars here).
Desert Code Camp Presentation
Posted by bsstahl on 2011-04-02 and Filed Under: event development
Thanks to all of the organizers, speakers, sponsors and attendees of Desert Code Camp 2011.1. This is the first time that I’ve presented at a Code Camp and it was a fantastic experience for me. My session, Building Enterprise Apps using Entity Framework 4, was very well attended with 35 people cramming, standing-room-only, into a room with a capacity of 28 (please don’t tell the Fire Marshall). The demos went very well (everything worked as it was supposed to) and the feedback I’ve gotten so far was entirely positive.
I will be posting some additional information from the session shortly, including the sample code and the changes I make to the Microsoft All Rules code analysis ruleset, but I wanted to get the session slides up as quickly as possible.
If you have any additional feedback on the session, please feel free to contact me here, in the Fediverse @firstname.lastname@example.org or by email as shown in the slide deck.
DCC 2011.1 -- Building Enterprise Apps using Entity Framework 4
AZGiveCamp III Organization Starts 3/3
Posted by bsstahl on 2011-02-23 and Filed Under: event
At 6pm on March 3rd we will begin the journey toward our third AZGiveCamp event. If you are interested in being a part of the team that organizes this event, please come by the US Airways Rio West offices at 52nd St. and Rio Salado Parkway in Tempe (not the Corporate office on Mill - directions below) as we kick-off our next event planning. Existing teams will need additional members and some new teams will be forming. All types of help is needed, from financial and logistical planners to website, social media and other technical talents, so please come-by at 6pm and become part of this amazing team of volunteers.
If you are not familiar with AZGiveCamp a GiveCamp is a weekend event where the software development community comes together to support charities and non-profits by developing or improving their web sites and applications. These events have been occurring all over the United States for about 4 years now, and we have had 2 such events in the Valley of the Sun over the last year.
To get to the US Airways Rio West offices, take the Priest Dr. exit off the 202 (flag A) and head south. Make a right turn onto Rio Salado Parkway, and follow the road to where it starts to curve south (becoming 52nd St.). You want to turn left at the last entrance into the parking lot before the traffic light. If you reach the traffic light, you’ve gone too far, although you will be able to see the light from the parking lot entrance. Make an immediate right in the parking lot and park anywhere along this side of the building, which is numbered 2021. Enter at the first set of doors (the most northern doors on the west side of the building) labeled “Suite 101” and “US Airways Main Entry”. You’ll be able to see the tower at Sky Harbor airport if you look to the west and there will probably be airplanes landing just over your head.
If you have any trouble finding the meeting location, please call me and I will do my best to guide you in.
South Florida Code Camp 2011
Posted by bsstahl on 2011-02-13 and Filed Under: event
For the 2nd time in the last 3 years, I was lucky enough to be able to attend the South Florida Code Camp. Code Camps are free, community driven technical conferences that take place during off-hours, usually weekends, so I try to make it to as many of them as I can. I have attended most of our local (Arizona) Desert Code Camp events, and will be speaking at the upcoming Desert Code Camp in April 2011, but I also try to attend other code camps whenever possible to get the broadest range of speakers and experiences. If you haven’t been to the local code camp in your area, you are missing out on a lot of great technical content and opportunities to chat with some awesome technologists.
I was able to attend a session in each of the 6 time slots for South Florida Code Camp 2011. I’d like to thank the speakers for all of the sessions as each was useful and worth attending:
- Zachary Gramana - Custom Tooling Using a VS Add-In and T4 Templates
- Colin Blakey – Building OData/WCF Data Service Providers
- Bayer White - Hosting Workflows as WCF Services Through Windows Server AppFabric
- Olec Sych – ASP.Net Dynamic Data
- Woody Pewitt – Technical Debt
- Chris Eargle – Code Like a Ninja: Enhance Productivity with Visual Studio and Just Code
Three of these sessions deserve some special mention. The OData/WCF session was probably the most useful from a technical perspective as the demos gave specific examples of exactly what I’d need to do to implement the technology. The session on technical debt was the most useful overall, Woody from ComponentOne, who is always a fantastic speaker, gave some specific tools to use to calculate the costs of carrying technical debt. In fact, I was fortunate enough to come-away from the raffle with a license to ComponentOne’s Studio Enterprise product. I’m especially looking forward to trying out the Silverlight controls. Finally, in the last session of the day, which turned into a free-form Visual Studio tips session, Chris did a great job of going with the flow and giving the already rowdy crowd, exactly what they wanted, including demos of some of the coolest features of Just Code.
All of the speakers and organizers did a fantastic job and it was a great event. Hopefully I will be able to make it back for next year’s event.
Looking for Evening Events at Mix11
Posted by bsstahl on 2011-01-30 and Filed Under: event
I won’t be an attendee at the Mix conference this year. Nothing against this conference; it is usually fantastic and I have met many awesome people there. This year, my focus is elsewhere, on SOA and Middleware/Back-End technologies. Not that I’ve ever really been a front-end guy mind you, but I am of the opinion that balance is a good thing and since I consider myself weaker in front-end (UX) technologies, Mix has been a good learning experience for me in the past. However, as I said, this year, my primary focuses are elsewhere.
Not being an attendee doesn’t stop me from wanting to meet with old friends and continue the awesome technical discussions that go on at these events. I have loved meeting with the product teams in the past, both to learn from them and to provide my input into the future directions of the products. So, it is my intent to fly up to Las Vegas (it is less than an hour flight from Phoenix) for at lease 1 evening of the Mix conference, perhaps 2. Right now, I am looking for events to schedule for that (those) evening(s).
I know that I will not be able to go to the attendee party, since I will not be an attendee, and that event occurs on Wednesday the 13th (courtesy of Joe Guadagno’s Mix 11 Events site). This means that the most likely evenings for me to be there are Monday and Tuesday, April 11th and 12th. Do you know of any events going on in Las Vegas during this time that would be awesome for me as a .NET Software Engineer to attend? If so, I would appreciate it if you would let me know. I’ve setup a special email alias just for this purpose, please contact me at
AZGiveCamp II Announced!
Posted by bsstahl on 2010-10-21 and Filed Under: event
The next AZGiveCamp will be held starting January 14th 2011 at the Phoenix campus of Devry University! Please see AZGiveCamp.org for more details.
Tentative AZGiveCamp Organizers Meeting Agenda
Posted by bsstahl on 2009-10-14 and Filed Under: event
The 1st AZGiveCamp organizers meeting will be held on Thursday, October 15th from 6-8pm MST at the Microsoft Phoenix Offices (2929 N. Central Ave. #1400 Phoenix AZ 85012).
If you are interested in helping to organize this event, please sign-up on EventBrite. To learn more about Give Camp, you can visit https://givecamp.org and follow us on Twitter @AZGiveCamp. You can even call us at 623.252.GIVE if you have questions.
The preliminary agenda for our first meeting is as follows. If you have any comments or suggestions on this agenda, please make them by commenting on this post, via Twitter, or by phone above.
- Introduction by Gary Hoffman
Call-to-order, welcome & introduce Chris Koenig
- Opening Remarks from Chris Koenig
Brief introduction to GiveCamp and call-to-action.
- Purpose of meeting
Let everyone know why we are here
- Brief update and agenda review
Give brief update on where we are, and review the agenda
- Around the room for introductions
Who are you? What were you hoping to bring to GiveCamp?
- Updates from Barry
- Review preliminary schedule
We are targeting February for the event, but we need to develop a more detailed schedule.
- Status of GiveCamp national
Review of GiveCamp national, and what they have going on. Make everyone is aware of the regular conference call, legal structure, etc.
- Update on status so far
Review the work already accomplished including known sponsors (Microsoft, etc), proposed standards, and relationships with other Camps.
- Venue status
Review why we think venue is such a big deal, and where we stand.
- Technology update
Review where we are on azgivecamp.org, etc.
- Organizers’ Team Housekeeping from Gary
- Propose team structure and vote
Review proposed team structure and open for discussion, better ideas, and settle on what we want to do.
- Discuss Executive Committee nomination process
Solicit volunteers via email and produce ballot for next meeting.
- Team volunteers
Get volunteers for teams.
- Action Items from Barry
- Review open issues
Share the list of open issues.
- Gather new issues
Solicit new issues.
- Assign issues to team leads
Assign the issues we can to the team leads.
- Set next Organizers’ meeting
Set date/time for next Organizers’ meeting. Encourage team leads to set their own meetings and keep the Organizers Team updated.
Developer Ignite Presentation - Slide Deck
Posted by bsstahl on 2009-07-23 and Filed Under: event
Here is the slide deck for my Developer Ignite presentation, "Simplicity Through Abstraction".
Developer Ignite in Chandler
Posted by bsstahl on 2009-07-13 and Filed Under: event development
I will be speaking at the Developer Ignite event in Chandler on July 22nd. The topic of my talk will be "Simplicity Through Abstraction" during which I will be giving a very high-level overview of using Dependency Injection as an Inversion-of-Control methodology to create simplicity in software architecture.
While putting my presentation together I have found a number of items that I wanted to include in my presentation, but simply can't due to the obvious constraints of a 5-minute presentation. Some of these items won't even get a mention, others will be mentioned only in passing. I include them here as a list of topics for me to discuss in future posts to this blog. Hopefully this will occur, at least in part, prior to the ignite event so that there will be a set of resources available to those at the event who were previously unfamiliar with these techniques and wish to explore them further.
These topics include:
- IoC Containers
- Dealing with Provider-Specific requirements
- Configuration as a dependency
- Local providers for external dependencies
- Providers as application tiers
- Testing at the provider level
- Top Down Design [Added: 7/12/2009]
If you have a topic that you are particularly interested in, or have any questions about IoC, Dependency Injection, or Providers that you would like me to answer, please use the comments or contact me @email@example.com.
Presentation Proposal - Developer Ignite Phoenix
Posted by bsstahl on 2009-06-26 and Filed Under: event
I just submitted the following proposal for a talk at Developer Ignite Phoenix which will be held July 22, 2009 at Gangplank in Chandler.
Simplicity Through Abstraction
The goal of this presentation is to explore, at a very high level, one methodology for software developers and architects to create software that is simple and maintainable, and thus has a lower total-cost-of-ownership (TCO).
Using abstraction via the provider pattern allows us to create software that is more testable, easier to map (find the piece of code that does X), and easier to understand at a component level. We can use providers to develop systems that have fewer bugs, and are more maintainable then tightly-coupled systems. As a result, these abstractions can significantly reduce costs for most systems, especially in the area of system maintenance.
I look forward to seeing you there.
Best of PDC Phoenix in Tweets
Posted by bsstahl on 2008-12-14 and Filed Under: event development
Joe Guadagno has posted his summary of The Best of PDC in PHX. This was a great event and I want to make sure those who put it together, spoke, and sponsored it know we are tremendously appreciative of their efforts. This includes: Joseph Guadagno, Scott Cate and Rob Bagby as well as Microsoft, Robert Half Technology, TekSystems and GoDaddy.
I think that the best summary I can give of my experience at this event is through the tweets I sent in real-time while there. Below, are what I think are my tweets most representative of the experience.
At first I hated that C# didn't have optional params. Now I know that life is better w/o them. Sorry C# 4.0.
Wells Fargo Center has much more comfy chairs than most conference centers #PDCPHX
"...and I say 'thingey' in the most technical way possible." - Rob Bagby #phxpdc
Did Rob Bagby just invoke Don Box? #phxpdc
XBox at the bottom of the hierarchy of needs Rob? #phxpdc
I don't envy @scottcate having to follow Rob Bagby at #phxpdc
Rob Bagby on Intellisense: "I just got nerdly goosebumps". #phxpdc
To the non-dev-geek members of my family: no I will not stfu about #phxpdc
I always feel so dirty after demos involving json. #phxpdc
Tunneling an HTTP Put through a Post seems like a massive cluge. #phxpdc
W00t, I finally got @stupiderr on Twitter!
Declarative programming, what a concept... #phxpdc
Rob Bagby is weakening on his anti-Twitter stance. Hit him now while his defenses are down. Resistance is Futile. #phxpdc
"automagically" is a word whose time has come and gone.
It's important for me to know what's available in the Ajax world, but I have no desire to live there anymore. Silverlight FTW!
OK, let's talk Silverlight! #phxpdc
@stupiderr "genie blink"? I am so uncool!
Azure Party Planning Services now live! #phxpdc
Rob Bagby can give presentations on the same topic 2 days in a row that are totally different and both awesome. #phxpdc
#phxpdc Crowd reference to "Hailstorm". Nicely done sir.
Imo the best example of cloud service bus at PDC was in the Don Box/Chris Anderson keynote. #phxpdc
He already said, "you don't need schema"... #phxpdc
First "Animal House" reference of the day goes to Rob. #phxpdc
I don't like the SOAP API for SDS right now. SQL string queries are so 1990s. #phxpdc
Using Linq to project query results into a POCO is awesome. #phxpdc
@steeleprice it means CLR Obj to me. That Linq trick should work in VB too. But then again, I'll always be VB at heart.
@scottcate, @jguadagno, and Rob were all amazing today! Great event! Thank you all!
PDC 2008 - Day 2
Posted by bsstahl on 2008-11-01 and Filed Under: event development
Day 2 was a more focused day for me at PDC 2008. After attending the morning keynotes, which included the first peeks at Windows 7 features as well as a terrific (as always) code-only presentation on programming against the cloud by Don Box and Chris Anderson, I headed over to the hands-on-labs where I spent the rest of the day working with Azure and creating applications that run in the cloud. I also received my Azure key and began the process of setting up a virtual machine to house the Azure tools.
Real-Time Updates on Twitter
Just a reminder that much of what is happening here at the PDC is being posted in real-time (or close to it) on Twitter. My Twitter updates can be found @firstname.lastname@example.org.
Day 2 keynotes focused on the client side of Windows development. Not surprisingly, this included Windows 7 and WPF development improvements as well as Silverlight and ASP.NET development. Some things that caught my attention in the keynotes included features of Windows 7 like its ability to "live" on a domain, but still participate in a "Home Group" when your work laptop is brought home. Multi-monitor support also looks to be vastly improved including the ability to work multi-monitor in a remote desktop session. Scott Guthrie also introduced a number of new controls and tools for developing applications in WPF and Silverlight including a Ribbon control that appears intended to make your WPF apps look like Windows Forms apps.
The 2nd Keynote of the day was Don Box and Chris Anderson's fantastic presentation on developing applications that bring cloud computing into the enterprise. Clearly the most engaging of all of the Microsoft speakers, this duo put together, over the course of the 1.5 hour session, a series of services that ran both in the cloud and within the firewall, and linked the two securely, but in real-time. You would not be wasting your time if you were to view the video of this keynote online.
The remainder of my day, after lunch, was spent in the hands-on labs working through the prescriptive samples provided by Microsoft for their Azure product. I was able to complete the first two of these labs which detailed the process of creating websites and services in the cloud that used local-storage and queues to perform a number of relatively simple tasks. These labs clearly answered my question from yesterday morning, with the answer that I expected. That is, an Azure "Web Role" is a web page or SOAP service that runs in the cloud. As such, everything (that I can think of) that I might need to run on my own servers, can be outsourced into the cloud, to provide the availability of virtually unlimited scale with amazing reliability. The still-unanswered question here is price, but since the CTP is free, I will continue to move in this direction until I find a reason to change course.
Day 3 Preview
Day 3 looks to be futures day, with the keynote focusing on Microsoft Research properties and technologies. Watch Twitter for all the action as it occurs.
PDC 2008 Day 1
Posted by bsstahl on 2008-10-29 and Filed Under: event
As you've probably already heard, the big announcement coming out of PDC 2008 Day 1 was "Windows Azure", Microsoft's Cloud Computing Operating System. This is a very interesting story since it has implications, in theory at least, for developers working in any size organization, who need to provide public services that could potentially scale globally or massively. I won't spend time on the specifics right now since there are many who are more knowledgeable than me who have already written about it. I do however, have a few open questions on the topic, which I hope to have answered either in sessions today, or in the hands-on-labs. These include the pricing model (i.e. whether it will really be affordable for the "garage developer"), as well as what actually constitutes an Azure "web role". If, as I suspect, a web role can be a SOAP service or an ASP.NET web page, then the model makes a lot of sense to me and I will definitely be spending some time becoming familiar with the features and capabilities of this tool. I have sketched-out a simple application model that I hope to implement, either in the hands-on-labs or in the online community preview, sometime today. Since I have not yet been granted access to the public CTP, I suspect this will have to occur in the hands-on-labs.
The Future of .NET Development
Another feature of future versions of C# include the concept of the compiler as a service. That is, the C# compiler, sometime down the road, is expected to be made available within the application model, useable by applications. We have had other methods of dynamically generating code in the past, but no model nearly as compelling as utilizing the same compiler Visual Studio uses, as a component of the .NET framework.
Sessions Available Online
We are being told that videos of every session will be available online via http://www.microsoft.com/pdc 24-hours after the session. From day 1, I definitely recommend checking out the keynote as an interesting, although far from complete, overview of Azure. I also recommend Anders' talk on C#. There was one session that looked interesting that I couldn't get into called "C# IDE Tips and Tricks" that seemed interesting which I will be checking-out online within the next week or so.
Day 2 begins...now.
PDC Keynote Live Stream
Posted by bsstahl on 2008-10-28 and Filed Under: event
I'm getting ready to head over to the Los Angeles Convention Center for the start of PDC 08. For those not here, you can watch the Ray Ozzie keynotes live on the web via http://www.istartedsomething.com/20081026/pdc-08-keynote-live-streams/ . The Microsofties on Twitter are doing a great job of pumping-up the excitement for these keynotes with lots of comments on the media embargos and quips about how important this event is to Microsoft's future. I'll be publishing more information as it becomes available.
Posted by bsstahl on 2008-10-26 and Filed Under: event
Next week I will be attending the Microsoft Professional Developer's Conference in Los Angeles. This will be my 6th PDC (of, I believe, 10). I will be attempting, as I have done in the past, to blog each session that I attend, as well as other events and functions at the PDC. I will also be updating my status on Twitter @email@example.com on a regular basis.
My current schedule looks like this:
Sunday, Nov. 26th:
- 1:40 PM - US Flight 29 PHX-LAX Arrives 3:08 PM PDT
- Hotel Check-in
- Conference Registration
Monday, Oct 27th:
- 8:30 AM - Keynote Address with Ray Ozzie, Amitabh Srivastava, Bob Muglia & David Thompson
- 11:00 AM - 1 of the following sessions:
- Microsoft Visual Studio Team System: A Lap Around VSTS 2010 with Cameron Skinner
- A Lap around Cloud Services Part 1 with Manuvir Das
- 12:45 PM - 1 of the following sessions:
- Microsoft Visual C# IDE: Tips and Tricks with Dustin Campbell
- Microsoft Expression Blend: Tips & Tricks with Peter Blois & Douglas Olson
- 1:45 PM - The Future of C# with Anders Hejlsberg
- 3:30 PM - 1 of the following sessions:
- Microsoft Silverlight, WPF and the Microsoft .NET Framework: Sharing Skills and Code with Ian Ellison-Taylor
- A Lap around Cloud Services Part 2 with John Shewchuk
- 5:15 PM - 1 of the following sessions:
- Framework Design Guidelines with Brad Abrams & Krzysztof Cwalina
- Microsoft .NET Framework: Overview and Applications for Babies with Scott Hanselman
- Agile Development with Microsoft Visual Studio with Lori Lamkin & Sunder Raman
- IronRuby: The Right Language for the Right Job with John Lam
Tuesday, Oct 28th:
- 8:30 AM - Keynote Address with Ray Ozzie, Steven Sinofsky, Scott Guthrie & David Treadwell
- 11:00 AM - Keynote Address with Chris Anderson & Don Box
- 12:00 PM - AZ PDC Lunch Meet-Up at the Microsoft Store
- 12:45 PM - 1 of the following sessions:
- Building Search-Driven Portals with Microsoft Office SharePoint Server 2007 and Microsoft Silverlight with Stein Danielsen & Jan Helge Sageflat
- Windows Presentation Foundation Animation, YouTube, iTunes, Twitter, and Nintendo's Wiimote with Dan Fernandez, Scott Hanselman, Brian Peek & Clint Rutkas
- Visual Studio Debugger Tips & Tricks with John Cunningham
- 1:45 PM - 1 of the following sessions:
- Developing Applications Using Data Services with Mike Flasko
- A Lap around the Live Framework and Mesh Services with Ori Amiga
- Project "Velocity": A First Look with Murali Krishnaprasad
- A Lap around "Oslo" with Douglas Purdy & Vijaye Raji
- 3:30 PM - 1 of the following sessions:
- Microsoft Silverlight Futures: Building Business Focused Applications with Jamie Cool
- Microsoft Silverlight 2 for Mobile: Developing for Mobile Devices with Amit Chopra & Giorgio Sardo
- Live Services: Making your Application More Social with Angus Logan
- 5:15 PM - 1 of the following sessions:
- Entity Framework Futures with Tim Mallalieu
- Developing Connected Home Applications and Services for Windows Home Server with CJ Saretto & Fabian Uhse
- Live Services: Building Applications with the Live Framework with Raymond Endres
- 7:00 PM - Attendee party at Universal Studios
Wednesday, Oct 29th:
- 8:30 AM - Keynote
- 10:30 AM - 1 of the following sessions:
- Live Services: Live Framework Programming Model Architecture and Insights with Dharma Shukla
- Exposing Connected Home Services to the Internet via Windows Home Server with Brendan Grant & CJ Saretto
- Panel: The Future of Programming Languages with Gilad Bracha, Douglas Crockford, Anders Hejlsberg, Erik Meijer, Wolfram Schulte & Jeremy Siek
- 12:00 PM - Silverlight Controls Roadmap with Shawn Burke
- 1:15 PM - 1 of the following sessions:
- SQL Server 2008: New and Future T-SQL Programmability with Michael Wang
- Improving .NET Application Performance and Scalability with Steve Carroll & Ed Glas
- 3:00 PM - 1 of the following sessions:
- Live Services: Mesh Services Architecture and Concepts with Abolade Gbadegesin
- "Dublin": Hosting and Managing Workflows and Services in Windows Application Server with Dan Eshner
- Offline-Enabled Data Services and Desktop Applications with Pablo Castro
- 4:45 PM - Live Services: Building Mesh-Enabled Web Applications Using the Live Framework with Arash Ghanaie-Sichanie
- 6:00 PM - Ask-the-Experts
Thursday, Oct 30th:
- 8:30 AM - 1 of the following sessions:
- SharePoint 2007: Creating SharePoint Applications using Visual Studio 2008 with Chris Johnson
- Microsoft Visual Studio Team System Team Foundation Server: How We Use It at Microsoft with Stephanie Saad
- Research: Contract Checking and Automated Test Generation using Pex with Mike Barnett & Nikolai Tillmann
- 10:15 AM - 1 of the following sessions:
- Live Services: The Future of the Device Mesh with Jeremy Mazner
- Microsoft Silverlight 2: Control Model with Karen Corby
- 12:00 PM - 1 of the following sessions:
- Live Services: Notifications, Awareness, and Communications with John Macintyre
- Services Symposium: Cloud or No Cloud, the Laws of Physics Still Apply with Gianpaolo Carraro
- 1:45 PM - An Introduction to Microsoft F# with Luca Bolognese
- 4:20 PM - US Flight 152 LAX-PHX Arrives 5:40 PM MST
- 6:00 PM - Collapse in an exhausted heap on my bed
All of this, of course, is subject to significant change...
Desert Code Camp IV - Another Great Day
Posted by bsstahl on 2008-06-04 and Filed Under: event
I would once again like to thank the organizers, presenters and sponsors of Desert Code Camp for giving of their time, effort and funding to support such an outstanding community resource. Desert Code Camp IV, held yesterday, May 31st at the University of Advancing Technology in Tempe, AZ featured well over 40 sessions on topics such as Agile & TDD, ASP.NET, Flash, Silverlight, iPhone SDK, XAML, Apache, Ruby and much more. I was fortunate enough to attend 4 of these sessions, all of which were well worth my time in attending.
The first session I attended was "Scrum 101" presented by Dan Weinmann (who I think works for Desert Code Camp sponsor Neudesic but I am not sure because it is not listed in Dan's extremely minimalist bio on the Code Camp website). Dan spent the first part of the session explaining general Agile concepts which is appropriate for a "101" class, and his explanation was quite solid. What I was looking for however came in the remainder of the discussion where Dan gave specific examples of how his organization has utilized Scrum as an effective project management methodology. I found especially interesting the parts where Dan explained how they use Scrum "under the covers" when working with a client who, for whatever reason, will not use Scrum. I found this similar in a number of ways to how my team currently functions and came-away with several ideas of how we might be able to improve on our current processes.
The next session I attended was "Silverlight Zero to Hero" given by Simon Allardice of Interface Technical Training and gets my vote for the mythical "session of the day" award. This session gets my vote not for the abundant humor, which had the room in stitches and led me to refer to Simon on Twitter as "..the Eddie Izzard of the tech world, without the dress...". No, this was the best session I attended because of the unique perspective he gave to the topic. That is, he didn't waste our time by giving us the same overview of Silverlight that we could get in any 10k foot video from the Mix conference. Instead, we were taken step-by-step through Simon's unique metaphors detailing how we can use the generalized feature-set of Silverlight as well as how it could be used to create Rich Internet Applications that are truly effective in communicating with the user. The next time I am looking to take a class, I hope Simon is teaching it. In addition, if anyone is looking to become an instructor, I hope they sit-in on some of Simon's sessions which couldn't help but improve anyone's teaching technique.
My third session was "integrating Data with Silverlight 2.0 Applications" presented by Simon's colleague at Interface, Dan Wahlin. Dan, who described himself as "...not funny like Simon...", certainly had his moments, especially when he (unintentionally?) made a comment about some of his demo data to the effect of "...there are Johns in the room...nothing wrong with Johns." Dan's wife was videotaping at the time, I hope that clip ends up on YouTube. Regardless of the humor factor, this presentation as well was full of useful specifics on binding Silverlight 2.0 apps to data services including both SOAP and RESTful services.
Finally, I attended a preview by Scott Cate of MyKB of his TechEd presentation next month called "C# 3.5 Compiler Tricks". This session provided me with some fascinating insights into the workings of the C# compiler, including several situations where the compiler uses "syntactical sugar" to provide constructs that compile to .NET 2.0 IL code and have no dependencies on .NET 3.0 or 3.5 libraries. In these cases, it is possible to use these constructs in Visual Studio 2008 (or more specifically, when using the C# 3.5 compiler) even when targeting the .NET 2.0 framework. I was also fortunate enough to be able to spend some very enjoyable time with Scott after the session, discussing his most recent project, EasyDB.com. Scott set me up with access to the service beta and I spent the rest of the afternoon working with this fantastic "SQL in the Cloud". I will be blogging about this application and my experiences with it much more in the near future.
Again thanks to everyone who helped to make this event happen. Sponsors that I haven't mentioned yet who also deserve props for their support include Infusionsoft and JumpBox.
Loosely Coupled Apps
Posted by bsstahl on 2006-05-09 and Filed Under: event
I was expecting more of a "Best Practices for Data-Store Independance" type of session. This turned out to be more of a "Creating Web-Sites that Work Similarly Across Scripting Engines" thing.
Summary - Desert Code Camp 2006
Posted by bsstahl on 2006-05-09 and Filed Under: event
Overall, I (fully) attended 7 sessions and garnered quite a bit of useful information (especially what should be on my reading material list). I consider the Desert Code Camp a tremendous success and look forward to the next one. A big thank-you to the organizers and presenters.
Holding the Web on Your Shoulders With Atlas
Posted by bsstahl on 2006-05-09 and Filed Under: event development
Some links Tim showed us were:
Enterprise Library Overview
Posted by bsstahl on 2006-05-08 and Filed Under: event development
In this excellent session, Rob Bagby gave a warp-1 overview of much of the .NET Enterprise Library (Application Blocks). Some key points of the talk were:
- Config files for all blocks are now unified
- Crypto block provides Hashing & Encryption functionality
- Logging block provides a number of canned sinks including EventLog, DB, Text, MSMQ, Email and WMI
- A good resource on the Caching block is at http://www.ronjacobs.com
Of course, there were many other interesting items which I am unable to document here due to my mild case of brain disfunctionality, but again, I will post links to the slide-decks as I get them.
Creating Custom Controls for ASP.NET 2.0
Posted by bsstahl on 2006-05-08 and Filed Under: event development
A number of new facts came out of the final talk I attended on the day, Mickey Williams' discussion of ASP.NET 2.0 custom controls. These key facts for me were:
- Embedded resources can be used in 2.0 controls (i.e. graphics)
- ControlState can be used for critical data rather than ViewState. ControlState can't be turned off (be sure to use this for good and not for evil)
- SmartTags can be easily created to expose the most common elements of a control to the page developer for easy modification and configuration
- Controls can now inherit from CompositeControl or CompositeDataBoundControl
- Mickey highly reccomends Reflector as a class browser, explorer, analyzer and documentation viewer for .NET
I'm sure the slide-decks and samples will be posted soon.
Web Parts in ASP.NET 2.0
Posted by bsstahl on 2006-05-08 and Filed Under: event
Again, not too much new material here but still a good session. Chris Rolon gave us an high-speed overview of the Web Part framework in .NET 2.0 including many of the key features and his suggestions for using them. Again, I will post links to the slide decks as I get them.
Introduction to Agile/Extreme Programming
Posted by bsstahl on 2006-05-08 and Filed Under: event development
This session was given by Josh Knowles who gave a good overview of Agile methodologies. There wasn't much new for me here, but Josh did give some good selling-points for these types of methods, and did solidify a few concepts for me. Primarily, the keys to Agile development are as Josh described them:
- Individuals & Interactions over Process and Tools
- Working Software over Documentation
- Constant Collaboration
- The ability to respond to change rapidly
Some ways to accomplish these things include:
- Short release cycles (i.e. Quarterly)
- Refactoring - Don't Repeat Yourself
- "Spike" unknowns - Reduce Second-Order Ignorance
- Stories should be told on Note Cards - Keep 'em Short
Some tools at our disposal:
- nAnt - An automated build tool
- CruiseControl.net - An integration tool
- Subversion - A freeware Source-Control System that Josh likes better than VSS
I'll post links to some of these slide-decks as I get them.
VB.NET 2.0 Language Changes Give You More
Posted by bsstahl on 2006-05-08 and Filed Under: event
Unfortunately, the presenter for this session never showed-up and a number of us were left sitting in the room for about 10 minutes. I'm glad I slipped in a 5-minute power-lunch beforehand.
Posted by bsstahl on 2006-05-07 and Filed Under: event
Nice. On arrival, we were given Free copies of "Writing Secure Code" from Microsoft Press, along with schedules and a few other things. This looks to be more organized than I thought it would be and should turn out to be very interesting.
Dictionary of PDC ‘03 Terms
Posted by bsstahl on 2003-11-02 and Filed Under: event development
Instead of posting a summary of the last 2 days of the PDC, I decided to summarize the entire PDC as best I can by creating a glossary of terms. These terms came out of the PDC as either new, having a modified meaning, or greater importance than before.
WinFX – The code-name for the next generation of the .NET Framework. Key features of WinFX include Indigo, Avalon and WinFS.
Longhorn – The code-name for the next generation of Windows built on, and to work with, WinFX. Longhorn provides the user interface features of Avalon, the file-system improvements of WinFS, and the service support of Indigo.
Indigo – The code-name for a set of managed services in the .NET Framework created to support a unified coding structure for applications developed using the services model. In a very-real sense, Indigo makes the SOAP implementation available to all types of services, not just web services and unifies the three main development standards for architecting solutions using the services model, Web Services, .NET Remoting, and Enterprise Services, under one set of managed objects.
WinFS – Vast improvements in the Windows File System that take us closer to being able to view the file system as a relational database. The addition of extensible metadata schema on top of NTFS will allow users to view data in various ways without having to physically reorganize the data. For example, you could view documents by project first, then author, or author first, then project, without having to change the underlying structure of the file system. Currently, with folders, we can only choose one way or the other.
Avalon – The code-name for the next generation of graphics processing engines in Windows which, among many other things, will put much of the graphics processing burden where it belongs, in the GPU (graphics processing unit) rather than using standard CPU cycles. This will allow for vast improvements in application graphics without impacting performance.
Yukon – The code-name for the next generation of SQL Server. Yukon runs in-process with the Common Language Runtime allowing queries to be executed using any CLR language. Yukon also provides support for XQuery allowing procedures to return query results from XML data which was returned as a result of a T-SQL query. Yukon also provides full support for SQL Cache Invalidation (see below).
Whidbey – The code-name for the next generation of the Visual Studio.NET IDE. Whidbey provides developers with the language tools that help create applications that take advantage of the new features of WinFX and aid in the development of applications that utilize the Services Model (see below).
Orpheus – The code-name for the next generation of Visual Studio.NET after Whidbey.
Services Model – The design philosophy in which application tiers are divided into services by functionality. Often, these tiers are divided into Presentation Services, Business Services (Business Logic) and Data Services. Indigo is designed to support the creation and interaction of these services.
SQL Cache Invalidation – The interaction between SQL Server and ASP.NET that allows the database to invalidate HTML stored in the IIS cache when the data that the page is based on becomes stale. This ability exists, using new utilities from Microsoft at a table level from SQL Server versions 7 and 2000 and is available to the row level in SQL Server Yukon.
No summary of day 3 - yet
Posted by bsstahl on 2003-11-01 and Filed Under: event
Thanks to Microsoft's hosting of a party for all conference attendees at Universal Studios, I haven't yet put together a summary of conference day 3. I hope to summarize days 3 and 4 together and post them by late Friday morning.
Day 2 AM
Posted by bsstahl on 2003-10-30 and Filed Under: event
The morning sessions of Day 2 were highlighted by drill-downs into Yukon and WinFS. The most impressive demo of the conference so far was done during the WinFS drill-down by Gord Mangione and Tom Rizzo. They used the Information Agents of WinFS to configure their voicemail application so that when a call came in from a client matching specified custom criteria, and the calendar showed that the user was busy, it would respond to the caller with the time the user's calendar next showed him free.
WinFS may finally make good on the decade-old promise of turning the file-system into a relational database. Its metadata features, including extensible schema, appear poised to make the file-system as programmatically accessible as a database server, with many of the same query capabilities including natural language or SQL style queries.
Yukon also appears to be a major improvement in development technology. This next generation of SQL Server provides CLR (Common Language Runtime - AKA, the .NET Framework) in-process to the SQL Server. This will allow developers to separate the application (or system) tiers physically as well as logically, improving performance, scalability, security, maintainability and extensibility. It will also allow queries to be written in any CLR language, provides structured exception handling for those queries (including in T-SQL) and will allow us to build queries that easily integrate data from various sources (including Web Services).
Needless to say, I am rather excited about many of these developments and am looking forward to installing Longhorn and Yukon on development servers when I return to the real world.
Afternoon - Day 2
Posted by bsstahl on 2003-10-30 and Filed Under: event
With the exception of the previously mentioned security problems the remainder of day 2 went quite well. I attended sessions on Web design using ASP.NET Whidbey, the new features in Visual Basic.NET under Whidbey, as well as a talk on using Whidbey to program mobile devices such as Pocket PCs and Smartphones. Some of the most interesting topics from these sessions included the concept of Master Pages, which is similar to a frameset without actually using frames, the new navigation controls provided with Whidbey such as the breadcrumb, sitemap, and menu controls, and the use of SQL Server Cache invalidation to improve the application performance by caching objects without having to worry about those objects becoming stale.
By far the most interesting items were in the Visual Basic features update. The new version of VB that ships with Whidbey will include even more tools to promote code reuse such as Operator Overloading which will allow us to define how operators such as the plus sign (+) or multiplication sign (*) work with our objects. We will also be able to define both narrowing and widening conversions for our objects which will allow the use of cType with those objects, we will have access to strongly typed collections (i.e. new collection(of myObject)), and will be able to make use of Generics which, among many other things, will enable us to create items such as nullable scalars.
I’ll post more from my information overload as time allows!
Posted by bsstahl on 2003-10-30 and Filed Under: event
The one major letdown from this conference so far has been security. Security guards have been juvenile in their dealings with developers, and have been invisible when needed. They order people near session doors to do their jobs for them, and will not provide any support for doing that job. It is too bad that something non-technical such as security can make busy sessions virtually impossible to attend and understand. Don Box’s latest talk on Indigo was such a session for me and I will not be able to know for certain what I missed in that session until the conference DVDs are released.
PDC Day 1
Posted by bsstahl on 2003-10-29 and Filed Under: event
Day 1 of the 2003 PDC was mainly architectural overviews of many of the up-and-coming features of the new Microsoft platforms and tools. The Keynote by Bill Gates and Jim Allchin gave many of us our first look at the new features of Longhorn, the code-name for Microsofts next generation operating system. The three key features of Longhorn that were demonstrated were: Indigo - the tools to implement application architectures built on the services model, WinFS - file system improvments that will allow us to organize and view data in new and innovative ways, and Avalon - the presentation engine that takes advantage of Indigo and WinFS (among other things). More details of this presentation are available here from Microsoft.
Afternoon breakout sessions included an Architectural overview of Whidbey, the code name for the next generation of Visual Studio .NET development tool. I also was lucky enough to see what was possibly the best presentation I have ever seen. This presentation, given by Don Box and entitled "Indigo": Services and the Future of Distributed Applications is a must-see and will hopefully be made available on Microsoft's website. Don related this history of object-oriented development to the current enhancements of the services architecture, and presented key guidelines for developing using this architecture, both now and in the future.
Tomorrow, I intend to look further under the covers of a number of these technologies including Whidbey, Indigo, Avalon, and possibly Yukon, the code-name for the next generation SQL server.
I have arrived at the PDC
Posted by bsstahl on 2003-10-28 and Filed Under: event
Thanks to the fires in Southern California, my arrival in Los Angeles for the 2003 Microsoft Professional Developers Conference was delayed by about 8 hours. My flight out of Phoenix was cancelled and I had to rent a car and drive out to LA. Fortunately, everything worked out fine and I am looking forward to attending the conference starting tomorrow morning. I will post here with details as often as I can.
Posted by bsstahl on 2003-06-03 and Filed Under: event
Day 3 | 5/29/2003 6:10 PM, EDT
Highlights of the final sessions of TransITech 2003 include a number of case studies where advanced technologies, such as wireless networks and PDA devices, have been successfully employed in the transit industry. I want to thank all of the presenters and the hosts of this outstanding event for their efforts. Attendance at this conference was well worth the effort for me and I highly recommend it for anyone involved in Transit Industry IT. For those I met at this conference, I look forward to talking to you again soon, or at least seeing you at next year's conference in Houston. To those who I did not have opportunity to meet, please feel free to drop me a line.
Day 2 - PM
Posted by bsstahl on 2003-05-30 and Filed Under: event
The final session of Wednesday dealt with one of the most important issues technology managers have to deal with today, the problem of system integration. How can we take many disparate systems and connect them seamlessly to one another? Fortunately, we now have bodies such as the W3C defining sets of standards that we all can use to ensure the interconnectivity of our applications. For example, the Work Order System that I helped to develop at the Port Authority of Allegheny County uses XML transported via a SOAP interface (both W3C standards) to expose methods for creating work orders to external systems such as scanning systems and the onboard bus computers. These interfaces are available to any application regardless of platform. The application also supports the COM interface provided by PeopleSoft as gateway into the PeopleSoft Financials module. COM is a proprietary, binary standard from Microsoft and is therefore not generally recommended, however it does allow for a low-overhead interface between applications running on the Windows platform. In the Port Authority's Work Order System, we used this interface to connect to inventory, often allowing the partsroom attendants to have materials ready and waiting for maintenance personell and preventing the scheduling of non-critical work where parts are not yet available.
Day 2 - Early PM
Posted by bsstahl on 2003-05-30 and Filed Under: event
Day 2 - Early Afternoon Session | 5/28/2003 3:00 PM, EDT
Early this afternoon, the COO of the Port Authority of Allegheny County, spoke about the outstanding relationship between IT and Operations at the Port Authority. The Work Order System team was featured in that talk as a success story of how this relationship can foster an environment of innovation. I couldn't agree more and would like to offer my thanks to all of the other members of that team who made the Work Order System project such a pleasure to work on.
Posted by bsstahl on 2003-05-30 and Filed Under: event
TransITech Day 1 | 5/27/2003 9:30pm EDT
Day 1 of APTA's TransITech Conference was an outstanding experience. I was very pleased that both the CEO and the CTO of the Port Authority of Allegheny County gave significant attention to the Work Order System application. The Chief Technology Officer in particular spoke of how 7 people in 18-months were able to put together, from scratch, a fully-integrated, web-based, top-of-the-line system. I am proud to have been even a small part of that effort.
I was happy to meet so many people from the other transit agencies around the US and Canada and look forward to meeting many more tomorrow. If you see me walking around the event hall, please feel free to introduce yourself. Just look for the CopperByte logo on my shirt.
Posted by bsstahl on 2003-05-28 and Filed Under: event
Notes from TransITech | 5/27/2003 6:30am EDT
Stay tuned for news and notes from the APTA TransITech conference starting in about 2 hours