Archive for category Uncategorized

Upgrading from ASP.NET Core 1.x to ASP.NET Core 2.0

The .Net Core and accompanying technologies like ASP.NET core and EF (Entity Framework) Core have moved rapidly become more relevant and capable compared to their corresponding Windows only technologies. .Net Core technologies work across Windows, Linux and Mac OS. The cross platform nature of the .Net Core technologies means that a pragmatic approach is required while also keeping an eye on how major and breaking changes are introduced in each major release.

This blog post aims to demonstrate how to migrate an existing, simple, hobbyist application from ASP.NET core 1.1 to ASP.NET Core 2.0 (specifically). However, this process will also serve to understand the underlying architecture of the technologies that are used and show how they have changed.

Note: It may cover aspects of the .Net Framework (the Windows only implementation of these technologies).

The .Net Standard

In layman’s terms, this is an attempt to provide a minimum guaranteed API level for any versions given of .Net. The most recent version, as of this writing, is .Net Standard 2.0.


For the impatient: TL;DR

.NET Standard solves the code sharing problem for .NET developers across all platforms by bringing all the APIs that you expect and love across the environments that you need: desktop applications, mobile apps & games, and cloud services:

  • .NET Standard is a set of APIs that all .NET platforms have to implement. This unifies the .NET platforms and prevents future fragmentation.
  • .NET Standard 2.0 will be implemented by .NET Framework, .NET Core, and Xamarin. For .NET Core, this will add many of the existing APIs that have been requested.
  • .NET Standard 2.0 includes a compatibility shim for .NET Framework binaries, significantly increasing the set of libraries that you can reference from your .NET Standard libraries.
  • .NET Standard will replace Portable Class Libraries (PCLs) as the tooling story for building multi-platform .NET libraries.
  • You can see the .NET Standard API definition in the dotnet/standard repo on GitHub.

From: Read through the introductory material of the .Net standard.


Leave a comment

Back to Blogging Again

I have neglected this blog for some time and it is only now that am realizing that it is an interesting way to explore subjects about the changing nature of social media and/or the content they carry. Of course, returning back to blogging also mean that evolution of technologies may have more impact on social norms. I suppose that is obvious but I have always wondered about the thinking behind previous choices and decisions.

There are some pieces of code on this blog that once expressed an interest in coding; I still write code and try to educate myself about better ways of approaching old challenges. Some of the experiments lead to an interesting set of challenges that simply need to be translated into code; even more interesting is upgrading old code and/or the thinking that informed that thought is fascinating in it’s own right.

Leave a comment

Sunday Dispatch for the Day

I take an interest in subjects like God and any form of deity simply because they are not that easy to discern and will necessarily take a long time to figure out.

One of the more telling aspect of the nature of God is the afterlife. Accept the notion that there is a creator of existence but then also consider the prospects of said creator condemning its creations to either live in perpetual joy or agony is childish. However, that promise remains central to what believers do or do not as it were.

Central to the understanding of the afterlife is the idea of eternity. Eternity for a creator is not a problem since there are many ways to achieve the same end in some fashion. The more impressive bit of it is that as a creator, it is entirely possible to hide your eternity in your creations.

Every single person who believes that there is a creator, keeps the creator alive and well for as long as the species continue to exist. That said, don’t discount the idea that evolution does not serve the same function of creating ever more rationally capable beings in the process. That is eternity simple and logical.

The next more interesting question is why individuals so created attach so much importance into something that is fundamentally against their very nature of existing. It boils down to this, do you want to fight God and if your answer is yes then it would be interesting to hear more about how you are progressing in your effort. However, also giving yourself completely over to God is somewhat unworthy of you as you have been created.

To put it more simply, the kinds of things that you will do to offend God may ultimately be something that you are doing to please yourself and as such God has very little to do with it. Yes, if you are displeasing too many people – there is all chance that your objective intention can and will be defeated; it is not an act of the devil. However, it does mean that there people who are opposing your intentions. I do allow myself to see what other people think of me for just that kind of an outcome.

Leave a comment

Interpreting Context

I was reading an interesting article about IBM’s proclamation that Africa is the next growth frontier and it got me thinking about what that means exactly. The article claims that IBM’s strategy calls for increased investment in the region to reach an objective of US$ 1 billion per year by 2015. It does not take a genius to see the potential of Africa but as I have always thought, leveraging the potential comes with significant challenges that most of these corporations need to either adjust to or simply find better ways of going about it. I am optimistic about the prospects for Africa but I am always pragmatic enough not to shout it at the top of the hills.

Pragmatism, I would have to insist ,has little reflection on the hope that represents the current state of affairs in the continent. Major wars are gradually being resolved and most post-conflict countries (Angola, Mozambique, Rwanda) are holding their own. In that regard then the necessary foundational requirement for any grass roots development going forward is either being laid down or gradually taking hold. However, most people who are optimistic about Africa would mostly accept that Africans are increasingly becoming more involved in what happens to them. More importantly, it is the nature of this involvement and where it is geared towards that is bother encouraging and very interesting to observe.

The financial sector in the continent is increasingly being advanced and expanded by indigenous banks which are increasingly looking beyond their regional boundaries. Examples of such banks include (off the top of my head) Equity, KCB and EcoBank. Equity and KCB have only recently started venturing beyond their comfort zones (geopolitically speaking). However, EcoBank is far ahead in this apparent strategy to see Africa (Sub-Sahara Africa in any case) as a single market. While political realities in the East Africa region and the wider Eastern Africa region have made the expansion of KCB and Equity a worthwhile venture, they still remain in the early stages of their respective strategy. However, the interesting angle of the situation is how these indigenous banks operate: you are more likely to find an Equity bank branch in the most unlikely places than a branch of a multinational, non-indigenous bank. The experience in these two banks is remarkably different, if you bother to notice the difference.

Given the experiences in the financial sector and in the telecommunications sector in Africa, then it is important to keep in mind that while Africa may indeed be the next growth frontier, that growth comes with its own unique challenges that need to be dealt with. In identifying the potential of Africa and investing it, then the IBMs and Google of this world are doing what their corporate mandate demands of them. How much of these investments are mere façades for finding new markets as opposed to a real investment in the continued development of locally relevant technologies and processes remains to be seen.

The use of telecommunications in the financial industry has long since been a no brainer but the third world requires a more different approach from what exists in the west and the other developed nations. Whereas they would have a huge network of ATMs spread all over the country to serve their customers, the oft quoted MPESA transforms your mobile phone into an ATM in your pocket scenario. It is hoped that MPESA is one of those prove of concept ideas that shows the true potential of a mobile phone. A mobile phone centric revolution holds a greater potential than the corresponding idea of delivering computers since the latter would require an inordinate amount of power to say the list and far too prone to various problems that clearly plagued the developing countries: chief on the list – dust.

1 Comment

The Social Technological Age

One of my most recent reads is Social Intelligence by Daniel Goleman (yes, the very one of the Emotional Intelligence fame). I found the book interesting although in some sections it reads like some sci-fi plotline. However, much of the book is based on continued research into how our brains are wired and how that wiring essentially influences our interactions with people around us – including strangers.

Turns out empathy is a pretty powerful factor in a person’s ability to create, nurture and maintain relationships. However this ability to essentially tune into someone’s else’s feelings and state of being is not equally developed in everyone hence leading to the various trials and tribulations that people go through. One of the most fundamental questions that I like to bring up on discussion of relationship is a hypothetical scenario: what if you have everything that you wanted? And I don’t mean that in a sense that you want a trillion bucks today and you get it but something that you can reasonably struggle for a reasonably be assured of getting it. What would be the purpose of your life then?

Empathic Civilization

Let me dwell some more on the notion of “having everything you want”: as individual persons we want good for ourselves as a matter of course however there is a point at which the individual good relies on the good of everyone around you – when you give, you also benefit because you have had the opportunity to be of use to someone else. Taken a bit further, “everyone around you” would include the entire ecology that is keeping you alive. This generosity can not be limited to only material or physical aspects of life; the psychological dimension of generosity is a far more interesting subject to ponder than the clear cut, obvious dictates of our physical generosity. How does an emotion as such love (complex, while simple as it is) gets expressed in a situation in which you are virtually secure and safe in and of yourself?

The increased knowledge and information about how our brain works is a direct consequence of our ability to collect and reason about vast amount of information thanks to advances in computing hardware and the corresponding software. If much of what has happened in the past is to be taken as a baseline from which to extrapolate what might happen down the road, then it becomes increasingly hard to dismiss the idea that we could reach  a point at which the working of our biological bits and pieces is no longer a great mystery. Besides enabling us to see what is going on inside our own bodies (or our favourite research proxies like white mice), advances in computing is also transforming the way we communicate with each other through the elevated prominence of social networks and more importantly the social component of our interaction is increasing becoming a key part of how we use our computing equipment and conduct our lives.

I am far more intrigued by what the increased importance of social networks means to our future evolution. Already, the petabytes of data on social networking sites say more about our individual actions and choices overtime that it is possible to analyse this vast data repository for patterns that will give clues into how we want our lives to be customised. That has always been the story that tech visionaries over the decades have been talking about but it is in this day and age that the possibility of making our computing experience more in touch with a realistic approximation of our social interactions. Everything in our daily lives involves dealing with other people and when technological advances take this into account then lives can be wonderfully transformed. Whether we are ready for this transformation or not is perhaps the question that will only be answered by future historians.

Sociologist and anthropologist would perhaps take the time to extrapolate and attempt to explain the potential impact of technology on society and our very definition of ourselves. I can’t help feel like the financial crisis was brought about by ease of access to technology that enables us to dream up the most complicated derivatives that few, if at all, ever understood. As if it was not enough that you define a financial product solely based on its formulaic relationship with the real world, you then have the ability to sell those same products all over the world such that the very false nature of these derivatives exposed far too many people to the risk involved. This is not an attempt to lay blame at the feet of technological progress but instead more an exploration of what such incidents say about our ability to effectively leverage the true benefits of technological progress.

The precepts on which current modern life was build may not smoothly transfer onto a more technology-centric society; for example the rule of law is imperative to the functioning of society however the very idea of owning a property (more specifically digital properties) is different from that which applies to owning real world artefacts like land, a building or even a pen. The concept of ownership and valuing the property so owned inevitably affects the very definition of what constitute theft and what would be a fair compensation for being deprived of what is rightly yours. When applied to digital properties, does copying a file truly qualify as stealing? In the normal sense of stealing a pen i.e. the owner of the pen does not have access to the pen anymore?

Taking someone’s property (digital or a non-digital) remains ethically wrong and as per the dictates of any civilized society; however, if the theft in question is digital – more along the lines of copying than depriving the original owner of ownership of the property in question, then it becomes hard to judge what is an acceptable compensation. There is the question of policing such crimes; either the laws and by extension the rule of law need to evolve to accommodate a more digital life or technology need to bent over backward to accommodate (more fully) existing assumptions about fundamental aspects of life like owning property.


Leave a comment

Psychology of Artificial Intelligences

Over the weekend, I decided to revisit Battlestar Galactica – a sci-fi series that is as much a commentary on our recent and perhaps even current political realities than fiction. If you are not a fan of the genre, I would suggest you have a look at this article; the show’s stars and creators were invited to discuss human rights and armed conflict at the UN. I have always held that sci-fi provides an appropriate vehicle to comment about human nature and how we behave under circumstances like the near extinction of the human race – is it still smart to conduct suicide bombings? What about the rational intelligence of a civil war? You are essentially killing your own people… the very same ones you purport to be fighting for.

Battlestar Galactica relies on the premise that the human race created Artificial Intelligence that subsequently came to the conclusion that the human race must be exterminated. Yes, that is something that makes me wonder about the very nature of this intelligence. Throughout the life of the series, the motivation behind the cylon (the created beings) attack on the human race is not convincingly explained but hey that is sci-fi for you – there has to be some amount of suspension of believe.

The movie i,Robot at least tried to provide some kind of a logical explanation as to why VICKI wanted to take over humanity; it is a somewhat dubious premise wherein the AI is constrained by laws that it must uphold. It is within such constraints then that the question of morality and therefore ethics of what a robot decides to do (based on those rules) is more contentious; there is no guarantee that they won’t come up with some ingenious interpretation of their constraints. Such robots, as bound by the 3 laws of robotics, are not full moral agents and as such can simply work within their base programming.

All the Artificial Intelligences that go berserk in fiction are rather infantile and at best in the grip of adolescent tantrums. A truly intelligent entity (artificial or otherwise – as long as you are not part of the race already) would most likely choose to have nothing to do with humanity. What is the upside of taking on a perfectly destructive (even to its own kind) race? Perhaps for story telling purposes, these AI entities almost always have fundamentally human outlook in life that it eventually make them less than intelligent.

Besides the entertainment value that these stories provide, I get the feeling that it says a lot about our collective psyche (at least as represented by Hollywood and their brethren at the silver screen). Seen from their perspective it would appear that we are fundamentally afraid of anything that would compete with us; heck we are busy pursuing ever more imaginative ways to efficiently do away with each other; all in the name of competition. This is almost always justified through some bizarre notion of competition and/or survival of the fittest. Nobody bothers to mention that the fittest may not necessarily be the best and/or the most desired outcome possible – under the circumstance.

Don’t get me wrong, I am not rooting for some utopia on earth and hippie type life style; it remains a fact that we as individuals and collectively as a race like to struggle and taking up that challenge is what makes life worth living. It is baffling how this is always taken to mean that you have not the ability to effectively direct that need for challenges towards ever more taxing problems and situations.

If humanity ever gets to a point of creating AI, then I hope that AI has the common sense to either leave humanity alone or just remain incognito and somewhat shepherd humanity towards a better future (that would be a fun challenge). How practical would it be for such an entity to just decide to live the human race alone? The more interesting question to ponder would be how much of an intelligent thought would be needed in order to realize that all around the earth there are satellite arrays with sufficient enough storage to keep this entity going for some time. After that, I hope it has the drive and desire to actually solve problems since nuclear power would not be a challenge for it nor the need for oxygen in the first place; this is only the most obvious solution from an entity whose fundamental basis in life is so much different from our own (I hope).

1 Comment

Internet Explorer 9 Beta Impressions

I am just going to come out and say it: I can actually see myself making Internet Explorer 9 my default browser – no feeling of shame in admitting that whatsoever. I am not entirely sure if that is a complement or just an admission that IE 9 beta tries to stay out of the way that you actually don’t bother thinking twice about its very presence as a running application on your computer.

It has been a little over 48 hours since my first encounter with IE 9 beta. It was both a terrifying and pleasant experience: terrifying because what IE 9 beta is is something that is unlike Microsoft – at least on the surface. The impression is that it does more to stay out of the way more than to try to help; which is a good thing because no web surfer really cares that much about the browser – over and beyond the fact that the browser gets you online and make the web reachable. For all intends and purpose, it is just a means to an end – which is the internet.

With IE 9 beta, Internet Explorer joins the browser revolution (and wars) that has been going on for the last couple of years courtesy of Mozilla Firefox and Google Chrome. Firefox and Chrome have battled it out in JavaScript speeds and the latter introduced a more minimalist user interface that captured the attention of most people who spend much of the their time online. The current beta version of Firefox 4.0 brings changes to the user interface as well with essentially the objective of giving web sites and applications more screen real estate.

Internet Explorer 9 beta has a minimalist user interface which is serves to achieve the IE teams goal of making their browser the theatre and by extension of that analogy, thus the web becomes the show. While not entirely revolutionary in and of itself, it is something that is long overdue and frankly increasingly necessary as many people continue to spend their time online.

One of the things that I don’t like about IE 9 beta interface is the fact that the address bar shares the same line with tabs. While it works well when there are not many tabs opened, this can quickly become a usability nightmare as the number of tabs increase in any given surfing session. While this strictly not a problem on Windows 7, it would be a nightmare on Windows Vista.


I am not sure how this shapes the debate on tabs over address bar but this is no different (from a usability perspective) to having address bar (or one box as you may prefer) over tabs. Besides, this totally reduces the visibility of the URL that is currently loaded.

I have not particularly looked at any features of IE 9 beta but that is something that will come with time as I get to use the browser more. However, as mentioned using the browser (within a sane limit of opened tabs) is actually a pleasant experience. So far, I have had to launch Firefox 4.0 beta to run along with any opened sessions on IE 9 beta. While the beta of IE 9 shows all the sign that Microsoft is back in the browser game, it also brings out one aspect of Firefox that any of the competing browsers are yet to successfully and meaningfully clone: extensions. While all the other browsers have extensions, none of them approach Firefox available extensions count.

With the eventual release of Internet Explorer 9 and Firefox 4.0, the age of minimalist browser user interface will have firmly settled in. This will essentially water down any uniqueness that Google Chrome has had since its first version. All up coming releases of the top three browsers essentially have product specifications that read the same – minimalist user interfaces and hardware acceleration in one form or the other.

Microsoft has the largest market share and with the potential to leverage its dominant Windows operating system in helping Internet Explorer reclaim lost glory. Internet Explorer 9 represents a credible attempt to stop the market share erosion but will that be enough to bring back those who have left IE?

Mozilla continues to innovate (through amazing experiments e.g. panorama) with Firefox; behind them, they have a community that is as involved and committed to the browser’s progress over the years. Firefox’s strongest (and unique) strength lies in its large collection of extensions. The sheer number of extensions speaks of a committed developer community that continuously and faithfully updated their extensions to keep up with new browser releases. Firefox 4.0 will bring about a new approach to extensions development that will make the work of extension developers and user easier than it has been before. With JetPack, extensions and the base platform (Firefox) can evolve separately meaning that the browser can be updated without the need to equally update extensions that are written to run on JetPack; it will be possible to install JetPack add-ons without restarting the browser as is the case pre-JetPack.

Google Chrome? I can’t see anything uniquely differentiating about Chrome at the moment; don’t get me wrong – whatever Google has implemented in the browser is already being copied by the other two browsers so those are advantages that are largely transient in nature. That is not to say the Chrome (Chromium) team is not pushing the envelope – but at this time, they seem to have all their eggs in the air – there is no guarantee that any of their experiments and developments will prove to be a foundation on which to build further dominance of the sector. It would seem that the apparent inertia of the top two browsers would be an advantage that the Chromium team will leverage. Though the indication (based on Firefox 4.0 beta and Internet Explorer 9 beta) is that Mozilla and Microsoft are gradually shifting gears – more so focusing on their key strengths.


Leave a comment