I have also been lucky enough to speak each year at the event (though I had to bail one year for work commitments).
This year, my session was Functional Programminng in JavaScript. During the talk I take a loop through the aspects of Functional Programming available in the land of JavaScript.
Thanks to all who attended and provided feedback.
For those interested, here is the presentation.
The source code can be found on my GitHub account at https://github.com/jptacek/functional-javascript-that-conf.
]]>We can already take advantage of Artificial Intelligence (AI) by utilizing AI algorithms created by Microsoft and Google within applications we develop. This enables developers to bring AI smarts into an application without having to have a deep understanding of all the nuances of AI – enabling far more widespread adoption and implementation.
These are examples of the libraries available to developers today:
We can use AI libraries to process images for applications we develop. These libraries enable us to identify objects as well as caption content from the images (for example, an image contains a dog in a park). We can also use sentiment analysis to determine the mood of an individual in a photo.
One of our clients asked us to use facial recognition to determine if people look nervous or angry when in a shop. And another client asked us to develop a facial recognition solution to identify customers rather than manually looking through archived security cameras.
A great example of an application using vision AI services is Google’s real-world emoji hunt app you can use via a web browser on your phone. Check out https://emojiscavengerhunt.withgoogle.com/. This application uses the web browser and JavaScript to do real-time image recognition that has you hunting emojis from the virtual world in the real world..
Speech-based AI platforms can take real-time speech and translate it into text, like voicemail does on most phones. You can also uniquely identify people by their voice or develop for-voice interfaces in application.
We are in the process of creating a hackathon with a client to develop a chatbot. The chatbot would enable users to interact with it via typing to change a password in a help desk function. This is an example of where we can develop a speech-based AI model, but consume it using text via interaction with a chatbot or voice via interaction with a digital assistant.
We have also used Google Chrome’s built in speech recognition to develop a voice-activated product search for a client, as well as helping clients to develop Alexa Skills or Google Home Actions.
This allows us to take an existing knowledge base and enable it to be consumed by developers as endpoints.
An example of this was highlighted during a recent trip to the Microsoft Technology Center. They have a function which allows an internal documentation site to be searched and indexed, and then allows you to interact with it via question and answer interactions. Once created, this could then be used to provide a Q&A chatbot for an organization. For example, you could chat with a HR chatbot and ask it when benefit forms are due and get a response rather than trying to search a HR website. This provides users quick access to information. More information on QnA Maker is available at https://azure.microsoft.com/en-us/services/cognitive-services/qna-maker/.
Language AI platforms enable developers to better understand natural human language. Think of typing a normal question into a search engine and having it parse the sentence to derive an answer. Language AI platforms also enable us to do sentiment analysis on documents, as well as translation services between various spoken languages (ex. English text to Spanish).
An example of this could be using AI to translate the content of a website for users in real-time to another language. This isn’t new, but the translation capabilities have used AI internally to become MUCH better tools.
You can use language-based AI to ascertain the sentiment of content people are producing. If you are in customer service, you can have an application that’s reading tweets about your organization, identifies an unhappy post, and notifies your team to respond appropriately. Tools like this exist in the marketplace today, but we can develop custom solutions if we need to.
Another way to utilize AI is via Machine Learning. Machine Learning allows us to take lots of input data and make the data predictive. This is a more involved implementation than already created platform services from Microsoft and Google, but it allows us to provide solutions applicable to an organization's problem domain. There are many ways to solve these problems using machine learning by training models. We highlight four of them below with examples.
The most popular machine learning tool by far is TensorFlow, an open source tool created by Google. To use tools likes TensorFlow, the first step is to train a model, which is usually done with languages like Python and R. These models then can be consumed in an application locally on a device or by wrapping the output in an API Endpoint. Microsoft also has a machine learning platform called Microsoft Cognitive Toolkit (CNTK).
You will hear terms like Jupyter Notebooks and Azure Machine Learning workbench. These tools enable teams and organization to share learning from data and model creation.
With supervised learning, you have input variables and output variables. You can think of this as an almost glorified math function. Given input data x, y and z (also called features) you get an output value of (y = f(x,y,z)) called a label. It is called supervised learning because we know the correct answer (the output value y or label), and we can “watch” the model as it is training itself until it gets to a proper error tolerance.
A real-world example of this is email spam. If you are Google, you get billions of emails a day, and you know which one users have identified as spam. You can then use the feature (the email) to identify which future emails are likely to be spam.
Another example would be the value of a house, based on a set of feature data called predictors. Predictors could be square feet, number of bedrooms, number of floors, etc. From these, you could develop a model to predict housing values based on historical data from a trained model.
A final example would be to take operating conditions of a machine and see if it is in a failure condition and turn it off.
With unsupervised learning, you have input variables (or features), but not corresponding output variables (or labels). In this case, we don’t know what the correct answer is. We are using this method to understand the structure of our data or the distribution of data. The unsupervised description comes from the fact that there is no correct answer and we cannot “watch” the model as it trains. Algorithms are left to find patterns in the data for us.
A real-world example of unsupervised learning could be buying habits. You can identify people coming to your site that buy product A, are also likely to buy product B, and recommend it to them. Common examples of this include suggested purchases in Amazon and suggested shows in Netflix and Hulu.
This training method is a combination of supervised and unsupervised learning. Some of your data is partially labeled and the remainder is not. This often tends to be found in the real world, where you do not have the luxury of having all of your data labeled.
An example of this is Google Photos, it can identify person A is someone who appears in our photos a lot. You can then identify that person A is your significant other, and future photos are automatically tagged as person A.
This training method is quite different than the rest. In this case, you train the model to observe the environment, and then act. If the action is successful, the system gets a reward. As time goes on, it develops a strategy (called a policy) to maximize reward.
A recent example of this is Google Deepmind’s Alpha Go. Google used supervised learning to famously beat the world's best Go Player, Lee Se-dol, in May of 2016. Google then went back to the drawing board, and instead of using supervised learning to train the AI, it used reinforcement learning. The system was trained on the rules of Go, and it played against itself many, many times to create a policy it used against opponents. The end result was a remarkably stronger program than the one that beat the world's best Go Player.
Google has a nice video of this happening over time with a game of Breakout.
Artificial Intelligence is an important emerging technology for enterprises. Taking advantage of existing AI platforms to infuse applications with smarts is a quick step to getting started. As organizations mature, machine learning can help organizations find value in the data they have to learn and predict.
This blog post originally appeared at Skyline Technologies
]]>This is a really simple comparison, but we can still learn a few things!
We are going to use a VERY slowly converging series to calculate π to 15 decimal points, which takes close to 100 million iterations to accomplish. The formula is the Leibniz Formula and can be represented as a mathematical series as such:
Microsoft has been hard at work, rewriting their .NET platform from the version that has powered enterprises over the last 15 years, to a more platform agnostic, open source version called .NET Core.
We thought it would be interesting to compare .NET Core calculations to the previous .NET Classic calculation that was written in C#. We also decided to compare the very popular Node.js runtime, which drives a lot of web development, both with NPM for client development and on the server.
There were 10 iterations of each code run on Windows 10. You can find the code on Skyline’s Github account at pi-day-leibniz.
As we can see, the performance of .NET Core is pretty impressive on Windows! Three times as fast than .NET Classic and 7 times faster than Node.js. This passes the smell test too. We expect a more modern rewrite of .NET to perform better. Node.js is also an interpreted language, so it will not be as fast as compiled code.
We then compared the performance of .NET Core and Node.js across operating systems on the same machine, in this case, Ubuntu 17.10 and Windows 10. Since both code bases are multi-platform, we can see how they compare across OSes.
Node.js performs slightly better on Ubuntu than it does on Windows. Given that Node.js uses Google’s Chrome JavaScript engine, we would expect similar performances across platforms.
Dotnet Core in this instance though is about three times slower on Linux than it is on Windows. This makes sense since Microsoft is the creator of Windows 10 and will have tons of expertise on optimizing application for the operating system.
.NET core performance is very impressive. The release of Node.js brought Async processing to the forefront to enable performant API calls. The rest of vendors have been playing catch up, and Microsoft’s catch up with .NET Core is very fast. This is also backed up by much more thorough benchmarks from TechEmpower.
Second, the development landscape is vastly different in the five years since we did a Pi day look at C# and C++ performance in 2013.
Microsoft’s C# classic is not the company’s future direction. They are 100% in on the new .NET Core platform and enabling developers to build things on Windows, Mac or Linux. This is a remarkable turnaround for a company that once called Linux a cancer.
Throw in the fact that .NET Core is an Open Source technology, as is Node.js. Microsoft has even Open Source .NET classic. We can see that in the five years since we last looked at performance that Open Source technology has become the standard for developers, with implementations on the developer’s platform of choice. That is outstanding progress for developers.
Happy Pi day! Go and write some code!
This blog post originally appeared at Skyline Technologies
]]>Thanks to all of those who attended.
For those interested, here is a copy of the presentation.
]]>My session was on Innovation, Artificial Intelligence, and the Economy. It was a pretty different talk for a tech conference, which led to great discussion.
Thanks to all of those who attended.
For those interested, here is a copy of the presentation.
]]>This year, my session was An introduction to Docker, a very popular virtualization technology that I find .NET developers are somewhat unaware of.
It was a fun talk and really great questions and crowd participation.
For those interested, here is the presentation.
The source code can be found on my GitHub repo at https://github.com/jptacek/dockerPi.
]]>The slides for the presentation are available at slides.google.com.
The source code can be found on my GitHub repo at https://github.com/jptacek/dockerPi.
It is great to see so many engaged folks in our NorthEast Wisconsin Developer community that came out today!
]]>I have written in the past about Google’s DeepMind and the Game of Go. It was long thought that a computer being able to beat a champion Go players was at most a decade or two away. However, this happened last summer with Google’s DeepMind platform.
Google built on the success of DeepMind and utilized it with their language translation service, Google Translate. This has resulted in order of magnitude increases in the ability to translate between languages. Google stated that the night they turned on Deep Mind for their translation platform, they saw a greater increase in fluency than they had in the previous 10 years of improving the platform. In fact, Google now believes their DeepMind platform has created its own, intermediary language that it uses to translate between different languages, independent of programmers telling it to. It did it on its own. This is crazy Sci-Fi stuff!
So what happens when Sci-Fi becomes part of the real world? Disruption, always lots of disruption. If you look at the economic impact of the Information Revolution, it is amazing. In the 1970s General Motors employed 800,000 workers around the world. Today, they are still the largest car manufacturer, but employ 250,000 people, a fraction of the number in the 70s. Also, their market cap has reduced greatly and they are no longer the largest company in the globe. Manufacturing companies across the world share similar stories.
Part of the reason for this change is automation. Technology has invaded manufacturing facilities and has reduced the number of humans involved in creating physical objects. This trend is only continuing. Foxconn, which manufactures iPhone for Apple and is the one of the largest electronic manufactures in the world is hard at work on factory automation. Recently, in a Foxconn facility in Kunshan, they reduced the workforce at their plant from 110,000 to 50,000 people, 60,000 workers. In fact, Foxconn is working on automating their entire assembly line, resulting in numerous workers losing their jobs.
So, we can see the impact of large investment in automation and technology driving down manufacturing costs and reducing headcount. In the recent United States election, one of the big tenets of President-elect Trump’s campaign was to bring back manufacturing jobs and repeal or modify trade deals like the North American Free Trade Agreement (NAFTA) and Trans-Pacific Partnership (TPP). The issue though, those jobs have in many instances disappeared, not because of trade deals, but because of automation. Manufacturing jobs peaked in 1979 at 19.5 million and currently sit around 12.3 million. Apple is currently rumored to be exploring manufacturing iPhones in the US with a partner like Foxconn. If those jobs though are automated, employing very few people than traditional manufacturing, have we done anything more than make ourselves feel good?
If we look at our current economy and take a company like Google, which battles back and forth with Apple for the largest market cap in the world, employs 60,000 people, an order of magnitude less than GM did when it was the world’s biggest company in the 70s. Further, consider a company like Whats App, which FaceBook bought for 22 billion dollars several years ago. At that time, Whats App was a 55 person company. The idea of a company being worth 22 billion dollars and employing 55 people was a ludicrous proposition only two decades ago.
Okay, the economy is changing, manufacturing jobs are disappearing and being replaced by technology and automation. Where does Artificial Intelligence fit into this? Well, how technology replaced jobs held by blue collar workers, Artificial Intelligence has the ability to do the same to White Collar/Knowledge worker jobs.
If one looks at the finance industry and the massive recession that hit in the late 2000s, a lot of that was driven by computers. How so you ask!??! Many of the large trading houses have automated programs that are responsible for trading based on market conditions. The complexity involved in the housing market of the late 00s was too much for people to understand or trade. Wall Street firms hired exceedingly smart folks in Physics and Mathematics and had them develop automated trading programs. These people, called quants, created programs that in many cases replaced traders on the floor. They moved quicker, don’t let emotion get in the way and their decisions were made on data. They also created complex financial models, for example derivatives, that helped drive the Great Recession of the 00s.
With the quickly realized gains in AI, the cost of implementing the technology will be reduced, and the way AI disrupted Wall Street firms is going to be heading into more and more industries. It is possible, that computer programmers of the future will be replaced by AI jobs. If AI apps can build a better Go To Market program for a product brand, will organizations continue to employ numerous brand manager employees when a computer is better able to execute? Will the knowledge worker of today, who creates the program, be replaced by the AI program of tomorrow, with the role of the (much fewer) knowledge worker being setting the conditions for the AI program. It is quite possible.
What does our world economy look like if what happens to manufacturing jobs happens to white collar jobs? To be honest, it looks pretty scary. Obviously, just as the Information revolution created new opportunities and new job types, these will emerge in an AI world. However, the world’s largest business employed 800K people and 30 years later, the world’s largest company employs 60K workers, it is quite possible there will be a lot fewer jobs.
College has always been a path for the American dream and a way to get into White Collar jobs. What happens though if there just aren’t jobs for the college educated? Folks like Elon Musk have started thinking about it… One of the ideas being floated around is that we have a universal income for each citizen. Finland just rolled out a two year basic income trial for unemployed citizens. Switzerland also recently had a ballot initiative for a universal income, that failed by a large margin, but it has started a conversation. The income could be created by different taxation policies for large companies generating lots of wealth, without employing lots of people. Countries, especially here in the US, are a far from having this conversation. However, as the demand for good paying jobs increases, and the economy, through automation creates less demand, there are societal problems that are going to need to be addressed.
In the states we have just left an election cycle where President-elect Trump very successfully campaigned to bring manufacturing jobs back to the US. In England, they recently voted for to leave the European Union, with one of the tenets of the Brexit campaign to bring back jobs to England. When we talk about bringing back manufacturing jobs that have not moved overseas, but disappeared, we all have a long journey in front of us. When the technological innovation that has reduced manufacturing jobs begins to happen to knowledge workers…. well, may you live in interesting times!
Would love to hear your thoughts or ideas to address this changing world. Hop on the comments below.
Links
The Death of Moore’s Law - https://jptacek.com/2016/05/DeathOfMooresLawAndTheGameOfGo/
Google's AlphaGo AI beats Lee Se-dol again to win Go series 4-1 - http://www.theverge.com/2016/3/15/11213518/alphago-deepmind-go-match-5-result
The Great A.I. Awakening - http://www.nytimes.com/2016/12/14/magazine/the-great-ai-awakening.html?_r=0
Google Translate AI invents its own language to translate with - https://www.newscientist.com/article/2114748-google-translate-ai-invents-its-own-language-to-translate-with/
A brief history of General Motors Corp - http://www.mlive.com/business/index.ssf/2008/09/a_brief_history_of_general_mot.html
Foxconn replaces '60,000 factory workers with robots' - http://www.bbc.com/news/technology-36376966
Foxconn boosting automated production in China - http://www.digitimes.com/news/a20161229PD206.html
The manufacturing jobs delusion - http://www.economist.com/blogs/buttonwood/2017/01/economics-and-finance
Apple exploring the possibility of moving iPhone manufacturing to United States - http://appleinsider.com/articles/16/11/17/report-claims-apple-iphone-assemblers-tasked-to-develop-us-manufacturing-plans
Facebook $22 Billion WhatsApp Deal Buys $10 Million in Sales - https://www.bloomberg.com/news/articles/2014-10-28/facebook-s-22-billion-whatsapp-deal-buys-10-million-in-sales
Elon Musk Thinks Automation Will Lead to a Universal Basic Income - http://fortune.com/2016/11/06/elon-musk-universal-basic-income/
Finland trials basic income for unemployed - https://www.theguardian.com/world/2017/jan/03/finland-trials-basic-income-for-unemployed
Why Switzerland’s Universal Basic Income referendum matters, even though it failed - https://qz.com/699739/why-switzerlands-universal-basic-income-referendum-matters-even-though-failed/
This post originally appeared at Skyline Technologies
]]>While no one can ensure you are 100% safe from online hacking, we have a bunch of steps for you to keep yourself secure in an increasingly hostile digital world.
Different Passwords - First and foremost, use a different password for sites you visit. When 116 million LinkedIn was hacked in 2012, those users’ email address and passwords eventually ended up online in 2016. Users who use the same password on LinkedIn as their Gmail account quickly found themselves vulnerable.
Password Pattern - I try and use a pattern for all the sites I visit that makes each sites password, pretty unique. What does this mean? I will use a base password that has both numbers and special characters, for example, Justin20!^Bieber. I will then append a set of characters for the website I am visiting. For example, the first two letters of the domain or the first two vowels of the site. So my password for Google, taking the first two vowels from google.com of oo, would be Justin20!^Bieberoo. You can develop your own password pattern, and then use it where applicable. Don’t be like me though and tell people your pattern!
Change Your Password - If a site gets hacked and no one tells you until three years later, that is bad. You can decrease the chances of hackers changing. Every year as you kick off your New Year’s resolutions, include changing your password for sites that are important; such as mail, phone accounts and banking.
Password Manager - There is a lot mental energy expended remembering all of these passwords, even with a pattern. A password manager is a highly recommended approach to dealing with the deluge of passwords we are confronted with.
In general, password managers have plugins that can be used in browser that automatically fill in username and passwords at websites. On mobile platforms, you are prompted via the app to provide a username and password.
Password managers will also generate unique passwords for sites that are highly randomized such as, 7?@W^(+56KsYu8. This level of complexity is hard for hackers to try and crack.
Popular passwords manager include LastPass and 1Password. LastPass recently allowed their free version to connect. Highly recommended.
Update software - It doesn’t matter how complex or strong your passwords are if you are running software that has security flaws that hackers can readily take advantage of. PCs running a 5 year old version of Adobe Flash are going to be open to hackers looking for information.
To alleviate this run modern versions of software. This includes latest versions of Windows 10 (upgrade from Windows XP people!) and MacOs. Make sure you are using an evergreen browser, such as Chrome, Opera, FireFox or Microsoft’s Edge browser. If you are using outdated software, be sure to upgrade.
Is this a real issue? In 2016 hackers used zero day vulnerabilities in Flash, Windows, MySQL, iOS (your Apple iPhone’s operating system) and more. Quickly upgrading your software once vendors have resolved the issue is paramount to protecting yourself.
Two Factor Authentication - An excellent way to improve your online security is use Two Factor Authentication. Two Factor authentication essentially involves two things; a thing you know (such as a password) and a thing you have (such as a phone). Software vendors like Google, MIcrosoft and Apple support two factor authentication, which essentially requires you to provide a password when you log on, and then a number generated by an authentication application on your mobile phone (or another device like a RSA token generator). You can also setup applications to say that a device is trusted (like a home PC), which requires a token to be entered once a month or so.
In these scenarios, even if a hacker has a password to your email, they are required to enter in a token that is running on your mobile phone. In this scenario, if a hacker knows your password and has your phone, you are already in a bit of trouble :)
How serious is this? During the 2016 US Thanksgiving weekend, Google was warning prominent journalists that their accounts were under phishing attacks. Their recommendation, two factor authentication. At a minimum, keep email addresses associated with banking accounts, health and brokerage accounts secure with this approach!
Be Wary of Public WiFi - Public WiFi can be problematic for security conscientious folks. If you are sitting at a coffee shop and doing online banking, it is possible that others on the network could be reading packets on the network and reading confidential information. To bypass this, you can use VPNs when connecting to encrypt traffic or use SSL as identified below.
HTTPS Everywhere - In examples where you are concenred about Public WiFi, or even your work or home network, you can do your best to ensure you are running HTTPS, which is the encrypted version of web page traffic. If you click on an article at http://www.nytimes.com, people can read the content of the page. If you read an article at https://www.nytimes.com, it becomes much more difficult for people to read the content of the page.
Why is this important, especially for public pages that everyone can read? Two reasons, first, if you are reading information at sites that can provide information about you, for example, WebMd articles, you may not want people to know the contents of what you are reading (obviously, in most cases, the not encrypted URL will provide an idea of the content).
Second, for public pages that are not encrypted, the pages can be changed and updated to try and get information about you. For example, if someone intercepts an HTML page from google.com, they could inject a snippet of HTML that asks you to enter your email address and password to google. At that point, game over.
So, if you think clicking around the Internet and changing the link to HTTP sounds like a huge pain, you are 100% correct. Thankfully, most major browser vendors have plugins that will do this automatically. I recommend people use HTTPS Everywhere from the Free Software Foundation. They have plugins for Chrome, FireFox, Opera, etc.
If you want to read more about why encrypting the Internet is important, read this. It is becoming more and more important, so much so that Google is giving higher rankings to secure pages over non encrypted pages.
Protecting yourself on the Internet is becoming more and more important to our connected digital lives. Hopefully the above tips provided you some ideas you can use to increase your security in the online world.
This post originally appeared at Skyline Technologies
]]>@jptacek is wearing a sport coat tonight at the AITP meeting tonight while showing off the Mile of Music app!!! pic.twitter.com/eUedirhuKt
— Mark Lezotte (@marklezotte) October 12, 2016
My slide deck is online at newaitp1016.jptacek.com/ and the Git repo for the slide deck is at https://github.com/jptacek/NewAITP1016.
Thanks again to everyone who came out and engaged in starting a conversation!
]]>