Process-oriented programming is a paradigm in which the process structure and communication between processes of a system are the primary concerns. That’s the paradigm, but how does it work in real life?Continue reading →
Building a reactive web application is a lot more about how you handle events and data flow in your applications than the tools you use to do so. However, Angular 2 with Ngrx seems to be the perfect combination for building reactive applications for many reasons.
In this article, Toptal Freelance Software Engineer Simon Boissonneault-Robert walks you through a reactive web application tutorial using Angular and Ngrx and shows how these two technologies make it easy to do that.Continue reading →
Dropwizard allows developers to quickly bootstrap their projects and package applications as easily deployable standalone services. It also happens to be relatively simple to use and implement.
In this tutorial, Toptal Freelance Software Engineer Dusan Simonovic will introduce you to Dropwizard and demonstrate how you can use this powerful framework to create RESTful web services with ease.Continue reading →
Docker itself has been around for years and is composed of many inter-operating pieces. One of them is Docker Swarm, which allows you to declare your applications as stacks of services, and let Docker handle the rest.
In this article, Toptal Freelance Software Engineer Luke Sapan explains how to use Docker Swarm to deploy your own self-managing stack, followed by a quick example.Continue reading →
Spring Batch is a lightweight, comprehensive framework designed to facilitate the development of robust batch applications. It’s easy to set up, and even easier to use.
In this article, Toptal Freelance Software Engineer Alexey Saenko explains the programming model and the domain language of batch applications, using detailed code examples that should help any developer looking to get a head start in Spring Batch.Continue reading →
Video accounts for more than three quarters of all bandwidth used today. That’s why developers need a solid, extensible, and advanced media framework that doesn’t come with a steep learning curve.
In this tutorial, Toptal Freelance Software Engineer Raul Jimenez will introduce you to one such framework – Videogular. If you need to harness the power of Angular for HTML5 video, look no further.Continue reading →
There is no way around application diagnostics. No matter how good your code is, you will need to be able to monitor and study system behavior. This is where Android’s DDMS shines.
In this article, Senior Android Engineer Gilad Haimov explains how veteran Android developers leverage the potential of DDMS to improve app stability and performance, test new features, diagnose, and debug their code.Continue reading →
Why does a React web app run slow? The answer often lies in when and how frequently your components re-render, and whether those re-renders were even necessary. React doesn’t promise magical performance gains, but it provides just the right tools and functionalities to make it easy.
In this article, Toptal Freelance Software Engineer William Wang walks us through some optimization techniques that can help you build performant React web apps.Continue reading →
Social networks are among the biggest sources of data today, and this means they are an extremely valuable asset for marketers, big data specialists, and even individual users like journalists and other professionals. Harnessing the potential of real-time Twitter data is also useful in many time-sensitive business processes.
In this article, Toptal Freelance Software Engineer Hanee’ Medhat explains how you can build a simple Python application to leverage the power of Apache Spark, and then use it to read and process tweets to identify trending hashtags.Continue reading →
From virtual showrooms to elaborate research and testing scenarios, virtual reality is starting to make its mark on the automotive industry. It can be used to educate novice drivers, train professionals operating industrial equipment, or test vehicles and drivers in extreme conditions.
In this article, Toptal Freelance Software Engineer Daan Terra shares his experiences in the field of automotive simulations, explaining how VR can fundamentally change the way cars are marketed, tested, and developed.Continue reading →
Whether you just want to create an interactive 3D logo, on the screen or design a fully fledged game, knowing the principles of 3D graphics rendering will help you achieve your goal.
In this article, Toptal Freelance Software Engineer Adnan Ademovic gives us a step-by-step tutorial to rendering objects with textures and lighting, by breaking down abstract concepts like objects, lights, and cameras into simple WebGL procedures.Continue reading →
Understanding the Input/Output (I/O) model of your application can mean the difference between an application that deals with the load it is subjected to, and one that crumples in the face of real-world uses cases. Perhaps while your application is small and does not serve high loads, it may matter far less. But as your application’s traffic load increases, working with the wrong I/O model can get you into a world of hurt.Continue reading →
Compilation and linking are two very fundamental processes that happen all the time during C++ software development. However, what happens during these processes? How does the compiler go from your neatly organized source code to a binary file that the machine understands?
In this article, Toptal Freelance Software Engineer Daniel Trejo explains how a C++ compiler works with some of the basic language constructs to answer some common questions that are related to these processes.Continue reading →
Writing reusable code that can be shared across multiple platforms can make developing mobile applications a lot easier. But, how do you do that without paying the usual cost of maintainability, ease of testing, and poor user experience that comes with cross-platform mobile application development?
In this article, Toptal Freelance Software Engineer Emran Bajrami walks us through Xamarin and shows us techniques for building high-quality cross-platform apps.Continue reading →
Security has always been a primary concern for database experts, and with the advent of new, decentralized services, it’s become even more crucial. Microsoft addressed the need for an added level of security in SQL with the introduction of Always Encrypted functionality in SQL Server 2016.
In this blog post, Toptal Freelance Software Engineer Josip Saban explains how Microsoft’s Always Encrypted concept works, how it’s implemented, and why developers can’t afford to ignore it.Continue reading →
If there is something every front-end developer wants, it is proper support for variables in CSS. For years, to work around this missing feature, developers have resorted to CSS preprocessors. However, all that changes with the introduction of CSS custom properties.
In this article, Toptal Freelance Software Engineer Nicolás J. Engler walks us through CSS custom properties and shows us how they can be used to make better, more dynamic stylesheets.Continue reading →
Learn how, with the right remote worker security policy, distributed teams can be just as secure as in-house teams.
Toptal Freelance Software Engineer and full-time remote worker Amin Shah Gilani walks us through common security attack methods, cyber defense strategies, and, finally, an example of a good remote worker security policy.Continue reading →
In this tutorial, we will look at some common mistakes that are often made by Django developers and ways to avoid them. This tutorial is useful even if you’re a skilled Django developer because these mistakes aren’t just limited to new developers taking their first stab at Django.Continue reading →
Deploying new features with Salesforce can be problematic in more ways than one. It is crucial to have a sound strategy governing the publication of new releases, without running the risk of breaking your product.
In this post, Toptal Software Engineer Ajinkya Deshmukh will provide you with all relevant information and key tips that will allow you to manage your next Salesforce release smoothly.Continue reading →
Magento built a reputation as an e-commerce market leader, all thanks to its ease of use and customizability. Getting into the framework was only made easier with the release of Magento 2.
In this post, Toptal Software Engineer Gabriel Queiroz Silva gives us a step-by-step tutorial to building your first Magento 2 website.Continue reading →
Fat controllers and models: an inevitable problem for most large-scale projects based on MVC frameworks such as Yii and Laravel. Fortunately, there’s a cure, and it’s in architecting a layered structure.Continue reading →
Natural language is increasingly becoming a viable way of interacting with smart software. Google search, Apple’s Siri, Microsoft’s Cortana, etc. are all capable of understanding queries in natural language.
In this article, Toptal Freelance Software Engineer Shanglun (Sean) Wang walks us through some useful concepts and techniques in natural language processing and shows how they can be used to build a simple NLP app.Continue reading →
Many problems have optimal algorithms developed for them, while many others require us to randomly guess until we get a good answer. Even an optimal solution becomes slow and complex at a certain scale, at which point we can turn to natural processes to see how they reach acceptable results.
In this article, Toptal Freelance Software Engineer Eugene Ossipov walks us through the basics of creating a Genetic Algorithm and gives us the knowledge to delve deeper into solving any problems using this approach.Continue reading →
In this article, Toptal Freelance Software Engineer Diego Díaz walks us through the basics of Flexbox and some cool examples of how Flexbox can be used to build smart CSS-only layouts.Continue reading →
Java’s open source Spring framework is a popular tool for creating high performing applications using plain old Java objects, but as with any tool, inappropriate use can lead to trouble. In this article, we cover the most common pitfalls of using the Spring framework so new and experienced developers alike have a roadmap of what to avoid.Continue reading →
Java has some idiosyncrasies of its own and design choices that can make it rather verbose. While Java is a mature and performant programming language, developers frequently need to write boilerplate code that bring little or no real value other than complying with some set of constraints and conventions.
In this article, Toptal Freelance Software Engineer Miguel García López shows how Project Lombok can help dramatically reduce the amount of boilerplate code that needs to be written in a Java application.Continue reading →
Android provides many ways of creating and managing threads, and third-party libraries exist to make that even easier. However, with so many options, choosing the right approach can be quite confusing.
In this article, Toptal Freelance Software Engineer Eliran Goshen discusses some common scenarios in Android development that involve threading and how each of the scenarios can be dealt with.Continue reading →
Using Mockito is not just a matter of adding another dependency. It requires changing how you think about your unit tests while removing a lot of boilerplate.
In this article, we’ll cover multiple mock interfaces, listening invocations, matchers, and argument captors, and see firsthand how Mockito makes your tests cleaner and easier to understand.Continue reading →
Developing a mobile app for multiple platforms can be quite costly. Implementing the same functionalities in multiple programming languages and dealing with a plethora of unique libraries for each platform requires a massive amount of time and knowledge.
In this article, Toptal Freelance Software Engineer Sylvain Gravel talks about Xamarin and its companion technologies that let you build mobile applications for multiple platforms without compromising familiarity, performance, and uniqueness.Continue reading →
Dealing with concurrency in Android through imperative-style programming can be quite the hassle. RxJava, a library for reactive and functional style programming, allows concurrency constructs to be modeled in a reactive way in Android’s non-reactive world.
In this article, Toptal Freelance Software Engineer Christopher Arriola shows us how RxJava can be incrementally introduced to existing Android projects and leveraged to simplify concurrency.Continue reading →
Many popular languages for web development have their ‘default’ framework, such as Ruby on Rails for Ruby, or Django for Python. However, PHP has no such single default and has multiple popular options to choose from.
In this article, Toptal Freelance Developer Karim Sakhibgareev compares the two most popular PHP frameworks, Symfony and Laravel, explores their features, and establishes guidelines for how PHP developers should choose between them.Continue reading →
Modern mobile application development requires a well thought-out plan for keeping user data in sync across various devices. This is a thorny problem with many gotchas and pitfalls, but users expect the feature and expect it to work well. For iOS and macOS, Apple provides a robust toolkit, called CloudKit API, which allows developers targeting Apple platforms to solve this synchronization problem.
In this article, Toptal Software Engineer Paul Young demonstrate how to use CloudKit to keep a user’s data in sync between multiple clients.Continue reading →
Automated software tests are critically important to the long-term quality, maintainability, and extensibility of software projects, and for Java, JUnit is the path to automation.
While most of this article will focus on writing robust unit tests and utilizing stubbing, mocking, and dependency injection, Toptal Software Engineer Josh Hayden will also discuss JUnit and integration tests.Continue reading →
In this post, Toptal Freelance Developer Brian Coords explores the amazing new features of WordPress’s REST API, showing why WordPress is still on the cutting edge of web development.Continue reading →
Whether you’re a bootstrapped startup that needs a brochureware website or a corporation that needs a high-performing web app, this post is for you. In it, Toptal Software Engineer Amin Shah Gilani teaches you how to setup a static, SSL-secure website for the very low cost of free, using Github Pages and Cloudflare.Continue reading →
Could you be using Git more efficiently?
The answer is probably a resounding “Yes,” which is why Toptal Software Engineer Ursula Clarke wrote today’s post.
In it, she teaches you how to use git stash, git reset, git bisect, git squash, and git rebase for maximum productivity.Continue reading →
So you’ve implemented user authentication. Now, you want to allow your users to log in with Twitter, Facebook or Google. No problem. You’re only a few lines of code away from doing so.
But while there are hundreds of OAuth 2 packages that pip knows, only a few actually do what they’re supposed to do.
In this article, Toptal Software Engineer Peter Goodspeed-Niklaus explains how to integrate OAuth 2 into your Django or Django Rest Framework using Python Social Auth.Continue reading →
In this tutorial, you will learn how automated testing works for the iOS platform and how to implement it in your project.Continue reading →
It’s every developer’s dream to be more efficient. In this article, you’ll learn how one engineer saved himself from typing more than 20,000 characters over six months and prevented 1,000 bugs in the process.Continue reading →
The Ionic project is rapidly gaining in popularity and is one of the most popular open source projects worldwide. With the recent announcement of the stable version of Ionic 2, this is the perfect time to underscore the Ionic 2 and its predecessor.
In this post, Toptal software engineer Julien Renaux outlines the major changes Ionic 2 brought to the platform and explains how to put these new features to good use.Continue reading →
On every new project, you have the privilege of deciding how you’ll architect the app and organize the code. But if you don’t pay attention, or you rush through coding, you risk ending up with spaghetti code. The solution? Use a proper design pattern.
In this tutorial, Toptal Software Engineer Dino Bartošak explains how to implement an MVVM design pattern on a demo Swift application.Continue reading →
Freelancers work flexible hours, but this convenience comes at a price: They have to manage their time better than on-site professionals. However, it also means they’re free to optimize their routine and achieve exceptional efficiency.
In this post, software engineer Dmitry Ryazantsev will guide you through the ins and outs of personal time management, leaving little to chance. What good are great rates if you waste hours each week?Continue reading →
In back-end software development, increased productivity often comes at the cost of performance. In this article, Toptal Software Engineer Eduardo Bautista shows us how the Phoenix framework builds on the familiar concepts from the Rails world, and makes it even easier to build robust concurrent applications without compromising performance.Continue reading →
In this article, Toptal Programmer David Xu talks about managing state using immutability with Redux, a predictable state container.Continue reading →
In this article, Toptal Software Engineer Andrej Gajdos provides a guide with examples on how to configure Webpack for different scenarios and points out the most common pitfalls connected to project dependencies and their bundling when using Webpack.Continue reading →
Making your website or web app available to a wider audience often requires it to be available in multiple languages. For non-English projects, you can increase your audience by releasing it in English as well as your native language. Internationalizing and localizing your project, however, becomes a much easier process if you start during its infancy.
In this article, Toptal Software Engineer Igor Gomes dos Santos shows us how to leverage simple tools, like Gettext and Poedit, to internationalize and localize a PHP project.Continue reading →
Since the inception of the platform, Android developers have had pretty much only one option for a database: SQLite. Although feature-rich and powerful, it wasn’t quite what Android app developers needed. Realm, a modern, efficient database solution for mobile platforms, turned out to be an amazing replacement for SQLite on Android.
In this article, Toptal Software Engineer Mateus Gondim Romão Batista explains why you should use Realm for your next Android application.Continue reading →
PostCSS is the hot new tool that’s making the rounds on the front-end side of web development. It has been quickly and widely adopted, and possibly will have a significant impact on how we base our present-day CSS.
In this article, Toptal Software Engineer Nicolás J. Engler introduces us and guides us on how to start using this tool, expand it with plugins, or integrate with other CSS processors, task runners, or bundlers.Continue reading →
If you’ve spent your fair share of time developing web front-ends, you know that no amount of libraries and plugins are sufficient enough to make the development experience pleasant. Unpredictable event chains, complex data binding, and lack of structured data modeling only makes things worse.
Elm, a programming language built for front-end development, cuts to the root of all these problems and solves them there.
In this post, Toptal Software Engineer Stanislav Davydov provides a detailed guide to Elm and shows us how The Elm Architecture solves some of the most fundamental challenges of front-end development.Continue reading →
Software is regular and predictable, so it seems paradoxical that practically every web app needs a sizable administrative area. The explanation for this paradox lies in software’s interaction with humans. While you probably can’t build a fully automated system, there’s a lot you can do to save time and money.
In this post, Entrepreneur Jack Kinsella explains what you can do to streamline administration, thus saving valuable time and making your projects more profitable. Adminimisation is the word of the day!Continue reading →
Today, WordPress covers more than 50 percent of website shares and serves nearly 60 million websites worldwide. Its popularity has resulted in many misconceptions that have grown and spread like a forest fire, and have made people stay away from WordPress.
In this post, Toptal Software Engineer Donald Mudenge explains the five most common WordPress taboos and myths, clarifies them, and offers solutions on how to overcome them.Continue reading →
Your software isn’t fully tested until you write integration tests for it. While unit tests help ensure that functions are properly written, integration tests help ensure that the system is working properly as a whole.
In this article, Toptal Software Engineer Luka Blažecki uses Node.js to explain why integration testing is important for every development platform and how to write clean, composable integration tests.Continue reading →
WordPress plugins can be both a blessing and a curse. With more than 45,000 plugins available in its official repository, WordPress users can customize their website to their heart’s content. However, not all plugins follow the standards necessary to keep the platform performant and secure while also delivering a solid user experience.
In this tutorial, Toptal Software Engineer Ratko Solaja shows us how to build a robust WordPress plugin, following all the necessary best practices.Continue reading →
In the past few years, Microsoft has pulled a few aces from up its sleeve. Yes, they messed up Skype, failed with smartphones, and almost succeeded with tablets. But, they did some really amazing things as well.
Relinquishing their closed empire approach, they open-sourced .NET, joined the Linux Foundation, released SQL Server for Linux, and created this great new tool called Visual Studio for Mac.
In this post, Head of Open Source Demir Selmanovic details how to make an Android and iOS app in C# on your Mac.Continue reading →
Limited SQL scalability has prompted the industry to develop and deploy a number of NoSQL database management systems, with a focus on performance, reliability, and consistency. The trend was driven by proprietary NoSQL databases developed by Google and Amazon. Eventually, open-source systems like MongoDB, Cassandra, and Hypertable brought NoSQL within reach of everyone.
In this post, Toptal Software Engineer Mohamad Altarade dives into some of them and explains why NoSQL will probably be with us for years to come.Continue reading →
WordPress, one of the most popular publishing platforms, has stood the test of time and now powers a significant portion of the web. Sadly, its reputation is plagued by claims of poor performance and complexity with scaling. However, the root causes of such performance issues are often bad code and poorly implemented plugins and themes.
In this post, Toptal Software Engineer Martín Di Felice shares tips and tricks for WordPress developers who want to build better plugins and themes and destroy the notion that WordPress is a slow platform.Continue reading →
Your website is gaining traction, and you are growing rapidly. Ruby/Rails is your programming language of choice. Your team is bigger and you’ve given up on “fat models, skinny controllers” as a design style for your Rails apps. However, you still don’t want to abandon using Rails? No problem.
In this article, Toptal Software Engineer Eqbal Quran explains how you can decouple and isolate your Rails components using nothing Plain Old Ruby Objects. Ruby objects and abstractions can decouple concerns, simplify testing, and help you produce clean, maintainable code.Continue reading →
With the rise of big data and data science, storage and retrieval have become a critical pipeline component for data use and analysis. Recently, new data storage technologies have emerged. But the question is: Which one should you choose? Which one is best suited for data engineering?
In this article, Toptal Data Scientist Ken Hu compares three prominent storage technologies within the context of data engineering.Continue reading →
Most modern programming languages, in the hopes of enhanced maintainability and reusability of code, offer some constructs that help the developer keep the definition of behavior and its implementation separate.
Swift takes the idea of interfaces a step further with protocols. With protocols and protocol extensions, Swift allows developers to enforce elaborate conformity rules without compromising the expressiveness of the language.
In this article, Toptal Software Engineer Alexander Gaidukov explores Swift protocols and how protocol-oriented programming can improve the maintainability and reusability of your code.Continue reading →
Let’s face it: Sometimes you just need to rant. Fortunately, there’s an app for that. It’s called devRant, and it’s the place for developers to vent about clients from hell, non-technical friends and family, and clueless recruiters.
In this roundup, devRant Co-Founder David Fox shares his favorite collection of rants since launching. Some will make you laugh. Others will make you laugh so hard you cry. And just about all of them will make you empathize with the author.Continue reading →
If you’re a veteran frontender, you’ve probably had some not-so-great experiences with designers, and chances are some designers have had an equally bad experience working with you. How can you make sure you get exactly what you need from your designer, without placing an undue burden on them?
It’s a tall order, but in this article Freelance Software Engineer Vedran Aberle Tokic outlines and addresses a number of potential issues that may become roadblocks for your execution. Implementing these suggestions may result in overhead for designers, but they can save enormous amounts of time and headache elsewhere.Continue reading →
Nobody wants to leave valuable customer data behind. Unfortunately, though, the hardest part of data migration to a complex CRM system, such as Salesforce, is the handling of legacy data.
In this article, Toptal Software Engineer Marian Paul provides 10 tips for successful legacy data migration to Salesforce.Continue reading →
Client-server interactions play a vital role in most modern mobile applications. By leveraging available backend services these mobile applications can provide some really amazing functionalities. However, as mobile applications grow complex it becomes essential to keep the networking module as clean and maintainable as possible - separated from the rest of the application logic.
In this article, Toptal freelance software engineer Alexander Gaidukov walks us through the design of a simple networking module that allows your iOS application to interact with RESTful APIs.Continue reading →
The Hadoop Distributed File System (HDFS) is a scalable, open source solution for storing and processing large volumes of data. With its built-in replication and resilience to disk failures, HDFS is an ideal system for storing and processing data for analytics.
In this step-by-step tutorial, Toptal Database Developer Dallas H. Snider details how to migrate existing data from a PostgreSQL database into the more efficient HDFS.Continue reading →
Genome data is one of the most widely analyzed datasets in the realm of Bioinformatics. The SciPy stack offers a suite of popular Python packages designed for numerical computing, data transformation, analysis and visualization, which is ideal for many bioinformatic analysis needs.
In this tutorial, Toptal Software Engineer Zhuyi Xue walks us through some of the capabilities of the SciPy stack. He also answers some interesting questions about the human genome, including: How much of the genome is incomplete? How long is a typical gene?Continue reading →
Swift is the new programming language created to be a modern replacement for Objective-C in iOS and OS X application development. In general, a skilled Swift developer is usually someone who is already experienced with Objective-C, and that, among other things, might lead them to write Swift code using Objective-C best practices, which can cause some bad mistakes.
In this article, Toptal Freelance Software Engineer Nilson Souto outlines the most common mistakes Swift developers should be aware of.Continue reading →
Any experienced developer will tell you that their best code isn’t code they wrote. It’s code they took from someone else’s work. Many of the problems we encounter have already been solved—and the remedies packaged into libraries available to anyone. Why reinvent the wheel when free wheels are everywhere?
In this guide, Senior Android Engineer Gilad Haimov will take you on a quick tour of some the most powerful Android libraries out there. Robust as a hammer, faster than a drill, and more precise than any scalpel; no Android developer should leave home without these must-have tools.Continue reading →
Google formally announced Android 7.0 a few weeks ago, but as usual, you’ll have to wait for it. Thanks to the Android update model, most users won’t get their Android 7.0 over-the-air (OTA) updates for months. However, this does not mean developers can afford to ignore Android Nougat.
In this article, Toptal Technical Editor Nermin Hajdarbegovic takes a closer look at Android 7.0, outlining new features and changes. While Android 7.0 is by no means revolutionary, the introduction of a new graphics API, a new JIT compiler, and a range of UI and performance tweaks will undoubtedly unlock more potential and generate a few new possibilities.Continue reading →
Apple’s iOS is the second-largest mobile operating system in the world. It also has a very high adoption rate, with more than 85 percent of users on the latest version. These highly engaged users have high expectations: If your app has bugs, you’ll hear about it. And once the one-star reviews start rolling in, it’s hard to recover.
In this article, Toptal Software Engineer Nikita Tuk outlines the 10 most common mistakes that developers make—and how to avoid them.Continue reading →
In this article, Toptal Freelance Software Engineer Eric Grosse shows us how various combinations of the popular tools Webpack, Browserify, Gulp and Npm can benefit us by enhancing our development environment and allowing us to focus on writing the app itself.Continue reading →
Caching is a powerful technique for increasing performance, but the whole idea behind caching works only as long as the result we cached remains valid. And here we get to the hard part of the problem: How do we determine when a cached item has become invalid and needs to be recreated?
In this article, Toptal Freelance Software Engineer Daniel Ivanov provides an ASP.NET-based solution to replace invalid cached items and assure high throughput and performance of web applications designed to handle a high load.Continue reading →
In the realm of software development, time and date manipulation is considered by many to be a difficult task. Complicated time zone rules, leap seconds, differences in locale-specific formatting, etc., force us to immediately resort to popular time and date manipulation libraries. We often use these libraries without thinking about how exactly they work, which can lead to all sorts of obscure bugs in our software.
In this article, Toptal Freelance Software Engineer Punit Jajodia gives us an in-depth introduction to some concepts and best practices to avoid a few of the obvious issues related to changing the time and date in our applications.Continue reading →
Are you building the next big thing? Planning to become the next Facebook or Google? Are you at the point of making fundamental decisions that will stay with you for the entire project? There is a good chance that you will pick a robust language like Java. If so, you want to pick the best object-oriented abstraction of your flexible data model because you don’t want to deal with plain SQL. You want to support all kinds of data and ideally, support all kind of databases. If so, there’s is only one right choice for you: Hibernate.
Continue reading the story written by Freelance Software Engineer Grzegorz Gajos, about one of these imaginary but entirely possible scenarios.Continue reading →
The rise of the web and mobile applications has led to an increased need for back-end API services. Ruby on Rails’ philosophy seemingly makes it the ideal framework for creating back-end APIs. However, using Rails only for the API is overkill.
In this article, Freelance Software Engineer Boško Ivanišević explores alternatives to Rails and introduces us to two very mature and powerful gems, Sinatra and Sequel, which in combination provide powerful tools for creating server-side APIs.Continue reading →
WordPress is easily the most powerful open source blogging and content management system available online today. As WordPress is easy enough to set up and has a user-friendly approach, many developers are often underestimating it and so make mistakes in development.
In this article, Toptal Freelance Software Engineer Andrew Schultz outlines the ten most common mistakes that WordPress developers should be aware of for future projects.Continue reading →
How do you define good code? Is it 100% test coverage, or is it backwards compatibility with decade-old hardware? We may not be able to reach an end to this debate yet, but good software always seems to conform to a few certain qualities of code.
In this article, Toptal Freelance Software Engineer Zachary Goldberg walks us through six simple ideas that can help you make better, more maintainable software.Continue reading →
Implementing applications that deal with complex concurrent behavior has always been a challenging aspect of programming. Various paradigms exist that promise a solution to this problem in different ways. RxJava is a Java library that enables Functional Reactive Programming in Android development. It raises the level of abstraction around threading in order to simplify the implementation of complex concurrent behavior.
In this article, Toptal Freelance Software Engineer Christopher Arriola gives us a detailed walkthrough of RxJava and how it fits into the realm of Android development.Continue reading →
Linux is now 25 years old, but it’s no hipster. It’s not chasing around Pokemon, and it’s not moving back in with its parents due to crippling student debt. In fact, Linux is still growing and evolving, but the core ideas of the Linux State of Mind remain the same.
In this article, Toptal Technical Editor Nermin Hajdarbegovic takes a look at the history of Linux development, the state of Linux today, and what’s next for the world’s most popular open-source operating system.Continue reading →
Kotlin is a new, expressive general-purpose programming language powered by the same virtual machine technology that powers Java. Since Kotlin compiles to the JVM bytecode, it can be used side-by-side with Java, and it does not come with a performance overhead.
In this article, Toptal Freelance Software Engineer Ivan Kušt gives us a walkthrough of ten major features of Kotlin that help avoid boilerplate code and, more importantly, save time.Continue reading →
More than two decades ago, Java shook the world with its “Write once, run anywhere“ slogan. Today, Java developers have at their disposal a whole set of tools, such as Spring Boot, Docker, Cloud, Amazon Web Services, and Continuous Delivery, to take development and delivery to a whole new universe.
In this article, Toptal Freelance Software Engineer Matko Šuflaj presents all these technologies and guides us through a step-by-step tutorial on how to build a small microservice and prepare it for continuous integration in the cloud.Continue reading →
What’s the biggest problem with crowdfunding today? Everyone wants a sweet slice of the crowdfunded pie, but nobody wants a single crumb of responsibility. As a result, crowdfunding platforms, the tech press, and the geek public have picked up a track record filled with spectacular crowdfunding failures.
In this article, Toptal Technical Editor Nermin Hajdarbegovic takes a look at the state of crowdfunding today and explains why the industry needs to do more to clean up its act and get rid of bad apples in crowdfunding.Continue reading →
Java may have stood the test of time, but it can still be a source of great frustration among many web developers. Dealing with its verbosity and infrastructure overhead, for example, can take hours, even for the most basic needs.
In this article, Toptal Freelance Software Engineer Gregor Ambrozic shows us how Grails and its many appealing features can be a viable alternative to traditional Java web applications frameworks.Continue reading →
Elixir, with its simple and clean syntax, makes building scalable and maintainable concurrent applications a breeze. Ecto is a database wrapper that lives up to the high expectations set by Elixir’s reputation. Its domain-specific language provides a pleasant way to interact with databases and build fault-tolerant, concurrent applications in Elixir with ease.
In this article, Toptal Freelance Software Engineer Boris Barroso walks us through Ecto and its four main components: Repo, Schema, Changeset and Query.Continue reading →
Social networks are a rich source of user information. From a person’s current mood to endless streams of photos, there is by now probably a social network for each aspect of human life. From the development side, access to users’ information can be an essential element in providing a truly personalized experience in any application.
In this article, Toptal Freelance Software Engineer Behsaad Ramez shows us how the APIs of some of these social networks stack against each other and how they may be leveraged to accumulate precious information about users.Continue reading →
In today’s world, code is expected to change as quickly as requirements do, and tests play an important role in making that possible. Many modern projects boast great test coverage, making them more resilient to regression issues. However, that is not true for all projects - especially some legacy projects which have little in the way of testing.
In this article, Toptal Freelance Software Engineer Andrey Shalitkin discusses two metrics, coupling and cyclomatic complexity, that are important in identifying which portions of code to include in test coverage.Continue reading →
In the realm of enterprise software, especially for software provided as a service, multitenancy ensures that data is truly isolated for each client within a shared instance of software. Among its numerous benefits, multitenancy can greatly simplify release management and cut down costs.
In this article, Toptal Freelance Software Engineer André William Prade Hildinger shows us how Hibernate, a persistence framework for Java, makes implementing a multitenant Java EE application easier than it sounds.Continue reading →
Of all the modern ways people talk to each other, email seems to have stood the test of time and is arguably still one of the most effective and widely used means of communication. Thus, being able to programmatically send and receive emails can open new dimensions to a user’s experience of software that powers human communication.
In this article, Toptal Freelance Software Engineer Francis Altomare shows us how he leveraged various Amazon Web Services technologies to build a simple communication application in which email itself is an important interface.Continue reading →
You can buy capri pants, cheap flip-flops, and boonie hats anywhere on vacation, but beachside shops usually don’t carry quality hardware that can help you be more productive on the road or save you time and money for more enjoyable activities.
In this post, Toptal Technical Editor Nermin Hajdarbegovic takes a look at inexpensive and readily available travel hardware designed to boost your productivity on the road. You can put most of these gadgets on your summer shopping list without making a dent in your travel budget.Continue reading →
Memory issues in programs can be quite frustrating whether you’re the user or the developer attempting to solve the problem. In Ruby, the garbage collector plays a vital role in managing your program’s memory so that you can focus on other important things. However, it is often possible to overwhelm the garbage collector or end up with sneaky resources that cannot be freed, which can lead to all sorts of memory issues.
In this article, Toptal Freelance Software Engineer Bruz Marzolf explains why certain memory issues arise in Ruby applications and how to tackle them easily.Continue reading →
Java has been a dominant programming language for ages, but modern times call for modern languages. Meet Kotlin, a modern, clear, and expressive programming language powered by the same virtual machine technology that powers Java.
In this article, Toptal Freelance Software Engineer Tomasz Czura takes us for a spin through the world of Kotlin and shows us how it can be used to make an Android application with an elegant architecture without compromising the very qualities of the code that Kotlin aims to provide.Continue reading →
The plethora of tutorials on building Android apps may have you thinking that making a mobile app is simple. In reality, however, performance issues can be very complicated, and because performance plays a key role in making sure that your app stays on your users’ list of favorite apps for a long time, every little detail must be given one’s full attention.
In this article, Toptal Freelance Software Engineer Tibor Kaputa shares some tips on how you can optimize some common performance issues and identify some of the bottlenecks in your Android app.Continue reading →
In this article, Toptal Freelance Developer Gabriel Aszalos first explains Golang philosophy and then covers the basics of testing in Go, from table testing to JSON response assertion.Continue reading →
Are you a Scala developer hoping to scale your application in the cloud? If so, meet Kubernetes, a cluster manager for Docker applications. Developed by Google, it’s the latest in new open source tools making major waves.
In this article, Toptal Freelance Software Engineer Michele Sciabarra guides us through a step-by-step tutorial on how to take a generic Scala application and implement Kubernetes and Docker to launch multiple instances of the application.Continue reading →
When dealing with web-based projects that run in the production environment, being able to build and deploy changes quickly is a top priority. However, repetitive processes such as building front-end assets, when not automated, can be prone to critical errors.
As a language, R is strongly tied to data and is thus used mostly by statisticians and data scientists. Many who already use R for machine learning, though, are not aware that data munging can be done faster in R, meaning another tool is not required for that task.
In this article, Freelance Software Engineer Jan Gorecki explores tabular data transformations and introduces us to one of the fastest open-source data wrangling tools available.Continue reading →
“So much of what’s new and exciting about Angular 2 is its new way of thinking rather than its new architecture,” says Toptal Freelance Developer Ethan James.
In this article, Ethan walks through the inner workings of a simple Angular 1.5 app and then shows us how to upgrade it to Angular 2 while giving us the necessary understanding to truly appreciate it.Continue reading →
Meet Web Audio API, a powerful programming interface for controlling audio on the web. Gone are the days when the web browser could rarely play a sound file correctly. With this API, you can now load sound from different sources, apply effects, create visualizations, and do much more.
In this article, Toptal Freelance Software Engineer Joaquín Aldunate shows us how to unleash our inner musician using Web Audio API with the Tone.js framework by giving us a brief overview of what this API has to offer and how it can be used to manipulate audio on the web.Continue reading →
In this article, Toptal Freelance Developer Jeremy Greer walks us through three common uses of codemods, using the toolkit “jscodeshift”.Continue reading →
The Scala language has continued to gain popularity over the last several years, thanks to its excellent combination of functional and object-oriented software development principles, and its implementation on top of the proven Java Virtual Machine (JVM).
Creating a language that compiles to Java bytecode requires a deep understanding of the inner workings of the Java Virtual Machine. To appreciate what Scala’s developers have accomplished, it is necessary to go under the hood, and explore how Scala’s source code is interpreted by the compiler to produce efficient and effective JVM bytecode.Continue reading →
More than 60 percent of trading activities with different assets rely on automated trading and machine learning instead of human traders. Today, specialized programs based on particular algorithms and learned patterns automatically buy and sell assets in various markets, with a goal to achieve a positive return in the long run.
In this article, Toptal Freelance Data Scientist Andrea Nalon explains how to predict, using machine learning and Python, which trade should be made next on the S&P 500 to get a positive gain.Continue reading →
Nowadays, front-end development workflows involve many modern tools and preprocessors that not only streamline the whole process, but also allow you to spend less time on common web tasks, giving you more time to focus on other aspects of the project that require more careful and skilled insight. Sass, the scripting language for syntactically awesome stylesheets, comes with robust and built-in support for mixins - an essential feature for keeping your stylesheets DRY.
In this article, Toptal Freelance Software Engineer Justin Brazeau shows us 10 useful Sass mixins that help keep your stylesheets manageable by breaking them into smaller reusable bits, each with its own focus.Continue reading →
Would you like to test your PHP code like a boss? Do you feel that basic unit tests and PHPUnit just don’t cut it anymore? If your answer to both questions is yes, you might want to try Codeception, a mature and well-documented testing framework designed to outperform PHPUnit and Behat.
In this post, Toptal Freelance Software Engineer Vasily Koval describes how he came to take the plunge and start using Codeception, and he explains why you should check out Codeception for your PHP testing needs.Continue reading →
Unity is an excellent and straightforward tool to use for multi-platform development. Its principles are easy to understand, so programmers can start developing new products quickly and intuitively. However, if developers do not keep some important things in mind, development can slow down at crucial points, including when the project moves away from initial prototype or is approaching final release.
In this article, Toptal Freelance Software Engineer Tomas Macek outlines the most common mistakes that Unity developers should be aware of for future projects.Continue reading →
Clustering algorithms are very important to unsupervised learning and are key elements of machine learning in general. These algorithms give meaning to data that are not labelled and help find structure in chaos. But not all clustering algorithms are created equal; each has its own pros and cons.
In this article, Toptal Freelance Software Engineer Lovro Iliassich explores a heap of clustering algorithms, from the well known K-Means algorithm to the elegant, state-of-the-art Affinity Propagation technique.Continue reading →
Software engineers are always searching for the best tools and guides to help them be more productive and allow them to spend less time reading long technical specifications.
It’s tragically common for developers to come into a project where proper automated testing has been and will continue to be overlooked. It’s a situation Freelance Developer Bhushan Lodha has found himself in all too often; fortunately, he’s found a solution. In this article, he briefly covers the reasons why testing is overlooked and ultimately explains his “coding life hack” to ensure quality control even when he can’t introduce a testing framework.Continue reading →
In this article, Toptal Freelance Software Engineer Chuoxian Yang explores four of the most popular Node.js web frameworks and discusses how each framework stands out from the rest of the crowd in Node.js.Continue reading →
In a nutshell, declarative programming consists of instructing a program on what needs to be done, instead of telling it how to do it. This approach involves providing a domain-specific language (DSL) for expressing what the user wants. This DSL shields users from messy low-level constructs while still achieving the desired end-state.
While declarative programming offers advantages over the imperative approach it replaces, it’s not as straightforward as it may seem. In this comprehensive article, Toptal Freelance Software Engineer Federico Pereiro outlines his experience with declarative tools and explains how you can make declarative programming work for you.Continue reading →
Concurrency allows programs to deal with a lot of tasks at once. But writing concurrent programs isn’t a particularly easy feat. Dealing with constructs such as threads and locks and avoiding issues like race conditions and deadlocks can be quite cumbersome, making concurrent programs difficult to write.
In this article, Toptal Freelance Software Engineer Marko Dvečko gives us an overview of some concurrent programming models. He explains how each of these models gives structure to the programs we write and shows how to avoid certain concurrency issues that can come with these models.Continue reading →
Node-RED, built on Node.js, is a tool designed for programming visually without having to write any code. It comes equipped with a browser-based flow editor that allows hardware devices and APIs to be connected with each other easily, making it an ideal tool for rapidly developing programs for IoT devices.
In this article, Toptal freelance software engineer Jesús Darío Rivera walks us through the process of building a simple program using Node-RED and Netbeast along with a virtual light bulb plugin that mimics the capabilities of a real smart bulb.Continue reading →
When building smaller websites, the way developers structure their CSS code is usually not a big issue. However, when it comes to larger, more complex projects, code organization becomes crucial.
In this article, Toptal Freelance Software Engineer Tomislav Matijević introduces us to BEM methodology and explains how this CSS practice can massively improve code maintainability, speed up the development process, and streamline the teamwork of developers by arranging CSS classes into independent modules.Continue reading →
Streams are a powerful construct in Node.js and in I/O driven programming in general. Gulp, a tool for task automation, leverages streams in elegant ways to allow developers to enhance their build workflow.
In this article, Toptal engineer Mikhail Angelov gives us some insight into how Gulp works with streams by showing us step-by-step how to build a Gulp-like build automation tool.Continue reading →
For every tech project or business, there’s inevitably the “client” and the “programmer”. Sometimes they make it work between themselves, but often someone has to step in to establish the ground rules, keep everyone honest, and facilitate communication between all parties.
This someone, this hero, is the project manager.
In this entertaining article, Ethan James gives his insights as to why you, the developer, and you, the client, should invest in a project manager… or at least employ the techniques outlined.Continue reading →
Exceptions are as old as programming itself. An unhandled exception may cause unexpected behavior, and results can be spectacular. Over time, these errors have contributed to the impression that exceptions are bad.
But exceptions are a fundamental element of modern programming. Rather than fearing exceptions, we should embrace them and learn how to benefit from them. In this article, we will discuss how to manage exceptions elegantly, and use them to write clean code that is more maintainable.Continue reading →
HSA is a set of standards and specifications designed to allow further integration of CPUs and GPUs on the same bus. This is not an entirely new concept, but HSA takes it to the next level. HSA would effectively take the developer out of the equation, at least when it comes to assigning different loads to different processing cores.
In this post, Toptal Technical Editor and resident chip geek Nermin Hajdarbegovic takes a closer look at HSA and the future of heterogeneous computing in general. Get ready for some good news, but don’t forget to brace for bad news first.Continue reading →
Elixir, a dynamic, functional programming language, is designed for building scalable and maintainable applications with a simple, modern, and tidy syntax. Although it is easy to understand, Elixir’s approach to concurrency and its data type nuances require some getting used to.
In this article, Toptal engineer Kleber Virgilio Correia gives us a comprehensive guide to the various basic data types in that are available in Elixir.Continue reading →
As software engineers, we’re always searching for the best tools and guides that will help us to be more productive while spending less time searching and reading long technical specifications.
Today, Toptal is pleased to present an entirely new resource to the community as a free download: a CSS Cheat Sheet. Toptal’s CSS Cheat Sheet is a quick CSS reference guide, and includes CSS syntax, the most important selectors, properties, sizes, and units, and other useful CSS details, all in a short, easily understandable format.Continue reading →
How does one secure a vast, distributed network of tech talent? There are three ways of doing this: the right way, the wrong way, and the Toptal way. Today, we will be discussing the latter, and unveiling our plans for a comprehensive overhaul of our onboarding and authentication procedures.
In this post, Toptal Technical Editor Nermin Hajdarbegovic will help you get acquainted with our brand new processes. Since all Toptalers will be required to use our new security platform, we encourage you to comment and contribute to our efforts.Continue reading →
Camera systems are very important in conveying the right atmosphere in video games. When developing games, even 2D ones, advanced cameras should be your tool of choice.
In this article, Toptal engineer Mihai Cozma shows us how to build a modular camera system for 2D platform games using some simple components in Unity that can be easily extended to 2.5D or even 3D games.Continue reading →
Ionic is extremely popular at the moment, and it has revolutionized the hybrid application industry in a way that nobody could have imagined. However, over time, the best practices and tooling for Ionic have not progressed in the same way. As a result, the number of pitfalls that developers need to look out for when working with Ionic is still high.
In this article, Toptal Freelance Software Engineer Julien Renaux outlines the most common mistakes that Ionic developers should know.Continue reading →
The threaded model and global interpreter lock has always been in the way of Python handling thousands of concurrent long-lived connections. Modern web frameworks, such as Tornado, use non-blocking network I/O to make Python feasible for implementing WebSocket servers.
In this article, Toptal engineer Jongwook Kim walks us through the process of implementing a simple WebSocket-based web application in Python using the Tornado web framework.Continue reading →
When dealing with data analysis, most companies rely on MS Excel or Google Sheets, but dealing with data presented this way isn’t very eye-catching or intuitive. It’s once you add visualizations to this data that things become a little easier to manage. That’s the topic of today’s tutorial by our guest author from Adobe, Rohit Boggarapu. Join us as he guides us though the process of making interactive drill-down charts using jQuery and FusionCharts.Continue reading →
In the rapidly evolving Internet world, getting things done fast is always critical. Still, developers today waste hundreds of hours on tasks not related to programming: setting up databases or caches, deploying projects, monitoring online statistics, and so on.
In this article, Toptal Freelance Software Engineer Minhao Zhang guides us in a step-by-step tutorial on how to reduce waste by setting up your first virtual machine using Amazon Web Services, and introduces the most widely used AWS services that can boost your productivity in minutes.Continue reading →
Writing code that is easily testable takes some effort and planning. However, some patterns exist that can be used to write simple and functional code, making it easier to test them when the time comes.
Navigation in mobile applications, when done right, can have tremendous positive impact on overall user experience. Android offers application developers multiple ways of implementing navigation in their application. However, not all navigation patterns are created equal.
In this article, Toptal engineer Becze Szabolcs shows us how to implement fragment-based navigation and how it stacks up against Android’s traditional navigation philosophy.Continue reading →
To create a .NET project from scratch, simply using Visual Studio Wizard is good enough most of the time. However, the default project settings produced by wizards are hardly acceptable for professional teams, as they set too low of a bar on quality.
In this article, Toptal Freelance Software Engineer Andrei Smirnov guides us through several standard practices, configuration files, and project settings every developer should apply when starting a new .NET project. Doing this in the very beginning of a project decreases future technical debt and makes product source code readable and professional-looking.Continue reading →
If you haven’t been working with PHP lately, you might wonder what happened to PHP 6. Why the skip from PHP 5 to PHP 7? Well, long story short, PHP 6 was a failure. To avoid confusion, the new version was renamed PHP 7.
PHP 7 introduces a number of new features, while at the same time dropping depreciated SAPIs and extensions. As a result, it tends to outperform PHP 5.x by a wide margin. Some compatibility issues could pose a problem, but most developers have nothing to worry about.
In this post, Toptal Freelance Software Engineer Vilson Duka explains what makes PHP 7 different, and why it’s time to make the switch.Continue reading →
Since its debut in 2008, Python 3 has come a long way. Gone are the days when it lacked support for almost all useful libraries and tools. Python 3 offers many improvements and amazing new features that make writing robust code in Python easier than ever.
In this article, Toptal engineer Dario Bertini discusses some of the improvements and features that Python 3 has to offer, and explains whether switching to Python 3 is a smart choice right now.Continue reading →
In this article, Toptal engineer Darion Cassel shares some simple ways to improve the structure of your next Meteor-based web application without resorting to complicated boilerplates and scaffolding tools.Continue reading →
Robot Operating System, a framework for building robot applications, allows developers to assemble a complex system by connecting existing solutions for small problems.
In this article, Toptal engineer Adnan Ademovic gives us a step-by-step tutorial to building software for an onboard computer that allows us to remotely control and monitor a robot and running it in a simulated world using Robot OS.Continue reading →
The current trend in graphic design is to use a lot of rounded corners in all sorts of shapes. We can observe this on many web pages, mobile devices, and desktop applications, as rounded corners make the user interface feel smoother and nicer. However, what if we have to generate rounded corners on the fly, and we cannot preload it from an image?
In this article, Toptal Freelance Software Engineer Bojan Kverh guides us in a step-by-step tutorial on how to develop a simple class in C++ that can turn a complex polygon into a shape with rounded corners using Bezier curves and QPainter.Continue reading →
AWS Lambda offers a relatively thin service with a rich set of ancillary configuration options, making it possible to implement easily scalable and maintainable applications leveraging these services.
In this article, Toptal engineer Andrew Crosio gives us a step-by-step tutorial for building an image uploading and resizing service and demonstrates how AWS Lambda can be used as a platform to easily build service oriented architecture applications.Continue reading →
Modern web browsers offer a number of different APIs and mechanisms to storing data on the client-side. But are all of these options created equal?
In this article, Toptal engineer Stephen Villee demystifies the various client-side storage options available in modern web browsers and explains how each of these can play a role in storing session data on the client-side.Continue reading →
With Microsoft’s no-brainer shift towards open source and interoperability it was only a matter of time before we started seeing alternatives to some of their key products, like Visual Studio. Enter Project Rider: the code name for IDE guru JetBrains’ competition to Visual Studio.
Here’s the lowdown on Project Rider, the newest member of the IntelliJ platform family.Continue reading →
The Art of War is an ancient military treatise, but despite its age, the text is still included in the syllabus at many military schools. Sun Tzu’s principles and teachings also have practical applications in politics, business, sports, and, believe it or not, software development. In fact, you might just be applying some of these principles in your daily routine, without even knowing.
In this post, Toptal Freelance Software Engineer Jose F. Maldonado explains why many of these ancient teachings still matter, and what you can do to make them work for you and your team.Continue reading →
In this article, Toptal engineer Ivan Rogic demonstrates the synergy of React, Redux and Immutable.js, and shows how these libraries together can solve many performance issues that are often encountered in large web applications.Continue reading →
Python is a powerful, object-based, high-level programming language with dynamic typing and binding. Due to its flexibility and power, developers often employ certain rules, or Python design patterns. What makes them so important and what do does this mean for the average Python developer?
In this post, Toptal Senior Software Engineer Andrei Boyanov explains why Python is great for design patterns, and how they can be used to unlock even more potential, or to streamline development and make code more maintainable.Continue reading →
Today, a massive amount of data is available in the form of networks or graphs. For example, the World Wide Web, with its web pages and hyperlinks, social networks, semantic networks, biological networks, citation networks for scientific literature, and so on.
A tree is a special type of graph, and is naturally suited to represent many types of data. The analysis of trees is an important field in computer and data science. In this article, we will look at the analysis of the link structure in trees. In particular, we will focus on tree kernels, a method for comparing tree graphs to each other, allowing us to get quantifiable measurements of their similarities or differences. This an important process for many modern applications such as classification and data analysis.Continue reading →
Microservices are one of the latest trends in software design. In a microservices architecture, the classic monolithic back-end is substituted by a suite of distributed services. This design allows better separation of responsibilities, easier maintenance, greater flexibility in the choice of technologies for each service, and easier scalability and fault tolerance.
In this article, Toptal Freelance Software Engineer Francisco Temudo guides us in a step-by-step tutorial on how to build a microservices suite using Ruby.Continue reading →
Hackathons often inspire engineers to create amazing software. By blending various technologies together, really useful and often fun projects can be realized in a short period of time.
In this article, Toptal engineer Radek Ostrowski shares his experience participating in the IBM Sparkathon, and walks us through how he elegantly combined the power of Apache Spark and Docker in IBM Bluemix to build a weather app.Continue reading →
With approximately one billion people using Microsoft Office, the DOCX format is the most popular de facto standard for exchanging document files between offices.
While DOCX is a complex format, you may want to parse it manually for simpler tasks such as indexing, converting to TXT and making other small modifications. I’d like to give you enough information on DOCX internals so you don’t have to reference the ECMA specifications, a massive 5,000 page manual.Continue reading →
More and more people are moving their work from desktop applications to the cloud using an equivalent online web application. However, this has unfortunately not been true for software development IDEs. Although there have been some attempts to provide an online IDE, they have not come anywhere close to traditional IDEs.
In this article, Toptal Freelance Software Engineer Michele Sciabarra guides us on how to build a cloud-based development environment for Scala and big data applications, with the help of Docker in Amazon AWS.Continue reading →
Although database programming does not evolve at nearly the same pace as traditional application programming, recent advancements in several fields are bringing new techniques and technologies within the reach of small and independent developers.
In this guide, Toptal Freelance Software Engineer Jeffrey Shumaker explains how developers can quickly and easily tap these methods to identify database issues they may not even be aware of, and how they can build excellent data mining tools without spending a lot on expensive software licenses.Continue reading →
Manual memory management is a nightmare that programmers have been inventing ways to avoid since the invention of the compiler. Programming languages with garbage collectors make life easier, but at the cost of performance.
In this article, Toptal engineer Peter Goodspeed-Niklaus gives us a peek into the history of garbage collectors and explains how notions of ownership and borrowing can help eliminate garbage collectors without compromising their safety guarantees.Continue reading →
EhCache is a widely-used, pure Java cache that can be easily integrated with most popular Java frameworks, such as Spring and Hibernate. It is often considered to be the most convenient choice for Java applications since it can be integrated into projects easily. EhCache Spring Annotations allows seamless integration into any Spring application by simply adding annotations to cacheable methods, without modifying the method implementations. This article focuses on boosting your Spring applications with EhCache Spring Annotations.Continue reading →
Google Cardboard was envisioned as the cheapest Virtual Reality (VR) solution on the planet, and at this point, nothing else comes close in terms of pricing. However, the low price did not bring about mass adoption, and Google’s Android-based VR platform is nothing more than a tech curiosity at this point.
In this post, Toptal Technical Editor Nermin Hajdarbegovic leverages his extensive experience in the graphics industry to explain what’s keeping Cardboard VR down, and what the platform needs to attract more users, investment, and development.Continue reading →
Java Virtual Machine (JVM), the powerful virtual machine behind programming languages like Java and Scala, provides a platform-independent environment for executing compiled bytecode. Programming languages built for the JVM can be used to write programs that can run on a wide range of platforms without modification and can even leverage all the libraries and frameworks that exist for the JVM.
In this article, Toptal engineer Federico Tomassetti presents an overview of the strategy and various tools involved in creating our very own programming language for the JVM.Continue reading →
Nowadays, almost all Python frameworks use WSGI as a means, if not the only means, to communicate with their web servers. This is how Django, Flask and many other popular frameworks do it.
This article intends to provide the reader with a glimpse into how WSGI works, and allow the reader to build a simple WSGI application or server.Continue reading →
The Dependency Injection Container in Symfony2 allows components to be injected with their dependencies, and is often used as a Service Locator, which when combined with the DI-container pattern is considered to be an anti-pattern by many.
In this article, Toptal engineer Vasilii Lapin shows us how you can build a simple Symfony2 application using the DI-container, but without implementing the Service Locator pattern.Continue reading →
Handling all validation in domain objects results in objects that are huge and complex to work with. In domain-driven design, using decoupled validator components allows your code to be much more reusable and enables validation rules to rapidly grow.
In this article, Toptal engineer Josip Medic shows us how validation can be decoupled from domain objects, made context-specific, and structured well to achieve more sustainable validation code.Continue reading →
Are we really going to need $500 phones to get people in developing countries on 3G or 4G? Not really.
Welcome to the world of commoditised smartphones. Allow us to explain what’s going on and why it could have a significant impact on software and hardware industries.Continue reading →
In this tutorial, Toptal Engineer Orban Botond demonstrates how to use the Grape gem – a REST-like API micro-framework for Ruby – to build backend support in Rails for a JSON API. Grape is designed to run as a mountable rack engine that complements your web applications without interfering with them.Continue reading →
In this article, Toptal engineer William Coates shares his findings on ES6 from the perspective of a CoffeeScript convert.Continue reading →
An operating system written in Node.js? Yes, it exists, and it’s called NodeOS. Think for a second about the progress Node.js has made in the short time it’s been around. Now, imagine the same thing happening with an operating system.
In this article, Toptal engineer Danny Morabito introduces us to NodeOS, guiding us with a step-by-step tutorial on how to create our first NodeOS application using nothing more than Node.js.Continue reading →
Smooth animations and flawless transitions are key to perceived performance in modern mobile applications. Without the right tools, tuning iOS animation for efficiency can be a challenge in itself.
In this article, Toptal engineer Stefan Progovac demonstrates the role of Instruments, a sophisticated set of performance profiling tools for iOS, discussing how they can help you understand animation performance bottlenecks and some strategies for working around them.Continue reading →
Processing makes prototyping visual apps a breeze. With its easy to use programming constructs and some mathematics, building a simple game is a lot easier than one may think.
In this article, Toptal engineer Oguz Gelal provides a step-by-step tutorial to building a game using Processing and porting it to the web.Continue reading →
Talking about proximity marketing will get you varying reactions, from concerns about privacy issues to the idea that your phone is going to spam you with annoying ads non-stop, but if you boil down the idea, there are some really compelling concepts here.
When you clear away all the buzzwords, what exactly is this shift we’re seeing? It’s the world customizing itself to you. The world is reacting to your presence, specific to you as an individual. Retailers and start-ups have taken notice, and the concepts of mobile location analytics and proximity marketing are emerging out of that.Continue reading →
The long-term effect of the Cold War on science and technology is more profound than Nena’s 99 Luftbalons, or any Oliver Stone Vietnam flick.
If you are reading this, you’re already using Cold War technology; The Internet. That’s not all. A lot of tech and infrastructure we take for granted was developed, or at least conceived, during these tumultuous decades.Continue reading →
Spotlight search in Apple iOS 9, compared to earlier versions, has been made much more prominent and personal. With suggestions from Siri and integration opportunities for third-party apps, iPhone’s search functionality is no longer limited to the scope of Apple’s own apps. In this article, Toptal engineer Richard Forsythe explores some iOS SDK functionalities that allow apps to make content available to the user via Spotlight search.Continue reading →
Maintainable code is something we all desire and there are no shortage of coding principles that promise it. It is not always apparent how tremendously useful these principles are during the early stages of development. Nonetheless, the effort put in to ensure these qualities certainly pay off as the project grows and development continues. In this article, Toptal engineer Adel Fayzrakhmanov discusses how the Single Responsibility Principle is one of the most important aspect in writing good maintainable code.Continue reading →
Whether you’re creating a virtual storefront, deploying an app, or simply doing some third-party testing and development, chances are you need some server muscle. The good news is that there is a lot to choose from. The hosting industry may not be loud or exciting, but it never sleeps; it’s a dog eat dog world, with cutthroat pricing, a lot of innovation behind the scenes, and cyclical hardware updates.
In this article, we take a look at hosting options for freelance software engineers: PaaS, Cloud, VPS, dedicated, and more.Continue reading →
With modern image editing tools, we often take for granted the ability to extract or identify color on some part of any image. However, doing it programmatically is not exactly so straightforward. Camalian, a Ruby gem, changes that, making extracting and manipulating colors in an image as easy as possible. In this article, Toptal engineer Nazar Hussain provides some insight into how various color spaces work, introduces Camalian, and gives an overview of how to use it to build a color-based image search engine in Ruby.Continue reading →
Using modern DevOps Tools like Chef, Docker, Ansible, Packer, Troposphere, Consul, Jenkins, SonarQube, AWS, etc. does not mean that you are applying DevOps principles. DevOps is a way of thinking.Continue reading →
Rapid prototyping and the ability to produce quick visual results are features of many programming languages and frameworks. However, some take it even further by making these their primary goals. Processing, a programming language based on Java, allows its users to code within the context of visual arts and has been designed from the ground up to provide instant visual feedback. In this article, Toptal engineer Oguz Gelal provides a gentle introduction to Processing and some insights into its inner mechanics.Continue reading →
Apple’s iOS 9 and WatchOS 2 updates brings a number of novel features, including improved multitasking for iPads and a host of aesthetic tweaks. However, while iOS 9 is just an incremental update with a focus on the new iPad Pro, WatchOS 2 is not a skin-deep update. Apple has changed the WatchOS architecture and opened up a range of new possibilities for developers.Continue reading →
Real-time applications have already started to dominate the landscape of the Internet. With modern frameworks and standardization of the necessary client-side features, building a real-time web application has become a breeze. However, such web applications still pose unique scalability challenges.
In this article, Toptal engineer Mahmud Ridwan explores the architecture of a simple real-time web application that works using Redis Pub/Sub and doesn’t compromise its horizontal scalability.Continue reading →
Performance and data interoperability are critical to the success of any web application. For web apps that need to support video processing – which is inherently compute- and I/O-intensive – these challenges are particularly acute. In this post, I describe some of my experience successfully incorporating video capabilities into a PHP-based web app, leveraging open source technologies and cloud-based services to the greatest extent possible.Continue reading →
Several factors conspired to stifle Android Wear growth, ranging from lack of Google development, to inadequate hardware. Some of these problems have been addressed, some are being addressed, while others cannot be addressed with currently available technology.Continue reading →
Ruby metaprogramming, one of the most interesting aspects of Ruby, enables the programming language to achieve an extreme level of expressiveness. It is because of this very feature that many gems, such as RSpec and ActiveRecord, can work the way they do. In this article, Toptal engineer Nikola Todorovic demystifies Ruby metaprogramming using some examples that are relevant to everyday programming and aims to bring it closer to average Ruby developers.Continue reading →
NGINX, a sophisticated web server, offers high performance load balancing features, among many other capabilities. Like most other web server software for Unix-based systems, NGINX can be configured easily by writing simple text files. However, there is something interesting about tools that configure other tools, and it may be even easier to configure an NGINX load balancer if there was a tool for it.
In this article, Toptal engineer Mahmud Ridwan demonstrates how easy it is to build a simple tool with a web-based GUI capable of configuring NGINX as a load balancer.Continue reading →
Building cross-platform desktop applications has been something of a nightmare for a very long time, as extreme differences between popular desktop operating systems makes it a challenging feat. However, in light of newer tools and frameworks like Electron, building a cross-platform desktop application has never been easier. In this article, Toptal engineer Stéphane P. Péricat walks us through a step-by-step tutorial to building a cross-platform password key-ring desktop application using technologies that most of us are already familiar with.Continue reading →
Is open source scary? Do developers think that nobody would be interested in their personal projects? What are the fears associated with publishing your own work for the public to see? In this article, Toptal Director of Engineering Anna Chiara Bellini shares how, as an accomplished engineer, she made her first contribution to GitHub. This guide features all the step-by-step basics to getting involved in open source, including everything from what open source software is, to how to start working with Git and GitHub, to actually making meaningful contributions to open source projects.Continue reading →
One of the most misused, misunderstood, and neglected of all the Rails built-in structures is the view helper. Helpers often get a bad reputation for being a dumping ground for one-off methods used across the entire application’s view layer. But what if your helpers could be more semantic, better organized, and even reusable across projects? What if they could be more than just one-off functions sprinkled throughout the view, but powerful methods that generated complex markup with ease leaving your views free of conditional logic and code?
Let’s see how to do this when building an image carousel, with the familiar Twitter Bootstrap framework and some good old-fashioned object-oriented programming.Continue reading →
Every once in a while PHP developers are charged with tasks that require them to extend the functionalities of legacy projects, a task that often includes building REST APIs. Building a REST API for PHP-based projects is challenging, but in the absence of proper frameworks and tools, it can also be a particularly difficult goal to get right. In this article, Toptal engineer Arminas Zukauskas shares his advice, with sample code, on how to build a modern structured REST API around existing legacy PHP projects.Continue reading →
Software performance in production is hard to analyze. Things can go wrong at any time, and code can start executing in ways that weren’t planned for. In these cases, what do we do? In this article, Toptal engineer Juan Pablo Scida analyzes a real scenario of high CPU usage of a web application. He covers all the processes and .NET code analysis involved to identify the problem, explains how the problem was solved, and most importantly, explores why this problem happened in the first place.Continue reading →
Image processing algorithms are often very resource intensive due to fact that they process pixels on an image one at a time and often requires multiple passes. Successive Mean Quantization Transform (SMQT) is one such resource intensive algorithm that can process images taken in low-light conditions and reveal details from dark regions of the image.
In this article, Toptal engineer Daniel Angel Munoz Trejo gives us some insight into how the SMQT algorithm works and walks us through a clever optimization technique to make the algorithm a viable option for handheld devices.Continue reading →
Toptal has a strong remote culture), to say the least. To keep up with each other, we need a tool to keep team members in sync, where we can reach any other person at a moment’s notice. We use Skype as our main communication channel among Toptal’s core team.
Over the years, Skype has grown a lot, and has become a versatile tool that can be used on all of your devices at once, syncing chat amongst them, and providing a simple way to call and share screens. It is a tool that we leverage every day for our internal operations.
As heavy Skype users, there are a few things we’ve noticed that might not be clear to everyone. Here are a few tips on how you and your remote team can get the most of of Skype.Continue reading →
It’s no surprise that more and more people, from all kinds of backgrounds, are deciding to learn to code. But, each person who tackles the task is soon faced with an unpleasant reality: Learning to program is hard. Contrary to expectations, the feeling of “I don’t get it,” may persist unabated long into the journey, making once bright-eyed beginners feel hopeless, lost, and ready to give up.
The moral of the story is this: Be prepared. The path to programmer paradise is a long one, and without the right mindset at the beginning, it can quickly lose its appeal. In this article, I’ll attempt to give you some guidance on what to expect on your journey, how best to go about it, and what tools and resources you may find helpful along the way.Continue reading →
Force Touch is not a new idea. BlackBerry experimented with the concept back in 2008, and a few Android phone makers also examined the possibility of using Force Touch on their products. In fact, Force Touch support has been a part of Android for years; it was introduced in Android 1.0.Continue reading →
In this article, Toptal designer Lijana Saniukaite walks us through some practical Bootstrap tips and best practices to speed up your application development.Continue reading →
Memory leaks in long running Node.js applications are like ticking time bombs that, if left unchecked in production environments, can result in devastating outcomes. These bugs are often considered to be hard to find. However, with the right tools and a strategic approach, memory leaks can not only be solved but also avoided in the future. In this article, Toptal engineer Vladyslav Millier gives us insight into what memory leaks are, how some sophisticated debugging tools can be used to find memory leaks, and how to plug them once and for all.Continue reading →
The fact that women are underrepresented in tech is nothing new. However, while we’ve seen the gender diversity reports from companies like Google, Facebook, and many more, a look at the number of women in the open source community suggests that the numbers might be worse than these reports imply. In this post, Toptal COO Breanden Beneschott shares the results of a study looking at gender on GitHub and considers a few reasons why GitHub is so male-dominated, including a few ideas on how we can make the open source community a more welcoming place.Continue reading →
Many developers often overlook, or do not thoroughly think through the implications of open source licenses. Whether you’re planning to open source your own project under one of these licenses, or you intend to integrate some other open source project into one of your own, it’s important to have at least some knowledge of what these licenses are, how they may affect your projects, and how they complement or contradict one another. In this article, Toptal engineer David Marín gives us a comprehensive guide to some of the most popular open source licenses, and several rules of thumb to follow when choosing a license for future open source projects.Continue reading →
When Mike Bostock created D3.js, he introduced a tried and true reusable charts pattern for implementing the same chart in any number of selections. However, the limitations of this pattern are realized once the chart is initialized. In this article, Toptal engineer Rob Moore presents a revised reusable charts pattern that leverages the full power of D3.js.Continue reading →
Today, we will be taking a look at the future of mobile payments and emerging opportunities for developers. Needless to say, with each new opportunity, developers will have to face new challenges.
However, since we are talking about money, I don’t think anyone expects a shortage of software developers eager to learn a few new tricks and get into this space.Continue reading →
Inheriting someone else’s code can be a nightmare, especially when the code is poorly designed and lacks documentation. In this post, Toptal Engineer Juan Pablo Scida provides a case study of how he reengineered a chat server written in Node.js, transforming its original spaghetti code into a cleanly architected and designed piece of software.Continue reading →
Connecting to remote computers and working on them through terminals over a network is something we often take for granted. Technologies that enable us to do this have changed the way we work and have opened doors to amazing possibilities. Although the inner workings of these technologies may seem like obscure knowledge, implementations of many of these technologies are surprisingly straightforward. In this article, Toptal engineer Igor Delac gives us a step-by-step tutorial on how to implement the Remote Framebuffer server-side protocol in Java, allowing Swing-based applications to run and be interacted with remotely using standard VNC clients.Continue reading →
When working on big web applications as a team with other developers, code needs to be scalable and readable. This can be a challenging process when it comes to CSS, although preprocessors like Sass are available. But only using preprocessors will only get you so far. In this article, Toptal engineer Matias Hernandez presents a style guide with advice on how to improve the way you write your code.Continue reading →
Proper test automation is not always easy to achieve and requires almost as much design and thought as needed for the software itself. In the agile way of development tests are an essential ingredient in ensuring quality of software. However, unless these test codes are maintainable, they can prove to be more of a nuisance, especially when it comes to automated testing of modern web applications. This article is an easy introduction to Selenium features Page Object and Page Factory, how they can be used to model web applications, and how to write maintainable test code using them.Continue reading →
One of the hardest things to do in software development is to determine how long and how much it will take to deliver a new software product. Should it be so hard? The answer is not straightforward.Continue reading →
WebRTC has opened doors to all kinds of new peer-to-peer web applications and games that can run in the browser without the need of additional plugins. However, being a relatively new technology, it still poses some unique challenges to developers. PeerJS aims to tackle some of those challenges by providing an elegant API and insulating developers from WebRTC’s implementation differences. In this article, Toptal engineer Mahmud Ridwan provides an introductory tutorial to building a simple, peer-to-peer web game using PeerJS.Continue reading →
Here’s the Vulkan API in a hundred words or less: It’s a low-overhead, close-to-metal API for 3D graphics and compute applications. Vulkan is basically a follow-on to OpenGL. It was originally referred to as the “next generation OpenGL initiative,” and it includes a few bits and pieces from AMD’s Mantle API. Vulkan is supposed to provide numerous advantages over other GPU APIs, enabling superior cross-platform support, better support for multithreaded processors, lower CPU load, and a pinch of OS agnosticism.Continue reading →
The Internet is mankind’s biggest repository of knowledge, information, useful (and useless: think of cat pics) digital content. Today, we will be taking a quick look at something useful and down to earth: free online programming books.Continue reading →
Cars with next-generation connected infotainment systems will create new opportunities on several fronts. In case you already have an infotainment system with a neat touchscreen and GPS in your car, please accept my condolences; it’s about to become as obsolete as a Nokia 3310 compared to an iPhone.Continue reading →
The newest version of the Java platform, Java 8, was released more than a year ago. Many companies and developers are still starting new applications with old versions of Java. There are very few good reasons to do this, because Java 8 has brought some important improvements to the language. I’ll show you a handful of the most useful and interesting ones.Continue reading →
Bitcoin created a lot of buzz on the Internet. It was ridiculed, it was attacked, and eventually it was accepted and became a part of our lives. However, Bitcoin is not alone. At this moment, there are over 700 AltCoin implementations, which use similar principles of CryptoCurrency.Continue reading →
Docker, an open source tool, has changed the way we think about deploying applications to servers. By leveraging some amazing resource isolation features of the Linux kernel, Docker makes it possible to easily isolate server applications into containers, control resource allocation, and design simpler deployment pipelines. Moreover, Docker enables all of this without the additional overhead of full-fledged virtual machines.Continue reading →
The Spring Framework is a powerful, feature-rich, and well-designed framework for the Java platform. It offers a collection of programming and configuration models that aim to simplify and streamline the development process of robust and testable applications in Java. In this article, Toptal engineer Stefan Varga challenges the popular notion of Java as a complicated platform for simple needs, and walks us through a step by step tutorial to building a simple MVC application with the Spring Framework and JPA.Continue reading →
In this article I’ll relate my experience with the popular Unity game development platform and the Model-View-Controller (MVC) pattern for game development. In my seven years of development, having wrestled with my fair share of game dev spaghetti, I’ve been achieving great code structure and development speed using this design pattern.Continue reading →
The development of cross-platform mobile applications has always been a source of many challenges. Although tools like Apache Cordova and Haxe do solve some of the associated issues, they are still not the ideal solution in many cases. React Native changes that by providing the power of React.js for mobile platforms and a promise of consistent developer experience across multiple platforms.Continue reading →
A large number of modern mobile applications interact with web services in one way or another, and iOS applications are no different. Mantle (a model framework) and Realm (a mobile database) come with the promise of simplifying some of the hurdles in consuming web services through RESTful APIs and persisting data locally. In this article, Toptal engineer Marcin Kmiec shows how to build a simple iOS application using Mantle and Realm and demonstrates how this approach helps to eliminate a large amount of boilerplate code.Continue reading →
OpenGL, a cross-platform API for rendering 2D and 3D graphics, is extremely powerful and yet surprisingly easy to get started with. Although one may find the most common applications of OpenGL and rendered graphics in video games only, in reality there are far more uses. To demonstrate the power of OpenGL, we’ll be building a Mandelbrot set generator on Android using OpenGL ES.Continue reading →
Despite the prevalence of higher-level languages, the C programming language continues to empower the world. There are plenty of reasons to believe that C programming will remain active for a long time. Here are some reasons that C is unbeatable, and almost mandatory, for certain applications.Continue reading →
Google’s new cloud code platform does not appear to be taking on GitHub head on. Instead, Cloud Source Repositories (CSR) will allow users to connect to repositories hosted on GitHub or Bitbucket. However, everything is automatically synced to the Google Cloud Source Repository.
The good news is that a Google CSR can be connected to another Git repository hosted on GitHub or Bitbucket. All changes will be synchronised on both platforms, as you can set Google CSR to automatically mirror from GitHub and Bitbucket.Continue reading →
In today’s world where there are a lot of choices for writing quality software, it’s easy to overlook some tools that are viable options in developing modern software. These software development tools, in competition with each other, often fluctuate in popularity and developer preferences. Many excellent tools are viable options for any given project. This article provides eight reason in favor of the Microsoft stack and why it is still a reasonable choice for software development today.Continue reading →
Whether you’re an avid angler or an app developer, you may be interested in taking a closer look at the development of a fishing app, which involved some of your fellow Toptalers.
The goal was to create an app that would be truly useful in a professional fishing setting, while at the same time meeting a hard deadline. Since Fatsack Outdoors wanted to launch the app at one of the biggest fishing tradeshows of the year, the deadline was non-negotiable.Continue reading →
Detecting objects of interest in images has always been an interesting challenge in the realm of computer vision, and many approaches have been developed over recent years. As mobile platforms are becoming increasingly powerful, now is the perfect opportunity to develop interesting mobile applications that take advantages of these algorithms. This article walks us through the process of building a simple iOS application for detecting objects in images.Continue reading →
Testing back-ends is easy. But testing front-end code is kinda hard. In the ten years I’ve been a developer, I hadn’t found a decent way to test user interaction and view rendering until I started poking at React.Continue reading →
In-memory data collection manipulation is something that we often need to do in data-centric reporting and visualization applications. When needed, we often tend to resort to complex loops, list comprehensions, and other suboptimal means, which can easily end up being a huge mess of hard-to-maintain spaghetti code. Supergroup.js is an in-memory data manipulation library that can be used to solve some common data manipulation challenges on limited datasets.Continue reading →
Ractive.js provides powerful capabilities for web app development in a way that is refreshingly simple to learn and use. In this article, Toptal Engineer Eugene Mirotin walks you through the process of building a simple Ractive search app, demonstrating some of Ractive’s key features and the ways in which it helps simplify web app development. Code samples are provided and explained.Continue reading →
To retain its users, any application or website must run fast. For mission critical environments, a couple of milliseconds delay in getting information might create big problems. As database sizes grow day by day, we need to fetch data as fast as possible, and write the data back into the database as fast as possible. To make sure all operations are executing smoothly, we have to tune Microsoft SQL Server for performance.Continue reading →
In this article, I’ll go through some of the interesting features and libraries that are available to use with React. Even if you don’t plan on using React, taking a look at its ecosystem is inspiring. You may want to simplify your build system using the powerful, yet comparatively easy to configure, module bundler Webpack, or start writing ECMAScript 6 and even ECMAScript 7 today with the Babel compiler. So, let’s explore the React ecosystem!Continue reading →
Programming is about having fun and enjoying the process of creating something cool. That is why we decided to build a bot-vs-bot game platform around Battleship and make it open source. In this article, we take a look at the code and mechanics of the extensible engine behind this platform.Continue reading →
In this article, I will show that unit testing itself is quite easy; the real problems that complicate unit testing, and introduce expensive complexity, are a result of poorly-designed, untestable code. We will discuss what makes code hard to test, which anti-patterns and bad practices we should avoid to improve testability, and what other benefits we can achieve by writing testable code. We will see that writing testable code is not just about making testing less troublesome, but about making the code itself more robust, and easier to maintain.Continue reading →
Simply calling something Agile isn’t particularly helpful. The word, even in a software context, means different things to different people or organizations. There are many facets, definitions, implementations, and interpretations.
In this article, Toptal Head of Projects Paul Barnes teaches about behaviors, frameworks, techniques, and concepts supporting agile project management in software development.Continue reading →
While Ruby has Rails and Python has Django, the dominant application development framework for Node has yet to be established. But, there is a powerful contender gaining steam: LoopBack, an open source API framework built by StrongLoop, the creators of Express.
Let’s take a closer look at LoopBack and it’s capabilities by turning everything into practice and building an example application.Continue reading →
Ember.js is a comprehensive framework for building complex client-side applications. But, as with any advanced framework, there are still pitfalls Ember developers may fall into. With the following post, I hope to provide a map to evade these. Let’s jump right in!!Continue reading →
Google announced Android M at its annual I/O dev conference in late May, and the new OS is coming to our beloved Android devices later this year. Android 6.0 is more of an evolutionary step, whereas Android 5.0 was a big leap forward thanks to its 64-bit ART runtime and all new Material Design.
However, Android M should not be dismissed as a minor update. In this post, I will try to explain why.Continue reading →
Microsoft Bond is a modern data serialization framework. It provides powerful DSL and flexible protocols, code generators for C++ and C#, efficient protocol implementations for Windows, Linux, and Mac OS X. This article is a quick guide of the features and use of this framework.Continue reading →
Bootstrap is a powerful toolkit. It comes bundled with basic HTML and CSS design templates that include many common UI components. Most of the important pitfalls are mentioned in the Bootstrap documentation, but still some mistakes are pretty subtle, or have ambiguous causes. This article outlines some of the most common mistakes, problems, and misconceptions when using Bootstrap.Continue reading →
This article provides the overview of pain points caused by AngularJS and reasons for switching to React.Continue reading →
Building robust web applications is often a lot about choosing the right tools. Doing so with a combination of tools that ensure both a modern, flexible front-end, and a solid, reliable back-end is something everybody wants. This article demonstrates exactly that trick by combining AngularJS and Play Framework to build a simple blog application.Continue reading →
With Dalvik out of the picture, many people expected Google’s new 64-bit capable ART runtime to stick around for years, which it probably will, but it will get a major overhaul in the near future. In addition to offering support for 64-bit hardware, ART also introduced ahead-of-time (AOT) compilation, while Dalvik was a just-in-time (JIT) compiler.
Throw in new 10-core ARM processors and Intel mobile processors based on three different architectures, and you end up with spicy, Google-style hardware gumbo.Continue reading →
Deploying instances of a web application to one or more servers manually can often be a monotonous process, and take up a significant amount of your time. With little effort, it is possible to automate the process of deploying your web application with almost zero human intervention. This article outlines a simple approach to automating web application deployments using GitHub webhooks, buildpacks, and Procfiles.Continue reading →
In Part I of this three-part series, we saw how the free motion of rigid bodies can be simulated. In Part II, we saw how to make bodies aware of each other through collision and proximity tests. Up to this point, however, we still have not seen how to make objects truly interact with each other. The final step to simulating realistic, solid objects, is to apply constraints, defining restrictions on the motion of rigid bodies.
In this article, we’ll discuss equality constraints and inequality constraints. We’ll describe them first in terms of a force-based approach, where corrective forces are computed, and then in terms of an impulse-based approach, where corrective velocities are computed instead. Finally, we’ll go over some clever tricks to eliminate unnecessary work and speed up computation.Continue reading →
Analysts have come to recognize social network data as a virtual treasure trove of information for sensing public opinion trends and groundswells of support. In this article, Toptal Engineer Elder Santos describes the techniques he employed for a proof-of-concept that effectively analyzed Twitter Trend Topics to predict, as a sample test case, regional voting patterns in the 2014 Brazilian presidential election.Continue reading →
Any time you’re physically out of the office or working with someone who isn’t next to you, you’re working remotely. At Toptal, working remotely is a productive and efficient reality that we evangelize to our clients, while practicing what we preach.
In this article, Toptal COO Breanden Beneschott shares great tactics in operating highly collaborative remote teams.Continue reading →
Backbone.js equips the developer with an array of tools that are minimal but extremely flexible. This gives developers the option to design the applications the way they want, but also introduces a number of way things can go wrong. This article outlines a few common mistakes that Backbone.js developers can make, and how they may avoid them.Continue reading →
Log files may very well be one of the most underestimated and underutilized tools at a developer’s disposal. Beyond their value for debugging, with a bit of creativity and forethought, logs files can be leveraged to serve as a valuable source of usage information and analytics. In this article, In this article, Toptal engineer Ilya Sanosyan provides a practical guide to maximizing the value we get from our logs.Continue reading →
Windows 10 represents a departure from Microsoft’s traditional OS strategy. It’s not just a new operating system, it’s an automatic and free update for millions of Windows 8.1 devices. It’s also designed to address a number of user complaints related to the Windows 8.x UI. The changes aren’t just skin deep, as Windows 10 is not a mere redesign with a new UI and fancier apps; it might even mark the start of a new era for Microsoft, and in this post I will explain why.Continue reading →
AngularJS is a very powerful framework. It is the third most starred repository on GitHub. It is not difficult to start using, but the goals that it is intended to accomplish demand comprehension. No longer can we ignore memory consumption, because it will not reset on navigation anymore. This is the vanguard of web development. Let’s embrace it!Continue reading →
Machine learning has changed the way we deal with data. Data driven problems, that are difficult to solve using standard methods, can often be tackled with much more ease using machine learning algorithms. In this article, we will explore Azure Machine Learning features and capabilities through solving one of the problems that we face in our everyday lives.Continue reading →
We will see technology push its way forward and society will be the better for it. The exciting question is who will lead this wave of disruption?Continue reading →
C++ is a general purpose programming language that offers great flexibility when it comes to system programming and application development. The language, however, comes with some pitfalls requiring attention from developers to ensure quality programming. This article explains how ten of the most common C++ developer mistakes can be avoided.Continue reading →
Google wants to bring Android to everything from phones and watches, to cars and smart television sets. Unlike Google TV, Android TV is much closer to standard Android. It runs Android 5.0 (at least in the initial launch version) and can be used on new TVs, as well as on standalone devices.
Android TV is not just about improving the way people consume TV content, it’s more about changing the way they do it.Continue reading →
In today’s data driven world, researches are busy answering interesting questions by churning through huge volumes of data. Some obvious challenges they face are due the sheer size of dataset that they have to deal with. In this article, we take a peek at a simple business intelligence platform implemented on top of the MongoDB Aggregation Pipeline.Continue reading →
While the Apple Watch is on track to be a commercial success for Apple and its shareholders, technologists are still not entirely convinced smartwatches have what it takes to conquer the market, at least not yet.
What does this mean for developers? What are the implications for other smartwatch platforms and companies behind them?Continue reading →
Apache Lucene is a powerful Java library used for implementing full-text search on a corpus of text. With its wide array of configuration options and customizability, it is possible to tune Apache Lucene specifically to the corpus at hand - improving both search quality and query capability.
This article gives us a glimpse of the simplicity and ease of customization of the Apache Lucene analysis pipeline.Continue reading →
iOS 8 introduced a new concept called App Extensions. This new feature did not break down the walls between the applications, but it opened a few doors providing gentle yet tangible contact between some apps. The latest update gave us an option to customize the iOS ecosystem, and we are eager to see this path opening up as well.Continue reading →
Developers often automate certain repetitive and tedious tasks to save time as well as to stay focused on the task at hand.
This article demonstrates how simple and easy it is to use Gulp as a build tool.Continue reading →
Texts are an integral part of user interfaces. In many cases, text annotation plays a vital role in grabbing the user’s attention or allowing the user to decorate and highlight the content they produce.
You are what you read – and most Toptal members and blog subscribers are software developers. So what do you read? Where do professional developers get the latest information about how their peers work and think?
Today, we will be taking a look at a small selection of popular developer blogs frequented by Toptal developers. We’re counting on you (our readers) to expand the list in the comment section.Continue reading →
Location-based applications on our mobile devices have changed the way we interact with mobile technology. The list of these applications is extensive and has had a major impact on our lives.
This article walks us through a step-by-step tutorial of how to determine the location of an Android device using Google Location Services API.Continue reading →
The extremely diverse and fragmented Android ecosystem poses certain challenges when it comes to testing. In this article, we take a look at some approaches that can be effective with tackling these challenges and ease the process of writing and automating tests.Continue reading →
Passwordless authentication has been the Holy Grail of security for years, but progress has been painfully slow. Until a few years ago, the technology to implement passwordless logins on a grand scale simply wasn’t available.
However, the industry juggernaut is slowly but surely changing this. There are a few technical, legal and even ethical considerations to take into account, but be as it may, biometric, passwordless authentication is here to stay.Continue reading →
Toptal has taken its place as one of the strategic partners in Facebook’s effort to connect the world. Our vision of a distributed and office-less company with developers spread all over the globe has proven to be an amazing match to Facebook’s attempts to connect people worldwide.Continue reading →
Face it, you’re a software engineer, not a graphic designer. When you need to write a manual, technical document, or report, you just want to write it and be done with it. Especially for you as a software engineer – who is not put off by needing to learn and use some basic syntax conventions – Markdown can be the path of least resistance between what you want to write and getting it written.Continue reading →
You might presume that Non-Disclosure Agreements (NDAs) have been widely accepted in the tech world as a means to protect sensitive and potentially valuable information from theft and abuse. Not so fast.
Jones Day Corporate Associate Bret J. Stancil examines software developer NDAs for Toptal blog followers in a must-read post for anyone faced with the prospect of signing an NDA.Continue reading →
Node.js, the cross-platform runtime environment, has seen its fair share of praise and criticism for what it offers to developers. Often, reasons for such criticisms are rooted in how developers use/misuse the language.
This article explores ten common mistakes that Node.js developers make and how to avoid them.Continue reading →
Meteor makes developing web applications simple. It’s easy to learn, and comes with a pre-built arsenal of powerful functionalities. In this article, we will walk through a detailed tutorial for building a simple real-time web application.Continue reading →
In this post, Toptal engineer Radek Ostrowski introduces Apache Spark – fast, easy-to-use, and flexible big data processing. Billed as offering “lightning fast cluster computing”, the Spark technology stack incorporates a comprehensive set of capabilities, including SparkSQL, Spark Streaming, MLlib (for machine learning), and GraphX. Spark may very well be the “child prodigy of big data”, rapidly gaining a dominant position in the complex world of big data processing.Continue reading →
Authentication is one of the most important parts of any web application. For decades, cookies and server-based authentication was the easiest solution. However, handling authentication in modern Mobile and Single Page Applications can be tricky and demand a better approach. One of the best known solutions to authentication problems for APIs is the JSON Web Token (JWT).Continue reading →
Threading is just one of the many ways concurrent programs can be built. In this article, we will take a look at threading and a couple of other strategies in building concurrent programs in Python, as well as discuss how each is suitable in different scenarios.Continue reading →
Over time, the race between DirectX and OpenGL has caused these technologies to become more accessible to developers, along with better documentation and an easier process of getting started with them. This tutorial article shows you how to build a 3D modeling application that generates and renders 3D texts from user inputs.Continue reading →
On the other hand, Volt is capable of managing the back-end and a dynamic front-end; since both functionalities are tightly integrated into its core.Continue reading →
Describing Nvidia Shield as a mere Android console would not do it justice. The console relies heavily on streaming and cloud computing, so it shouldn’t not be viewed as another standalone device.
Nvidia sees Shield as Netflix for games, as a comprehensive Gaming-as-a-Service (GaaS) platform. While it’s still part of the Android ecosystem, Shield could be bad news for some Android game developers, but it also creates a range of new and exciting opportunities.Continue reading →
AllcountJS is an emerging open source framework built with rapid application development in mind. It is based on the idea of declarative application development using JSON-like configuration code that describes the structure and behavior of the application.
In this article, we walk through a step-by-step tutorial for prototyping a data oriented web application using AllcountJS.Continue reading →
After a couple of years of bullish forecasts and big promises, security seems to be the biggest IoT concern. The first few weeks of 2015 were not kind to this emerging industry, and most of the negative press revolved around security.
Was it justified? Was it just “fear, uncertainty and doubt” (FUD), brought about by years of hype? It was bit of both; although some issues may have been overblown, the problems are very real, indeed.Continue reading →
In Part I of this three-part series on game physics, we explored rigid bodies and their motions. In that discussion, however, objects did not interact with each other. Without some additional work, the simulated rigid bodies can go right through each other.
In Part II, we will cover the collision detection step, which consists of finding pairs of bodies that are colliding among a possibly large number of bodies scattered around a 2D or 3D world.Continue reading →
Since programmers spend so much time using their favorite editor, they become extremely good at it, and are reluctant to learn to use any other. Even if offered a better editor for some specific task, the skilled programmer can get their existing editor to do the task just well enough, and therefore sees no need to learn how to use a new one.
This is what compelled me to try out a number of different editors and make the transition as easy as possible; I hope my experience saves you time and effort if you find yourself in the same situation.Continue reading →
When entering the remote developers’ world, the biggest obstacle that managers must overcome is to change their mindset by accepting that the developer will not be in plain sight, and where they can manage and follow the work being done.
This new paradigm requires businesses to implement a number of mechanisms to track progress and avoid a redundant workload. Such mechanisms will help both manager and developer be more productive, which is in everyone’s best interest.Continue reading →
Making your own maps is not a big undertaking anymore, but for developers not familiar with web mapping, the agony of choice might be intimidating. You want to make maps, but don’t know where to start nor which tools to use. I am here to help.
Here, I’ll discuss several of the best available tools, providing a brief overview of each, along with code examples, and weighing the pros and cons.Continue reading →
Java, a sophisticated programming language, has been dominating a number of ecosystems for quite a while. Portability, automated garbage collection, and its gentle learning curve are some of the things that make it a great choice in software development. However, like any other programming language, it is still susceptible to developer mistakes.
This article explores the top 10 common mistakes Java developers make and some ways of avoiding them.Continue reading →
Laravel designers didn’t spend too much time reinventing the wheel. A lot of solutions and practices are transferred from other frameworks.
The decision to embrace a new PHP framework should not be taken lightly, so let’s examine why considering Laravel may be worth your time and effort. Toptal freelance software engineer Alex Rytov explains what made him take the plunge and why he believes Laravel has a bright future.Continue reading →
Toptal engineer Jurgens du Toit looks at the possibility of using Logstash to regain control of your inbox and make your error emails manageable again, all without changing a single thing in your app.
Logstash can effectively leverage the power of Elasticsearch and Amazon SNS to streamline email notifications and save time.Continue reading →
Although the most wide-spread and supported way of running Django is on a Linux system (e.g., with uwsgi and nginx), it actually doesn’t take much work to get it to run on IIS. In this article, Toptal Engineer Ivan Voras walks you through a step-by-step tutorial, clearly explaining how to install Django on IIS.Continue reading →
A business rules engine is a tool for executing business rules. Business rules are composed of facts and conditional statements. Any “if-then” statement that appears in traditional business logic qualifies as a business rule.Continue reading →
The Internet is becoming “smarter” every day. The video-sharing website that you frequently visit seems to know exactly what you will like, even before you have seen it. The online shopping cart holding your items almost magically figures out the one thing that you may have missed or intended to add before checking out. It’s as if these web services are reading your mind - or are they?
Turns out, predicting a user’s likes involves more math than magic. In this article we will explore one of the many ways of building a recommendation engine that is both simple to implement and understand.Continue reading →
A thorough and practical introduction to concurrent and parallel programming in Ruby, presenting and contrasting a number of techniques and options available, from the standpoints of both performance and complexity. Discusses forking, multithreading, the Global Interpreter Lock (GIL), and more.Continue reading →
You hear a familiar song in the club or the restaurant. You listened to this song a thousand times long ago, and the sentimentality of the song really touches your heart. You desperately want to heart it tomorrow, but you can’t remember its name! Fortunately, in our amazing futuristic world, you have a phone with music recognition software installed, and you are saved.
But how does this really work? Shazam’s algorithm was revealed to world in 2003. In this article we’ll go over the fundamentals of that algorithm.Continue reading →
Microsoft has a long tradition of spicing up relatively dull product announcements with compelling tech demos, and the Windows 10 announcement was no exception. The software giant used the opportunity to create a fair amount of buzz about the HoloLens, a futuristic headset that offers a glimpse into the future of Augmented Reality (AR).Continue reading →
Modern web browsers provide a rich set of APIs; some of which have been around for a long time, and have since been used to build powerful web applications.
Web Audio API has been popular among HTML5 game developers, however, the Web MIDI API and its capabilities have yet to be utilized. In this article, Toptal engineer Stéphane P. Péricat guides you through the basics of the Web MIDI API, and shows you how to build a simple monosynth to play with your favorite MIDI device.Continue reading →
When coming across the term “text search”, one usually thinks of a large body of text, which is indexed in a way that makes it possible to quickly look up one or more search terms when they are entered by a user. This is a classic problem in computer science, to which many solutions exist.
But how about a reverse scenario? What if what’s available for indexing beforehand is a group of search phrases, and only at runtime is a large body of text presented for searching?Continue reading →
There are many programming platforms used to develop games, and there are a plethora of devices to play them on, but when it comes to playing games in a web browser, Flash-based development still leads the way.
What if we could port these games to HTML5 Canvas technology and play them on mobile browsers as well? In this article, Toptal engineer Avinash Kaza gave a solution to this.Continue reading →
Simulating physics in video games is very common, since most games are inspired by things we have in the real world. Rigid body dynamics – the movement and interaction of solid, inflexible objects – is by far the most popular kind of effect simulated in games.
In this series, rigid body simulation will be explored, starting with simple rigid body motion in this article, and then covering interactions among bodies through collisions and constraints in the following installments.Continue reading →
In Java development, a typical workflow involves restarting the server with every class change, and no one complains about it. But is Java class reloading that difficult to achieve? And could that problem be both challenging and exciting to solve? In this article, I will try to address the problem, help you gain all the benefits of on-the-fly class reloading, and boost your productivity immensely.Continue reading →
Going from a software background, knowing nothing about electronics, to designing and building a powerful, marketable hardware device, is an interesting and fascinating experience. In this article, I’ll describe the design of how this electronic masterpiece works.Continue reading →
Bitcoin blockchain is the backbone of the network and provides a tamper-proof data structure, providing a shared public ledger open to all. This article provides insight in blockchain technology, current status and its potential.Continue reading →
Since almost all smartphones today are equipped with location sensors, motion sensors, bluetooth, and wifi, today’s mobile apps can use context awareness to dramatically increase their capabilities and value. This article walks you through building a context aware app that employs complex event processing.Continue reading →
Reverse engineering and hacking are usually related to malicious activities that result in sleepless nights of engineers responsible for system maintenance.
Reverse engineering is a tool that we can utilize to find the flaws and improve our software in many aspects. This article shows us how to use these techniques to learn more about different implementations of web API.Continue reading →
One of the biggest and most common problems in front-end web development is state management. A developer is constantly focused on keeping the state object in sync with its view and the DOM representation. Users can interact with the application in many ways and it’s a big task to provide a clean transition from one view state to another.
The publish-subscribe pattern] (or pub/sub, for short) is a messaging pattern where senders of messages (publishers), do not program the messages to be sent directly to specific receivers (subscribers). Instead, the programmer “publishes” messages (events), without any knowledge of any subscribers there may be.
This article provides insight in how to use the pub/sub pattern, in Rails, to communicate messages between different system components without these components knowing anything about each other’s identity.Continue reading →
This article provides step by step guide for building hybrid multi-platform real-time mobile application using the Ionic Framework and the Firebase.Continue reading →
Data Driven Documents, or D3.js, is an awesome data visualization library. In this article, I’ll discuss one particularly compelling application of D3.js: map making. We’ll go through the common challenges of building a useful and informative web map, and show how in each case, D3.js gives you everything you need to make your map look and feel beautiful.Continue reading →
This article provides an overview on building a great Android application, from defining an idea to releasing an application to the store. Toptal developer Ivan Dimoski gives us a chance to learn from his experience in making Ooshies, an Android Live Wallpaper designed to give you a hug and make you feel loved each time you interact with your Android device.Continue reading →
Apple has released a fully functional WatchKit and SDK that enables iOS developers with all the tools to start building their Apple Watch applications.
This article provides quick overview of the Apple Watch functionalities from a developers perspective.Continue reading →
Linux namespaces make it possible to run a whole range of applications on a single real machine and ensure no two of them can interfere with each other, without having to resort to using virtual machines. In a single-user computer, a single system environment may be fine. But on a server, where you may want to run multiple services, it is essential to security and stability that the services are as isolated from each other as possible.Continue reading →
CakePHP is an amazing PHP framework, but it has a steep learning curve! It requires a good amount of research and training to become an expert.
This article describes few bad practices when writing a CakePHP code, and proposes the correct approach to avoid them.Continue reading →
ESA’s Rosetta mission soft-landed its Philae probe on a comet, the first time in history that such an extraordinary feat has been achieved. Closely after that, Microsoft Open Sourced .NET.
The first event is a great step for mankind, and the latter is even greater for Microsoft!Continue reading →
As is known worldwide, the Chinese government enforces strict censorship on the internet. Virtually everything is under the government’s surveillance. In order to be allowed to operate, ISPs and internet content providers in China usually have their own content filtering mechanism for blocking or removing the published content by its users, or even deleting users’ account directly if they are assumed to be illegal under the government policy.Continue reading →
There are thousands of different Android powered devices, with different screen sizes, chip architectures, hardware configurations, and software versions. Unfortunately, segmentation is the price to pay for openness, and there are thousands ways your app can fail on different devices.
Regardless of such huge segmentation, the majority of bugs are actually introduced because of logic errors. These bugs are easily prevented, as long as we get the basics right!
Here’s a quick rundown of the 10 most common mistakes Android developers make.Continue reading →
Git can support your project not just with version control, but also with collaboration and release management. Understanding how workflow patterns can help or hinder a project will give you the knowledge to evaluate and adapt your project’s Git processes effectively.Continue reading →
Wouldn’t it be great to develop for Google Glass without learning a new programming language, and even by just using knowledge common to all web developers? Yes, it is possible!
This article will introduce you to web development techniques you can use to build application used on Google Glass.Continue reading →
Since Apple’s launch of Swift this past June, many iOS developers have been struggling with the question of if, how, and when to transition from Objective-C to Swift. This article explores some important points to consider before jumping into Swift development.Continue reading →
Why are Rails Engines not used more often? I don’t know the answer, but I do think that the generalization of “Everything is an Engine” has hidden the problem domains that they can help to solve.Continue reading →
After 6 years of improving and working on Objective-C, Apple decided to throw another challenge at developers. Once again, iOS developers will need to learn a new programming language: Swift.
Swift 1.0 is already a stable and strong development platform, which is sure to evolve in interesting ways over the coming years. It is a perfect moment to start exploring this new language, as it is the future of iOS development.Continue reading →
One of the most capable, extensible and popular front-end frameworks is AngularJS, and one of the most useful components of the AngularJS framework is something called a directive. In this article, the four functions that execute as a directive is created and applied to the DOM will be explored.Continue reading →
How do we understand and interpret the huge amounts of data coming out of simulations? How do we visualize potential gigabytes of datapoints in a large dataset? In this article I will give a quick introduction to VTK and its pipeline architecture, and go on to discuss a real-life visualization example.Continue reading →
It’s been over 20 years since Tim Berners-Lee and Robert Cailliau specified HTML, which became the standard markup language used to build the Internet.
HTML5 was supposed to finally solve our problems and become “one standard to rule them all (browsers)”. This was probably one of the most anticipated technologies since creation of the World Wide Web.Continue reading →
React.js is a fantastic library. It is only one part of a front-end application stack, however. It doesn’t have much to offer when it comes to managing data and state. Facebook, the makers of React, have offered some guidance there in the form of Flux. I’ll introduce basic Flux control flow, discuss what’s missing for Stores, and how to use Backbone Models and Collections to fill the gap in a “Flux-compliant” way.Continue reading →
Today we have thousands of digital and printed resources that provide step-by-step instructions about developing all kinds of different web applications. Development environments are “smart” enough to catch and fix many mistakes that early developers battled with regularly. There are even many different development platforms that easily turn simple static HTML pages into highly interactive applications.
All of these development patterns, practices, and platforms share common ground, and they are all prone to similar mistakes caused by the very nature of web applications.Continue reading →
Hoodie is a progressive new library for front-end developers that adopts some remarkable new philosophies. Hoodie puts the control over app design completely in the hands of the front-end developers and user-experience experts, and frees users from the bonds of un-interruptible connectivity.Continue reading →
Data conversion, translation, and mapping is by no means rocket science, but it is by all means tedious. This article introduces MetaDapper, a .NET library that strives to simplify, streamline, and automate the data conversion process to the greatest extent possible.Continue reading →
Google Glass promises to revolutionize how we use our devices to interact with the world. But from a developer’s standpoint, what is so special about developing for the Glass? You’ll be glad to know that the answer is “Nothing!” Here’s a step-by-step tutorial that walks you through developing your first Google Glass app.Continue reading →
The popularity and usage of Scala is rapidly on the rise, as evidenced by the ever-increasing number of open positions for Scala developers.
In this article, Toptal engineer Matt Hicks introduces you to the power and capabilities of the Scala language.Continue reading →
Scientific computing is hard. But thanks to an ever-growing landscape of open source tools, really tough problems are becoming easier to solve. Toptal engineer Charles Cook provides an in-depth example, leveraging open source tools to solve a problem in computational fluid dynamics.Continue reading →
Let’s face it, robots are cool. In this post, Toptal Engineer Nick McCrea provides a step-by-step, easy-to-follow tutorial (with code samples) that walks you through the process of building a basic autonomous mobile robot.Continue reading →
This article introduces the basics of Machine Learning theory, laying down the common themes and concepts, making it easy to follow the logic and get comfortable with the topic.Continue reading →
The Cake development team considers CakePHP 3 to be a game changer. With the alpha version of CakePHP 3 now hot out of the oven, this article takes a fresh look at CakePHP as an effective modern framework for PHP development.Continue reading →
PHP makes it relatively easy to build a web-based system, which is much of the reason for its popularity. But its ease of use notwithstanding, PHP has evolved into quite a sophisticated language, with many nuances and subtleties that can bite developers, leading to hours of hair-pulling debugging. This article highlights ten of the more common mistakes that PHP developers need to beware of.Continue reading →
Ember Data is a library for robustly managing model data in Ember.js applications. Ember Data provides a more flexible and streamlined development workflow, minimizing code churn in response to what would otherwise be high impact changes. This thorough guide introduces Ember Data’s key constructs and paradigms, demonstrating the value it can provide to you as a developer.Continue reading →
Which Ruby implementation is right for your project? While the reference implementation (Ruby MRI) remains the interpreter of choice, an alternate Ruby implementation may be right for your project, depending on your operational goals and constraints.
This article showcases the Ruby interpreter implementations and runtimes available today, discussing the advantages and disadvantages of each.Continue reading →
Web services and their APIs abound. Unfortunately, the vast majority are difficult to use. Reasons range from poor design, to lack of documentation, to volatility, to unresolved bugs, or in some cases, all of the above.
Follow the guidance in this post to help ensure that your web API is clean, well-documented, and easy-to-use. Such APIs are truly rare and are therefore much more likely to be widely adopted and used.Continue reading →
While Rails is easy to use, it is also not hard to misuse. This article looks at 10 common Rails pitfalls, including how to avoid them and the problems that they cause.Continue reading →
For all too many companies, it’s not until after a breach has occurred that security becomes a priority. An effective approach to IT security must, by definition, be proactive and defensive. This post focuses on 10 common and significant web-related IT security pitfalls to be aware of, including recommendations on how they can be avoided.Continue reading →
It’s astounding how few business owners properly account for the real cost of their labor. This article presents tried and true methods – including an online calculator – for calculating the real cost of your employees and consultants, enabling you to perform a sound financial analysis when faced with the “employee vs. consultant” dilemma.Continue reading →
In this follow-up to his first highly popular AngularJS tutorial, Toptal engineer Raoni Boaventura guides you through the steps of setting up your project, including scaffolding, dependency management, and preparing it for testing.Continue reading →
A year after Google’s launch of Polymer, Toptal engineer Alejandro Hernandez takes it out for a test drive to see if it’s yet ready for prime time. This post explores the maturity and stability of Polymer.js as a foundation for large-scale application development. The results and conclusions from this analysis are provided, along with an introductory overview of the technology.Continue reading →
Python’s simple, easy-to-learn syntax can mislead Python developers – especially those who are newer to the language – into missing some of its subtleties and underestimating the power of the language.
In this article, Toptal’s Martin Chikilian presents a “top 10” list of somewhat subtle, harder-to-catch mistakes that can trip up even the most advanced Python developer.Continue reading →
C# is a powerful and flexible language with many mechanisms and paradigms that can greatly improve productivity. Having a limited understanding or appreciation of its capabilities, though, can leave one in the proverbial state of “knowing enough to be dangerous”. This article describes 10 of the most common programming mistakes made, or pitfalls to be avoided, by C# programmers.Continue reading →
Once you step beyond the comfortable confines of English-only character sets, you quickly find yourself entangled in the wonderfully wacky world of UTF-8.
Indeed, navigating through UTF-8 related issues can be a frustrating and hair-pulling experience. This post provides a concise cookbook for addressing these issues when working with PHP and MySQL in particular, based on practical experience and lessons learned.Continue reading →
A potentially critical problem, nicknamed “Heartbleed”, has surfaced in the widely-used OpenSSL cryptographic library. The vulnerability is particularly dangerous in that potentially critical data can be leaked and the attack leaves no trace.
As a user, chances are that sites you frequent regularly are affected and your data may have been compromised. As a developer or sys admin, sites or servers you’re responsible for are likely to have been affected.
Here are the key facts you need to know about this dangerous bug and how to mitigate your vulnerability.Continue reading →
This post explores some of the more common types of GPS tracking errors to expect with low-end GPS devices, providing an understanding of what causes them as well as some approaches for correcting them. The techniques outlined can provide users of low-end GPS devices with a reasonable level of automated improvement of the accuracy of their GPS tracks.Continue reading →
I often hear iOS developers ask some variant of the same key question: “What’s the best way to develop a UI in iOS: through Storyboards, NIBs, or code?”
Answers to this question, explicitly or implicitly, tend to assume that there’s a mutually exclusive choice to be made, one that is often addressed upfront, before development.
I’m of the opinion that there’s no single choice to be made. Rather, each option has its strengths and weaknesses—and there’s no need to use any one of them in isolation.Continue reading →
Go is a relatively new language with a number of attractive features. It’s great for writing concurrent programs, thanks to an excellent set of low-level features for handling concurrency. In many cases, though, a handful of reusable abstractions over those low-level mechanisms makes life much easier. This introductory tutorial walks you through building one such abstraction: a wrapper that can turn any data structure into a transactional service in Go.Continue reading →
The recent resurgence in Artificial Intelligence has been powered in no small part by a new trend in machine learning, known as “Deep Learning”. In this article, I’ll introduce you to the key concepts and algorithms behind Deep Learning, beginning with the simplest building block.Continue reading →
I love and use Django in lots of my personal and client projects, mostly for those involving relational databases and more classical web applications. However, by design, Django is very tightly coupled with its ORM, Template Engine System, and Settings object. Plus, it’s not a new project: it carries a lot of baggage from the past to remain backwards compatible.
In a few of my client projects, we’ve chosen to give up on Django and use a micro framework like Flask, typically when the client wants to do some interesting stuff with the framework. At the same time, we often need user registration, login, and more, all of which is easily handled with Django.
The question emerged: is Django an all-or-nothing deal? Should we drop it completely from the project, or is there a way to combine some it with the flexibility of other frameworks?Continue reading →
Writing concurrent programs is hard. Having to deal with threads, locks, race conditions, and so on is highly error-prone and can lead to code that is difficult to read, test, and maintain. This post provides an introductory guide to the Scala-based Akka framework, showing (with code samples) how Akka facilitates and simplifies the implementation of robust, concurrent, fault-tolerant applications.Continue reading →
With the increasingly ubiquitous nature of mobile devices and applications, if you’re not already thinking about mobile apps, you probably should be. This post focuses on methodologies and tools to employ, and pitfalls to avoid, in the development of highly functional, intuitive, and easy-to-use mobile web apps.Continue reading →
In a recent phone screen, I decided to use a class attribute in my implementation of a certain Python API. My interviewer challenged me, questioning whether my code was syntactically valid, when it was executed, etc. In fact, I wasn’t sure of the answers myself. So I did some digging.
Python class attributes. No one really knows when (or how) to use ‘em. In this guide, I walk through common pitfalls and conclude with a list of valid use-cases that could save you time, energy, and lines of code.Continue reading →
Elasticsearch provides a powerful, scalable tool for indexing and querying massive amounts of structured data, built on top of the Apache Lucene library.
Building on the foundation of Elasticsearch and the Elasticsearch-Ruby client, we’ve developed and released our own improvement (and simplification) of the Elasticsearch application search architecture that also provides tighter integration with Rails. We’ve packaged it as a Ruby gem named Chewy.
This post discusses how we accomplished this, including the technical obstacles that emerged during implementation.Continue reading →
The need to adapt legacy code and systems to meet modern day performance and processing demands is widespread. This post provides a case study of the use of Erlang and CloudI to adapt legacy code, consisting of a decades-old collection of multi-user game software written in C, to the 21st century.Continue reading →
Testing. It always seems to get left to the last minute, then cut because you’re out of time, budget, or whatever else. Management wonders why developers can’t just “get it right the first time”, and developers (especially on large systems) can be taken off-guard when different stakeholders describe different parts of the system.
With behavior-driven development, you can turn testing into a shared process that focuses on the behaviors of the system, why they matter, and who cares.Continue reading →
Making a basic Android app is easy. But making it reliable, scalable, and robust, on the other hand, can be quite challenging. With thousands of available devices pumped out from tons of different manufacturers, assuming that a single piece of code will work reliably across phones is naive at best. Segmentation is the greatest tradeoff for having an open platform, and we pay the price in the currency of code maintenance, which continues long after the app passes the production stage.
In this post, we’ll walk through a solution: automated crash reporting with ACRA and a Cloudant back-end, all visualizable with acralyzer.Continue reading →
As modern web applications do more and more on the client-side (the fact itself that we now refer to them as “web applications” as opposed to “web sites” is quite telling), there has been rising interest in client-side frameworks. There are a lot of players in this field but for applications with lots of functionality and many moving parts, two of them stand out in particular: Angular.js and Ember.js.
Angular.js has already been introduced on this blog, so we’re going to focus on Ember.js in this post, in which we’ll build a simple Ember application to catalog your music collection. You’ll be introduced to the framework’s main building blocks and get a glimpse into its design principles.Continue reading →
When people think computational geometry, in my experience, they typically think one of two things:
- Wow, that sounds complicated.
- Oh yeah, convex hull.
In this post, I’d like to shed some light on computational geometry, starting with a brief overview of the subject before moving into some practical advice based on my own experiences in computational geometric programming with Python.Continue reading →
I’ve been an Engineer at Toptal for just about one year now, working on the same project since I joined the network: Ondello, a service that connects doctors and patients over WebRTC.
When I first joined Ondello, I was hired as a Senior Ruby on Rails Developer, tasked to build a service up from scratch. These days, we’re a team of multiple developers working on a fairly large, complex system.
With this post, I’d like to share the story behind Ondello. Specifically, I’d like to talk about: how a simple application became not-so-simple, and how our use of cutting-edge technologies posed problems I’d never considered before.Continue reading →
More often than not, the software we write directly interacts with what we would label as “dirty” services. In layman’s terms: services that are crucial to our application, but whose interactions have intended but undesired side-effects—that is, undesired in the context of an autonomous test run.
For example: perhaps we’re writing a social app and want to test out our new ‘Post to Facebook feature’, but don’t want to actually post to Facebook every time we run our test suite.
unittest library includes a subpackage named
unittest.mock—or if you declare it as a dependency, simply
mock—which provides extremely powerful and useful means by which to mock and stub out these undesired side-effects.
As a veteran telecommuter through multiple jobs in my career, I have witnessed and experienced the many joys of being a remote worker. As for the horror stories, I have more than a few I could tell. With a bit of artistic inclination and a talent for mathematics, I also have a fascination with patterns: design patterns, architectural patterns, behavioral patterns, social patterns, weather patterns—all sorts of patterns!
When I first encountered anti-patterns, I discovered a trove of wisdom I wish I had known before I had learned the hard way. Anti-patterns are recognizable repeated patterns that contribute significantly to failure. For example, the manager that keeps interrupting the employee in order to see if the employee is getting any work done is engaging in an anti-pattern that serves to prevent the employee from getting any work done!
Based on my own experiences and experiences of friends and co-workers, I am assembling descriptions of anti-patterns related to telecommuting.Continue reading →
If it ain’t broke, don’t fix it.
It’s a well known phrase, but as we know, most of the human technological progress was made by people who decided to fix what isn’t broken. Especially in the software industry one could argue that most of what we do is fixing what isn’t broken.
Fixing functionality, improving the UI, improving speed and memory efficiency, adding features: these are all activities for which it is easy to see if they are worth doing, and then we argue for or against spending our time on them. However, there is an activity, which for the most part falls into a gray area: refactoring, and especially large scale refactoring.Continue reading →
In 2007, Bennett Haselton revealed a minor hack with major implications: querying ranges of numbers on Google would return pages of sensitive information, including Credit Card numbers, Social Security numbers, and more. While Haselton’s hack was addressed and patched, I was able to tweak his original technique to bypass Google’s filter and return the same old dangerous results.Continue reading →
If you haven’t tried AngularJS yet, you’re missing out. The framework consists of a tightly integrated toolset that will help you build well structured, rich client-side applications in a modular fashion—with less code and more flexibility.
Congratulations, you’re an independent developer. From beginnings working maybe as a tester you’ve progressed to a team developer, then a senior developer, and now you’ve made another leap, the biggest of them all, to working directly with clients.
But where the other transitions were linear, this last one was exponential. While in the past you got your marching orders from an employer that worked with clients or was itself in the software business, now all those responsibilities that were once distributed between expert-testing, program management, etc., are all yours. And now you’re working with clients who are not in the software business; they’re in another business that needs a piece of software, and they don’t have a clear and precise vision of what they want from you. This is a far greater challenge than it appears.Continue reading →
Database tuning can be an incredibly difficult task, particularly when working with large-scale data where even the most minor change can have a dramatic (positive or negative) impact on performance.
In mid-sized and large companies, most database tuning will be handled by a Database Administrator (DBA). But believe me, there are plenty of developers out there who have to perform DBA-like tasks. Further, in many of the companies I’ve seen that do have DBAs, they often struggle to work well with developers—the positions simply require different modes of problem solving, which can lead to disagreement among coworkers.
In this article, I’d like to both provide developers with some developer-side database tuning tips and explain how developers and DBAs can work together effectively.Continue reading →
Inexperienced programmers often think that Java’s automatic garbage collection frees them from the burden of memory management. This is a common misperception: while the garbage collector does its best, it’s entirely possible for even the best programmer to fall prey to crippling memory leaks.
In this post, I’ll explain how and why memory leaks occur in Java and outline an approach for detecting such leaks with the help of a visual interface.Continue reading →
Python is amazing.
Surprisingly, that’s a fairly ambiguous statement. What do I mean by ‘Python’? Do I mean Python the abstract interface? Do I mean CPython, the common Python implementation? Or do I mean something else entirely? Maybe I’m obliquely referring to Jython, or IronPython, or PyPy. Or maybe I’ve really gone off the deep end and I’m talking about RPython or RubyPython (which are very, very different things).
While the technologies mentioned above are commonly-named and commonly-referenced, some of them serve completely different purposes (or at least operate in completely different ways). In this post, I’ll start from scratch and move through the various Python implementations, concluding with a thorough introduction to PyPy, which I believe is the future of the language.Continue reading →
Building games for the iOS platform can be an enriching experience in terms of both financial and personal growth. Recently, I deployed a Cocos2D-based game to the App Store. In this post, I’ll explain the process behind developing games for iOS, from Cocos2D through to publishing.Continue reading →
From the very first days in our lives as programmers, we’ve all dealt with data structures: Arrays, linked lists, trees, sets, stacks and queues are our everyday companions, and the experienced programmer knows when and why to use them.
In this article we’ll see how an oft-neglected data structure, the trie, really shines in application domains with specific features, like word games.Continue reading →
Web Developers often fail to consider the consequences of thousands of users accessing our applications at the same time. Perhaps it’s because we love to rapidly prototype; perhaps it’s because testing such scenarios is simply hard.
Regardless, I’m going to argue that ignoring scalability is not as bad as it sounds—if you use the proper set of tools and follow good development practices. In this case: the Play! framework and the Scala language.Continue reading →
A few years ago, driven by my curiosity, I took my first steps into the world of Forex by creating a demo account and playing out simulations (with fake money) using the Meta Trader 4 trading platform.
After a week of ‘trading’, I’d almost doubled my ‘money’. Spurred on by my own success, I dug deeper and eventually signed up for a number of forums. Soon, I was spending hours reading about trading systems (i.e., rule sets that determine whether you should buy or sell), custom indicators, market moods, and more.Continue reading →
Sometimes I hear people complaining about their clients, saying that they insist on using Rails, that they’ve had too much Kool Aid. If they are recruiters, they almost feel sick in the stomach from perspective of having to find yet another ROR primadona. From the programmers point of view it sometimes looks like clients don’t have a clue. However, I believe most clients know their options just fine and they still decide to go with Rails.Continue reading →
Sometimes, clients give us feature requests that we really don’t like. It’s not that we don’t like our clients, we love our clients. It’s not that we don’t like the feature, most client-requested features are aligned perfectly with their business goals and income. Sometimes, the reason we don’t like a feature request is that the easiest way to solve it is to write bad code, and we don’t have an Elegant Solution on the top of our heads. This will throw many of us on fruitless searches through RubyToolbox, github, developer blogs, and stackoverflow looking for a gem or plugin or example code that will make us feel better about ourselves.
Well, I’m here to tell you, it’s okay to write bad code. Sometimes, bad code is easier to refactor into beautiful code than a poorly thought out solution implemented under a time-crunch.Continue reading →
Node.js shines in real-time web applications employing push technology over websockets. What is so revolutionary about that? Well, after over 20 years of stateless-web based on the stateless request-response paradigm, we finally have web applications with real-time, two-way connections, where both the client and server can initiate communication, allowing them to exchange data freely. This is in stark contrast to the typical web response paradigm, where the client always initiates communication. Additionally, it’s all based on the open web stack (HTML, CSS and JS) running over the standard port 80.Continue reading →
It’s always fun to put your programming skills on display. A while back, I figured it’d be cool to try and control my laptop via my Android mobile device. Think about it: being able to play and pause music, start and stop programming jobs or downloads, etc., all by sending messages from your phone. Neat, huh?Continue reading →
After much thought, I decided to engineer a solution to the idea abandonment problem. I call it the ‘Init’ project (or Init.js).
The core of the idea is to have a single project to start them all, to let the developer or the technical founder make all of the essential decisions at once, and receive an appropriate starting template based on those decisions.Continue reading →
Demand within the web design scene today has changed over the past few years: designers with front-end skills, and front-end developers with design skills, are more and more in demand. Yes, you could argue that the jobs are completely different—and maybe you straight-up don’t like one of them—but truth be told, in my six years as a freelance web developer and twelve years as a designer, I’ve learned that it’s much harder to get by as just a web designer or just a front-end developer.
Wearing both hats has a lot of advantages: from a professional perspective alone, you can find work more easily and charge a higher rate because you’re bringing more to the table.Continue reading →
At Toptal, we’re always looking for the best freelancers around. But what makes a freelancer truly great? Luis Martinho, one of our top developers, is beloved by his clients — so we sat down with him to talk about freelancing, technologies, and paying your taxes.Continue reading →
But this isn’t just another article about cohort analysis. If you already know the importance of the topic and want to skip the introduction, you can jump to the simulator, where you can either simulate startup growth based on retention, churn, and a number of other factors, or analyze your own PayPal logs with the code I’ve open sourced.
If, however, you don’t realize that these are some of the most important metrics around–continue reading.Continue reading →
Clouds must be efficient to provide useful fault-tolerance and scalability, but they also must be easy to use.
CloudI (pronounced “cloud-e” /klaʊdi/) is an open source cloud computing platform that is most closely related to the Platform as a Service (PaaS) clouds. CloudI differs in a few key ways, most importantly: software developers are not forced to use specific frameworks, slow hardware virtualization, or a particular operating system. By allowing cloud deployment to occur without virtualization, CloudI leaves development process and runtime performance unimpeded, while quality of service can be controlled with clear accountability.Continue reading →
I live in Córdoba, Argentina, approximately 130 kilometers (~80 miles) away from the lake where I kitesurf. Thats roughly a two-hour drive, which I can deal with. But I cant deal with the fact that weather forecasts are inaccurate. And where I live, good wind conditions last just a couple of hours. The last thing you want to do is clear up your Monday schedule to go kitesurfing and find yourself cursing the gods on a windless lake after two hours of driving.
I needed to know the wind conditions of my favorite kitesurfing spot—in real time. So I decided to build my own weather station.Continue reading →
Everyone has their own set of tools. As a PHP developer, one of my favorites is a Rapid Application Development framework called “Nooku”. In the words of the development group: “Nooku is more of a web development toolkit than a framework”
In case you are not familiar with it, have a look. It’s an open source project that makes heavy use of industry accepted design patterns to produce highly componentized applications that are easily extensible and reusable (initially created by one of the lead Joomla developers). Out of the box, Nooku gives you a great deal to help get projects off the ground faster. A small, but strong sample:Continue reading →
Porn is a big industry. There aren’t many sites on the Internet that can rival the traffic of its biggest players.
And juggling this immense traffic is tough. To make things even harder, much of the content served from porn sites is made up of low latency live streams rather than simple static video content. But for all of the challenges involved, rarely have I read about the developers who take them on. So I decided to write about my own experience on the job.Continue reading →