Categories
Careers

Ways to Make Money as a Developer — Selling and Promoting

Software development is a great skill to have in the modern world.

We can take advantage of it by making money in multiple ways.

In this article, we’ll look at some ways we can make money as a developer.

Sell Swag

You can sell swag to customers.

If they’re interesting, then people may buy it.

Newsletter

A newsletter is something that lets you keep in touch with your audience.

You collect emails from people that are interested in you and you can send out newsletters regularly to keep them looking at useful information and promotions you send out.

Coaching

Software development is an expertise that not everyone has.

Therefore, there’s a market for people that needs your help.

They may need help with some programming problems and other things.

If you can help people and they know you exist, then you will get the opportunity to make money with coaching.

Trading Bot

If you’re interested in trading various securities, you can automate trading with your own bot.

If you’re confident about it, then you can let it sit and make money for you.

Of course, trading always has risks, so you don’t want to let it run without watching it.

Paid Coding Challenges

If you’ve mastered programming, then you can join coding challenges like hackathons, bug hunts, and more and make money.

Of course, to make money, you have to win.

So this isn’t the most reliable source of income out there.

But if you like to solve hard problems, the paid coding challenges are what you’re looking for.

Investing

With the income you get from programming, it’s a good idea to invest them since accruing interest means you get more income.

Now you can buy and sell various things like ETFs, mutual bonds, stock, etc. without a broken.

However, now you have to be informed of their risk and potential reward before putting money on them.

Sell Templates and CMS Plugins

You can sell templates for popular content management systems like WordPress or Joomla.

Many people can’t code and want a customized website.

They’ll buy WordPress themes put them on their site.

If your theme does what they want, then you’ll get their business.

You can sell your theme on Theme Forest.

Also, you can sell WordPress plugins in the same way.

Sell Development Services

You can sell development services.

It’s probably easier to have a web presence and promote yourself wherever you can.

This way, people know you exist.

The best way to promote is to help people online.

You can put up free content online to help people.

They’ll appreciate you and will find you.

If you have lots of money, you can also promote your services with ads.

However, the risk of this is bigger since the cost per click of an ad that promotes your service will probably be high.

Conclusion

You can sell stuff online, promote your services, and sell CMS themes and plugins to make money as a developer.

Categories
Careers

Ways to Make Money as a Developer — Job and Beyond

Software development is a great skill to have in the modern world.

We can take advantage of it by making money in multiple ways.

In this article, we’ll look at some ways we can make money as a developer.

Get a Developer Job

Getting a developer job is an obvious way to make money.

There’re many kinds of developers you can be.

Popular choices include:

  • mobile developer
  • front end developer
  • back end developer
  • full stack developer
  • embedded developer
  • database developer

and many more.

They’re all high paying and there’re lots of demand since not everyone can do everything.

Also, there’s a lot of flexibility.

You can work as an employee or freelance and make money.

This means there’s a possibility that you can work anywhere or with multiple clients.

Sell Digital Products

You can easily sell digital products teaching people development skills.

We can sell products like ebooks, courses, videos, etc.

There’re many things you can teach like web development, database, mobile development, and more.

Amazon KDP is a great choice for publishing ebooks.

You have access to a big market and it has an ad platform built in so that you can build ads to promote your book.

This is something that isn’t available on all platforms.

Other websites you can sell digital products include Gumroad or your own website.

SAAS

Lots of people are making money by selling their own SAAS.

SAAS is a software as a service.

You can make something that people want to use and sell it.

It’s easy to gauge what people need by building minimum viable products in a few weeks and get the feedback.

Also, we can promote it with ads to get more traffic to it.

Host Your Own Website

We can host your own website and put ads on it.

Your website should help people.

With your developer skills, you can help people with lots of things.

You can put tutorials on your own website and put ads and make money.

AdSense can make you some money, but premium ad providers like Ezoic, MediaVine, AdThrive, etc., will make you a lot more money.

Also, affiliate links can be put on your own website, and you make money when viewers click on your link and order stuff from your website.

Your site can also host sponsored content. You partner with sponsors to promote their content.

And of course, you can promote your own products like ebooks and video courses on your site.

Books

Books are something you can write to make money.

As a developer, you got a lot to share with others.

You can write tutorials to teach people development skills.

They change all the time so you won’t run out of ideas.

Also, you can publish them in various formats like eBooks or physical books.

You can also approach traditional publishers with your book idea and write about them.

There isn’t a lot of competition for writers who are also developers, so there’s a decent that traditional publishers like Packt and O’Reilly will accept your book.

This is something that’s different from other genres which have lots of competition like fiction or self-help.

Conclusion

As a developer, there’re many ways to make money.

Categories
Careers

Ways to Make Money as a Developer — Videos, Job Boards, and More

Software development is a great skill to have in the modern world.

We can take advantage of it by making money in multiple ways.

In this article, we’ll look at some ways we can make money as a developer.

YouTube Channel

You can shoot videos teaching people how to write apps and how to do other popular development tasks.

This is something that has fewer competitions like travel videos since software development is an exclusive skill that not everyone can master.

You can live code or shoot prerecorded videos.

Prerecorded videos can be sold.

With YouTube, you can sell ads through AdSense if you have enough people.

Of courses, you can sell ad spaces in your own videos instead of using Google ads.

Also, you can promote affiliate products and promote your own products in your videos.

Shooting videos is hard work and takes lots of work to succeed, so this may not be the best option if you want to make money fast.

However, if you’re known on the Internet, then more opportunities will come for you.

Online Courses and Programs

This is like shooting YouTube, except that you’re organizing the videos into a course.

Also, you may want to create a book only courses instead of book and video courses.

Live Streams

You can live stream yourself coding or doing some kind of webinar.

This can be done in Twitch or YouTube.

There’s less competition than other kinds of live streams since being able to live code means you can code mostly on top of your head.

This is not something many people can do.

Live code sessions also have discussions on the side to engage your audience more.

In your stream, you can ask for donations and you can ask for sponsorships to make money.

Open Source Projects

This is also not something everyone can do, so the competition is definitely lower.

You can create an open-source project or work on an existing one.

As long as you make something useful to other people, people will notice.

In the process, you can get donations or sponsorships.

Patreon

Patreon is a donation platform where people can donate to you.

If you contribute something useful, people will donate to your eventually.

However, this is not something that’ll happen often until you get a very large audience.

So you may have to find more reliable ways to make money.

Create Your Own Job Board

Since you have development skills, you can create your own job board and employers can buy posting space on your site.

Each posting usually cost a few hundred bucks, so you can make money fast if you have lots of postings.

Ads may help you here to promote your job board so employers and prospective employees can notice your job board.

Conclusion

There’re many channels you can gain exposure for yourself and make money online as a developer.

Categories
Vue and D3

Loading Data into a Vue App with D3

D3 lets us add graphics to a front-end web app easily.

Vue is a popular front end web framework.

They work great together. In this article, we’ll look at how to load data into a Vue app with D3.

Loading CSV

We can load CSV data into our Vue app with the d3.csv method.

For example, we can write:

public/data.csv

name,age
John,30
Jane,32

App.vue

<template>
  <div id="app"></div>
</template>

<script>
import * as d3 from "d3";
export default {
  name: "App",
  async mounted() {
    const data = await d3.csv("/data.csv");
    for (const { name, age } of data) {
      console.log(name, age);
    }
  },
};
</script>

to load data from public/data.csv into our Vue app.

The public folder is served statically, so we can read data from there.

We just call d3.csv with the path to the CSV file.

Then it’ll parsed automatically into an array of objects.

Therefore, we get:

John 30
Jane 32

logged when we loop through the data array.

Loading JSON

We can load JSON into our app with the d3.json method.

For example, we can write:

public/data.json

[
  {
    "name": "John",
    "age": 30,
    "city": "New York"
  },
  {
    "name": "Jane",
    "age": 20,
    "city": "San Francisco"
  }
]

App.vue

<template>
  <div id="app"></div>
</template>

<script>
import * as d3 from "d3";
export default {
  name: "App",
  async mounted() {
    const data = await d3.json("/data.json");
    for (const { name, age } of data) {
      console.log(name, age);
    }
  },
};
</script>

We call d3.json to get the data.

Then we loop through the data array which has the parsed JSON array.

So we get the same result as we did in the previous example.

Loading XML File

We can load XML files with the d3.xml method.

To use it, we can write:

public/data.xml

<?xml version="1.0" encoding="UTF-8"?>
<root>
<row>
    <name>John</name>
    <age>30</age>
</row>
<row>
    <name>Jane</name>
    <age>32</age>
</row>
</root>

App.vue

<template>
  <div id="app"></div>
</template>

<script>
import * as d3 from "d3";
export default {
  name: "App",
  async mounted() {
    const data = await d3.xml("/data.xml");
    for (const n of data.documentElement.getElementsByTagName("name")) {
      console.log(n.textContent);
    }
  },
};
</script>

We call d3.xml to read the data.xml file.

The method returns the parsed XML DOM object.

Therefore, we can use the documentElement.getElementByTagName method to get the name elements by their tag name.

And then we can log the textContent to log the content.

Loading Tab Separated Files

We can read tab-separated files with the d3.tsv method.

For example, we can write:

public/data.tsv

name age city
John 30 New York
Jane 20 San Francisco

App.vue

<template>
  <div id="app"></div>
</template>

<script>
import * as d3 from "d3";
export default {
  name: "App",
  async mounted() {
    const data = await d3.tsv("/data.tsv");
    for (const { name, age, city } of data) {
      console.log(name, age, city);
    }
  },
};
</script>

to call the d3.tsv method to load data.tsv .

It returns a promise with an array of data.

Then we can loop through the data entry and log them.

Conclusion

We can load CSV, TSV, XML, and JSON files with D3 in our Vue app.

Categories
Vue and D3

Adding Graphics to a Vue App with D3 — TSV, Timer, and Bar Chart

D3 lets us add graphics to a front-end web app easily.

Vue is a popular front end web framework.

They work great together. In this article, we’ll look at how to add graphics to a Vue app with D3.

tsvFormatRows

We can call the tsvFormatRows method to convert a nested array into a tab-separated string.

For example, we can write:

<template>
  <div id="app"></div>
</template>

<script>
import * as d3 from "d3";
const data = [
  [2011, 10],
  [2012, 20],
  [2013, 30],
];
export default {
  name: "App",
  mounted() {
    const string = d3.tsvFormatRows(data);
    console.log(string);
  },
};
</script>

Then string is:

2011 10
2012 20
2013 30

Timer

We can use timers that come with D3 to add animations to our Vue app.

For example, we can use the d3.timer function to create a timer by writing:

<template>
  <div id="app"></div>
</template>

<script>
import * as d3 from "d3";

export default {
  name: "App",
  mounted() {
    const timer = d3.timer(function (duration) {
      console.log(duration);
      if (duration > 150) {
        timer.stop();
      }
    }, 100);
  },
};
</script>

We log the duration and stop the timer if the duration is bigger than 150.

duration is in milliseconds.

Create a Bar Chart

We can create a bar chart with D3 in our Vue app by reading in the data, creating the axes, and adding the bars.

For example, we can write:

public/data.csv

year,population
2006,30
2008,35
2010,28
2012,31
2014,43
2016,56
2017,62

App.vue

<template>
  <div id="app">
    <svg width="500" height="500"></svg>
  </div>
</template>

<script>
import * as d3 from "d3";
import Vue from "vue";

export default {
  name: "App",
  mounted() {
    Vue.nextTick(async () => {
      const svg = d3.select("svg"),
        margin = 200,
        width = svg.attr("width") - margin,
        height = svg.attr("height") - margin;

        svg
        .append("text")
        .attr("transform", "translate(100,0)")
        .attr("x", 50)
        .attr("y", 50)
        .attr("font-size", "20px")
        .attr("class", "title")
        .text("Population bar chart");

      const x = d3.scaleBand().range([0, width]).padding(0.4),
        y = d3.scaleLinear().range([height, 0]);
      const g = svg.append("g").attr("transform", "translate(100, 100)");
      const data = await d3.csv("data.csv");

      x.domain(
        data.map(function (d) {
          return d.year;
        })
      );
      y.domain([
        0,
        d3.max(data, function (d) {
          return d.population;
        }),
      ]);

      g.append("g")
        .attr("transform", `translate(0, ${height})`)
        .call(d3.axisBottom(x))
        .append("text")
        .attr("y", height - 250)
        .attr("x", width - 100)
        .attr("text-anchor", "end")
        .attr("font-size", "18px")
        .attr("stroke", "blue")
        .text("year");

      g.append("g")
        .append("text")
        .attr("transform", "rotate(-90)")
        .attr("y", 6)
        .attr("dy", "-5.1em")
        .attr("text-anchor", "end")
        .attr("font-size", "18px")
        .attr("stroke", "blue")
        .text("population");

      g.append("g").attr("transform", "translate(0, 0)").call(d3.axisLeft(y));
      g.selectAll(".bar")
        .data(data)
        .enter()
        .append("rect")
        .attr("class", "bar")
        .style("fill", "lightgreen")
        .on("mouseover", onMouseOver)
        .on("mouseout", onMouseOut)
        .attr("x", function (d) {
          return x(d.year);
        })
        .attr("y", function (d) {
          return y(d.population);
        })
        .attr("width", x.bandwidth())
        .transition()
        .ease(d3.easeLinear)
        .duration(200)
        .delay(function (d, i) {
          return i * 25;
        })
        .attr("height", function (d) {
          return height - y(d.population);
        });

      function onMouseOver(d, i) {
        d3.select(this).attr("class", "highlight");

        d3.select(this)
          .transition()
          .duration(200)
          .attr("width", x.bandwidth() + 5)
          .attr("y", function (d) {
            return y(d.population) - 10;
          })
          .attr("height", function (d) {
            return height - y(d.population) + 10;
          });

        g.append("text")
          .attr("class", "val")
          .attr("x", function () {
            return x(d.year);
          })
          .attr("y", function () {
            return y(d.value) - 10;
          });
      }

      function onMouseOut(d, i) {
        d3.select(this).attr("class", "bar");

        d3.select(this)
          .transition()
          .duration(200)
          .attr("width", x.bandwidth())
          .attr("y", function (d) {
            return y(d.population);
          })
          .attr("height", function (d) {
            return height - y(d.population);
          });

        d3.selectAll(".val").remove();
      }
    });
  },
};
</script>

We add the svg element in our template.

Then in the nextTick callback, we create the title by writing:

svg
  .append("text")
  .attr("transform", "translate(100,0)")
  .attr("x", 50)
  .attr("y", 50)
  .attr("font-size", "20px")
  .attr("class", "title")
  .text("Population bar chart");

x and y are the x and y coordinates of the text’s position.

transform transforms the text.

text has the text itself.

font-size sets the font size of the text.

Then we create the x and y ranges we use for the axes:

const x = d3.scaleBand().range([0, width]).padding(0.4),
  y = d3.scaleLinear().range([height, 0]);
const g = svg.append("g").attr("transform", "translate(100, 100)");
const data = await d3.csv("data.csv");

x.domain(
  data.map(function(d) {
    return d.year;
  })
);
y.domain([
  0,
  d3.max(data, function(d) {
    return d.population;
  }),
]);

We set the domain of x and y with the domain methods.

Next, we create the x-axis with the axisBottom method:

g.append("g")
  .attr("transform", `translate(0, ${height})`)
  .call(d3.axisBottom(x))
  .append("text")
  .attr("y", height - 250)
  .attr("x", width - 100)
  .attr("text-anchor", "end")
  .attr("font-size", "18px")
  .attr("stroke", "blue")
  .text("year");

We set the styles with attr calls.

The text call adds the label for the x-axis.

Then we add the label for the y-axis by writing:

g.append("g")
  .append("text")
  .attr("transform", "rotate(-90)")
  .attr("y", 6)
  .attr("dy", "-5.1em")
  .attr("text-anchor", "end")
  .attr("font-size", "18px")
  .attr("stroke", "blue")
  .text("population");

Then we add the y-axis itself by writing:

g.append("g").attr("transform", "translate(0, 0)").call(d3.axisLeft(y));

Then we add the bars by writing:

g.selectAll(".bar")
  .data(data)
  .enter()
  .append("rect")
  .attr("class", "bar")
  .style("fill", "lightgreen")
  .on("mouseover", onMouseOver)
  .on("mouseout", onMouseOut)
  .attr("x", function(d) {
    return x(d.year);
  })
  .attr("y", function(d) {
    return y(d.population);
  })
  .attr("width", x.bandwidth())
  .transition()
  .ease(d3.easeLinear)
  .duration(200)
  .delay(function(d, i) {
    return i * 25;
  })
  .attr("height", function(d) {
    return height - y(d.population);
  });

We add a mouseover event listener that expands the bar when we hover our mouse over it.

Also, we have a mouseout event listener to restore the bar to its original size when we move our mouse away from the bar.

We just set everything into its original size like we did when we load the graph.

We set the x and y attributes so that we can position it on the x-axis.

Also, we add some transition to it when it’s loading with the transition , ease , and duration calls.

We set the height of the bar to by setting the height attribute in the last attr call.

Conclusion

We can convert arrays to TSVs and create a bar chart with D3.