Josh Pitzalis

Making the Web Stuffs

Read this first

Design Problems in the Blockchain Space

One of the reasons blockchain applications have been notoriously difficult to use is because the industry has been led by engineers whose primary focus has been security.

If the technology is to be more widely adopted then we’re going to have to find a balance between the blockchain’s machine requirements and it’s human needs.

Some things we could do to make blockchain applications more intuitive are to stay away from using jargon, providing guidance while people are using applications, ensuring constant feedback during use, and calling attention to one-way doors.

Staying Away From Jargon

Let’s make sure people don’t have to know the lingo to be able to use our apps. The focus should always be on what something lets you do and not how it works.

The danger here is an oversimplification. When we must communicate something specific and complicated, let’s rely on analogies or concepts...

Continue reading →

An Ode To Hill Charts

Basecamp came out with a new kind of to-do list called a hill chart. This is what they look like.


Things on the left are being figured out, anything on the right means it’s being done. Stuff on the far left is vague and need a lot of figuring out while stuff on far right is almost finished.

Every time you do some work, you manually move the task a little further along the line. There no science to it, it’s not automatic, you just ballpark it and move it to where it feels right.

That’s it.

What I love most about the hill chart is that it has turned my workload into a menu. Some days I wake up and feel like figuring things out, other days I just want to get stuff done. Depending on how I feel I can pick a task with just the right consistency for the day.

Sometimes I need a boost so I’ll pick a task on the far right. Finishing stuff that is almost finished makes it feel like I’m...

Continue reading →

I Recommend…

Productivity #

  • Workflowy for organising your head.
  • Basecamp for organising stuff in teams.
  • Beeminder for sticking to commitments.
  • Best calculator for OSX Numi.

Work #

  • The Creative Class for how to freelance like a pro.
  • Bonsai for invoicing and payments.

Design #

  • Monochrome palette builder.
  • Contrast accessibility colour picker for OSX.
  • TinyJPG for image compression.
  • Typeface pairing inspiration:Typewolf.

Development #

  • Learn State Machines: Learn how to use finite state machines in javascript applications.
  • Javscript Testing: Learn how to test javascript applications.

Marketing #

  • Clickminded is just the best SEO course.

Other #

  • Ryan Holiday’s Newsletter for fantastic book recommendations each month.

Continue reading →

Hire Me

“We hired Josh together with a small group of freelancers to build a prototype app for us in a week. They did it! And, we are delighted with the results. Josh was a delight to work with; always cooperative, creative, responsive and technically excellent at his job - went above and beyond. I wouldn’t hesitate to recommend him to anyone.”

Bec Evans & Chris Smith, founders of Prolifiko.

Working with Josh was a great experience. His sense of design, aesthetics and flow of information was amazing. I am very pleased with his work and recommend him very highly.

Raju Arora, Founder of Kautilya Publishing.

Joshua was extremely detail oriented and thorough in this project. I would highly recommend him to anyone wanting a quality developer.”

Eric Schuster, Founder of Fresh Look Web Design.

If you are looking for someone that will listen to your idea, understand what needs to be done, and...

Continue reading →

Now I Am…

  • Still living in lovely Goa, India.
  • Working on a project management application for small cooperatives.
  • Exploring ways to make blockchain applications more intuitive to use. At the moment I’m cold auditing dapps I like and then pitching the founders with possible improvements. If you have an ethereum app you’d like me to audit for usability get in touch.
  • Trying to get my body fat down to 9% this year. I’m at about 18% so there’s a while to go. You can read more about the journey so far here.
  • Taking bookings for late April 2019. Here is more about what it’s like working with me.

If you’d like updates on things, I make I have a monthly(ish) newsletter for you called Business Building Adventures.

Continue reading →

A Basic Smart Contract

pragma solidity ^0.4.24
contract Campaign {

    address public owner;
    uint public deadline;
    uint public goal;
    uint public fundsRaised;
    bool public refundsSent;

    event LogContribution(address sender, uint amount);
    event LogRefundsSent(address funder, uint amount);
    event LogWithdrawal(address beneficiary, uint amount);

    struct FunderStruct {
        address funder;
        uint amount;

    FunderStruct[] public funderStructs;

    constructor ( uint _duration, uint _goal) public {
        owner = msg.sender;
        deadline = block.number + _duration;
        goal = _goal;

    function isSuccess() public constant returns(bool isIndeed) {
        return (fundsRaised >= goal);

    function hasFailed() public constant returns(bool hasIndeed) {
        return (fundsRaised < goal && block.number > deadline );


Continue reading →

Drafting Copy

A lot of interface design is writing copy. There are more words on a web page than anything else. The content is all words, words are in the navigation, it’s on buttons, in the headings, it’s everywhere.

I don’t think of myself as a copywriter and I don’t present my self as one, but it’s hard to draw a clear line between web design and writing copy. I have found myself having to learn more and more about writing effective copy as I design more and more applications.

I’ve put together a list of questions I run through when I’m putting words together. You don’t need to check everything off. This is not a recipe.

First Draft #

  • Do they know what the thing does and what it’s obvious benefit is An easy way to get your pen to paper is to call up a friend, or catch up over coffee, and tell them about the thing. Don’t do a sales pitch, just tell them what it is and why its interesting. It...

Continue reading →


Given the amount of advertising we are exposed to on a daily basis, most people now instinctively resist anything that feels like marketing.

People do not like being sold to.

In our hyper-connected social world, most people now hear about interesting ideas from each other. One way to sidestep the growing resistance to marketing is by finding ways to get people to talk to each other about your business.

Word of mouth is ultimately the most effective and most desirable form of marketing for any business.


My first experience designing a campaign based on helping people talk to each other was for a cafe in 2014.

We had a tiny amount of money to play with and just over a month to prepare.

The first step was to design a website. This was going to be the first glimpse of our business out in the world. We needed something to direct people to when we talked...

Continue reading →

Immutable Arrays

Copy an array…

clone = array => [...array]

Add something to the end of an array…

push = array => [...array, thing]

Remove the last item in an array…

pop = array => array.slice(0,1)

…or the first item…

shift = array => array.slice(1)

or an item at a specific index…

delete = i => array => [...array.slice(0,i), ...array.slice(i+1)]

If you are unsure whether a method mutates or not then checkout

Thank you Luke Jackson.

View →

Switching Between Staging and Production Firebase Deploys In A Create-React-App

When building web applications on firebase, it is always a good idea to push the final application to the brand new firebase project.

Go into your firebase console and setup a new firebase project. Explicitly name this project something-something-PRODUCTION so that there is never any confusion between your original project and this new production one.

Your original project becomes your staging server. A safe place for you to try out new features and test things before you push the changes to your production server.

Your production server is the one you connect your domain to and share with the world.

You can flip between the two by connecting both firebase projects to your web application.

In the command line navigate into your project and type:

firebase use --add

The command line will ask you which project you want to connect to, scroll through the available projects till you...

Continue reading →