This month was our last .NET Oxford of 2018, and this time we had another lightning talk event! I always really enjoy these lightning talk events, as there's always a lot more variation, and much more of a community feel with more people getting up on-stage. And being December, our Primary sponsors Corriculo Recruitment adding even more to that social (and Christmassy!) feel by bringing along plenty of Mulled Wine too!
Once everyone had settled in, I started with the intro talk. Whilst most of it was the usual house keeping, news, and prize draws - I did talk a little bit about feedback. We're planning on sending a survey out over the next few weeks, asking what people like, don't like, think we should start doing, etc, etc. For this kind of thing, it's important that we get as many members replying as possible. If only 1% of our regular members reply - then we may action based on that feedback - without knowing whether the other 99% agree or not. For example, we've had both positive and negative feedback about the usefulness of the Prize Draws - do you want to keep it? If only 1% reply and say to ditch it - we probably will! So if you're a regular and reading this - please do make sure you spare just a couple of minutes filling in the survey so we have a decent-sized dataset to base any actions on.
I also spoke a bit about the benefits of doing these lightning talks. It's a fantastic opportunity for new speakers to get into public speaking without the pressure of doing a full length talk. You can even just do a 5 minute talk if you'd like! It might be nerve wrecking - but it's definitely worth it. At our very first .NET Oxford event, I did the intro, and was extremely nervous (especially when people started arriving). It was the first time I'd done any public speaking other than my wedding talk. However, when I finished and got off - I just wanted to get back up again! It's surprisingly addictive - and I' recommend anyone get out of their comfort zone and give it a go! Since then, I've gone on to do longer talks, both at .NET Oxford and also at conferences (see my Public Speaking link in the navbar above).
Our next lightning talk event will be in May - so do get in touch if you'd like to join in the fun and do a lighting talk!
The published slides for the intro talk are available here, and the Reveal.js source code can be found on our Github account.
Below are the news items we highlighted in the intro...
Microsoft Open Sources WPF, WinForms, and WinUI: This one was announced just a couple of hours before our event at the Microsoft Connect(); 2018 conference. I managed to quickly add a slide at the coffee shop beforehand!
Fiddler Everywhere: Most of us have heard of the awesome Fiddler tool. This is primarily a Windows tool. Whilst they've had beta version for Mac and Linux for a while, they've not had half the functionality as the Windows version. With this announcement, they've introduced Fiddler Everywhere, which is cross platform, and they describe as the future of Fiddler.
Goodbye HockeyApp: Microsoft announced that HockeyApp will complete its transition fully to App Center in one year's time - on November 16 2019.
Azure Blockchain Development Kit: The last news item was that Microsoft have announced their Azure Blockchain Development Kit. I haven't done much reading on this - but, as it's got the word blockchain in the title - mentioning it is clearly going to double our membership!
After the news, we then moved onto the prize draws, using my usual WPF Prize Draw app. A massive congratulation to the winners, and a massive thank you to our awesome prize draw sponsors ...
Congratulations to Hubert for winning a year-long Jetbrains product licence!
Congratulations to Steven Dawkins for winning a Manning ebook! The winner has the choice of any of the awesome Manning ebooks from their website.
Remember that we have our special Manning coupon code (ug367) which gives all of our members a 36% discount on any of their e-books! They've also asked me to share a link to some of their new courses for their LiveVideo system.
Congratulations to Robert Bird for winning the Oz-Code licence! I'd also like to thank Rob for his very positive feedback on both the prize-draw and .NET Oxford itself. Always nice to hear positive comments on what we're doing :)
For those that don't know, Oz-Code is a Visual Studio extension that puts your debugger on steroids. Take a look at their website for videos of their features. If you haven't checked it out, then definitely download the trial and have a play. All our member get a free 3 month trial licence (see below) or 50% off a full licence! To claim, you can visit this link to pick up your licence!
As usual, a massive thank you to our Primary sponsor - Corriculo Recruitment! An integral part of the .NET Oxford team, helping us out in so many different ways. Not only helping us out financially, but also welcoming people in on the doors, supplying and serving drinks and refreshments, helping us with marketing and promotion, and much more!
And as mentioned earlier, with it being our December meetup - they also proving plenty of Mulled Wine and Christmassy nibbles! Sadly I completely forgot to take any pictures of their Mulled Wine stand! :(
Our secondary sponsor is my own company, Everstack. Providing a lot of my own time for organising and managing .NET Oxford. Everstack provides software development and consultation services - specialising in .NET and the Cloud.
Stuart Leeks - 10 minutes
First up was Stuart Leeks talking about Windows Subsystem for Linux! Just like he did at our last lightning talk event, he had his slides on auto-advance - which meant that he had to keep up with the slides!
His slides (below) tell most of the story. He explained what it was (ie. Bash on Windows), spoke about why you'd want to use it, and also covered some cool ways in which the Windows and Linux systems interact with each other. This interoperability includes both accessing the file system and sharing environment variables.
(Sorry about the very dark photo - the lighting in the room wasn't great!)
Matt Davidson - 20 minutes
The next talk was by Matt Davidson, talking about they manage their workflow for building and using their own nuget packages. This was of particular interest to me because at my current contract, we're been starting to split out a very large codebase into smaller nuget packages, so have been facing a similar problem. Matt's solution was different than ours in that he was using an local Releases
folder as a package source, whereas we use an internal NuGet server and have the build server push to it automatically. Matt also spoke about how they handle prerelease information, which is another thing we've been trying to work out how best to handle.
(Sorry about the very dark photo - the lighting in the room wasn't great!)
James World - 15 minutes
Next up was James World talking about the Elm programming language for creating frontend webapps. On its website, its tag-line is "A delightful language for reliable webapps".
The big selling claim is that it has zero runtime exceptions! James explained how with pure functional languages, you have no side effects - so if you call a method with parameter values, those same parameters values will always return the same result. Most apps nowadays do require side-effects though, and James also showed how Elm handles this whilst keeping the core part of your code still pure functional.
Another nice thing that James showed was how friendly its compile-time errors were. Below is an example taken from their website. You can see that it tries to explain in full sentences what the issue is...
Here are some useful links James gave me to share in this post...
Dan Clarke - 20 minutes
After the 10 minute break, it was my turn for a talk on Vi. It wasn't about the the Vi or Vim editors themselves, but more about the Vi/Vim way of interacting with the keyboard. This has become so popular, that most IDEs/Editors have some form of extension to emulate this functionality - and my demos were in VSCode.
Whilst didn't record the talks, I decided to do it again at home and record it. This is my first attempt at a recording, and listening back, I realise that I sound like a complete muppet, but never mind - if you're interested, here it is!...
Paul Harding - 20 minutes
The next talk was by Paul Harding talking about Xamarin and Azure. His talk was a high-level overview of some technologies you can use to very quickly create mobile applications and utilise the power of the cloud to make various what used to be complicated problems, very simple. Rather than me repeating it here - his slides do a great job of listing what he covered in his talk...
Tom Lane - 5 minutes
Last, but not least, was Tom Lane talking about Value Converters in Entity Framework Core. Tom explained what they were, why you'd use them, and gave examples. Basically these allow values to be converted when reading from or writing to a database. This can be changing values for the same type - eg. encrypted strings; or it can also be for changing the type itself. An example use-case he describes is using it with Jon Skeet's NodaTime library to convert NodaTime types to/from native database types. He's even put his NodaTime value converter on GitHub.
As usual, we ended with dev-tips, where anyone can get up and do a short dev-tip. We find it a great way to get the audience more involved. Below are the dev-tips this time. If I've missed anyone off, then let me know, and I'll update below.
Tom Lane: VSCode log-file language-mode
"Reading log files is usually a tedious task. VS Code Log file syntax makes them a bit easier to read when the time comes. It'll highlight common items such as log level, date and time, embedded JSON and IP addresses."
Stuart Leeks: Reverse Search in Bash
"If you find yourself frantically hitting 'up arrow' in PowerShell or Bash then try reverse search. Hit Ctrl+R and start typing part of the command you're looking for until you get the match. Bonus tip, for commands you want to find easily (either in your daily flow, or for demos), add a comment to the end of the line to make searching easy :-D"
Dan Clarke: GitVersion:
"Following on from Matt's talk about nuget packages - if you are splitting your monolith into seperate nuget packages, and want to version them separately - then definitely check out the GitVersion project. I use this now for most of my projects to add semantic versioning."
Dushyant: Debugging NuGet Packages with SourceLink
"If you use a nuget feed to publish packages, then you can still debug into nuget package references using SourceLink. This would essentially make the build process faster (not having to build all packages) and theoretically preserve the current project-reference/locally-built-nuget debugging experience."
James World: Automatic prompts for manual steps
"Every manual step in a process is an opportunity to forget something or get it wrong or waste time or all three! If you have a bunch of manual steps - say to deploy your app locally, do a basic automation by writing a script that prompts for each step - then you can't forget and you have a framework in place to swap out each step with a more automated version over time. Put the script in version control. You'll probably find once you've done this, what looked like an intractable problem starts looking easy to improve upon."
Tim: NDepends
"My Dev Tip is a tool which I have heard mentioned at earlier .NET Oxford events and finally got around to trying. It is: NDepend. This tool gives static analysis of your codebase at an architectural level. It also allows enforcement of architectural rules within the build pipeline (and inside Visual Studio)."
Matt Nield: iPhone Keyboard Trick
"Whilst not specifically a 'dev' tip - I quite often get frustrated positioning the cursor when editing on the iPhone - eg. StackOverflow posts, etc. I've recently discovered that if you hold down the space-bar, it'll give you a mouse cursor! See this link for details."
Just like last January, we'll be having another birthday celebration meal at Café Rouge in Oxford. We'll sort out a pub to meet in beforehand, and feel free to join us there even if you're not coming for the meal - but please only RSVP if you can make the meal itself - as we have very limited places! No need to RSVP for the pub part!
The food and drink will not be covered by .NET Oxford or our sponsors - so all attendees will need to cover their own cost.
Below are our upcoming meetups. We'll be announcing more meetups for next year shortly, and if you subscribe to the meetup group, you'll get email notifications as they are announced.
8th January 2019: NGINX for .NET Developers - Ian Cooper
In January, Ian Cooper will be back (after his very popular 12 Factor App talk) earlier this year. This time, his talk will be all about NGINX for .NET developers!
12th February 2019: .NET Internals - Chris Bacon
In February, we'll be delving a bit deeper under the hood into .NET with Chris Bacon talking about .NET Internals.
12th March 2019: Functional C# - Simon Painter
Our March meetup will be with Simon Painter talking about writing Functional C#. This hasn't yet been announced on Meetup.com, but will be shortly.
April 2019: Uncle Bob!
We're very excited to announce that in April, we'll be joined by Uncle Bob himself! A topic hasn't yet been decided - but we'll be announcing this on Meetup very shortly. We're going to aim for the larger St Aldates venue next door (where we had the Jon Skeet event) for this one.
May 2019: Lightning Talks
We're thinking of another lightning talk event for May. If you're interested in doing a 10/15/20 minute talk - then let us know!
Please retweet if you enjoyed this post ...
Blogged: ".NET Oxford December Meetup - Lightning Talks" https://t.co/uniPTDazKq @dotnetoxford @stuartleeks @jamesw0rld @DavidsonMD @nobbyharding @neverontarget @CorriculoRec
— Dan Clarke (@dracan) December 15, 2018