Categories
Microsoft Windows

Windows 11

I’m excited for Windows 11. It’s nice to see a visual refresh of the user interface and hopefully some of the new top level improvements lead to a better user experience. I’m just excited for the change and it really has me excited about my plans for a version of Stream that runs on Windows.

As an old Windows user and developer I am disappointed with some aspects of Windows 11. Granted, we haven’t seen a final build yet, but I have my doubts we’ll see everything cleaned up between now and release.

I am really disappointed Microsoft has failed to bring the entire user interface forward. Not everything has been refreshed. There’s a really great piece on NTDEV called “State of the Windows: How many layers of UI inconsistencies are in Windows 10?” go read it. It definitely saved me from having to go track down all the icky UI remnants from various different releases of Windows.

One would think it would be a simple matter of creating windows, buttons, and other elements to maintain consistency. Well, not so fast, hoss. Microsoft’s Windows API is extremely rich and allows you to tweak UI elements to your hearts content. Does that explain why certain apps and parts of the OS look so different? Maybe, I’m not at all certain, but it did make me think about how the Windows API works today and how one might make old apps just work in the new Windows 11 world.

Just update the API, dummy

I’m sure there would be a really great discussion on Raymond Chen’s The Old New Thing discussing what an HWND is but I can’t find one at the moment and I’m being lazy so here’s one from a Microsoft getting started guide called “What is a Window?”

The TL;DR for the impatient is this, it’s an identifier assigned by the Windows API when you create a window. It’s a number. That’s it. A button is a window, a list is a window, a radio button is a window. You get the picture. All visual elements are windows. You compose all these things together to create an app UI. Each on is assigned an HWND.

Remember the Windows SDK, or API, is a procedural C based API. You call functions that operate on things maintained by your app and the OS. When you want to take action on a window in your app you do it by using the HWND you’re given as a result of calling CreateWindow or CreateWindowEx.

So, when you’re ready to, say, close your window and be done with it, you’d call DestroyWindow like this:

BOOL destroyed = ::DestroyWindow(hWnd);

That’s it! Your window is now kaput!

So

With that in mind I asked myself “Self, why doesn’t Microsoft update window functions to use Win UI 3 under the hood?” It seems doable, right? Since an HWND is just an identifier why not replace the guts and everything that doesn’t do custom drawing should just work, right?

Well, maybe, I suppose? Throwing out apps that do their own custom drawing might just work but then again there are thousands and thousands of apps out there running on Windows computers. How could you possibly know if all those apps will draw their UI’s properly if Microsoft replaced the guts of all the windows functions? I suppose we can’t?

Having said that, I sure wish there was an easy way for Microsoft to change the base API’s used by so many Windows apps to just work. I have some ideas on the matter beyond just replacing the underlying API’s but no matter how it’s done it would be a ton of work and maybe, just maybe, Microsoft doesn’t want to do that work. Maybe they just want to move forward.

Maybe it’s time to stop worrying about backward compatibility and leave those old nasty Windows API based apps to evolve or rot until nobody uses them any longer?

Maybe.

Categories
Microsoft

Windows 11: Sun Valley

Windows Central: “The next major Windows update, known widely as Sun Valley, is expected to debut in October 2021. Microsoft is planning to unveil the next generation of Windows, and the teaser appears to suggest that a “Windows 11” could be announced.

I recently replied to a Jennifer Gentleman tweet asking if we’d stuck to a single OS more or less over the years. I was a Windows developer for years and years. From 1989 to 2006 I worked in Windows.

In 2006 I became a development lead for a small team and spent less time writing code. At that time work purchased me a MacBook Pro. I’d SSH to my Linux box and ran Windows in a VM. Even when I went back to being a contributor the same workflow was just fine. It even lead me to building a GDI based renderer for our media pipeline because DirectX wouldn’t work in a VM at that time.

I’ve been all in on Mac since 2006.

At some point Microsoft really shifted focus to web based messaging and I feel like they lost their messaging on the desktop. Now, to be fair, that could have been me falling out of touch with Microsoft and Windows as a developer. It seems like C#/.Net are the definitive language and runtime choice but what about the desktop framework? I’m old. I learned on Win32, AKA the Windows API. It was so simple and straight forward to develop with. Sure it was all C code. Sure it was procedural. None of that mattered. It provided base level functionality necessary to build a great Windows application. Heck, it was really easy to wrap in C++ to build your own framework. My 20 year old little framework still works to this very day.

So, what should you use today to do a great Windows Desktop application? Is it Win32, WinForms, WPF, UWP, or the latest offering, Windows UI 3? Oh, and don’t forget WinRT as a replacement for Win32.

My sincerest hope is Windows 11 is a rework of the Windows user interface that makes everything consistent and that it provides a clear and concise guide for all Windows apps moving forward. So, I’m thinking a combination of WinRT and Windows UI 3 are the way to go.

Here’s hoping Windows 11, or whatever it’s called, gives new life to Windows.

I’d love to build a Windows version of Stream after I complete the Mac version. To that end I’m building a C++ framework just for Stream that handles the network, feed processing, models, and database persistence. That framework will be coupled with a native Windows UI 3 user interface. At some point I believe I’ll bring all that code back to iOS and Mac.

We’ll see.

Categories
Microsoft Windows

As a long time Windows user I’d love to see Microsoft spend some time on a visual refresh of the entire OS. There are some places that just look super dated.

Categories
Microsoft

Windows is Amazing

Microsoft Cash Cow.Windows Central: “Before this model, Microsoft had the unified kernel (OneCore), but the OS-level stuff was different across Windows 10 Mobile, Windows 10 PC, Xbox, HoloLens, and Surface Hub. Each one required its own team to maintain. While they all shared the kernel (OneCore) and app layer (UWP) the “middle” of each needed its own engineering team.

With Windows Core OS this model is killed off. The kernel, app layer and now OS-level components are all the same. The one difference will be the shell or the UI. In the Windows Core OS model, these are also referred to as “composers.” For instance, there can be a tablet composer, one for desktop, and one for mobile.”

Back in 2011 I did a bit of speculating about the design of Windows 8 and WinRT. It’s fun to think about overall designs of operating systems and Windows is definitely fun to ponder.

I really love Microsoft’s commitment to making Windows usable by mouse or by touch. I’ve seen plenty of people touching the displays of their Windows based machines and it works just fine. On the desktop it might not be ideal but we’re moving toward a more mobile world, maybe it’s safe to say we’ve already moved to a mobile world? In this world having a touch based device that also has a mouse is ideal. I can dock it at work and use it with my big displays then pack it up and use it at home on the couch as a touch device. This is precisely why I’d love Apple to continue to evolve the iPad into a hybrid that includes a mouse and touch.

I’m a longtime Windows user turned Mac fanatic, but I still think Windows is a great operating system.

Categories
Apple Microsoft

Windows 10 is a great alternative

Marco Arment: “Microsoft is boldly experimenting with PC hardware, but Windows and everything around Windows is woefully inferior to macOS and the Mac software ecosystem. Even if Microsoft did everything right, it would take Windows at least a decade to catch up — and they won’t do everything right.”

Bringing in the HarvestI doubt Marco will see this, and this is definitely not an attack, this is something I’d say to my friends. In the nicest of ways, to say it would take Windows at least a decade to catch up, is a bit hyperbolic.

I’m a fan of Microsoft’s Windows, I have been for years. It helped me get my start in this industry. I switched to the Mac around 2006 and haven’t looked back, I really do love the experience.

If we’re talking about performance, which seems to be the point of your piece, keep in mind that Windows can run on all kinds of hardware. Windows 10 can support up to 256 cores and 512GB of memory. That’s pretty nice. We know that some high end video production shops are abandoning the Mac in favor of Windows boxes because they need the horse power, another great example of why we need a new Mac Pro. But Windows as a tool of choice is very viable.

The development tools on Windows are quite good. Visual Studio is a great IDE. Microsoft’s .Net has become the standard way to develop for Windows, especially for backend services, but you can create beautiful client applications with it all the same. If you’d like you can still write C++ code to the Windows API, like Photoshop or the Microsoft Office apps.

I’m not sure what Marco’s primary complaint about Windows is? Is it just the general usability? Is it a stylistic thing? Maybe he can’t easily run his favorite tools on the platform? That’s a really big deal. I’d love to hear him go into detail about the issues with the platform.

I tell folks all the time. Microsoft’s NT Kernel is a beautifully designed Kernel. It can, and does, underpin different hardware. When it began life it ran on Dec Alpha, MIPS, x86, and eventually came to the PowerPC. Since that time the other architectures fell out of favor and it mainly became an Intel based platform, but it still powers other architectures.

In the end I’d never attempt to tell someone which platform they should choose, it’s all a matter of personal preference. Apple and Microsoft both provide great solutions in software and hardware form. This is great for us, the customer.

Categories
Apple Microsoft

Swift, on Windows?

Brent Simmons: “What if — and it’s a big if — Microsoft made Swift a peer with C# and provided some good app frameworks?”

When I published What Ifs and Why Nots I hadn’t read Brent’s piece. He’s actually asking the same questions. What would it take to pull Mac developers to Windows? It would take more than Swift, I’m pretty certain. In a Microsoft .Net world where would Swift fit? Would Microsoft just create a version of Swift that works with the .Net garbage collector, or would it be a compiled language? I’d bet on the former given Microsoft’s all-in on .Net and garbage collection.

The bigger questions is Frameworks. Let’s just say Microsoft does a .Net version of Swift. To create a Windows application you’d have to embrace WinRT. You could use your knowledge of Swift, but you’d have to learn a completely new way of writing applications.

Think about all the things Foundation does for you. If you were to move to Windows and Swift on Windows was all .Net based you couldn’t even reuse your non-UI based classes. You could, of course, reimplement your shared classes to use .Net stuff and maintain your interfaces, but you’d have to do a considerable amount of coding to fit on the platform.

Maybe you don’t make Swift a .Net language. Maybe you bring Foundation over to Windows using the Windows API, which is very different from a development standpoint, and not the preferred way to code new apps on Windows. This could also work. You would have a compiled Swift that could natively link to Foundation, which in turn uses Windows API’s to do any platform level stuff. You could then reuse some of your code investment, like those shared non-UI classes and work on creation of a native Windows UI for your application.

Also, of note. Microsoft already has a great set of Frameworks to use, just use them. It would be like coming to the Mac from Windows and saying “Apple needs to provide some good app frameworks.” They already do, you just need to learn to use them to make the best experience for your users. That is the biggest hurdle for any developer.

Learning the new frameworks and a new OS can be quite daunting. When I came to iOS from doing Windows and Linux based UI’s (using Qt mind) I fought with Interface Builder and decided I had to do everything in code because I couldn’t figure it out. Later I made my peace with it. I still think Visual Studio is the better development environment, but Xcode is a very close second, maybe tied, at this point.

Eat your own dog food.I’m kind of a knucklehead. I spent almost 20-years doing native Windows API based applications so I was very comfortable with Visual Studio and that entire ecosystem. If I can learn to write iOS Applications and embrace the tools, then anyone doing Mac or iOS apps could learn to do Windows based stuff today. Just embrace it, don’t try to force your tools into the platform. Now, if you have some code that can easily come over, you might as well use it, but we all know the best apps feel right on the platform. Embrace the platform.

The new Surface Studio is the first bit of Windows based hardware that has excited me this much about the platform in a very long time. I’d love to work on a new design app for Windows, if I could. Maybe even one that works on both platforms; Windows and Mac. Why not? I mean besides time and money, what else does one need to do something so ambitious? 😀

Categories
Apple Microsoft

What Ifs and Why Nots

Apple announces new MacBooks to the world this week and geeks aren’t overly impressed. It’s OK. My gut reaction wasn’t overly positive, but what the heck did I expect? There were enough leaks in the press to warn us about what to expect.

As a Professional Software Developer I don’t need a thinner, lighter, laptop with an integrated touchscreen on the keyboard, but it also doesn’t cause any damage to have those things. I am definitely more interested in having a great piece of hardware that serves my needs.

My Needs

Will write C/C++ for foodI’m not obsessed with the looks of Apple products. They are beautifully designed. I’m a bit more pragmatic. I want my hardware to be fast and dependable. Apple makes fast and dependable hardware. I will never understand their obsession with “thin and light” but that’s ok. It’s their thing.

In the end I’ve been very happy, and I’m still happy, with my late 2011 15in. MacBook Pro. Work provided me with a 2014 15in. MacBook Pro and I can imagine it will work just fine for years to come. At some point down the road macOS will outgrow the hardware and I’ll upgrade. Until that day, I’m fine with what I have.

What If?

It’s too early to tell but what if Apple is in the middle of a transformation from macOS based devices to completely iOS based device? If we were to base that question solely on this weeks announcements it might be a completely reasonable guess, but what if they’re not done announcing new macOS based devices?

It sounds like, based on recent reporting, that Apple is out of the display business. I know that’s sad for a lot of folks, but for me it adds a ring of truth to the idea of Apple moving away from the desktop. Based on that one rumor I half expect Apple to mothball the Mac Pro, Mac Mini, and iMac. What if they do that? It’s fine, they don’t need to make desktop devices any longer. They’re moving to a completely mobile world driven by iOS and the iPhone. Yes, people do real work using just their iOS devices.

That brings us to this; Apple will continue to push the iPad as a professional device for most people. They concede the desktop to everyone else, including Microsoft (who owns the productivity worker space anyway.) That leaves them with the consumer and prosumer markets, which is a perfect fit for them.

Where does that leave professional developers, designers, illustrators, and artists of all kinds? Like I said before, I don’t need a Mac Pro to do my job, but some people do, or at a minimum believe they do (which by extension means they do.) We’ve seen some cases in the high end video production world where shops have abandoned the Mac in favor of more powerful Windows based computers. Designers, illustrators, and artists have the option of the iPad Pro, MacBook Pro, and Microsoft’s recent entrance into this market with Surface Studio. Will a lack of a Mac desktop offering hurt these professions? In some ways it probably will, in others I honestly believe folks will adapt if the software can meet their needs head on. As far as high end workflows go, I’m not so sure. What do folks at Pixar use? Are they completely tied to their Macs or do they depend on Cintiq’s for their daily workflow? I don’t have the slightest clue, but this is where Apple could really disappoint a professional market. I’d love to hear from someone inside Pixar, ILM, Disney, or DreamWorks to see how this could effect them. Remember, outside of the software development and power user communities, most people see their computers as a carpenter would see their hammer. It’s an essential tool and they may have a preference, but a compute is a means to an end.

Why Not?

AHHHHHH!If Apple decides to abandon the desktop in favor of an iOS world, why not create a hardware specification to allow licensed third-party hardware vendors to sale computers with macOS? At a minimum spec out supported hardware configurations and allow people to buy a macOS license to run on their Hackintosh computers.

Another controversial why not. Why not port Xcode to Windows and offer an alternative, lesser expensive, choice to developers that could also let people buy super fast computers to code with? I know, it’s a crazy idea, but as of this writing I’d prefer a Windows computer over an iPad as my primary development computer if I couldn’t get updated desktop or laptop hardware directly from Apple.

Since Microsoft is moving to LLVM why not get Objective-C and Swift running in that environment and provide the iOS simulator on Windows? This also seems like a decent alternative to an all iPad development environment.

All crazy ideas, I know, but things I think about.

Then again, Apple could surprise us in the spring with a brand new Mac Pro and iMac that blows all these crazy ideas right out of the water.

Categories
Hardware Microsoft

Hello, Surface Studio

Hot buttered popcorn and a movie, ahhh!Not to be outdone by Apple, Microsoft announced Surface Studio a few days back. It looks like a winner.

Ars Technica: “And as is Microsoft’s habit, there’s human interaction novelty, too, with the Surface Dial. This is a Bluetooth spinner and clicker with haptic feedback. Spinning the wheel can invoke either system functionality (such as changing the volume) or application features (such as the amount of red, green, or blue used by the current paintbrush in a painting app); there’s an API to allow third-party software to provide Dial-specific capabilities. Its unusual feature is that it can be used off the screen, or, when in studio mode, on the screen. When used on the screen, the Surface Studio knows exactly where the dial is and can draw radial menus or other controls around the device.”

JavaScript Scene: “That’s a huge amount of gorgeous screen real-estate for only $2,999. And it’s a touch screen. And it has an amazing interactive dial that you can place directly on the screen. You can draw on it with pens.”

CNet: “Really, though, this is all about the Surface Dial, a wild new idea that instantly excited people from its on-stage demos. The metal dial can be an on-screen tool as much as a desktop one, and looks like the other-hand tool designed to work alongside the Pen in everyday Surface creative use.”

I want one. It makes we want to create desktop software for Windows again.

It looks like Microsoft has hit one out of the park.

Designer Neven Mrgan took a trip to his local Microsoft Store to check one out. He seems impressed.

Can you imagine using Photoshop with the Surface Dial? Yeah, it could be awesome for designers.

Categories
Cloud Microsoft

Parse for Azure

logo-build-smallMicrosoft Azure Blog: “We created a Parse Server implementation that uses fully-managed Azure Services and released it on the Azure Marketplace. With this template, Parse developers will be able to easily spin up a Parse Server v2.1.4 with a suite of pre-integrated Azure services.”

The closure of Parse has actually allowed the platform to blossom. The community has been amazing, the Parse team has been amazing, and now we’re seeing other platform vendors pick up where Facebook left off.

I think this would be my first choice for continued Parse deployments. I haven’t used Azure myself but I trust the opinions of some folks that have. I’ve heard the management console is much nicer than AWS, not to pick on AWS because I’ve actually used and like AWS, but the Azure team is continuing to build out incredible infrastructure that can run any operating system and service you’d like to host there.

This year at Build Microsoft seems to have really doubled down on services and Azure, along with announcing free Xamarin tools for Visual Studio, a plugin to Visual Studio that allows for building on Linux, and a native implementation of Bash on Windows. Those are just a few of my favorite announcements, I’m sure there are many others I missed.

We live in interesting times and Microsoft definitely isn’t sitting still. They are becoming the place for Services and Mobile Apps.

Categories
Microsoft

Microsoft and Xamarin

Microsoft Cash Cow.Lee Mallon: “Windows Phone has always been number three in the race and getting slower and slower over time, what Microsoft needs is a seat at the table of the platforms growing at an exponential rate and that is iOS and Android.”

Lee does a really nice job hitting the high points of the acquisition. I think the paragraph above is the real reason. Microsoft needs to be a major player in mobile even if its not on their own OS. They’re already building beautiful, useful, mobile applications for iOS and Android and this acquisition will play to their strength in the enterprise. Who knows if they use Xamarin tools internally, that doesn’t matter. What does matter is they now have a way to give millions of .Net developers the tools they need to succeed on mobile. Couple that with Azure and Microsoft could become a dominant player in mobile development.