Archive for category Uncategorized
Command Line Interfaces (CLI) are pretty common on UNIX and UNIX-like systems. It can be intimidating for casual users of computer systems but the power and abilities of such interfaces cannot be denied. The scripting capabilities and the almost seamless ability to chain together a couple of small programs to automate processes makes for an interesting process that creates and evolves an efficient system overtime.
It is worth noting that most of the CLI programs/tools, on the platforms that have supported them historically, are quite memory efficient. If there is a feature on a CLI program but also exists on a graphical user interface (GUI) program, it is a better bet that memory management is better on the form.
Over the last decade or so, Windows has been making an effort to improve the CLI capabilities that exists on their platform. However, since CLI has not been a central focus of Windows since their departure from MS DOS, you have an extensive number of GUI based management and scripting tools that were primarily geared to “enterprise” editions of Windows. That historical move spawned the certification exams to prove to enterprises that they are dealing with qualified people while spawning script kiddies on the consumer end of that spectrum.
The creation and introduction of PowerShell seems to have provide an opportunity for Windows to restructure it’s internal architecture while also improving the CLI experience on the platform. Of course, PowerShell taps into the clean and consistent architecture that the .Net framework has been gradually encouraging across Microsoft platforms. The Win32 API was so ubiquitous that VBScript becomes an essential construct for scripting in the enterprise but that also means that if you can code of ASP (Active Server Pages) and ADO (Active Data Objects), you can probably write and/or understand a script for AD (Active Directory).
A historical context here: while many people who remember the introduction of Java and the many marketing monikers of “Write Once, Run Everywhere” may have thought of the .Net framework as a chance to make a version of that architecture for Windows and By Windows, the truth is that it was a better way to structure the platforms owned and run by Microsoft.
The much I have been reading and understanding of the CLI features on Windows has the inclusion of WSL (Windows Subsystem for Linux). The first time I experience the command line interface, I actually wanted to know how has the core OS (operating system) has changed to allow this to work and what and how security protections flow across radically different architectural designs.
There still seems to exist, as an effort to provide superior CLI experience on Windows, without seamlessly jumping back to a GUI. That was one of the reasons, I was searching for command line IDEs/text editors … over and beyond syntax highlighting.
I was hoping to run some of them on WSL.
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.
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.
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.
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.
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?
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.
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).