Android tablets were a joke. I remember being at a MIX when the Xamarin guys (before Xamarin was Xamarin) were showing off Moonlight on Motorola Xoom tablets. I overheard them complain how bad the devices were compared to their iPad test machines. That was PN7 or Pre-Nexus 7. Sure the Kindle came first, but the real switch for Android tablets was the exceptional Nexus 7. They proved that the OS was usable and that a device was desirable. And they did it for $199. The Nexus 7 was a hit…very late into game. They knew that if they sold it at cost or better that people would learn to believe that Android was more than a haven for Linux-heads.
The problem with the Surface is that Microsoft wanted to make money on it. I know that's their business, but the Surface should have been the loss-leader that got the hardware community to build great tablets around Windows 8. But that didn't happen. Surface RT was $499 at launch (actually $399 but $499 was the right size one). $519 with a touch keyboard. This lined it up against a very successful product but it wasn't going to change any minds of people that already bought it.
In this new course I build a new web site from scratch. I start out with a Bootstrap template (since my design skills suck) and move through creating content, building a database, exposing a REST-ful API and building a Single Page Application. I wrap it up by publishing the site to Azure Web Sites showing you how to not only get your application up an running in the cloud, but also how to monitor it and handle standard tasks like using your own domain in Azure.
Thanks to all who showed up to see me talk about AngularJS at the recent Atlanta .NET User's Group. At the talk, I wrote the client-side code for an AngularJS app by hand. The slides are pretty thin, but the code includes all the functionality I showed. I promised the slides and code so here they are!
If you have questions about any of this, feel free to comment and I'll help as much as I can!
A week ago I splurged and upgraded my Lumia 920 to the Lumia 1020. So to those of you who were expecting me to switch over the Android or an iDevice; I'm still entrenched in the Windows Phone world. And this phone cements my opinion to stay. Let's talk about the good and the bad.
I like the weight. I was worried that with the camera bulge that this would feel like a much bigger device but if anything it feels smaller than the 920. I haven't looked up the weight but it feels really nice. I actually find the camera bulge useful as a pivot point to hold the phone.
A promise is a pattern for handling asynchronous operations. The problem is that essentially when you start an asynchronous operation, you need to execute some code as the operation is completed. Asynchronous code is so common that most libraries have found a solution for passing in callbacks. But there is little commonality to how each libraries does this. Let's take jQuery as an example:
Today I picked up a Lumia 1020. I am impressed with the camera as you'd expect but I am also loving the size. It's about the same size as the 920 except for the extra camera bump. It feels lighter than I expected. The AMOLED screen with Gorilla Glass 3 looks great too.
While I was setting up the new phone, I headed over to Windows Phone's website to install my apps. The website has a feature called "purchase history" that allows you to look at what apps you've purchased and re-install them on your phone with a single click. What is interesting is that it seems I've installed over 750 apps over the time I've had with Windows phone. Yeah…750. I was surprised too.
I am working with a client on an enterprise Win8 app that is for order taking. They have a specific page that they require to be only in Portrait mode while the rest of the app can support any orientation. Since I've done so much Windows Phone 7/8 work I thought this would be simple. Just specify the value on the Page. But this didn't work…
Digging through the docs I found a probable solution: DisplayProperties.AutoRotationPreferences (in the Windows.Graphics.Display namespace). The docs specify that this property can be set with the DisplayOrientations enumeration to specify which of the four orientations to support. The enumeration is a flag so you can combine them too:
I recently helped the Atlanta Code Camp effort by building them a new website. You can see it here: Atlanta Code Camp. I am pretty proud of what I was able to accomplish in the scant number of hours I had to build it. It's not done as we need to improve it when we have the speakers chosen and set up the schedule, but so far I am pretty happy with it.
I had a number of goals for the project:
I've been honored to help put together the Atlanta Code Camp this year. This year's event is happening on August 24th here in Atlanta and we're expecting to have eight tracks covering a mix of developer, designer and some IT professional talks. I've attended this event the past eight or so years and it's always a good time. I decided it was time to help out.
We've now opening our Call for Speakers. If you're an experienced speaker or want to do your first talk – we want you to submit talks to the Atlanta Code Camp. This event has done a great job in helping first time speakers get started with their first talk.
In the last couple of years, I've been adding the HTML/JS/CSS skillset to my stack of required skills and my talks and courses have reflected that change. To my readers who are deep in the XAML stack, this change seems to have come at somewhat a shock to many. I've even been accused by some of abandoning the Silverlight, WPF, Win8, WinPhone folks. This has caused me a lot of frustration because I don't believe that developers can or should only know one possible stack. To reach the full breadth of users, sometimes you need to be able to develop across the ecosystems. In this same time, I've also done quite a number of HTML/JS/CSS talks where I didn't use Visual Studio. Some have conjectured whether I am moving away from the Microsoft stack as a result of the lessened use of Visual Studio in my demos. The frank answer is: nope.
So what is really happening here? I believe the development world is evolving. In fact, this isn't new…in the past 26 years everything has continued to change my entire career. And I expect (and hope) it continues. Software development is unlike many other similar professions. We think of ourselves as engineers but many engineering professions the rules don't change all that often. In civil and mechanical engineering, it can be somewhat stagnant. The requirements change, but torque and setbacks are similar to what they've been for years (AFAIK). But in software everything changes.
I just got back from SDP13 in Israel and spent 10 days in that lovely country. With this trip planned, I thought it a perfect time to ask my girlfriend to marry me. I'm 44 and I've never been married so it's about time, right? Unfortunately we had a minor argument and in my haste I texted "Maybe I'm not getting married…" This text was meant for a friend of mine who I'd been confiding in about the whole diamond buying experience. But this text went to my lovely girlfriend instead. Foiled by technology again. So the cat was out of the bag and I didn't think I could surprise her with the ring in Israel.
If you build PhoneGap apps and test with the browser, moving to phones sometimes causes a boatload of problems. Because there isn't a great debugging story, being able to see the console window would be of great help.
After my recent talk on Mobile-First Design, one of the attendees tweeted that he thought it was ironic that my talk was on responsive design but my blog wasn't mobile-friendly. I told him that my company site was…but that was a cop-out. I hadn't had time to get the blog setup with a good template. So voila! I haven't confirmed that everything works the way I want but we should be close!
As some of you might not know, I don't use a blog engine (it's just a custom ASP.NET MVC site). What I love about ASP.NET MVC, is that since the markup so fairly separated from the code (I try and use as little actual Razor markup as possible), skinning it with a new Bootstrap template was pretty simple. It took me about 8 hours to convert it all.
I had a great time at yesterday's online DotNetConf. I think my "Mobile-First Responsive Web Design" talk went pretty well. You can see the talk on YouTube (embedded below). The talk was focused on designing websites to be efficient on mobile platforms by starting with your design on a mobile and scaling up to tablets and desktops.
If you viewed my talk, you might be interested in the slides and source code. You can get them here:
If you're interested in cross-platform mobile apps, I like the solution that PhoneGap has. It uses HTML5/CSS/JS as the UI stack and I find it compelling to build apps for iOS, Android, Kindle, Windows Phone and Windows 8 Store. I've just released a new course on PhoneGap that attempts to fill in some of the holes in building apps. The course includes:
Hope you enjoy the course. You can view it here:
I've created a new example of a PhoneGap app for my talk at the Atlanta Windows Apps meeting. The talk I did tonight didn't go all that well, but I got it working and the result is something you can download and see how to use a minimum of WinJS to build your Windows 8 apps.
The example PhoneGap app sourcecode can be found on GitHub:
My PhoneGap series will continue soon. I promise. I’ve been busy working on a new business: How to Watch. This new business aims to help people find where a movie or TV show is available via online streaming (e.g. Netflix, Hulu, Amazon Instant or iTunes). I got sick of having to search on each of the platforms to find "my stories". The result is this site and mobile apps (Android, Windows 8, Windows Phone and Kindle; iOS is coming soon if I can get Apple to certify the thing!).
One of the things that I’ve been spending a lot of time working with lately is the ability to be able to build cross-platform apps. While I spend a lot of time in the Microsoft space (especially Windows 8 and Windows Phone 8), I need to be able to create and deploy apps to iOS and Android platforms. I've decided to do a series on building one of these using Single Page Application for the web, then deploying it to devices via PhoneGap:
There are a number of solutions for cross platform apps (e.g. MonoTouch/Droid, et al.) The types of apps I am building are just consuming or displaying information from a standard web back-end (e.g. REST services). Because I typically need to build a responsive website for the solution as well, using a solution that could share some or all of it’s code with the website is a good match.
Very short post today, but wanted to share something that happens more than I'd like to admit. I work for some clients who use TFS and when I can't in through their VPN I need to zip up my files for them to check-in manually. It's not fun (I miss being able to create a change set in Mercurial or Git). When this happens I need to have a quick way of copying all the files in a project that aren't marked as read-only. Robocopy to the rescue:
robocopy %1 %2 %3 /S /XA:R /XD obj bin packages backup _UpgradeReport_Files /XF *.suo *.vssscc *.user *.vspscc
This allows me to copy all the files I'm working on while skipping the temp files (e.g. obj, bin), package chagnes, backup files and upgrade files. Hope this helps anyone else that runs into this.
With the surprising news of Sinofsky's leaving Microsoft still fluttering in the winds, I knew I'd hear some rants about Silverlight be heard among the XAML-lovers out there. I decided I needed a blog post (albeit a short one) to say my peace.
I've heard many say that Sinofsky is responsible for the death of Silverlight and that it's absence on Windows 8 is a shame. I hear a lot of Silverlight enthusiasts (or apologists) that Silverlight, while being a great technology, was killed because DevDiv and Windows couldn't get along. At last year's build, it was big news that Sinofsky actually said the word Silverlight made news. While the idea that Silverlight ran on a Mac certainly caused waves in the Windows team, it's not the reason for it getting pushed to the pile of technologies that are now in 'sustaining engineering' mode. If any executive is responsible for the current state of Silverlight it's one who is no longer with us...and not even part of Microsoft: Steve Jobs.
What a weekend. Much to the chagrin of my beleaguered girlfriend, I signed up to be part of Startup Weekend here in Atlanta. I haven't had the chance to do one of these events before and it was a lot of fun. I want to thank the organizers and the great people at ATDC for holding a great event.
If you made it to build or spent much time watching the videos one of the stories many heard from Microsoft revolved about creating HTML5/JS applications for the Windows Phone 8. Unfortunately the story confused a lot of people (at least by the questions I've been getting lately.
Let me be clear...you *can* create HTML5/JS/CSS applications for Windows Phone 8. Yup. In fact, you could do it with Windows Phone 7 and 7.5. This is how PhoneGap works. The XAML page simply hosts a WebBrowser control and loads all of the assets locally in the XAP. What you can't do is create WinJS application. Let's step back a little and explain that better.
I wanted to get a Type Cover for my new Surface today so I headed to the Microsoft Store. I never go to malls so it wasn't a lot of fun just getting into the mall. But soon me and my girlfriend found the store. I was very surprised by the sheer number of customers. I didn't expect it to be empty on a Saturday afternoon but it was packed. As we walked in we were immediately approached and helped with where to find the Type Covers. Even with all those customers, the store was really well staffed. Was simple to find someone to help us get a Type Cover from the back and answer some pricing questions.
Unfortunately there was an issue with her Touch Pad. Whenever she closed her cover and re-opened it the keyboard didn't work until she unplugged it and re-plugged it in. So I thought while we were there, we'd ask them about replacing it.
Today Microsoft is finally releasing the new Windows Phone 8 SDK. As I've been updating my Windows Phone book for this new incarnation of the device, I am excited that the SDK is finally going to be available for public consumption.
Even though the new phone has completely changed the underlying operation system to use the same WinRT sub-system that powers Windows 8, the basics of how to build apps on the phone is primarily the same. This means if you have experience building XAML-based projects, you should be right at home with Windows Phone 8.
|Using Visual Studio Code for ASP.NET Core Projects (new)|
|Building a Web App with ASP.NET Core, MVC6, EF Core and AngularJS|
|Building a Web App with ASP.NET5, MVC6, EF7, and AngularJS (Retired)|
|Best Practices in ASP.NET: Entities, Validation, and View Models|
|Front-End Web Development Quick Start|
|Lessons from Real World .NET Code Reviews|
|Node.js for .NET Developers|
|Application Name||WilderBlog||Environment Name||Production|
|Application Ver||22.214.171.124||Runtime Framework||.NETCoreApp,Version=v1.1|
|App Path||D:\home\site\wwwroot||Runtime Version||.NET Core 4.6.25211.01|
|Operating System||Microsoft Windows 6.2.9200||Runtime Arch||X86|