TechEd was Green
Two months after the event I finally get around to posting a commentary on an aspect of Tech-Ed Africa, that was so under stated that I am wondering if I attended the same event as every one else. This year Tech-Ed Africa really decided, maybe intentionally and maybe not, to be a very green event. By green I mean the whole environmental aspect. How did they do this:
- Delegates bags - one of the highlight of Tech-Ed has always been the delegate bag, which generally I use for the whole next year. They are always great quality but this years bags are made by Owl, and almost every thing that made up the bag was from recycled materials.
- Paper less - Missing from the bag was the usual pad of writing paper. Yes, less paper saves trees.
- Presentation CD’s - At the end of the event you used to get a CD/DVD with all the slides on it. Not this year, all had to be downloaded later. This is great for the environment as you have less disks to make which generally don’t get used much. As a speaker this is also great since it means the deadline for getting the completed slides to the staff was much longer, so those last minute tweaks that the audience sees, now make the download.
Very interesting approach - would love to know if more was done and why it was not punted more.
Some new presentations
I’ve been presenting up a storm recently: mostly because I have been on a presentation skills course ;) where I learnt a lot of the soft skills about how to be a better presenter. For that course I had to present with slides on something I knew about, so I choose LINQ. You can watch me do my presentation (it’s a mere 7min) or grab a copy of the slides.
After all that was done I have been presenting on the joys of jQuery recently, and rather than actually bore the audience with slides and constant switching to demos I decided to build a presentation system in jQuery which did both the slides and demos. Which you can view below. A few notes on it, to move to the next slide you need to click the globes at the top or press = and pressing - will make you move back a slide. You can also press the print button in the top section to give you a single page print view (i.e. stripped of colours & with my slide notes). What is great is that the entire thing is a single html page and about 100 lines of JavaScript for the slideshow system. Click the thumb nail below to view it:
My Presentation @ Dev4Devs
If you are attending Dev4Devs on Saturday (or are here after the event) and you are looking for a copy of the slides and code you can get them below! If are looking for the ADO.NET Data Services cheat sheet I mentioned then you need to go here.
Code
The code here is also different from what I presented in the following ways:
- There is a timer control in it - so if you add items to the DB while on the site, it updates and shows those changes within 5 seconds.
- The layout is slightly bigger (bigger header) and has buttons (to make it look like an email client) - these were removed because it doesn’t work at 1024x768 (aka the projector resolution). So they back in their graphical beauty.
- There is a feed button which links to a ATOM feed for the last 10 emails - something I mentioned you could do, well now you can see it.
- There is a database creation script, but no data. You need to create your own data.
Slide Show
Free SharePoint Developer Training
On May the 23rd InformationWorker and Inobits are getting together and offering FREE SharePoint developer training. It is a full day event where Inobits will be providing a number of lab based training sessions focused on developing with SharePoint. Also being a full day event there will be some lunch provided for everyone (special thanks to 3Fifteen for sponsoring it). It should be a really great event for everyone, because you pick the lab/s you want to do which means if you are a beginner or expert you do the ones that will benefit you.
Because of all the effort to prep for this, you much register for it at http://www.informationworker.co.za/Pages/SLABSRegistration.aspx
A sampling of labs available is:
- Web Parts
- Data Lists
- Event Handlers
- Workflow
- Silverlight
- Page Navigation
- Page Branding
- Web Services
- Content Types
- User Management
Come and speak at InformationWorker!
The InformationWorker group is running two events in the near future and we are looking for speakers for the events and I am hoping I can peak your interest enough to participate or forward this on to someone you know who may be interested.
First is in April at the "normal" meeting where we are running a tool fest. This session is about showing off your favorite SharePoint tool. What is great is that this is about tools you know (or learn between now and then) and you only need to speak for 10 to 15min so for people who haven't presented before or are a junior this is a great opportunity to get some practise (and with TechEd coming up later this year - maybe get yourself in the spotlight to talk at that).
The second session is tentatively scheduled for May and it is a new idea where we do a Saturday morning. In this session we will have a mix of hands on labs and 30 to 45min presentations running in two or three tracks. We are hoping to do a IT Pro, Dev and Business mix so if you don't think your technical but want to talk about testing or governence or something like that we would love to get it into the mix. Also we are hoping to cover a wide skill level (100 through 400) so if you know some things about the UI of SharePoint and tweaking it with the content query web part or how to get Silverlight to dance in SharePoint but maybe not what Visual Studio is that is fine too.
If either event appeals to you please drop me a mail ([email protected]) so we can discuss it!
Juval Lowy coming to SA
Juval Lowy is from IDesign (which does some of the best WCF and .NET guidance) and runs the WCF master class which is a brilliant, but damn expensive course, so I’m definitely attending the FREE event where he will be speaking about .NET services. If you want to register: https://msevents.microsoft.com/CUI/Register.aspx?culture=en-ZA&EventID=1032402482&CountryCode=ZA&IsRedirect=false More details below.
Event Details:
Start Time:
11 February 2009 06:00 PM Harare, Pretoria
End Time:
11 February 2009 08:00 PM Harare, Pretoria
What is .NET services?
This session will present the service bus programming model, how to configure and administer service bus solutions, working with the dedicated relay bindings including the available communication modes, relying on authentication in the cloud for local services and the various authentication options, and how to provide for end-to-end security through the relay service.
You will also see some advanced WCF programming techniques, original helper classes, productivity-enhancing utilities and tools, as well as discussion of design best practices and pitfalls.Looks like this could be interesting - Microsoft Expression Event
2009 Expression Tour: Hands-On Labs
The Developer and Platform team at Microsoft South Africa is pleased to invite you to the Expression Tour, Hands-On Lab training event. Who should attend?
The training is aimed at designers and studio managers. If you’re into pixels, colour and creating amazing online experiences, then this one’s for you.
What we’ll cover
This is a two-day classroom training on WPF, Silverlight and Expression tools for non-technical audiences (200 level).
Day 1 | About the Speaker : Michael Koester Michael Koester works for Microsoft Corporation as the Designer Marketing Manager for Middle East and Africa and Central and Eastern Europe. Prior to working at Microsoft, he had been an illustrator and graphic/interactive designer for various interactive agencies and new media companies in Germany and the US. Visit Michael's blog: http://koestie.wordpress.com |
Provides an overview and participants will then build a working WPF application from scratch using the Expression tools. | |
Day 2 | |
Participants will build a working Silverlight 2 application with audio and video from scratch. Additionally, participants will also get hands-on experience with some of the coolest technologies (DeepZoom and Virtual Earth integration). |
NB: This event is FREE OF CHARGE
Limited space available, so register today to secure your seat!
Johannesburg | Cape Town |
Date: 26-27 January 2009 Time: 08:30-16:00 Venue: IT Intellect (Bryanston) Click here to register | Date: 4-5 February 2009 Time: 08:30-16:00 Venue: IT Intellect (Waterfront) Click here to register |
E-mail: [email protected]
Phone: 0860 2255 67
Read more about Expression Studio at http://expression.microsoft.com
Mac & IPhone Developers Wanted
Rein is organizing the first CocoaHeads meeting in Africa. If you are interested in development on Mac OSX or IPhone then you have to see http://www.noggin.co.za/2008/12/cocoaheads-johannesburg/
What is a CocoaHead
CocoaHeads is a group devoted to discussion of Apple Computer's Cocoa Framework for programming on MacOS X. During monthly meetings, members present on their projects and offer tutorials on various programming topics.
It’s at the BB&D offices, so I may decide to pop in myself and ask questions like “how does this compare with .Net or Java frameworks?” and “why should I bother when I have Mono/Silverlight/Flash/Air/Java etc…?”, which I am sure will lead to me being beaten by a Mac developer ;)
Scott Hanselman - Last night at Microsoft
Being on the southern tip of the world and add the slowest bandwidth anywhere (confirmed by Scott himself) we seldom get the greats like Scott Hanselman out to talk to us, let alone for free, and when he is on holiday… but that is what the S.A. Developer community got last night and what a night it was. He spoke last night on MVC and I made some notes I thought I would share.
The first concept is that
- ASP.NET > Web Forms
- ASP.NET > MVC
It’s an interesting way of thinking that ASP.NET is not Web Forms, since it is normally that we use those two interchangeable. ASP.NET is a framework for building web applications, if we use web forms on that framework is a choice not a requirement. Web forms in itself is a lie, it tries to make us believe that the web is stateful… so that we get the RAD/VB6 experience for development. The problem is that like the Matrix, the lie constrains us. MVC is the anti-RAD in a way, it opens up a lot more to the developer than Web Forms traditionally does. Knowing there is a lie, and knowing the truth can hurt you (the same way Neo knew there was no gravity, yet fell) and so MVC can hurt you. MVC is NOT a replacement for Web Forms, it is another way to solve a set of problems and some problems are better solved in web forms, and others in MVC (or ASP.NET Dynamic Data).
MVC is made up of models, viewers and controls and all of these are changeable. So the viewers uses web forms to render the HTML, but there are other options. One of those is NHaml which is a very different way to create HTML (can read about it here) and I thought that looked very interesting. Viewers should contain no logic, they should focus on rendering HTML only. What is very nice is that for the rendering side JQuery is bundled directly into MVC! It is also important to note that ascx files (ASP.NET controls) are not a
Separate from the viewers is the controls which uses the ASP.NET Routing feature of 3.5 SP 1 heavily. It is very elegant in it’s implementation and shows a forward thinking of convention over configuration. In other words it if you type in a URL like http://test/account/view, it will first check in the viewers\account folder for a view.aspx or ascx file and then in the viewers\shared folder for a view.aspx or ascx file. No config to say that this URL maps to this file. Controllers should contain the bulk of the logic but should not have any web concepts (i.e. don’t use the Request object). Obviously you could, but this breaks the important separation in the MVC design. What is nice, is that because the design of MVC is to help enforce separation, unit testing is amazingly simple and if you have the full versions of Visual Studio then it even builds unit tests for you! So while it may be very easy to put some code in a controller to check if a user is authenticated, you need to decide what level of tolerance for code smell you can handle.
Separate still from both of those is the models. Which is your data model for example LINQ to SQL. The purest form of MVC is you have your data model and then a model to talk to controllers so there is a separation in the models and everything is clean. How much benefit that has in real world is unfortunately not that much and because you have the power (you took the red pill) you can share the model from the models to the controllers.
After that Scott showed his latest project, called NerdDinner. Which is based on MVC and will be an open source solution through CodePlex one day. He showed a lot of the code and highlighted the good bits and the bad bits. This really highlighted what he was talking about and some of the problems you need to solve when working with MVC. After that was Q&A with Pizza.
Defiantly one of the best talks I have attended in a long time. He is on his way to Cape Town (taking a day out of his holiday to fly specially to CT) so if you are in CT, you must go and see him! Details can be found on S.A. Developer!
SQL BI Boot Camp - Day 1: Afternoon Session
Reporting Services
After lunch we dived into the next topic I know (don’t worry I learn stuff later in the day), namely Reporting Services :) So we started with the PowerPoint again :| I am not repeating everything he said, since a lot is covered in my earlier post on reporting services.
First where are reports used:
- Internal reporting – operational & management
- External – to customers
- Embedded – Portals, Windows and Web
The lifecycle of report development is:
Reporting lifecycle – Once again no clever names (I should work on that).
Some notes on RS which I never knew: Data driven subscriptions are an enterprise edition only feature :( and drill through only enabled for reports rendered into html (wonder why PDF doesn’t support it).
Reporting Services Labs
Right after the slides were put away we dived into the first lab… actually we didn’t because the report builder 2.0 software was NOT installed on the machines :( Skip over lab 1 and onto lab 2! Lab 2 involved creating a simple report with a chart control on it. It enjoyed this lab even though it was fairly simple.
The report from exercise 1. Note two charts but it is a single chart control. Thanks Dundas :)
For exercise 2 we created a report with gauges:
The report from exercise 2.
The third exercise involved publishing to a RS server from Visual Studio and then exporting to Word.
The report about to be exported in exercise 3.
All in all I found the RS labs very enjoyable if not even at the advertised level 200 for the course.
Introduction to UDM
With that out of the way we looked at UDM, which is the SQL 2005/2008 name for a cube! UDM stands for Unified Dimensional Model.
Uses of OLAP
- Sales analysis
- Forecasting and budgeting
- Financial reporting
- Web Statistics
- Survey Result
- ETL Process Analysis
SQL Server Analysis Services (SSAS) is made up of an OLAP component and a data mining component.
Basic data mining is also available for free in Excel (separate download).
Building a cube provides more functionality to users, enables high performance queries, abstracts multiple sources and encapsulates business rules.
Now that the introduction is done it was on to the labs. The first lab was to build a cube! There seem to be WAY too many steps involved in doing this (maybe I am just a lazy developer) but it quickly became an exercise on following a manual and not really any understanding of what and why each step was being done. One of the comments I over heard was that it was a lot of work to build a pivot table, because that’s all we ended up with. I think that actually highlighted the lack of information about why we did things :S
Using the data browser in the cube we built.
We then fired up Visual Basic :shock: to build an installer for for the cube so it could be installed on multiple servers easily. This was very interesting, mostly because I spent a lot of time in the past with MSI and never really got to grips with the advanced features (like embedding VB code).
My VB code! Actually it’s copy and paste from the snippets file.
Deploying my cube using the installer.
To do that we were given 75min and the manual said it expects us to complete lab 1 in 75 minutes (I did it in 71), but no extra time was allocated for lab 2 which was estimated 45 min, lab 3 or lab 4 which were estimated at 15min each. That meant unless you were super fast with this (i.e. you knew it) you couldn’t get to 75% of the labs :(
Introduction to MDX
After the cubes we moved into MDX which is a language similar to SQL but optimized for handling analysis of data in a cube. It’s specifications are either from OLEDB for OLAP (ODBO) or XML/A.
Since it is a language it is not a end user, or even power user, tool. It is a development tool and the skills needed to help learn it are:
- Good to have: SQL Skills, Excel Skills (Formulas)
- Not helpful: C# or ASP.NET
So what does it look like: SELECT <Dicers> FROM <Cube or sub query> WHERE <Slicer>
SQL vs. MDX
- In SQL the result is defined by columns which populate rows while in MDX it is defined by rows and columns and populating cells.
- In SQL the row headings are data while in MDX they are a schema.
- SQL aggregates dynamically into groups while in MDX data is referenced by cell sets.
What is a MDX Set: Grouping of items together. Uses standard set notation: { … }
You can add formatting (like currency information or thousand separators) to the result in the cells using the CELL FORMATING statement.
Tuple – A list of members from different hierarchies separated by commas. Pronounced: Too-ple like quadruple. These are what goes in the <Dicers> and <Slicers> section of the example above.
Imagine the following 3 tables
Towns:
- CT
- JHB
Values:
- SALES
- COS
Sales People:
- JIM
- JACK
You could built the following tuples:
- All sales for CT: (ct,sales) or (sales,ct) <- Order does not matter.
- All sales for JHB and CT: (ct,sales)+(jhb,sales)
- All JIM’s sales in CT and all JACK’s sales in JHB: (ct,sales,jim)+(jhb,sales,jack)
- Note that would exclude all JIM’s sales in JHB and all JACK’s sales in CT.
Types of tuples:
- Complete tuple: references every dimension
- Partial tuple: omits some dimension. Will always use current member if dimension is omitted.
In MDX tuples have functions like: Percentage of parent, prevmember, parallelperiod and children.
Now that we have looked at MDX we hit the lab which was very refreshing as they provided about 10 broken MDX queries and you had to apply your knowledge (and skills with the help file) to fix each one. This was a really good lab since it actually enabled you to learn and understand what you were doing. It was a little frustrating at first because it’s different but more of the labs should’ve been this way. In the end I got some right and some I just got stuck on and had to peek at the answers to see how to fix them.
One of the MDX queries I fixed.
By now it was after 6pm and time to check-in and head for dinner and drinks.