An introduction to smart contracts

by

You’re probably familiar with the basic idea of a contract. Let’s say, for example, that you’d like to buy a house. In the simplest case, you’d need a seller (someone who is willing to sell their house) and a lump sum of money; you and the seller could then create and execute a contract stating that you agree to exchange the money for ownership of the house. 

SIM swapping: Do hackers have your number?

by

Recently, I was browsing through the archives of the podcast Reply All (well worth doing, if you’re interested in unusual stories about how technology impacts our lives) when I came across an episode titled “The Snapchat Thief”. 

The gist of this episode is as follows: a young woman reports that her Snapchat account has been hacked, and asks asks the hosts of the show to help her investigate. She’s received emails from Snapchat telling her that her password has been changed and her account is now associated with a different phone number — and she’s also received threatening texts from the hacker, warning her not to report the hack to Snapchat. She’s spooked, and has no idea how the hacker gained access to her account, or even why they would want to. 

What’s new in iOS 13

by

On September 19, 2019, Apple released the latest major update to its iPhone and iPad operating systems: iOS 13. This iOS version introduces several significant changes that developers will need to be prepared to handle going forward. In this post, I’ll give a quick overview of the most impactful new features, and then dive into two especially important updates: dark mode and scene sessions.

Building a modular iOS app

by

At Grio, we’re often asked to improve our clients’ existing web and mobile apps — fixing problems, adding features, etc. — but many of our most interesting and exciting projects involve building a brand-new app entirely from scratch. I’ve had that opportunity on a recent project, which means that my colleagues and I have been thinking through some of the foundational decisions that can really only be made when you’re starting fresh. One of those decisions is monolithic vs. modular. 

You Need a Supervisor

by

Several of our folks recently attended ElixerConf in Colorado, where Grio’s John Palgut gave a lightning talk on protecting your app from crashes by using a Supervisor – enjoy!

 

Test, Never Trust: Dealing with external services when using Elixir and Phoenix

by

In his short story Thin Cities 3, author Italo Calvino describes a city reduced to its plumbing — a network of pipes, stripped of the streets, walls, and floors that would ordinarily conceal them. I like to picture this “thin city” when I’m testing software; diving beneath the superficial layers to probe the essential connections that keep information and experiences flowing. 

Fostering early collaboration between development and design

by

User-friendly software doesn’t happen by accident — the best products are designed intentionally, thoughtfully, and thoroughly before implementation begins. However, that doesn’t mean that developers shouldn’t play a role in the early stages of a project. In this post, I’ll talk about why you should bring your developers into design discussions and reviews, and recap a successful design-development collaboration on one of Grio’s recent client projects. 

Streamlining mobile development with CI and CD

by

Continuous integration (CI)  and continuous delivery (CD) have significantly improved both my productivity as a developer and my team’s ability to execute smoothly and efficiently on a variety of projects. In this post, I’ll explain how CI and CD work, talk a bit about the benefits of these practices, and walk through an example that illustrates how to set up your own CI/CD systems. 

Measuring software quality

by

The word “quality” first appeared in the English language around 1300. Technically, “quality” is a neutral term, referring to the character or nature — good, bad, or otherwise — of a person, place, or thing. However, when we use this word today, we’re often implicitly pointing to high quality. Most modern definitions of “quality” indicate that the term is connected to attributes like lack of risk, ease of trust, superiority to competition, and high value.