Emerging technology has reached new heights. Virtual and augmented reality, machine learning, robotics, the Internet of Things… there’s so much potential out there right now. The great news is that it is also getting easier and easier to learn about these areas. Rather than sit on the sidelines, why not keep up with emerging technology and get involved? Here are my tips on where and how to start learning about emerging technology.
Start With What You Know
Chances are high that if you’re a SitePoint reader you already have a bit of knowledge about coding. The most important takeaway from this article is this — you can use your existing coding skills as a starting point. Everything from HTML and JavaScript to Python can be used to get started with an emerging tech project. You don’t even need to be crazy advanced! Even basic JavaScript knowledge can be enough to make it easier to jump into emerging tech.
Here are a few examples of ways you can bring your existing knowledge into emerging tech:
Microcontrollers and the IoT
Want to start building some simple robots or connected devices using things like Arduinos and Raspberry Pis? Here are a few ideas for jumping off points:
- Arduinos (C) — Arduinos are the stepping stone to a whole lot of exciting IoT creations! The Arduino language is a set of C/C++ functions, so if you’ve had any experience with those languages, you’ll have a headstart!
- NodeBots (JavaScript/Node) — Take your JavaScript/Node knowledge and control an Arduino over the web. I’ve got a free screencast from a while back here at SitePoint on Controlling an Arduino with Node.js and Johnny-Five that could get you started. I’ve also got an Introduction to NodeBots here at SitePoint that covers what kits you should get and where to begin.
- Particle (JavaScript) — My personal favourite microcontroller is the Particle series of boards. They come with built in cloud capabilities, so you can turn on the board and just start coding! Their API is all JavaScript based and it’s super easy to get started with. If you aren’t sure where to start, I’d strongly recommend going with Particle!
- pySerial (Python) — There’s also a way to control Arduinos using Python.
Virtual and Augmented Reality
VR and AR are both incredibly exciting areas in emerging tech that can be a whole lot of fun to build projects for! There are a few options for starting points using your existing skills:
- WebVR (JavaScript) — WebVR is a standard for having VR content within the browser. If you’ve already got a bit of web dev knowledge, try out A-Frame to use simple HTML and JavaScript to create a cross-platform browser based VR app. I’ve got a guide here at SitePoint on the basics of A-Frame — it is easier than you think. If you’re a fan of React, React 360 (previously known as React VR) is a library built on top of React that lets you make 3D and VR user interfaces. In SitePoint Premium’s 6 JavaScript Projects e-book, Michaela Lehr has a guide on how to build a full-sphere 3D image gallery with React 360.
- WebXR (JavaScript) — We have a growing set of standards around the Immersive Web that aim to replace WebVR and provide a technical foundation for development of AR experiences too. It is still relatively early days on this front, but I’m certain that a whole bunch of exciting things are going to happen here! You can get involved early by heading to the repository for the WebXR Device API Specification and trying things out. If you’d like something focused on AR that’s been around a bit longer, both awe.js and AR.js bring AR to the web using JavaScript too.
- Unity (C#, JavaScript… sort of) — You can build VR and AR applications using the game engine Unity. Unity uses C# or its own version of JavaScript (JS devs might find it a bit easier to pick up, but there are differences!).
- Unreal Engine (C++) — Another way you can build VR and AR applications is using the alternative game engine to Unity — Unreal Engine. It has a visual coding option so you can get away without much actual coding at all, but if you’ve got C++ experience, you can use that too.
Image Recognition
Image recognition is one small but very fun part of giving your next project some smarts! There are APIs out there that’ll help you bring this to a project with ease:
- Clarifai (JavaScript/Node, Python, Java, C#, Objective C, PHP) — Services like Clarifai allow you to use their API with a whole range of different languages to perform some seriously intelligent image recognition. I’ve got a SitePoint guide on getting started with the Clarifai JS API for those keen to get started.
- IBM Cloud (Node, Go, Python, Java, Ruby) — Similar to Clarifai, IBM Cloud’s visual recognition service can do some incredibly smart things too.
- Amazon Rekognition (JavaScript, Node, Python, Android, iOS, Java, .NET, PHP, Ruby) — Amazon has their Rekognition API whose API stretches out to .NET and others!
- Google Cloud Vision API (Node, Python, C#, Go, Java, PHP, Ruby) — Google has their own image recognition library!
Machine Learning
There are a whole lot of services and APIs out there to try out machine learning concepts. The image recognition ones above are part of the picture but there are options that can be more broadly trained.
- TensorFlow (Python, JavaScript, C++, Java, Go, Swift and more) — Google’s TensorFlow is one of the most common machine learning libraries out there and while it works with Python and other mobile platforms, there is also TensorFlow.js for those who know JavaScript. You can do a whole lot using TensorFlow and there are a lot of guides out there online! There’s also a neat TensorFlow Playground that can visualize neural networks. It has a bit of introductory info on neural networks too.
- ml5js (JavaScript) — Built on top of TensorFlow, ml5js provides a layer on top to keep things simpler and more approachable.
- Brain.js (JavaScript and Node) — This is a library of neural networks written in JavaScript. Brain.js has a 19-part free online course available teaching neural networks in JavaScript.
- scikit-learn (Python) — The scikit-learn open source series of tools which many use as a starting point to learn. If you know some Python, it could be worth a try!
- ML.NET (.NET) — If you’re a .NET developer, ML.NET could be the option for you!
Conversational apps, smart speakers and chatbots
There are a whole bunch of different services for this including Dialogflow, Rasa, Amazon Lex, Microsoft LUIS, Wit.ai and more. The two I often end up referring people to are Dialogflow and Rasa (that’s not to say the other options aren’t worthwhile!):
- Dialogflow (Node, Python, Java, Go, Ruby, C#, PHP) — Google’s Dialogflow is their recommended way to make your own conversational apps (known as Actions) for the Google Assistant and Google Home. I’ve got my own early access course which I’m migrating into an e-book on building cross-platform conversational apps using Dialogflow.
- Rasa (Python) — This is an open-source option for making a conversational app. Rasa can be useful if you want to build a solution where it all runs on your own servers.
It goes without saying, there are a whole lot more alternatives to the ones above. If you’ve had any experience with others, feel free to leave suggestions for other readers in the comments!
Online Resources Are Your Friend
There are a whole lot of resources online where you can learn a whole lot without needing to go to university or pay thousands of dollars.
- SitePoint — Of course, we’ve got articles on a bunch of the topics above, as I linked to earlier!
- Dev Diner — My own website has a bunch of resources for learning emerging tech, including a list of free ways to learn about artificial intelligence and machine learning, a list of resources on building virtual reality for the web using JavaScript and 5 ways to teach yourself robotics.
- QUT Robot Academy (free!) — There’s so much here for beginners to learn about robotics. It’s a must if you’re looking to get into this space.
- edX (free!) – edX has a whole range of online courses from universities around the world, available for free (or a small fee if you’d like to earn a certificate for your work). They’ve got courses on a range of emerging tech areas.
- O’Reilly (variety of prices) — O’Reilly has a bunch of e-books and videos on a range of emerging tech topics. While they cost money, they can be super valuable resources if you’re keen to learn.
- A-Frame School — This interactive course on building WebVR with A-Frame is from the team itself. The A-Frame docs are pretty good too.
- Unity Tutorials — Unity have their own tutorials that are pretty great for getting a grip on how to develop on their game engine.
- Unreal Academy — Unreal also have a whole lot of tutorials on their game engine!
Look at Other Projects for Inspiration
If you’d love to get into emerging tech but you can’t think of what to make, there are a bunch of sites out there that showcase projects from the community — often with a bit of info on how they did it.
- Hackster.io — Developers can submit their projects to Hackster to share their experience, and can enter contests to win prizes too.
- Hackaday — The team at Hackaday feature different projects found on the web each day. They find some very neat stuff!
- Make — Make write their own articles on a range of emerging tech.
- Maker Share — Make’s own platform for the community to share projects.
- Instructables — This site has a whole bunch of guides on more than just emerging tech, but sometimes you can find some interesting emerging tech projects here too.
Conclusion
These are just a few ideas on how to get started learning emerging tech — there are more resources and approaches out there. My hope is that this gives you enough info to start your exploration!
If you do make something cool using emerging tech, leave a note in the comments or tweet at me (I’m @thatpatrickguy). I’d love to see it!