Please forgive typos, mis-quotes and other mistakes. I’m liveblogging from NDC. This is likely to be pretty rough.
Also, this post is going to be updated in real time. I might start separate posts for day 2 and 3 etc.
Quick links:
- Keynote: Scott Hanselman (Microsoft) – JavaScript, The Cloud and the Rise of the New Virtual Machine
- Go and talk to the vendors! – Track.js
- Damian Brady (Octopus) – .NET Deployment Strategies: the Good, the Bad, and the Ugly
- Phil Nash – Seeking Simplicity
- Being a helper
- Food
- Taking a break with GitHub and JetBrains
- .NET Rocks Live! – Containers and Microservices Panel Discussion
- Parties!
- Martin Kearn (Microsoft) – The murky world of Hybrid apps
- Karl Krukow (Xamarin) – Continuous Delivery of mobile apps
- Scott Hanselman (Microsoft) – What does an “Open Source Microsoft Web Platform” look like?
I love NDC. I spoke at NDC Oslo 2015 but I didn’t think I’d be able to make NDC London this year. At the last minute my schedule changed so I asked to join the crew. I’ve attended many conferences over the years as an attendee, a vendor, a speaker and an organiser but never as a helper. I thought I’d give it a go.
In this post I’m going to try and document the next few days. I’ll provide notes from the sessions I like (I’m not promising to publish notes from all my sessions!) and I hope to talk about my experiences as a helper at a big conference like NDC.
It’s a bit of an experiment. I might get busy doing jobs so I don’t know if I’ll be able to keep it up, but we’ll see how it goes.
Back to top
– – – WEDNESDAY – – –
KEYNOTE: Scott Hanselman (Microsoft) – JavaScript, The Cloud and the Rise of the New Virtual Machine
Made jokes about how he works for MS but he uses an iPhone and loves OpenSource.
“Microsoft is now like the Death Star where Darth Vadar has left and everyone is running around trying not to blow up Alderon by mistake.” (May not be exact words.)
What would the internet look like if we invented it now and we got rid of the last 20 years of gifs and other garbage?
Famous old quote, obviously totally mistaken:“I think there is a world market for maybe 5 computers” The idea was that each continent would have their own computer and everyone would just send batch jobs. That’s the cloud right?
Why would MS allow you to create Linux VMs? Scott Guthrie “What do you think it’s running on?” Apparently 23% of VMs running on Azure are running a Linux OS. Microsoft #winning. “Microsoft wants your FOR loop.”
Also, provisioning a VM is so simple now. If your process to get a new VM spin up is to fax IT and wait 2 weeks then get with the times.
So Azure is just clever VMWare in a datacentre right? Nope: Why would the users want to manage their own VMs? PaaS is way better than IaaS. You should let the AzureCloud manage your VM so you can just worry about maintaining your website or whatever rather than the machine it runs on. It saves you a bunch of time.
“I feel like the cloud is just subtracting from my CV. I used to have a 3 page CV and the 2nd page was scaling websites. Now that’s been replaced with a slider bar in Azure.” “Updating a server farm… That was like my entire job from the 90’s. Now it’s a single command.”
He makes a nice point that it’s a good idea to know what is going on underneath the simple buttons etc but the power these buttons give you is world changing.
The really cool thing about Azure/cloud is that it adds a layer of extraction on top of the code that makes the controls much closer to the business decisions. The low level challenges of maintaining machines are being abstracted away so you don’t need to waste time worrying about the details.
This means I’m now using a massively over spec laptop to be a dumb portal to some clever datacentre where all the real stuff happens right?
In retrospect, Javascript, Silverlight and Flash were all attempts to bring VMs into the browser because Tim Berners-Lee only gave us documents, but we wanted applications over the web.
However, write once run everywhere doesn’t really happen. Running a VM in your browser to run some simple app is a bit rubbish. It’s actually “write once look terrible everywhere”.
JavaScript is cool. http://www.bellard.org/jslinux/ ß That’s a Linux machine written entirely in JavaScript. If people tell you they don’t enable JavaScript they should just die. JavaScript can be an entire VM running in the client. (He acknowledges this is pejorative but the point stands that JavaScript is very powerful.)
When people tell you we need more servers because we have only 10 web servers serving a zillion clients ask yourself are you really using your hardware effectively. Surely you could ask the overspec client laptop to do more work?
People talk about HTML 5 but what we are really talking about is CSS 3 and JavaScript. (Actually, just JavaScript.)
“JavaScript is the Assembly Language of the Web” – Scott Hanselman.
“The avalanche has begun, it is too late for the pebbles to vote.” (roughly) – John Cleese
Don’t forget the Browser is deceptively powerful.
You are powerful. You know this stuff. Get to work!
Go and talk to the vendors! – Track.js
I’m not a vendor today but having attended conferences like this as a vendor I know what it’s like. We all rely on the vendors to support these events and they can offer you some really great insight into how to solve some problems that you might be facing.
If Redgate was here of course I’d be promoting them but since they aren’t who else should you check out?
Let’s start with Track.js. Scott has just told us to do more on the client, with JavaScript. But how do you monitor that JavaScript and interpret the error messages. This is hard because JavaScript often tells you what failed but it doesn’t tell you why. Track.js is a cool tool that fills in the gaps.
Also, you should definitely talk to Todd (the guy on the left) about Pub Conf on Saturday!
(Apologies for the blurry photo.)
Back to top
Damian Brady (Octopus) – .NET Deployment Strategies: the Good, the Bad, and the Ugly
Discussion about a Brian who deploys stuff manually and it mostly works except when it doesn’t because some other person made a mistake. It wasn’t Brian’s fault. Obviously that’s rubbish.
The only thing that matters in software is delivering working software to users. Unless stuff is 100% done and delivered to production you are 0% done.
The trouble with deployments is there are many steps and humans are fallible. Discussion about the Knight Capital catastrophe from 2012. Read more here: http://dealbook.nytimes.com/2012/08/02/knight-capital-says-trading-mishap-cost-it-440-million/?_r=0
The response to these stories is often was more Governance. This doesn’t work. It’s a bureaucratic deployment cycle. So much manual testing goes into each deployment that deployments get further apart, so they are bigger, and harder, and more prone to error. It feeds on itself. Totally counter intuitive.
First thing is to use automation: faster and more reliable. But this isn’t the whole answer. Automation only works if your scripts work. And if your scripts don’t work they often hide the problem until it will bite you.
So practice deployments. Deploy in the same way to pre-prod as you do to prod. If you fail early then your prod deployments are more reliable.
Automation and practice foster a virtuous deployment cycle where we build confidence and deploy more frequently and get more practice and get better etc. Production deployments should end up being really dull and ordinary.
At Octopus we can deploy to production with a single command – from slack. (This is only because we have so much automated testing and only good builds are available).
Backups are bad. Yup – he said it. Rolling back to a backup to resolve a deployment is a bad roll-back strategy as it takes time and you will lose data. Rolling forward is a much better strategy.
Here are three things you can do to help you roll forward and resolve issues quickly:
***
Transitional deployments
A way to acknowledge you might get it wrong and it gives you a way to roll back. For example, run both the old version and the new version of the code at once so it is easy to revert to old code should you need to. Then delete the old code when you are confident. (This strategy is covered in Refactoring Databases by Scott Ambler.)
Feature toggles
Allow you to test code for some users in production without breaking everyone. Facebook do this. Allows you to turn on features for yourself, then BETA users, then gradually roll out to everyone. If any code doesn’t work you can turn it off with a click. (But please remember to clean up code you don’t want! This would have saved Knight Capital. J)
Branch by abstraction
Rather than summarise, here is Martin Fowlers blog post on the subject: http://martinfowler.com/bliki/BranchByAbstraction.html
***
Deployments should be idempotent and complete. You should be able to deploy any version over the top of the old version (idempotent) and you should be able to do it on a brand new server (complete). Basically, don’t rely on the prior state of your application.
Infrastructure matters. Treat servers like cows, not like pets. They are disposable. If a server gets sick just kill it a build a new one, don’t bother getting sentimental about it and investing time in fixing it. To do that: Deploy your infrastructure with code.
Case study of one of Octopus Deploy’s customers that demonstrates how they deploy VMs fully automatically and configure load balancer etc. Their process also kills and replaces bad VMs automatically. They are so confident in it that they have a habit of killing servers when 6 pints deep in the pub to watch them respawn. Ultimate chaos monkey. J Watch the video for details. I’ll post it here when it’s released.
Containers – not going to talk about Docker etc in detail but basically provides same benefits as disposable VMs but they are way faster. To learn more go to sessions at NDC about containers as there are people here who know more about it than me.
Finally, people say we can’t do it. We’re too big/small/legacy etc. Is it really harder for you than it is for Facebook? Flickr? Amazon?
How do I convince my boss? Sell the dream:
Phil Nash – Seeking Simplicity
We all instinctively believe that Simplicity is good and Complexity is bad. But do we know what simplicity is?
Humans have a cognitive limit of about 5 or 7. This means they can only hold 5 to 7 things in their head at once. See: www.theinvisiblegorilla.com
Simple and easy are not the same. The following definitions come from a talk by Rich Hickey.
Simple comes from Latin and literally translates as “1 fold” or “1 braid” and neatly describes a number of interweaving concepts.
PICTURE
Easy comes from the French “aise” (like “adjacent”) and literally means “close at hand”.
Complexity isn’t necessarily bad, actually it may take complex software to solve complex problems, which may result in valuable software.
“All abstractions are leaky” (roughly quoted from Joel Spolsky). Leaky abstractions can be difficult to use because you can make mistakes where the abstraction doesn’t fully represent the original.
Our abstractions can either aim to be simple, i.e. replicating the original behaviour exactly and minimising the requirement to understand the nuances in the differences between using the origin, or we can aim to make them easy, acknowledging that we are leaking detail but focussing on making particular use cases easy.
So what to do?
Keep abstractions small.
Keep the abstraction straight forward (KISS).
Global stuff: frameworks/libraries etc – aim for complete/reliable, watertight, simple abstractions
Local stuff: functions etc – aim for shallow/useful, leaky, easy abstractions
Favour higher level languages and language features
Embrace essential complexity
Easy != hard
Favour higher level languages
For reference, these notes aspire to abstract my interpretation of the central argument, if you want to get a complete understanding of the talk watch the video. This is a very leaky abstraction. ?
Further reading:
The design of every day things – Don Norman
Also, this was a great talk. Phil is running a marathon for charity. You can sponsor him here:
“Soft skills are needed to achieve #DevOps” “CALMS begins with Culture” says @SabineBendixen at #ndclondon. Wise words.
— Alex Yates (@_AlexYates_) January 13, 2016
– – – THURSDAY – – –
Being a helper
It’s probably about time I discussed my experience as a helper. It’s kind of the reason I’m here. 🙂
As I mentioned at the top of this post, I missed the submission deadline to speak at NDC London because I didn’t think I’d be in the country for the event – then my plans changed. A few weeks later I received an email from Charlotte asking if I’d like to be a helper. The deal was that I’d have to spend half the time working for the conference (primarily room monitoring – which is an easy job) and the other half of the time I’d get a free pass to attend the rest of the conference as an attendee.
Apart from the fact that this sounded like a great deal I thought it would be fun to see a conference from a different perspective. I’ve been to lots of conferences now in many roles (organizer/vendor/attendee/speaker) but I’ve never been as a helper. I also thought it would also be a good opportunity to meet some really insightful people.
I replied to Charlotte’s email accepting her invitation to join the crew.
A few weeks before the conference Charlotte emailed all the helpers explaining that we would spend most of our time room monitoring and she gave us an opportunity to request sessions or tracks that we’d like to monitor. I replied listing a few sessions I particularly wanted to see and she was able to accommodate most of my requests in the schedule which was awesome.
On the Tuesday night we had to come for a brief meet and greet ahead of the conference. The meeting was less than an hour long and it was pretty much what you’d expect. Most of us ended up in the pub afterwards. I had time to go out for dinner afterwards with some of my friends from NDC Oslo. 🙂
Then the conference started. I’m doing one shift per day, either morning or afternoon. Yesterday (Wednesday) I was doing an afternoon shift. The morning went very well for me. I decided to start this post and had enough time to write up my notes for two sessions as well as spend some time with the vendors.
I was wearing my crew t-shirt so people knew they could ask me questions if they needed to but not many people did. Things to remember in the future: If you are going to be a helper make sure you memorise the WiFi details. It’s pretty much the only question you’ll be asked! Oh, and where the toilets are. 🙂
In the afternoon I was monitoring room 5, which included talks from Phil Nash, Ed Blackburn, Sabine Bernecker-Bendixen and David Farley. I tried very hard to make sure the speakers had all they needed and that I’d noted down the feedback stats as quickly as possible (NDC use a green/yellow/red paper voting system that the room monitors need to manage). However, I was also trying very hard to scribble down my notes and get them onto my live-blog.
When I’m live-blogging I tend to take my laptop with me to a session so I can write it as I go. This was just too much of a faff when I was room monitoring as well. I was also having battery issues by the end of the day. I somewhat got around this by using my ipad instead to take notes but I find it fiddly to update my blog from the ipad so I resigned to the fact that I’d have to update the blog at the end of the day, rather than throughout the afternoon.
By Sabine’s session I realized that by trying to both take notes that were clear enough to publish, maintain the blog and fulfill my responsibilities as a crew member at the same time I was not being as attentive as I should have been. Given that my first responsibility right now is to NDC I decided to focus on my room monitoring responsibilities and stop live-blogging until the end of the day. Moving forward I’ll stick to that policy so this is going to become a semi-live-blog from now on.
I’ve also decided to focus less on sharing notes for every session and instead I’ll focus on sharing my notes for the sessions that I enjoy the most and the ones where I feel I am able to write clear notes. I’ll also make an effort to blog about other aspects of the conference including the vendors, the parties and the food. Today might be a quiet day on the blog as I’m room monitoring in the morning and unfortunately I have to pop out for a few hours during the afternoon to run an errand.
I’ll sign off for the morning with a picture I took on my morning commute through the docklands on the DLR. I’m pretty sure those trains are powered by magic.
Food
This update is mainly for the benefit of of those that can’t be here. I’m sorry if I’m making you guys jealous. You can’t talk about NDC and not talk about the food. And it’s lunch time.
Pulled pork and Mac n cheese served all day by room 3. More awesome food at #ndclondon pic.twitter.com/EbTqDzM5TR — Alex Yates (@_AlexYates_) January 14, 2016
Simply put – if you want to go to a tech conference that does good food it’s this one.
Best. Conference. Food. Ever. #ndclondon pic.twitter.com/gRP0QQIkq5
— Alex Yates (@_AlexYates_) January 13, 2016
I’m not going to lie – this is a big draw for me. 🙂 This year the food being served in the main vendor area is themed for the three locations where NDC currently put on conference: Norway, England, Australia. I’m currently munching on some Norwegian meatballs. 🙂 I’ve also heard a rumor about free beer at tonight’s party – but more on that later… Back to top
Taking a break with GitHub and JetBrains
After a busy morning and a brief trip into the city I’m back at NDC to enjoy the rest of the day. Rather than jumping straight into a session however I started by taking a break. I grabbed a coffee, found a quiet corner and took thirty minutes to read something less technical than the sessions I’d watched this morning on the inner workings of C# and RESTful APIs.
Now I’m going to take some more time to talk with the sponsors before going to the .NET Rocks Live session at 5.40. I’ve been to enough conferences now to understand that this sort of quiet time is really important for most people if you want any chance of retaining the stuff you learn at these events, especially at events that last several days. I know I’m certainly not clever enough to absorb all the information if I don’t take a break to rest and to reflect on the sessions I’ve been to and re-read my notes. (That’s one of the reasons I like blogging my notes – it forces me to think through them afterwards.)
I also know, from my experience as a sponsor, that the session time is a really good time to speak to sponsors. If you go to them in the breaks they will be very busy. The good ones will probably be surrounded by crowds several people deep so you’ll do well to have a brief and high level discussion. In contrast, during the sessions the booths tend to be deserted. It’s a really good time to have a detailed conversation about a particular problem you are trying to solve or simply to learn more about an organisation than the buzzwords they stick on their marketing pamphlets.
So which sponsors am I going to speak to today?
Well my regular readers will know that while I work with many source control and build tools my favourites are Git (yeah , I mean GitHub) and TeamCity by JetBrains. Both these companies have a stand so I’m going to talk to the guys about what cool stuff they are working on for 2016.
What I learned:
JetBrains:
Everyone is buzzing about Project Rider. They announced it yesterday at NDC: http://blog.jetbrains.com/dotnet/2016/01/13/project-rider-a-csharp-ide/
I had a really interesting discussion about the licencing changes they made recently. (And what it was like to work at JetBrains when it all blew up.) Really interesting. Many lessons. For what it’s worth, while they clearly made some big mistakes I genuinely believe they dealt with the fall out very well.
Everyone’s talking about Atom. I must confess, I’ve not used it yet. The guys showed me what all the fuss was about.
These guys are just here to talk about Git. They are interested in learning about your experiences and challenges with it. They almost seemed to try to avoid selling at you so you’re safe!
Also, so many OctoCat stickers! #swag
Neither the guys at GitHub nor JetBrains wanted to talk about product roadmaps. Which I understand as I try to avoid these discussions when I’m on the Redgate booth. Frankly, all (good) tools vendors prefer to talk about actual working software rather than future-ware. And you can’t knock that. 🙂
I’m not going to say any more than that – you should go talk to the vendors yourselves if you want to learn more. If you learn something interesting feel free to share it below.
.NET Rocks Live! – Containers and Microservices Panel Discussion
The following is my best attempt to document the Qs and As from a panel discussion with Carl Franklin (CF), Richard Campbell (RC), Mark Rendle (MR), Ben Hall (BH) and Michele Bustamente (MB). I’ll probably do a horrible job of transcribing this, missing important details and mis-quoting everyone. If you want more context you should watch the video when it’s uploaded to Vimeo. I won’t bother transcribing the intros because Google will probably do a better job of that for you. I also missed a bunch of the conversation at the beginning, sorry.
Q: If you had £5k to spend on software what would you spend it on?
MB: a recording Studio 🙂
BH: Apple’s new massive ipad
Q: How do databases work well with micro-services? Micro databases?
MR: Yeah, why not? If you can break that out it makes it much easier to manage your data. One of the awesome things about microservices is it allows you to use the right tool for the right part of your database. This allows you to put the data in the appropriate database platform. Relational? NoSQL?
BH: You often want your data on a more durable platform than a container.
MB: It’s really nice to partition like this early. While it’s nerve-wracking to do this early because of chaos monkeys in the middle it makes it more manageable to scale.
Q: Is there a Windows story for micro-services yet for people who don’t like Linux?
MB: Yes, we have a Docker ready version of Windows, but it’s young. We have Docker CLR but it is not yet released so stand by.
RC: There is service fabric too.
Q: How do you instrument a microservices based application?
BH: A lot of the tools are the same as the tools you use for regular projects. MR: StatsD and FluentD as well as Mozilla Hecker allow you to have a Docker container that handles configuration as containers are spun up and trashed – but obviously that’s limited to Linux.
MR: Long description of an automated build, test and deploy process from GitHub using a zillion tools to deploy many containers. Just watch the video! (Round of applause.)
BH: Does something simpler.
And now I can hear the live band starting to play. Time for the famous NDC party. 🙂
You can listen to the full podcast on dotnetrocks.com.
– – – Friday – – –
Parties!
I did something very unusual last night. I went home from a conference at a sensible time.
I needed to sleep!
That’s because on Wednesday night there was a speaker dinner. One of the other perks of being a helper is you get a free invitation to the speaker dinner on the Wednesday night. NDC fed me and put a credit card behind the bar and a fun time was had by all. It was a great opportunity to network with the speakers, organisers and other software geeks. Then on Thursday I was up early to room monitor. In addition I wanted to arrive an hour or so early to fix up this blog and get my plan sorted for the day over coffee and breakfast. That way I could also pitch in if anything needed doing before the doors opened. I may have ended up getting only three hours sleep on Wednesday night. I burned the candle at both ends. Then I had a busy day. By Thursday evening I was spent.
That was a shame because NDC generally put on a great party on Thursday night, with live music (provided by .NET rocks of course!), free beer and on this occasion, sticking with the English theme, we were treated to the pilot episode of “Have I got NDC for you?”
This was inspired by the UK panel show “Have I got news for you” with the various panellists playing rounds including “Big data or Pokemon”, “Scott or Bot” (where they had to guess who wrote various tweets) as well as the traditional spot the difference and fill in the blanks rounds. I must admit that I was very impressed and I was laughing out loud with the rest of the crowd.
After the show I went home but the party probably continued way into the night.
Anyway, it’s time to polish off my coffee, wolf down a pain au chocolate and get ready for my morning room monitoring duties before continuing with this live-blog in the afternoon.
Martin Kearn (Microsoft) – The murky world of hybrid apps
I know I said I wouldn’t liveblog while I’m monitoring and you can tell I’m doing this from the iPad because of the poor formatting etc…. but this talk was brilliant. Its a long way from my area of expertise but martin explained the content so that even I could trivially understand it.
My notes are very brief so if you find this stuff interesting you should watch the video or click the links below for more detail. He has already tweeted a blog on the topic (@martinkearn) and is available to chat all day on the Microsoft booth.
He is the first person that I have monitored for that got a 100% green feedback score. Really good use of slides/videos/animations etc. Very engaging speaker. I’ll add my basic notes at lunch but this session is definitely worth watching.
EDIT – adding my actual notes:
This stuff is controversial. People have lots of strong opinions, for and against.
What are the options?
Hybrid pros: re-use, feature parity, single tech, discoverability on store
Hybrid bads: responsive, touch, fast, web badness like pop ups
Let’s talk about “native hybrid” and “hosted hybrid”.
Hosted hybrid is where code lives in the cloud but plugs into your local apps. You can now access all the functionality of windows 10 from JavaScript running in the cloud. This allows you to use webcams, live tiles and toasts etc.
Native hybrid is the opposite. You have always been able to create html, css and js apps in windows, this will allow your apps to work offline.
Read more on the blog.
Martin demoed building apps both ways – you should watch the video when it’s posted.
I just blogged about #HybridApps. Download my #NDCLondon slides, videos and other stuff. https://t.co/WfvXBvTbhK pic.twitter.com/cEopKnnmnT
— Martin Kearn (@MartinKearn) January 15, 2016
Karl Krukow (Xamarin) – Continuous Delivery of mobile apps
Another clean sweep of green feedback for this session. Here are my notes. They won’t do the talk justice so if it sounds interesting you should find some time to watch the video once it is posted:
Horror story about how he was the only person who knew how to deploy the app when they needed to do a hotfix. Unfortunately he was on a ski trip at the time. Luckily the ski cabin had wifi.
Some discussion of cd benefits. Tesla case study.
Cd is hard for mobile because:
- Testing in prod like environment is hard
- CI not yet mainstream for mobile
- Deploy blocked by Apple for review, limits you to one deploy per week max
- User can decide when to update, not you.
- Complicated submission procedure for AppStore.
However, you can do cd. It will take some time but less than you think. Here is an example of a cd pipeline (he called it a value stream) for mobile. You’ll need a lot of tools.
Karl committed a sample app to GitHub and discussed the steps we’ll want to automate including, running a build, some unit tests, some integration tests, UI tests, acceptance tests and manual tests, resign distribution, new screenshots, release notes submit, publish, feedback, repeat. You’ll be running your tests both on simulators and on real devices.
There is a lot there so start small. Do the smallest thing first that provides value. That’s probably a build, and then a UI smoke test. (A UI test first, controversially, since this adds the most value when you are getting started, he still believes in the standard testing pyramid etc with unit and integration tests too.)
Automated UI testing needs to test the various controls like tapping, swiping, rotating, pinching, text entry, multi finger, gps etc and it’s cool to generate your screenshots. Tools available for this:
- Xamarin.uitest (his own)
- Calabash
- Appium (which uses selenium)
- Official tools like Espresso/uiautomator are cool as officially supported but are not multi platform.
Plug for xamarin test cloud. A cloud of many real devices, rather than VMs, that saves you the admin of your own test devices. Sounds like a cool idea. You can choose from a very large variety of devices on which to run your tests.
Demo of running UI tests for android and iOS in simulators side by side, as well as sending the same UI tests to the xamarin test cloud. Also generated screenshots and videos of animations as part of UI tests in xamarin test cloud.
Demo of Pipeline with bitrise.io although many other tools are available. Bitrise picked up the earlier git commit built the code and shipped it to a test environment, it registered xamarin and packaged the code and pushed it to test cloud.
Also bitrise allows you to add your own build steps.
Karl was able to read all the buildlogs in bitrise.
All of this was done on my dev machine. It took me a couple of hours to put together which is a very small investment give the value it provides.
It even pushed the build to a manual testing device and automated an email to let me know it’s ready for manual testing.
Recommended thoughtworks go as a CI/build server for people who aren’t able to use cloud providers.
Tips:
- Kill switch. Consider adding a notification that forces users to update if they are using a version of the code that is too old. However, make sure you don’t piss off users who can’t connect to Internet and now can’t update or use app.
- Let people know what new stuff is available, note they do not need full release notes.
- Managing App Store ratings. Add communication/support in app so your users can vent their frustration in private, then ask them to recommend you only when they are happy. Seems unfair but your competitors do this!
- Last part of pipeline is hard as you are dependent on review by Apple etc. you should look at tools like http://fastlane.tools/ which can automate much of the process.
- You will also want to set up analytics etc. you can use xamarin.insights, crash lyrics, fabric.io etc
- A/b testing and feature toggles. This is hard when client determines the version they download but tools like “view json” allow a server to decide whether users are in a or b group.
“Whenever you have an opportunity to submit to Apple, you should have something to submit.”
Scott Hanselman – What does an “Open Source Microsoft Web Platform” look like?
First of all, chill out, don’t panic. You don’t need to use it. The old stuff works fine. I still use .NET2 for my blog.
Updating for no reason can introduce bugs. If stuff is old but working and updating offers no value its ok not to upgrade.
Ignore open source at your peril. It’s way too late for discussion.
So why is it in Microsoft’s interest to sell it? What is the MS biz model?
Historically MS wanted to sell you windows. However, the reality is hybrid, people use Ubuntu, playstation, and android with some MS stuff too. Now MS wants to sell you windows, office, xbox and compute time.
We believe that if we make it open innovation will happen and MS will be able to offer really exciting stuff.
This is actually the 3rd time we’ve tried to open source .NET. we failed to do it well the first two times. We didn’t really open source stuff as we tried to retain too much control.
20% of contributions to .NET core are from the community. We don’t really know what that statistic means as we don’t have much to benchmark against. But you should get involved.
Hanselman is promoting www.firsttimersonly.com to try and get more people to join the open source movement.
So what is the community working on?
My theory is the scientific challenges are what people fancy trying in their spare time.
However web frameworks are just playing with strings so they aren’t as engaging.
What do you think, tweet me.
Fundamentally, we want the 15 yr old at a hackathon who uses Python and Ruby to get excited about .NET Core 5. If they don’t, how can we expect them to use MS in the future.
Did you know that ASP.NET 5 can run on either .NET 4 (closed source) and .NET Core 5 (open source).
Check out sourceofdotnet.microsoft.com we have hypertexted the entire .NET source code. <<– This is the one really useful thing you can take away from this session.
So what is cool about .NET5 over .NET 4?
The new JetBrains IDE proves that opensourcing .NET is working. Cool stuff is happening with .NET.
OmniSharp is another example of cool intellisense stuff that is possible because of the open source-ness.
And by the way, the entirety of .NET Core is going to be NuGet packages that you can install individually. That’s a pretty cool. That’s a good experience for our 15 year old hacker.
Check out https://docs.asp.net. You can contribute to our docs! On GitHub. MSDN is all going Git and pull request.
Finished with a demo of ASP.NET running on a raspberry Pi.