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.
My first foray into learning Java is still on my mind and some of that effort have appeared here. However over the span of almost a decade a number of developments have happened in the Java eco-system and I thought I revisit that effort with more focus on the tool chain.
Java has been an interest platform since it’s inception and much of the interest is not necessary driven by the current owners of the core patents, but innovations spring forth from a wide community. However, the renewed interest in how I used to learn is not limited to IDEs because increasingly being cross platform requires a certain degree of savviness with command prompts.
A Little Context
- Java is at Java 8, with the imminent release of Java 9: these feature fundamental changes to how the platform works and runs.
- Cloud computing has becoming central to how platforms and architectures work;
- Open source Java eco-systems have had interesting contribution to how the official Java releases evolve over the years. A specific example would be the implementation of java.time.*
- Java EE is coming along nicely most of the time and the aforementioned open source community have some interesting innovations on top;
- When I was trying to understand JPA, xml configuration was all over the place and yes, tools like Netbeans seems to look more like evolving into VB 6 like IDEs
- With the popularity of Git and the supporting services, code sharing can be used as a teaching and/or learning tool; gradually and incrementally.
The new Technologies I am thinking of gradually building into this new take would be:
Within the context of the previous tutorials
- Built management tools like Gradle/Maven
- Version code control systems (mainly Git)
- Collaborative online efforts that uses multiple branches (when and if possible connecting to similar issue tracking systems), with Git at it’s heart.
As a summary, much of this can be described in a readme.md file of Git repository! How search engines discover interesting subjects for beginnings to fix a single line of code makes me wonder.
In recent years machine learning has been making inroads into what used to be human domains. However, Microsoft’s recent experience with its chatbot known as Tay revealed something every more interesting about what it means to be human and/or even attempting to mimic human.
While natural language processing has been the biggest challenge for computer scientists and artificial intelligence researchers alike, in recent memory it is increasingly become evident that machine learning can overcome earlier limitations. While this may be largely because of improvements in hardware and software designs and tools, it has nonetheless open up many possibilities. It is from these advances that systems like Watson, Siri, Google Now, Cortana etc have made into the market. Machine learning, combined with machine visionary has given rise to autonomous vehicles with varying capabilities.
However, while these systems are taught to learn a limited set of rules e.g. the structure of sentences in order to extra meaning or traffic rules in combination with detection and identification of obstacles, it has become increasingly obvious that NPL works within the broader context of human society which means that many of what passes for rules are neither hard and fast nor rigidly imposed. Humans are equally adept at processing norms and mores as they are in processing grammar and traffic rules. More importantly humans also possess the ability to create their own meaning and context because of what the possible fall out of not adhering to social norms would be.
Tay was able to learn but could not project it’s own objective in the conversation in which in participated; that simple fact made it easy for people to have it say things that are not polite. That is not the end of the story though: this entire episode only serves to highlight the fact that understanding a sentence does not mean appreciating the impact of the sentence on an audience. While many, including the designers and developers of Tay, will definitely be looking at what went wrong, the more interesting part is that perhaps we need other disciplines to enter into the effort of adding more nuanced abilities to AIs that will have to operate along side human beings.
At the moment, the main point of departure for most of the expanded effort to integrate AI into human society is laws and ethics. However the proper point of departure should be building in more abilities for AIs to appreciated the nuances of human society. The truth of the matter is that we as a species are not great at being governed by laws and/or being ethical. It is a matter of appreciating human nature as it relates to laws and ethics generally. As many have noted the greatest risks that AI (in their current form) pose is from human beings themselves.
The more worrying aspects of not getting the law and ethics angle of AI right in the first place is that it will tap into the disturbing human capacity to feel less responsibility for actions and decisions made on your behalf. Very few people have the conscience to question, at the very least, laws that are clearly unethical.
Microsoft Tay was an experiment first and foremost though unleashing on the greater internet may have been premature in the process. That misstep is a testament to the fact that there is gradually more confidence in the abilities of machine learning algorithms. The embarrassment created by Tay seems to suggest that people increasingly related to AIs as if they are people, in a general sense, though it is more likely a question of wondering what Microsoft was trying to do.
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 article about the so called “leftover women” in China. The article was interesting because it mentions a figure of 34 million surplus men in China. Basically, there are 34 million more men in China and there are “leftover women”. Interesting paradox you would assume so the article should have more about what it is about these “leftover women”.
The ladies interviewed for the article (and the following documentary) are highly educated are financially secure. It would be wrong not to take into account what the article refers to as a “chauvinistic society” in China while trying to understand the paradoxical problem of “leftover women” while there are an excess of men in the society.
My main interest in this comes from a couple of points:
- Nature of Society
I have asked a couple of married people why they are married and did the same with those aspiring to be married. The answers I have gotten so far are adequate for those who are married and those who are about to get married. The answers can range from human beings are not suppose to be alone to what society expects. However, none of those answers reveal the fundamental personal motivation for it.
For sometime, I have considered the human beings are not suppose to be alone. The ultimate goal of not being alone should much up to the kind of effort and dedication that a marriage requires – regardless of the ups and downs that are sure to come along the way. You just can’t revert back to being alone – that is not the purpose of marriage.
Don’t get it wrong, the presence of a father and mother is hugely important to raising children but that does not constitute enough reason for marriage. Consider marriages that have resulted in divorce; divorces have happened whether there are children or not. The fundamental notion is that marriage is not about the children but the two people who enter into it. Children do add value to the marriage and make it meaningful as life objective but the motivation of the two people in the marriage matters more.
Not being alone seems to be a legitimate desire to have and as such basically provide each other with companionship and company. In cases where marriages fail, would it be because the objective of not being alone has not been fulfilled? The other side of that question would be that the idea of being together in the marriage becomes far too damaging as compared to being apart. That is the point of view of marriage that interests me: there are people who have no business being married.
For those who are single and would like to get married, a good consideration to look at is: are capable of being alone? If you can stand yourself, then there is a high chance that someone would stand you and/or you would understand the demands and needs of being with you. Well, I suppose that level of personal growth would also work for those already in a marriage.
One of the much vaunted consideration for a spouse is the so called compatibility. This can range from education, wallet size and many others. Here is something to take into account in addition to all the usual considerations: your level of education and wallet size does not mean that you are a bad or nice person. The commonly understood notion of compatibility requires that people of similar education and financial wealth would be more successful. All the attributes belong to an individual who can either be profoundly secure with himself or herself such that they can appreciate a different point of view of their own. Being highly educated is not a guarantee of intelligence – given the fact that higher educated you are, the narrower your field of knowledge. If you are expert in nano fabrication processes, it does not mean that you are a particularly decent human being and/or makes a good spouse. There are of course those who are fundamentally good people so can adjust and make it possible to live a productive and successful life with someone else.
It is usually interesting that sometimes the level of education of a person is used to suggest and indicate their total human value and worth. Education in this context would range from having certificates, diploma, degrees (masters and PhD). Education can just as well include experiences out of the lecture hall or classroom. If not made clear, here is a repetition: high education achievement and significant wealth does not make a person fit to be in a marriage. Yes, by all means that is a great achievement but that does not directly translate into a good spouse.
Nature of Society
There are a number of ways to describe a society: patriarchal, matriarchal, tribal, chauvinistic etc. However, if any of those descriptions are related to gender then it is required to admit that one of the two genders will be dominate or be dominated. Gender equality or equity is a pipe dream which simply can not exist because you have no practical way to manage it. That said, an egalitarian society is essentially possible and preferred but that requires that both genders get to a point where none of them feel dominated.
The description of the problem is not the problem neither is it a good indicator for the best possible solution. Attempt to describe the running and day to day activities of an egalitarian society. Nobody is deliberately marginalized because there is enough to go around and provide for everyone. More importantly it becomes a question of how to go about achieving an objective.
A society that aspires to become egalitarian strives to provide opportunities to everyone within its jurisdiction. However a society that strives for gender equality or equity generally runs the risk of ever having to create that balance.