Artificial Intelligence (AI) is usually defined as the science of making computers do things that require intelligence when done by humans. (Jack Copeland, 2000)
Current Benefits of AI
Current Dangers of AI
There are many trends currently taking place in the field of AI.
All the large technology companies such as Google, Facebook, Microsoft, Amazon and Apple are all pushing for their own advancements and they all want to be at the forefront of this next wave of revolutionary computing future.
From companies such as Google and Uber with their Self Driving Cars, to Amazon Web Services, Google Cloud and Microsoft Azure now offering mechanical turk AI computational engines in the cloud. The past year or two has really started the upwards motion of everyone fighting for the top spot in AI as we know it.
A very interesting example of a real world AI that recently took place was a Google DeepMind fruit picking game, where AI competitors had to all pick fruit against one another. The AI opponents got more and more aggressive as the game got harder and the available fruit got picked. With a very high level of base intelligence and the ability to find algorithmic options millions of moves in advance, this could really pose to be a big problem if it had to get out of control in a real life situation against human counterparts in day to day activities. The AI opponents only cared about “the prize”: “forget decorum, focus on the prize, and shove your opponent out of the way to claim your victory”.
“The more intelligent the AI network is, the quicker it is to get aggressive in competitive situations where such aggression will pay off. The behavior raises questions about the link between intelligence and aggression, what it means for AI to mimic human-like emotional responses, and, if you’re worried about potential robotic overlords, what we need to do to keep AI aggression in check”.
An interesting thing was once said that “AI can’t control humans”, but the fact is that “Intelligence enables control”, for example “we control tigers by being smarter”. This is a very important thing to remember when creating our own potential demise by embedding self learning and intelligence controls into inorganic objects that have no emotion to be able to adjust the spectrum of reality and business decisions from one another.
There are many films that depict “robots taking over the world” and tend to do it quite well, such as “I, Robot”, “RoboGeisha”, “Clash of the Titans”, “The Terminator Films” and many others. What they all seem to have in common is that, with computer science and the never ending push we all seem to be making to benefit technology, nobody ever thought about perhaps building in some sort of “control back door” should things potentially one day go too far.
“Artificial Intelligence (AI)” (2017) – Available from https://www.edx.org/course/artificial-intelligence-ai-columbiax-csmm-101x (Accessed on 15th February 2017)
“BENEFITS & RISKS OF ARTIFICIAL INTELLIGENCE” (2016) – Available from https://futureoflife.org/background/benefits-risks-of-artificial-intelligence/ (Accessed on 15th February 2017)
“What is Artificial Intelligence?” (2000) – Available from http://www.alanturing.net/turing_archive/pages/reference%20articles/what%20is%20ai.html (Accessed on 15th February 2017)
“What are the advantages of artificial intelligence?” (Unknown) – Available from https://www.reference.com/world-view/advantages-artificial-intelligence-4761cceb94775101 (Accessed on 19th February 2017)
“The top 50 robots and AI computers in the movies” (2012) – Available from http://www.denofgeek.com/movies/19030/the-top-50-robots-and-ai-computers-in-the-movies (Accessed on 19th February 2017)
“Google’s AI got “highly aggressive” when competition got stressful in a fruit-picking game” (2017) – Available from https://qz.com/911843/googles-ai-got-highly-aggressive-when-competition-got-stressful-in-a-fruit-picking-game/ (Accessed on 15th February 2017)
I’m a dev.
I’ve been programming for as long as I remember.
I created programs in DOS, early versions of Windows, the first versions of .Net, moved to web dev, created all sorts of things in between and worked in various companies and on loads of projects in-between.
I have been involved in some startups such as Statvoo Analytics, Logvoo, Whobuilt.me, Website Discovery & Reviews, and even a well known Payment Gateway (obviously there’s also loads of websites and projects throughout).
Other than writing code I have been involved in a few 3d games and even a 3d movie (and here). In my early days I even studied 3d animation, visual effects and character animation. That means I have quite a bit of experience in 3dsmax, maya, photoshop, zbrush, and loads of other things. Because of my track record in over the past 15+ years in various computing sub-industries, I am well versed in numerous programming languages and I have headed up programming teams among other things.
What does it take to get a startup off the ground if you aren’t living in your parents basement and get accepted into an incubator or at least some sort of accelerator “in the Bay Area”?
I have great communication skills and have proved myself in the board room many a time.
I am a polyglot and am more than willing to take on any challenging task by myself or in a team.
I have achieved visas to work in other countries other than where I was born and have battled more daily code problems than I would be prepared to ever have time to write about.
The question I often have on my mind is “How does one undertake a successful startup while having high fixed costs that need constant addressing?” because I have a family and always want to make sure they get the best upbring and life they could possibly get.
Is it all about “contacts” and the “streams” you are pushed into? Or do the other things (as I’ve mentioned above) count as well? Is it all about the area (Bay area anyone?) you are exposed to at the right time or does the experience and aptitude mean enough by itself?
As a full stack developer with a business drive and communication skills, surely that’s enough to compete with some other individuals and/or companies/startups out there. I say this because quite a few of the fairly successful startups I’ve seen, are technologically quite pityful to say the least.
A database “is a structured collection of data. Card indices, printed catalogues of archaeological artefacts and telephone directories are all examples of databases”.
We are going to examine databases that are prevalent in computer systems and go through the core differences between Local and Distributed Databases.
A local database is an isolated database that is stored on a single computer and does not share its data outside of itself or its direct access network.
Examples of a local database can be any of the following:
A distributed database is a networked database that is stored on numerous computers that are networked together to form a single database.
A distributed database is often used in one or more of the following scenarios:
If a database is distributed along with a locally installed application on a single computer in order to save Preferences/Settings and the like then it is usually ideal to store this data in either a Flat File or a SQLite local database. These database types don’t require connection strings or many of the more complex setups in order to operate and store smaller amounts of data.
There are three types of distinguishable databases.
For anything that needs to store, retrieve and search (index) large amounts of data. It is best to setup a dedicated database system and scale as required.
There are two main ways to scale a database system.
In order to distribute load between multiple machines, traffic needs to be forked off in different directions. This is possible through either the DNS or Load Balancing.
DNS (Domain Name System) can handle this by means of techniques such as Round Robin-ing which randomly chooses a child node to divert traffic to.
A potentially better and more technical way of achieving this is by means of using a proprietary Load Balancing technology or by setting up a High Availability reverse proxy server to look for “healthy child nodes” and divert traffic to whichever machine has the most current resources available to handle the incoming request(s).
Let’s look at a few scenarios:
If all computers are localised in a single building then setting up a single master with a slave for replication and read prioritisation would be a simple setup.
If all computers are spread across the country or a collections of countries (or the world) then having a single master per major geographical region with multiple slaves in each of the regions for additional load would be advisable.
Database mirroring, which is sometimes referred to as database replication “is the frequent electronic copying data from a database in one computer or server to a database in another so that all users share the same level of information. The result is a distributed database in which users can access data relevant to their tasks without interfering with the work of others”.
Having database mirroring or replication setup is highly advantageous to any system or organisation that values its data and would suffer should the data become invalid or corrupt.
“An introduction to databases” (2000) – Available from: http://www.ucl.ac.uk/archaeology/cisp/database/manual/node1.html (Accessed on 11th February 2017)
“What are the different types of databases?” (Unknown) – Available from: https://www.reference.com/technology/different-types-databases-4b8d209ddac876a8 (Accessed on 12th February 2017)
“Different Types of Databases” (Unknown) – Available from: http://www.my-project-management-expert.com/different-types-of-databases.html (Accessed on 12th February 2017)
When bringing up the topic of “Data Structures”, it is first important to understand what they are. TechTarget states that “a data structure is a specialized format for organizing and storing data”. This provides a high level definition to get you started; so let’s explore it a little deeper.
Below are a few examples of common data structures:
Primitive types: Boolean, Integer, Double, Character, String
Composite/Non-primitive types: Array, Record, Union
Abstract types: List, Associate Array, Stack, Queue, Tree
By identifying some merits and weaknesses of common data structures it becomes clearer where we should make use of the many provided data types.
Choosing the correct data structure can be paramount to the success, performance and efficiency of a software application/solution.
Say we were given the task of developing a data structure for a phone’s contact list. What data structure options would we have, and how would we decide which one would be the best choice?
From the above table we could identify a few characteristics that would be needed and narrow down how we could therefore approach the situation.
Store a list of names with associative phone numbers and other arbitrary details such as alternative numbers, addresses or notes.
An Associative Array would allow us to store our data in the following pattern.
|[0,0] – Name 1||[0,1] – Number 1||[0,2] – Additional Number 1||[0,3] – Address 1|
|[1,0] – Name 2||[1,1] – Number 2||[1,2] – Additional Number 2||[1,3] – Address 2|
|[2,0] – Name 3||[2,1] – Number 3||[2,2] – Additional Number 3||[2,3] – Address 3|
|[3,0] – Name 4||[3,1] – Number 4||[3,2] – Additional Number 4||[3,3] – Address 4|
Using this method we can call Array and get back “Name 2”.
This way if we refer to ContactList.name, we will get “Name 2” back just like the associative array in Option 1 above, except we are able to shuffle and sort the data without having to reindex the base array.
“Data Structure” (2006) – Available from: http://searchsqlserver.techtarget.com/definition/data-structure (Accessed on 5th February 2017)
“List of data structures” (2017) – Available from: https://en.wikipedia.org/wiki/List_of_data_structures (Accessed on 6th February 2017)
“List (abstract data type)” (2017) – Available from: https://en.wikipedia.org/wiki/List_(abstract_data_type) (Accessed on 6th February 2017)
“Stacks and Queues” (2009) – Available from: https://www.cs.cmu.edu/~adamchik/15-121/lectures/Stacks%20and%20Queues/Stacks%20and%20Queues.html (Accessed on 6th February 2017)
“JSON Schema: A Media Type for Describing JSON Documents” (2016) – Available from: http://json-schema.org/latest/json-schema-core.html (Accessed on 6th February 2017)