Campendium v2019: A Summary of Recent Updates
This year has brought a handful of exciting changes for Campendium, one of End Point’s long-time clients, by yours truly. Created by campers for campers, Campendium has thousands of listings of places to camp, from swanky RV parks to free remote destinations, vetted by a team of full-time travelers and reviewed by over 200,000 members. I thought I would take some time to summarize these recent updates.
Maps and Clustering
Campendium uses Mapbox for map rendering to display campgrounds and locations throughout North America. One of the new features added this year was clustering of campground locations, where campgrounds are grouped together and presented in a “cluster” with a size relative to how many campgrounds are in the cluster.
If a user is searching for campgrounds in a broad location, they can see where campgrounds might be more densely grouped by location. Once a user zooms in zoom in a couple of clicks, the campgrounds are no longer clustered and individual campgrounds locations can be seen. While working on this update, we spent a good amount of our time tweaking and troubleshooting the optimal clustering behavior to provide the most benefit to those searching for a …
rails solr sunspot react maps javascript user-interface ruby clients case-study
Prepare for .NET Core 3 and .NET 5
Photo by Caspar Camille Rubin on Unsplash, edited by Juan Pablo Ventoso
Introduction
It’s been a while now since .NET Core is out there: It was released back in June 2016 and it kept growing since then. The main advantages when comparing with .NET Framework is that .NET Core is free, open-source and cross-platform. It also has several performance improvements that gains up to 600% increase for some particular functions like converting elements to a string, or more than 200% for some LINQ queries, and a general performance boost in application startup.
But it also has drawbacks: Some third party libraries are still not fully supported, so while they can still be used, the compiled results will only be portable to Windows. Also, .NET Core 2.2 (the latest release to date) doesn’t yet have support for Windows Presentation Foundation (WPF) or Windows Forms applications… But it looks like this is going to change soon.
Next stop: .NET Core 3
In the 2019 Build Conference that took place in May, .NET Core 3 was announced: It’s expected to be released in November this year, and it will finally include support for Windows desktop development (WPF, UWP and Windows Forms). It will also …
dotnet
Ruby Gem Spotlight: DRG
Photo by Ioan Sameli, used under CC BY-SA 2.0, cropped from original.
The DRG gem is “a Ruby utility to help automate dependency management using Bundler.” I use DRG to manage gem versions in all of my Rails projects and have found it to have several useful features for managing project dependencies in Gemfiles.
Pinning with ‘drg:pin’
DRG works by adding a variety of Rake tasks for updating your Gemfile. I like to start with rake drg:pin:minor
to pin a project’s Gemfile to the approximate minor version of the gems currently installed in a project’s Gemfile.lock
. This fills in missing version information where needed, and updates the Gemfile to better reflect the state of the currently-installed gems.
Here’s an example of a Gemfile from a freshly generated Rails project before and after running rake drg:pin:minor
:
Before:
gem 'bootsnap', '>= 1.1.0', require: false
gem 'drg'
gem 'puma', '~> 3.11'
gem 'rails', '~> 5.2.3'
gem 'sass-rails', '~> 5.0'
gem 'sqlite3'
gem 'uglifier', '>= 1.3.0'
group :development, :test do
gem 'byebug', platforms: [:mri, …
ruby
A tribute to Kyle Simpson’s JavaScript book series
Photo by othree, used under CC BY 2.0
Inspired by the Ruby Fight Club, a group of us have been reading Kyle Simpson’s You Don’t Know JS series (1st edition; in 2020 Kyle started publishing drafts of the 2nd edition of the books). These books are a great source of inspiration and available for free. I meet weekly with our small group to discuss chapters from these books. Each time we have a presenter who walks us through the chapter that we all read beforehand.
During these sessions we have learned a lot about JavaScript, but also about preparing presentations. The increasing quality level of the meetings was noticable each week. I think we all owe a large thanks to Kyle Simpson. In this article I will focus on the book “You Don’t Know JS: ES6 and Beyond”.
Past, present and future
ECMAScript (ES for short) was versioned with a small number up until now, like 5. ES1 and ES2 were not widely known or implemented. ES3 was used by Internet Exporer 6–8 and Android 2.x. ES4 never came out. ES5 came out in 2009. ES5.1 came out in 2011 and was widely used by Firefox, Chrome, Opera, Safari, etc.
Now, version names will be in the format ES
In the …
javascript books development
GraphQL Client Libraries
Photo by Pietro De Grandi on Unsplash
Last week I covered some of the more popular GraphQL libraries for servers. This post will cover some options for GraphQL clients. Similarly to last week, the examples in this post won’t necessarily be everything you’d need to get a server running; instead, they’re designed to give you an idea of what it might be like to use each library. If you’re unfamiliar with GraphQL, please check out my earlier post GraphQL — An Alternative to REST for more information.
Apollo Client
This is the client with which I’m the most familiar—I’ve used its React version, so I’ll show an example of how you’d use it with a React component. However, there are also versions available for Angular, Vue.js, native iOS and Android, and Scala.js.
First we need to set up our Apollo client so it knows where our server is:
import ApolloClient from "apollo-boost";
const client = new ApolloClient({
uri: "https://your-server.com"
});
Next, you need to make sure the root component of your application is wrapped in an ApolloProvider
:
class App extends Component {
render() {
return (
<ApolloProvider client={client}>
<RestOfYourApp …
graphql
Mocking asynchronous database calls in .NET Core
Photo by Björn Söderqvist, used under CC BY 2.0
Introduction
Whenever we like—or are forced!—to develop using a TDD (test-driven development) approach or a more traditional practice, unit testing should be always a part of our development process. And when it comes to .NET Core, no matter what framework we choose (xUnit, MSTest or other), we will probably need to use a mock library.
What is mocking? By definition, it’s making an imitation. Objects usually depend on other objects, which could rely on database connections, local files or external APIs. So when we need to test the behavior of a particular object, we will have to isolate its dependencies, replacing those objects with fake versions. And that’s where mocking—and the Moq library—comes into place: it’s a set of classes that allows us to easily create and handle those fake objects.
So, assuming we already have a .NET Core solution with a test project included, all we need to do to add Moq is install the package from the NuGet console in Visual Studio:
Install-Package Moq
Mocking data with async calls support
One of the first showstoppers I’ve encountered when trying to add unit tests to an existing project was to mock …
dotnet testing
GraphQL Server Libraries
Photo by Jon Flobrant on Unsplash
This post is a followup to my previous post, GraphQL — An Alternative to REST. Please check that out for an introduction to GraphQL and what makes it different from other API solutions. I’ve collected a list of some of the currently-maintained GraphQL libraries for a few different languages, along with some examples (most of which aren’t fully functional on their own, they’d need more configuration) so you can see what it might be like to use GraphQL in your project. I’ll be focusing on the ways each of these libraries implement GraphQL and what you’d need to do to start a project with each of them, so if you have questions about GraphQL itself, please check out my other blog post.
Apollo Server (JavaScript/TypeScript)
Apollo GraphQL has libraries for both a GraphQL server and client (which I’ll discuss later). Apollo Server can be used both as a standalone server as well as with libraries like Express. Apollo Server is the server library I have the most experience with—I wrote a server last year using Express and Apollo Server, along with a client that used Apollo Client. I’m a fan of the flexibiliy of Apollo, but it takes more work to set up than …
graphql api mongodb nodejs django docker containers
An Introduction to Neural Networks
Photo by Sudhamshu Hebbar, used under CC BY 2.0
Earlier this year I wrote a post about my work with a machine-learning camera, the AWS DeepLens, which has onboard processing power to enable AI capabilities without sending data to the cloud. Neural networks are a type of ML model which achieves very impressive results on certain problems (including computer vision), so in this post I give a more thorough introduction to neural networks, and share some useful resources for those who want to dig deeper.
Neurons and Nodes
Neural networks are models inspired by the function of biological neural networks. They consist of nodes (arranged in layers), and the connections between those nodes. Each connection between two nodes enables one-way information transfer: a node either receives input from, or sends output to each node to which it is connected. Nodes typically have an “activation function”, parameterized by the node’s inputs, and its output is the result of this function.
As with the function of biological neural networks, the emergence of information processing from these mathematical operations is opaque. Nevertheless, complex artificial neural networks are capable of feats such as …
machine-learning artificial-intelligence