31 Oct 2013

TechDays 2013: ASP.NET

Missed the event? Watch the YouTube video!

In both Johannesburg and Cape Town with the awesome Microsoft TechDays events! I was lucky enough to present on two talks: LightSwitch and ASP.NET. Below you can find the slides for ASP.NET (SlideShare does a poor job with them, but if you go to the website you can download the original PowerPoint!) - See more at: http://www.sadev.co.za/content/techdays-2013-lightswitch#sthash.zYVT7SRt..., the completed demos, my demo script and the assets I used!

The final part of this ASP.NET talk was a streamlined version of my Visual Studio is awesome talk I did at JSinSA – I recommend looking at that for even more awesomeness (I have even more cool demos in that).

AttachmentSize
File Demo Script19.12 KB
Package icon Demo Assets27.85 KB
Package icon Completed Demo1.21 MB
29 Oct 2013

Visual Studio 2013 - WHERE IS MY PRESENTON?!

Update: The pro power tools for 2013, which includes PresentOn is now out!

A mere seven months ago, I wrote about an awesome trick in Visual Studio 2012: PRESENTON. This trick optimises a bunch of fonts really quickly to look good on stage – not just the text editor but the IDE too!

However this relied on the Pro Power Tools extension which doesn’t exist for Visual Studio 2013 yet. So how can you achieve the same results? With just some manual settings in the IDE.

Backup

imageBefore you start, make a backup of your current settings by going to the Tools menu, then Import & Export Settings. In the next dialog, all you need to export is the Fonts and Colors options (see image below). This will ensure that after your presentation, you can roll back to your normal experience. It is also a good idea to do this again after you are setup for your talk, so that next time you can just import it in minutes & be ready (in fact I did that & you can grab my one below).

Changing the settings

Step one, get to the font settings – which is REALLY easy. Hit Ctrl+Q, which takes you to the Quick Launch & type in font.

 image

Now you are in the font dialog and you can change all the settings in here. The key ones I find are listed below.

image

  • Text Editor : Naturally, this is the text that appears on the screen!
  • Environment Font : This badly titled item is for the IDE, all menus and text rendered in the IDE that is readonly is affected. This really makes your IDE much easier to see.
  • Code Lens  : For VS 2013 Ultimate*
  • Statement Completion : This is intellisense – since I use it a lot, I find it helps the audience see better what I am doing
  • Editor Tooltip : If you are showing off the editor which may include tooltips you can make them larger**.
  • Package Manager Console : If you are demo’ing Nuget and/or Entity Framework Migrations this is very useful to increase**.
  • Output Window : Always something worth having large because compilation is a big part of any talk.
  • Locals Window : Another one that is good for IDE demos or demo’s where you are doing demo’s focused on debugging**.
  • JavaScript Console : Lastly for the JS demos, a must have. **

Font Choice

Something to think about when doing this, is what should this look like. For almost a decade, I’ve followed the advice from Don Box on what goes into a great technical presentation which is min font size of 14 point (I use 16pt). While I think he was spot on with font choice, now days I use a different font called DejaVu Sans Mono which I think looks amazing.

My Presenter Settings

Since I did this for the recent TechDays, you may want to use my presenter settings file so you can grab it below!


* If you want Code Lens for versions of VS other than ultimate, go and make your voice heard: https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/4150271-make-codelens-available-outside-of-ultimate

** This setting is not included in my presenter settings which you can download below.

AttachmentSize
Package icon VS 2013 Presenter Font Settings1.06 KB
29 Oct 2013

Updating an update panel from JavaScript

At TechDays in Cape Town, I was asked an interesting question: how do you force an update panel to update from JavaScript? The asker was using SignalR to do the trigger but really, that isn’t important – JavaScript is just JavaScript.

You can grab the completed example at: https://github.com/rmaclean/UpdatePanelExample

Code Behind

So the first part is the code behind – I am using a static integer to just have something to update, so every time we update the text it is different. The only interesting thing to remember here that the update panel causes a partial postback so you can’t use the page load event isn’t useful here. In the example I used the update panel’s onload event to update the text.

public partial class _default : System.Web.UI.Page
{
    string thingyText = "loaded";
    static int counter = 0;

    protected void updatePanel_Load(object sender, EventArgs e)
    {
        counter++;
        thing.Text = thingyText + counter.ToString();
    }
}

Update Panel Config

A minor point, is that since we will be calling the update panel from JavaScript we need to give it an ID. In addition we can use the ClientIDMode property, which was introduced in .NET 4, to set it to static so we can easily find it in JavaScript.

<asp:UpdatePanel ID="updatePanel" OnLoad="updatePanel_Load" ClientIDMode="Static" runat="server">
    <ContentTemplate>
        <asp:Label Text="nothing" ID="thing" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>

JavaScript

Finally we have the JavaScript. For this example we are using setInterval to do the call every 500ms. The code to update is just the __doPostBack function and we pass the ID of our update panel to it. That will cause the update panel to do its thing Smile

<script>
    function boop(){
        __doPostBack('updatePanel', '');
    }

    $(function () {
        setInterval(boop, 500);
    });
</script>

Finally, if you are using .NET 2 or .NET 4 then you could run into a bug with the __doPostBack – thankfully this is fixed & you can read about the issue & get the fixes from Scott Hanselmans post on the issue.

27 Oct 2013

ALM Readiness Treasure Map v2.1 - Show what we have done

I recently had the fun of recording another video for the AL M Rangers treasure map project, this time showing all the work I did for the 2.1 release. You can view it below

Hopefully you like it! Part of this video is a serious attempt at trying to find out how to build great coding videos. When I compare to “let’s plays” on YouTube the issue with coding is it is primarily a thought exercise. So the idea of just record the coding and talk about it later is a way to solve that. The pop-ups & music are all to enhance the video. If you have any other ideas or comments on this, please let me know. I would love to hear them!

19 Oct 2013

Amazing Lock Screen: release 14

imageLast night I shipped the latest version of the very popular (4 stars from 800 ratings, just under 70k downloads) Amazing Lock Screen which brings in some new features.

Visual Improvements

First off it is for Windows 8.1 only – so get that upgrade going! Next is there are some UI tweaks in it, nothing too major around that either, but I think it is still visually interesting.

The most obvious visual improvement is around the tiles. We now have wide tile support (in addition to the square) and it is a live tile, which shows the last 5 days worth of images!

imageimage

Image Handling

imageHowever that is not the major reason for this release, the major new features are a bunch of settings. The default, and the way we have always done it, is to have the app download the image to a temp folder & then set the lock screen. For release 14, we have made each one of those steps a setting, so

  • You can control if it downloads automatically now
  • You can control if it sets the lock screen automatically
  • You can control the location (temp or pictures library)

So what does this allow you to do? To the right is my settings, where I have it download automatically, download to the pictures library & do not update the lock screen.

Using this combination I can add the folder under pictures to the normal lock screen settings and set it to be a slide show (see settings below). 

image

Since Windows is checking a folder for images and the app is not setting the image, it allows for amazing lock screens which are built from MULTIPLE pictures from Bing! It looks amazing!

image

(shitty camera phone)

The second trick is because we no longer use temp, I can also use the Bing images for my desktop wallpaper by setting the wallpapers to point to the Amazing Lock Screen folder.

image

I hope you enjoy using this release and please send feedback!

09 Oct 2013

Rangers Treasure Map v2.1: Snap re-invented

ScreenGrab (1)As part of my work on the Microsoft ALM Rangers Treasure Map, I want to share about how we changed snap for the 2.1 release.

Why?

The first question, is why do we need to change snap for 2.1? The requirement is that 2.1 is primarily focused on supporting Windows 8.1 & Windows 8.1 does snap a little differently to how Windows 8 handled snap. In short, in Windows 8 you had snap (fixed width), a full screen and third “middle” state – however Windows 8.1, has full screen and then any value between that down to a minimum width.

ScreenGrab (2)Microsoft has written a great document covering what is new at: http://msdn.microsoft.com/en-us/library/windows/apps/hh465371.aspx

Planning

Step one in doing this was to investigate what we had – so I just took the app and ran it on Windows 8.1 and played with the new snap experience. From that I took screenshots, made annotations etc… for us to decide on an approach. You can see these images along the side/bottom of this post.

Decisions

ScreenGrab (3)Since this is a minor release for us, the decision to not invest too much into this release was made. So we decided not to try and build something brand new but rather make sure everything works as it does currently.

To this we chose a minimum of 320 pixels (the default in 8.1 is 500) since that matched what we had in Windows  8.

Code

One of the choices we made in version 1, was to NOT use the out of the box state manager way to change the UI. You can find out more about how we implemented that in a video I did for Channel 9ScreenGrab (4):

ScreenGrab (5)

So what did the code changes look like for with our model? In the image below you can see that rather than ask what state we are in (line 142 on the left) we rather just check the screen width and based on that we load the correct namespace.

This tiny change was all that was needed, and this was made successful because we decoupled the views from the start rather than trying to have one view that does everything using the visual state manager.

image

08 Oct 2013

Scrum, it is just shorter waterfall?

When I speak to people about Scrum, I often hear people describe Scrum as: Waterfall but with shorter iterations. That view, imho, is fundamentally wrong and will lead to you not getting any of the benefits from using Scrum.

Waterfall Myths

imageWaterfall provides a structured approach to software development and has a reputation for taking a long time to deliver because each phase must occur and must occur in order. In reality Scrum is very similar and has many of the same steps, in the same order as Waterfall.

So what about the length of time issue? Waterfall seems to be used around massive projects which takes months or years to ship, yet Scrum is great because you have a minimum viable product (mvp) every four weeks. That isn’t true either – a lot of the myth here is because during the scoping of a project using Waterfall, everyone puts the everything in. In reality, nothing stops you having smaller deliverables of a mvp while using Waterfall.

The last myth to dispel is that Scrum is better than Waterfall because it allows the product owner to change the goals as they learn about what is built & the market conditions change. Waterfall does allow that too. In Waterfall it is called change controls and, done right, they work very well.

In addition, if you use smaller iterations with Waterfall, you can use the requirements, design & verification stages as you would sprint planning & retrospectives to adjust the course of the team.

How is Scrum different to Waterfall?

A side thought, is that difference in that ownership could also be why projects using Waterfall seems to fail more than those using Scrum. It isn’t the methodology but rather it is the people doing the work’s commitment which drives the success or failure of the project. For projects using Waterfall where they are successful, I think you will find that they do many things outside the methodology to ensure everyone feels committed to the success.

If Waterfall can offer everything that Scrum does too, how then is Scrum different? The major difference with the two methodologies is around the psychology of the developers involved with the project:

  • Waterfall: Have a single centralised, ownership for the project
  • Scrum: Have a distributed, ownership for the project

That may not make much sense, so let me explain what I mean by ownership of the project. The ownership for the project is made up of a number of things:

  • How much responsibility a person involved has?
  • How much authority a person involved has?
  • How much control and influence a person involved has?

When we look at Waterfall, the developers involved in the project have very little with regards to the above conditions. Those conditions are almost solely handled by the project head and project managers, and because of this lack of authority, responsibility and influence the developers are not invested in the ultimate delivery of the project.

Scrum on the other hand, drives verifying levels of responsibility, authority and influence to everyone involved. For example the product owner has the most responsibility but there is still responsibility shared to the rest of the team. It is impossible in scrum for a developer to bury their head in the sand and say the problems are not their problem.

Conclusion

scrum-pigs-chickensFor me the major difference can easily be summarised using the old fable of The Chicken and the Pig. Waterfall allows developers to be chickens but scrum requires the developers to be pigs.

Choosing between Waterfall and Scrum isn't so much about choosing between methodologies as choosing between designs of ownership and responsibility. That design is vital because how your team is designed directly impacts what you ship.

27 Sep 2013

Architect

IT is a very new industry compared to other industries and as such there is still a lot of things that are influx as we learn & mature as an industry. One of those items is job titles. It may seem weird that something as core as a job title is influx but in my view it is because we do not yet have universal standards and, sometimes (to a much lesser degree), we are breaking new ground and new job titles need to be constructed to match the new role.

The job title Architect, though seems to have a nearly universal usage in the IT industry to denote an expert or leader in a specific area. In fact, my current job title is Technology Architect. There are problems though with the usage of the title Architect in IT and I want to share some of the issues I see with the usage.

Architectural Profession Act of 2000

In South Africa there is a piece of legislation called the Architectural Profession Act of 2000, which just defines the rules and controlling bodies for architects – not in the IT space but in the building/construction space. One of the sections of that legislation (section 18) specifies that certain titles may only be used by registered (with the architectural council) professionals, those titles are:

  • Professional Architect
  • Professional Senior Architectural Technologist
  • Professional Architectural Technologist
  • Professional Architectural Draughtsperson
  • Candidate Architect
  • Candidate Senior Architectural Technologist
  • Candidate Architectural Technologist
  • Candidate Architectural Draughtsperson

In short, if you are using any of those titles as an IT person – you are breaking the law.

What an Architect should imply?

We, in IT, use the term Architect to denote some level of senior status on a person – however without a standard or controlling body, anyone can use that title. I remember when I was a much younger developer, thrust into a late project to lead it & I was sold to the customer as an “architect”. Why was that title applied to me? It was not because of my skills or experience. It was to show the customer that I knew what I was doing and, more importantly for the sales guy, so the company could charge more for my time.

When you look at the building/consulting space, if you want to be a professional architect you need study at a university for 5 years. That gets you to the junior architect level – want to be a senior, expect YEARS of real world experience!

By adopting the same title as another industry, we need to honour their usage of the titles. If we keep abusing the legacy of the title, we will devalue the title in our industry and we will make our industry look far more immature to the rest of the world.

What should an Architect do?

Not only should we be careful about who we apply the term Architect to, but we should only be applying it to those who actually do IT architecture work. That is a very specific area of work with very specific training and tools such as TOGAF or the Zachman Framework. If you are not doing that – you are not doing architectural work in IT and should not be using that title.

This is obvious, but we fail so often like this – imagine if you called a plumber & his truck & business card said electrician… would you trust him to fix your pipes?

Summary

In my view unless you are doing real IT architectural work & have years of experience in IT and the architectural space you shouldn’t use the title. If you are doing the correct work you want to make sure your usage of the title, it clearly separates it from the building/construction realm by having something like software or IT in the title too.

We, the IT industry, needs to do better with titles or we will continue to devalue ourselves in the eyes of our customers and this is a way to get to solving that. 

Pages