I don’t want to say I told you so, but it’s just too tempting. Yes, I told you so! Not long after I published my article about how and why Microsoft should adopt Android, Microsoft adopted Android. It’s not exactly like the way I described in my article, but it’s a baby step and I will take it as a win. I don’t have inside information. I’m just an old Windows Phone fan who moved on. I moved on so I can see which direction Microsoft is moving on too. Yep, in case it’s still not clear, it’s Android.
Microsoft announced Surface Duo in October 2019. It runs Android, and it has two screens. Let’s talk about it.
It’s hard for a company of Microsoft’s size to stay relevant, let alone turning itself around. It somehow became the biggest company in the world, and that’s impressive. However, what this article talks about is not how this company is run but a much smaller topic. Giving them full credit of running the company so well does not mean I cannot complain about the little things that drive me crazy. Watching them to become more successful is painful to an old fan like myself. Microsoft use to be the Windows and Office company. Nowadays it’s more successful with Azure and Office365. For an old fan, it’s like seeing your divorced wife selling your engagement ring for something more practical. You can definitely understand it given the circumstances, but it still breaks your heart.
This article is something I have been cooking up for
some time now. I finished most of it a week before my hackathon last weekend,
but I had to shift focus to the hackathon as we had a commitment to build a
complete software solution for a local non-for-profit organization. Now that I
have fully recovered from the busy two weeks of planning and hacking, I here
present to you my view on the subject matter.
Microsoft should adopt “Android” and make a mobile device.
Whenever this topic/opinion is brought up, people often have different oppositions. The argument is mostly about that Android is owned by Google and that Microsoft needs to depend on them. This is exactly why I put “Android” in quotes. I don’t exactly mean Android. You can say it’s a click bait, but I mean AOSP, ie. Android Open Source Project. Let’s, for the sake of simplicity, call this imaginary version of Microsoft’s AOSP MOS (Microsoft OS). What are my arguments? Let me explain.
As a junior programmer who’s desperately trying to grow, I try a lot of things. Things like learning new frameworks, programming paradigms, languages, project management and so on. One thing I tried to do is to lead. I worked with a few teams already from my company, and the level of skill that the tech leads provide to the teams are something I have always envied.
Refactoring is something every programmer has to do once in a while. You start to write something. You search around to find out how everything works and piece them together in your program. Now that everything works, sort of. You want to start thinking about code maintenance before it gets out of control. Now that you have a proof of concept, you want to refactor it to scale up. We’ve all done it, and it’s not easy if the framework you work with is unfamiliar to you.
Express + Typescript
Pretty much every web developer has worked with ExpressJS some point in their programming life. I have too. But this time it’s a little bit different for me. It’s Typescript. I have never worked with Typescript before, let alone writing a ExpressJS backend in it. So I decided to document down how I did it and how I refactored it to be scalable.
In the process of building Jagra (My open source enterprise task management system), I have always encountered interesting problems that I need to solve. Such as how to hand the control of signing up a user to the admin, how to securely verify users, how to build a comment system. One of these problems is building a file handler with drag & drop interface.
Golang is something I’am experimenting these days. I find the argument that it has better performance (almost twice as ASP.NET Core) very appealing. So I started to implement an identity server for all my future projects in golang. Why not? After all, you can’t learn something without actually using it in the real world.