2019-08-14 08:36:03 +00:00
|
|
|
|
---
|
|
|
|
|
categories: ["self"]
|
|
|
|
|
date: 2019-04-30 12:32:40 +0800
|
|
|
|
|
tags: ["projects", "foss", "software-development"]
|
|
|
|
|
title: Developing projects with free resources
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
= Developing projects with free resources
|
|
|
|
|
Gabriel Arazas <foo.dogsquared@gmail.com>
|
2019-08-20 14:50:08 +00:00
|
|
|
|
2019-04-30
|
2019-08-14 08:36:03 +00:00
|
|
|
|
|
|
|
|
|
In a world where technology has made it possible to inform and share
|
|
|
|
|
experiences with other people through multiple devices, the technology
|
|
|
|
|
sure came to advance at a point where the people themselves have the
|
|
|
|
|
resources needed to establish and maintain businesses on their garage or
|
|
|
|
|
bedroom.
|
|
|
|
|
|
|
|
|
|
The same can be said with creating projects. Being a student on a
|
|
|
|
|
financial tightrope, it will be a fun and frustrating challenge to
|
|
|
|
|
create projects with only free resources and services.
|
|
|
|
|
|
|
|
|
|
In this article, I'll share my experiences and tools I've used
|
|
|
|
|
throughout my side-project and self-learning development journey while
|
|
|
|
|
getting around paid services.
|
|
|
|
|
|
|
|
|
|
____
|
|
|
|
|
BIG UPDATE: Added a section for publishing your projects. I simply
|
|
|
|
|
forgot to add it which is why I felt it's complete by the time I
|
|
|
|
|
published this post. Apologies about that. :facepalm:
|
|
|
|
|
____
|
|
|
|
|
|
2019-08-26 03:53:59 +00:00
|
|
|
|
|
2019-08-14 08:36:03 +00:00
|
|
|
|
== TL;DR version
|
|
|
|
|
|
|
|
|
|
Here are the tools I've used usually for planning and brainstorming
|
|
|
|
|
software ideas:
|
|
|
|
|
|
|
|
|
|
* https://www.draw.io/[Draw.io]
|
|
|
|
|
* https://www.figma.com/[Figma]
|
|
|
|
|
* https://quire.io/[Quire]
|
|
|
|
|
* just a plain pen & paper
|
|
|
|
|
|
|
|
|
|
When a plan is up, time to make it real. Here are the tools I'm using:
|
|
|
|
|
|
|
|
|
|
* https://git-scm.com/[Git]
|
|
|
|
|
* https://www.jetbrains.com/[Jetbrains IDE]
|
|
|
|
|
* https://code.visualstudio.com/[Visual Studio Code]
|
|
|
|
|
* a lot more tools as you read on
|
|
|
|
|
|
|
|
|
|
When the project has been realized (if not dropped). These services and
|
|
|
|
|
platforms let you share your project for free:
|
|
|
|
|
|
|
|
|
|
* https://github.com/[GitHub]
|
|
|
|
|
* https://www.netlify.com/[Netlify]
|
|
|
|
|
* http://heroku.com/[Heroku]
|
|
|
|
|
|
|
|
|
|
Of course, this list is not really complete. You can see more tools that
|
|
|
|
|
deserve honorable mentions as you read on.
|
|
|
|
|
|
2019-08-26 03:53:59 +00:00
|
|
|
|
|
2019-08-14 08:36:03 +00:00
|
|
|
|
== Planning my projects
|
|
|
|
|
|
|
|
|
|
Planning is a part of the process. It's an ever-important process that
|
|
|
|
|
prevents your software project (or any project) to be an aftermath of a
|
|
|
|
|
great natural disaster. It's not guaranteed for your project to go
|
|
|
|
|
smooth accordingly but it's better to have a plan than going straight
|
|
|
|
|
into the battlefield.
|
|
|
|
|
|
|
|
|
|
[quote, Captain Cold]
|
|
|
|
|
There are only 4 rules you need to remember: make the plan, execute the
|
|
|
|
|
plan, expect the plan to go off the rails, throw away the plan.
|
|
|
|
|
|
|
|
|
|
If the plan failed, just go through another planning phase. The action
|
|
|
|
|
does not apply well into a production workflow with the chaotic and
|
|
|
|
|
larger-scale management but it can be easily apply for personal
|
|
|
|
|
projects.
|
|
|
|
|
|
|
|
|
|
Here are the tools I've used to practice my planning skills:
|
|
|
|
|
|
|
|
|
|
=== https://quire.io/[Quire]
|
|
|
|
|
|
|
|
|
|
Quire is an online tool for almost everything productivity-based. I mean
|
|
|
|
|
they got https://quire.io/features[an exhaustive list of features] from
|
|
|
|
|
kanban boards, simple task lists, integration to different services such
|
|
|
|
|
as GitHub, Google Drive, and Slack, and much more!
|
|
|
|
|
|
|
|
|
|
The best part about all of this is that it looks minimalistic with all
|
|
|
|
|
of its features. It goes out of your way with all of its features to use
|
|
|
|
|
as you intended. You want to look at your task board for your project
|
|
|
|
|
and the website only shows you that.
|
|
|
|
|
|
|
|
|
|
==== Alternatives
|
|
|
|
|
If Quire is not your fancy, then may I introduce you to some of the
|
|
|
|
|
alternatives?
|
|
|
|
|
|
|
|
|
|
* https://trello.com/[Trello] — It's a good boi but not enough features
|
|
|
|
|
for me. It features a powerful board with powerful integrations but for
|
|
|
|
|
the most part, it limits right there and there's not much of a
|
|
|
|
|
difference with the core features you'll be using with Quire.
|
|
|
|
|
* https://www.notion.so/[Notion] — Well, this one is a solid
|
|
|
|
|
alternative. This is mainly a minimalistic online note-taking tool
|
|
|
|
|
suitable for your notes, projects, and other shenanigans but it also
|
|
|
|
|
features a lightweight task and issue board for your projects, a
|
|
|
|
|
lightweight database, and a lightweight customer relation management
|
|
|
|
|
(CRM) system. I mainly use this app for a quick note-taking while saving
|
|
|
|
|
it online but it can also go head-to-head with Quire as a productivity
|
|
|
|
|
tool with a different twist.
|
|
|
|
|
|
|
|
|
|
Now if you go with Notion, may I get you with a deal? You can click
|
|
|
|
|
https://www.notion.so/?r=ed358a0e3f6d4e47a5db21a17beaa7dd[my referral
|
|
|
|
|
link] and get $10 in credits while I get 5 USD in credits. It's a
|
|
|
|
|
win-win situation and you'll be able to help me.
|
|
|
|
|
|
|
|
|
|
=== https://www.draw.io/[Draw.io]
|
|
|
|
|
|
|
|
|
|
This is my personal digital "drawing" tool (and also the tool I used to
|
|
|
|
|
create visual aids for this blog). It's a web-based tool that allows you
|
|
|
|
|
to create a wide range of visual design assets from flowcharts to not
|
|
|
|
|
flowcharts. Speaking of web-based, you can also download
|
|
|
|
|
https://about.draw.io/integrations/#integrations_offline[desktop
|
|
|
|
|
versions] of it and use it offline though the site itself already
|
|
|
|
|
features an offline web-based version of the tool.
|
|
|
|
|
|
|
|
|
|
One of the best features of this app is that *it's free and
|
|
|
|
|
https://github.com/jgraph/drawio[open source]*. Being open source not
|
|
|
|
|
only means you can see the naked source code used to build the app but
|
|
|
|
|
also you can directly contribute to it.
|
|
|
|
|
|
|
|
|
|
Another one superb feature is that *no account registration is required
|
|
|
|
|
to use this app*! When you open the website, you're already going
|
|
|
|
|
straight into the business. No briefing, no meetup, no orientation.
|
|
|
|
|
|
|
|
|
|
From that point, you can create universally almost any diagrams from
|
|
|
|
|
concept maps, simple flowchart,
|
|
|
|
|
https://en.wikipedia.org/wiki/Unified_Modeling_Language[UML diagrams],
|
|
|
|
|
https://www.visual-paradigm.com/guide/data-modeling/what-is-entity-relationship-diagram/[database
|
|
|
|
|
relationship diagrams], mathematical expressions, or even an
|
|
|
|
|
illustration. It features a solid UI and a collection of features that
|
|
|
|
|
makes visual aids creation to be as much pleasing as possible.
|
|
|
|
|
|
|
|
|
|
==== Alternatives
|
|
|
|
|
If you want to try out other similar tools for comparison, here are some
|
|
|
|
|
alternatives I've gathered:
|
|
|
|
|
|
|
|
|
|
* https://www.libreoffice.org/discover/draw/[LibreOffice Draw] (or
|
|
|
|
|
Microsoft Visio, if you're into Windows) — LibreOffice free and
|
|
|
|
|
https://www.libreoffice.org/about-us/source-code/[open source] software
|
|
|
|
|
suite for office work. It offers a program to write documents, create
|
|
|
|
|
and edit spreadsheets, make presentations, manage databases, and draw
|
|
|
|
|
diagrams. It's a solid alternative and it has some stronger points such
|
|
|
|
|
as how pathfinding was handled (especially with the lines and arrows).
|
|
|
|
|
However, Draw.io being a web-based tool and having a solid feature list
|
|
|
|
|
in its arsenal is too hard to beat for me. In any case, I would still
|
|
|
|
|
give this a shot.
|
|
|
|
|
* https://inkscape.org/[Inkscape] — It's another free and open source
|
|
|
|
|
vector editing application that run on major desktop platforms. Despite
|
|
|
|
|
its stronger points on vector illustration, it still has solid support
|
|
|
|
|
for creating diagrams. Like LibreOffice Draw, it has more solid handling
|
|
|
|
|
on the pathfinding part of the shapes compared to Draw.io. However, in
|
|
|
|
|
order to fully use its full diagramming potential, you may have to take
|
|
|
|
|
more time to get used to it. I think the efforts will pay off once you
|
|
|
|
|
done it and in fact, you may create more expressive and powerful
|
|
|
|
|
diagrams with it. Take note that the program (at the time of this
|
|
|
|
|
writing) is not yet at its 1.0 version yet which means it still has
|
|
|
|
|
issues to clean out. Being a free and open source project, you can help
|
|
|
|
|
with the development through issues, bug reports, doc improvement, and
|
|
|
|
|
code contribution.
|
|
|
|
|
|
|
|
|
|
=== https://www.figma.com/[Figma]
|
|
|
|
|
|
|
|
|
|
If have a core feature for my planned side project, it's time to make
|
|
|
|
|
the idea closer to reality by making a user interface for that idea.
|
|
|
|
|
Here's where I brainstorm forms and layouts my idea can have as a
|
|
|
|
|
tangible service and it's where Figma comes in.
|
|
|
|
|
|
|
|
|
|
Figma is another web-based program used to create GUI prototypes and
|
|
|
|
|
designs. It can also serve as an alternative to Draw.io as a diagramming
|
|
|
|
|
and illustration program but that's not the main point we will tackle.
|
|
|
|
|
Also take note I have little experience with using this app so feel free
|
|
|
|
|
to correct me on the stuff that I'll be saying here.
|
|
|
|
|
|
|
|
|
|
Since the initial writing for this app is too long (it's really that
|
|
|
|
|
good), I'll be making a quick list of features and discuss them shortly
|
|
|
|
|
instead:
|
|
|
|
|
|
|
|
|
|
* It is *free to use and web-based*. Though, it requires an account to
|
|
|
|
|
use it, it's not much of an inconvenience once you get a hold of this
|
|
|
|
|
app. Being a web-based tool, you can run this anywhere as long as the
|
|
|
|
|
machine has WebGL and a compatible web browser.
|
|
|
|
|
* It *features a strong user interface (UI) and user experience (UX)*.
|
|
|
|
|
The UI is good that
|
|
|
|
|
https://twitter.com/foo_dogsquared/status/1102486132648960000[I could
|
|
|
|
|
create my first custom-made logo with it] despite being inexperienced
|
|
|
|
|
with graphics design.
|
|
|
|
|
* It *features a collaborative mode* similar to Google Docs. With the
|
|
|
|
|
pain points of being in a collaborative environment, they also *feature
|
|
|
|
|
a version control for the sketches*.
|
|
|
|
|
* It *works offline* except for online functionalities such as saving
|
|
|
|
|
your sketches on the cloud and collaboration mode.
|
|
|
|
|
* Has *standard feature arsenal* such as shape tools, pen tool, gradient
|
|
|
|
|
tool, importing images, and linking to individual pages. It does not
|
|
|
|
|
stop there. They have *a
|
|
|
|
|
https://www.youtube.com/watch?v=k74IrUNaJVk[component system] and a
|
|
|
|
|
https://www.youtube.com/watch?v=b-xDRjf5B-8[powerful vector editing
|
|
|
|
|
tool]* that'll expand your options of smoothly creating unique-looking
|
|
|
|
|
assets.
|
|
|
|
|
|
|
|
|
|
If you'll try this one, you can sign up for an account,
|
|
|
|
|
https://www.youtube.com/playlist?list=PLXDU_eVOJTx7QHLShNqIXL1Cgbxj7HlN4[watch
|
|
|
|
|
their Getting Started playlist on YouTube], and experiment ahead.
|
|
|
|
|
|
|
|
|
|
==== Alternatives
|
|
|
|
|
Is Figma too complex of a tool for your use case? Here are some
|
|
|
|
|
alternatives you can search for:
|
|
|
|
|
|
|
|
|
|
* https://pencil.evolus.vn/[Pencil] — A free and open source GUI
|
|
|
|
|
prototyping platform. Unfortunately, it's not maintained anymore and the
|
|
|
|
|
most recent version is from 2017 but it still offer a solid and simpler
|
|
|
|
|
GUI prototyping process for websites and desktop apps.
|
|
|
|
|
* https://www.draw.io/[Draw.io] — I already discussed this tool so I
|
|
|
|
|
won't give much details but you can also use this for simpler
|
|
|
|
|
prototyping processes. It just depends on how you would use these tools.
|
|
|
|
|
|
|
|
|
|
=== Good ol' pen & paper
|
|
|
|
|
|
|
|
|
|
Well all I need is a way of planning for my project. What a better way
|
|
|
|
|
of planning than a good ol' P&P. One of its most useful feature is that
|
|
|
|
|
it's quick to load! No internet connection needed! It's a universal
|
|
|
|
|
alternative to all the apps listed so far. The only situation you're not
|
|
|
|
|
able to boot this up is if you don't have the materials yourself.
|
|
|
|
|
|
|
|
|
|
In all seriousness though, I think this is one of the most useful ones.
|
|
|
|
|
Physically writing is actually more memorable (to me, at least) thus
|
|
|
|
|
more things to remember. Besides, I don't want to stare at a digital
|
|
|
|
|
screen all day.
|
|
|
|
|
|
|
|
|
|
Usually when I'm going to plan with this method, I follow through a
|
|
|
|
|
system I created for myself. The system is nothing fancy. It's just a
|
|
|
|
|
color-coded system with each colored paper shows the priority level for
|
|
|
|
|
each task I will make.
|
|
|
|
|
|
|
|
|
|
If you want to try it for yourself, I'll give you my personal take on
|
|
|
|
|
the system:
|
|
|
|
|
|
|
|
|
|
Now there are three types of tasks in this system: low, normal, and
|
|
|
|
|
essential. They're basically another way of indicating priorities on
|
|
|
|
|
your tasks. There's also another type of paper which is basically a
|
|
|
|
|
reviewer of related concepts to be integrated with the project.
|
|
|
|
|
|
|
|
|
|
* *Green colored papers* _indicate low priority tasks_. This is usually
|
|
|
|
|
the easy stuff and the low-hanging fruits of the project.
|
|
|
|
|
* *Blue colored papers* _indicate normal priority tasks_. In the project
|
|
|
|
|
development process, this is usually the things that is done after the
|
|
|
|
|
core of the project has been completely (or mostly) developed.
|
|
|
|
|
* *Yellow colored papers* _indicate essential tasks_. This is usually
|
|
|
|
|
the core tasks and they're highly prioritized. I usually associate red
|
|
|
|
|
with urgency but whatever fits your boat. I think yellow is a better
|
|
|
|
|
choice since it stands out among the shades of blue and green.
|
|
|
|
|
* *White colored papers* _indicate related concepts to the project_.
|
|
|
|
|
This can be anything from a simple flashcard, an explainer, or a
|
|
|
|
|
definition. Heck, you can put a thesis in there if you really want to.
|
|
|
|
|
Speaking from personal experience, one of the role of this paper is to
|
|
|
|
|
simply make you focus into the core concepts of your project so you
|
|
|
|
|
couldn't easily sway and make a bunch of unrelated features and
|
|
|
|
|
highlights in your project straight away. Also, it's just there to
|
|
|
|
|
remind myself of the things I was supposed to learn.
|
|
|
|
|
|
|
|
|
|
Take note you don't have to buy colored papers for this one. One of the
|
|
|
|
|
beauty of life is the freedom on how to do things and this is no
|
|
|
|
|
exception. You could do say, just a simple format to express the core
|
|
|
|
|
feature of this system which is _prioritization_. You can list out tasks
|
|
|
|
|
and create symbols to express different levels of priority.
|
|
|
|
|
|
2019-08-26 03:53:59 +00:00
|
|
|
|
|
2019-08-14 08:36:03 +00:00
|
|
|
|
== Creating my projects
|
|
|
|
|
|
|
|
|
|
When you have a plan in place, you can attack it in your own pace. This
|
|
|
|
|
is the phase where you'll actually * get your envisioned project closer
|
|
|
|
|
to reality*. Since we're in the context of software, I'll talking about
|
|
|
|
|
the tools and experiences I was able to use and... experience.
|
|
|
|
|
|
|
|
|
|
If you want to know the tools outside of software for some unspecified
|
|
|
|
|
reason, you can get a rough idea http://freebies-hunt.netlify.com/[in my
|
|
|
|
|
relatively recent launched website, Freebies Hunt]. As specified in its
|
|
|
|
|
name, all of the resources listed there are free (and some being open)
|
|
|
|
|
so you'll be able to have a similar toolset as mine.
|
|
|
|
|
|
|
|
|
|
So what are the tools I used for this? Read on and find out.
|
|
|
|
|
|
|
|
|
|
=== https://code.visualstudio.com/[Visual Studio Code]
|
|
|
|
|
|
|
|
|
|
My go-to text editor and lightweight IDE. This tool is just phenomenal!
|
|
|
|
|
It's free and https://github.com/Microsoft/vscode[open source],
|
|
|
|
|
https://code.visualstudio.com/updates/[actively being developed], backed
|
|
|
|
|
up by a huge community of developers, solid UI/UX for budding
|
|
|
|
|
developers, https://code.visualstudio.com/docs[features an extensive
|
|
|
|
|
documentation in using the app], and offers hackability that extends the
|
|
|
|
|
app even further.
|
|
|
|
|
|
|
|
|
|
Of course, this tool still has its
|
|
|
|
|
https://github.com/Microsoft/vscode/issues[issues] but with the active
|
|
|
|
|
development from the core maintainers and other contributors, you know
|
|
|
|
|
that it'll have a great future. With that said, this tool is not a
|
|
|
|
|
panacea for our development tool problems. The core scope of this tool
|
|
|
|
|
is limited outside of web development especially when compared to
|
|
|
|
|
comprehensive IDEs such as https://visualstudio.com/[Visual Studio] and
|
|
|
|
|
https://www.jetbrains.com/[Jetbrains IDE product line]. Even though it
|
|
|
|
|
can be extended with the user-created plugins, when compared to
|
|
|
|
|
first-party solutions, it's not usually enough (though there are
|
|
|
|
|
exceptions).
|
|
|
|
|
|
|
|
|
|
==== Alternatives
|
|
|
|
|
Want to try other text editors? Here's a list of it:
|
|
|
|
|
|
|
|
|
|
* https://atom.io/[Atom] — A free and open source text editor made by
|
|
|
|
|
the team at https://github.com/[GitHub] and it can be considered as the
|
|
|
|
|
most fitting rival with Visual Studio Code. They're both made with
|
|
|
|
|
https://electronjs.org/[Electron]. Both offer similar set of features
|
|
|
|
|
from hackability to the user interface. Atom, however, has a stronger
|
|
|
|
|
focus on Git integration (specifically with GitHub). Basing from
|
|
|
|
|
personal experience, you can already have the same level of focus on
|
|
|
|
|
Visual Studio Code with the
|
|
|
|
|
https://marketplace.visualstudio.com/search?term=git&target=VSCode&category=All%20categories&sortBy=Relevance[third-party
|
|
|
|
|
plugins] and improving Git integration.
|
|
|
|
|
* https://www.gnu.org/software/emacs/[GNU Emacs] — A family of text
|
|
|
|
|
editor mostly known for its extensibility but specifically were looking
|
|
|
|
|
at GNU Emacs which is the most popular member of the family. Compared to
|
|
|
|
|
other text editors we've featured so far, this text editor has a steeper
|
|
|
|
|
learning curve to master it especially when going from absolute zero. It
|
|
|
|
|
also features integration with https://www.gnu.org/software/gdb/[GDB] (a
|
|
|
|
|
debugger) making it into a lightweight IDE, has tons of keyboard
|
|
|
|
|
shortcuts, features multiple modes, and best of all, you can play tetris
|
|
|
|
|
with it (seriously). If you want to look further, you can take
|
|
|
|
|
https://www.gnu.org/software/emacs/tour/index.html[a tour of Emacs from
|
|
|
|
|
the GNU website] and see what more things Emacs can do.
|
|
|
|
|
* https://www.vim.org/[Vim] — If you're hardcore, take a look into a
|
|
|
|
|
text editor infamously known for its... difficulty. Anyway, I'm pretty
|
|
|
|
|
sure you've heard of Vim by now after seeing it being memed to death.
|
|
|
|
|
Vim is a text editor that utilizes the modal philosophy where it
|
|
|
|
|
utilizes a different mode for editing files and inserting text. Like
|
|
|
|
|
Emacs, it has a steep learning curve with its unconventional way of
|
|
|
|
|
manipulating files. It's also programmable and contains a _lot_ of
|
|
|
|
|
keyboard shortcuts and configuration options that you'll find
|
|
|
|
|
https://github.com/search?q=vimrc[a community of developers sharing
|
|
|
|
|
their Vim configuration files]. If you want a shallow dive into Vim, you
|
|
|
|
|
can use this https://hacker-tools.github.io/editors/[course lecture]
|
|
|
|
|
I've used.
|
|
|
|
|
|
|
|
|
|
=== https://www.jetbrains.com/[Jetbrains IDE]
|
|
|
|
|
|
|
|
|
|
If my project is in a larger scope or is in need for a more specialized
|
|
|
|
|
tool, I might use an IDE. A personal example could be making a project
|
|
|
|
|
with C++ and I need to learn more on using https://cmake.org/[CMake]. If
|
|
|
|
|
you need to develop in https://golang.org/[Go],
|
|
|
|
|
https://docs.microsoft.com/en-us/dotnet/csharp/[C#], or in
|
|
|
|
|
https://www.arduino.cc/[Arduino], there are specialized tools that are
|
|
|
|
|
built for that.
|
|
|
|
|
|
|
|
|
|
My IDEs of choice are from Jetbrains, a software development company
|
|
|
|
|
whose product targets developers, where they offer a netful of IDEs for
|
|
|
|
|
different programming languages and toolsets. Their IDEs have reached a
|
|
|
|
|
wholesome reputation with plentiful of useful features and active
|
|
|
|
|
development updates. Not to mention that they can run across all major
|
|
|
|
|
platforms in Windows, Mac OS, and Linux which really sold me on this
|
|
|
|
|
one. Though the only problem is that they're proprietary but they do
|
|
|
|
|
offer free licenses on all of their tools
|
|
|
|
|
https://www.jetbrains.com/student/[for students] (which I did) and
|
|
|
|
|
https://www.jetbrains.com/opensource/[for developers of non-commercial
|
|
|
|
|
open source projects].
|
|
|
|
|
|
|
|
|
|
==== Alternatives
|
|
|
|
|
Fortunately, some of the IDEs have a free community version though it's
|
|
|
|
|
usually inferior compared to the proprietary versions. Though, they're
|
|
|
|
|
mostly enough especially in the beginning of the development. However,
|
|
|
|
|
if you're looking for a free and more robust IDE, you could look into
|
|
|
|
|
the following alternatives:
|
|
|
|
|
|
|
|
|
|
* https://visualstudio.com/[Visual Studio] — If you're using Windows or
|
|
|
|
|
Mac OS, this could be a solid choice. Not only that it supports most of
|
|
|
|
|
the popular programming languages and toolsets but it is also _free_.
|
|
|
|
|
The Visual Studio installation process lets you customize your
|
|
|
|
|
development environment according to your need whether you want to
|
|
|
|
|
create cross-platform programs with C++ or want to get started on game
|
|
|
|
|
development with Unity or even both, why not. There's plenty of choices
|
|
|
|
|
you can make with this. The only gripe here is that it's not available
|
|
|
|
|
in Linux/BSD systems. I use this in particular when developing in
|
|
|
|
|
Windows since their free community edition is just too good to pass up.
|
|
|
|
|
* https://www.eclipse.org/eclipseide/[Eclipse] — It's basically the
|
|
|
|
|
cross-platform open source version of Jetbrains where their product line
|
|
|
|
|
of IDEs offer support on most of programming languages such as C/C++,
|
|
|
|
|
PHP, Java, Rust, and many others. I don't know how high of a candle they
|
|
|
|
|
hold today but I found it to be useful enough to get started.
|
|
|
|
|
|
|
|
|
|
This is not an exhaustive list of IDEs for you to try (I mean three
|
|
|
|
|
items, really?) but I recommend to try and search if it doesn't make you
|
|
|
|
|
satisfied. Here, https://github.com/sindresorhus/awesome[I got you a
|
|
|
|
|
place to get started on your search].
|
|
|
|
|
|
|
|
|
|
=== https://git-scm.com/[Git]
|
|
|
|
|
|
|
|
|
|
Well, we all have our ways in saving our stuff. One of the ways I did
|
|
|
|
|
(way back when I have completely no idea in programming) would be simply
|
|
|
|
|
saving the file and adding a `+v2+` at the end of its name.
|
|
|
|
|
|
|
|
|
|
image::https://imgs.xkcd.com/comics/documents.png[title="My archiving skills in high school",float="right",align="center"]
|
|
|
|
|
|
|
|
|
|
Other would use a software that can automatically create backups.
|
|
|
|
|
Nowadays, popular softwares for writing most likely have an auto-save
|
|
|
|
|
feature built into the system: https://docs.google.com/[Google Docs],
|
|
|
|
|
https://evernote.com/[Evernote], https://notion.so/[Notion],
|
|
|
|
|
https://visualstudio.com[Visual Studio],
|
|
|
|
|
https://code.visualstudio.com[Visual Studio Code],
|
|
|
|
|
https://www.jetbrains.com/[Jetbrains IDEs] – you name it, they most
|
|
|
|
|
likely have it.
|
|
|
|
|
|
|
|
|
|
For solo projects, it is practical enough but if you
|
|
|
|
|
want to amp your version controlling skill then you can use a full-on
|
|
|
|
|
_version control system_ (shortened as _VCS_). I won't discuss what a
|
|
|
|
|
VCS here but you can take a quick overview from one of the training
|
|
|
|
|
videos from GitHub.
|
|
|
|
|
|
|
|
|
|
This is where Git
|
|
|
|
|
(https://en.wikipedia.org/wiki/Comparison_of_version_control_software[and
|
|
|
|
|
its other competitors]) comes in. You can refer to
|
|
|
|
|
https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F[more
|
|
|
|
|
well-written posts about it].
|
|
|
|
|
|
|
|
|
|
One objective of using a version control system like Git is not only
|
|
|
|
|
acts as an epic save button but it also makes collaborative works to
|
|
|
|
|
progress smoother. This is great in cases that your project needs help
|
|
|
|
|
from other people aside from you. Since you're in the same page as your
|
|
|
|
|
other collaborators, you can go through the same process of adding
|
|
|
|
|
contributions to your project.
|
|
|
|
|
|
|
|
|
|
Git is my go-to version control software. It is nice to work with and it
|
|
|
|
|
has ton of free services that are integrated with it. Despite it's
|
|
|
|
|
mostly used for software projects, it can be useful for non-software
|
|
|
|
|
stuff though better and more specialized solutions may exist.
|
|
|
|
|
|
|
|
|
|
=== Other tools
|
|
|
|
|
|
|
|
|
|
Well, here's a list of tools that deserves an honorable mention:
|
|
|
|
|
|
|
|
|
|
* https://asciidoctor.org/[Asciidoctor] — A free and open source text
|
|
|
|
|
processor for https://asciidoctor.org/docs/what-is-asciidoc/[Asciidoc],
|
|
|
|
|
a lightweight text formatting language similar to
|
|
|
|
|
https://daringfireball.net/projects/markdown[Markdown]. Unlike Markdown,
|
|
|
|
|
the scope of Asciidoc is much higher that it enables you to create an
|
|
|
|
|
entire book with complete features using only the vanilla syntax of
|
|
|
|
|
Asciidoc. I think this is a solid alternative to Markdown with more
|
|
|
|
|
out-of-the-box features and it is standardized so we won't have to worry
|
|
|
|
|
more on using a particular Markdown flavor. I recommend to get started
|
|
|
|
|
with https://asciidoctor.org/docs/[the docs], there's seriously a ton of
|
|
|
|
|
stuff to be explored here.
|
|
|
|
|
* https://kile.sourceforge.io/[Kile] — My most recent tool in my belt.
|
|
|
|
|
It's an IDE (or rather integrated writing environment? IWE?) for writing
|
|
|
|
|
https://www.latex-project.org/[LaTeX] documents. I've recently made my
|
|
|
|
|
technical notes into LaTeX documents and it is amazing so far. I haven't
|
|
|
|
|
tried all of the features yet but I can see continuing to write notes
|
|
|
|
|
with it and find a way on how to publish them on the web painlessly.
|
|
|
|
|
* https://www.gnu.org/software/make/manual/make.html[Make] — A
|
|
|
|
|
cross-platform free and open source automation tool usually used for
|
|
|
|
|
software projects. If you're not familiar with it and want to try and
|
|
|
|
|
experiment with it, you can
|
|
|
|
|
https://opensource.com/article/18/8/what-how-makefile[refer to this
|
|
|
|
|
article] to get started.
|
|
|
|
|
* https://pandoc.org/[Pandoc] — A cross-platform free and open source
|
|
|
|
|
universal document converter for various file formats and even your own
|
|
|
|
|
formats. It supports major writing file formats like LaTeX, HTML,
|
|
|
|
|
Asciidoc, Markdown (along with other flavors), and Textile. From there,
|
|
|
|
|
you can convert one file from another with PDF, EPUB, and other file
|
|
|
|
|
formats.
|
|
|
|
|
* https://www.gnu.org/software/octave/[Octave] — A free and open source
|
|
|
|
|
computational environment made by https://www.gnu.org/[GNU Software] so
|
|
|
|
|
you know it's good stuff. It mostly serve as an alternative to
|
|
|
|
|
https://www.mathworks.com/products/matlab.html[MATLAB] for me. Speaking
|
|
|
|
|
of MATLAB, it's also mostly (READ: mostly) compatible with MATLAB syntax
|
|
|
|
|
so you don't have to do a full-on porting of the computations (if
|
|
|
|
|
there's any). I mostly use this just for the more complex mathematical
|
|
|
|
|
graphics though I may use LaTeX or maybe
|
|
|
|
|
http://asymptote.sourceforge.net/[Asymptote] for the later notes.
|
|
|
|
|
* https://tiddlywiki.com/[TiddlyWiki] — A single-file personal wiki made
|
|
|
|
|
in JavaScript with the one file being an HTML file. This is absolutely
|
|
|
|
|
one of the most fascinating projects I've ever seen out there. Not only
|
|
|
|
|
that it's quite cool on the programming aspect but also on the
|
|
|
|
|
note-taking aspect. It features a wiki that is both portable and
|
|
|
|
|
distributable for you and your readers. You can also customize your
|
|
|
|
|
TiddlyWiki at your own whim to its appearances and its function by
|
|
|
|
|
creating plugins. With all of those features, I think this is a perfect
|
|
|
|
|
platform to share my notes without much hassle.
|
|
|
|
|
|
2019-08-26 03:53:59 +00:00
|
|
|
|
|
2019-08-14 08:36:03 +00:00
|
|
|
|
== Publishing my project
|
|
|
|
|
|
|
|
|
|
If you want your project to be available for the whole world to see, you
|
|
|
|
|
have available free options that lets you do that. Starting with...
|
|
|
|
|
|
|
|
|
|
=== https://github.com/[GitHub]
|
|
|
|
|
|
|
|
|
|
When you want to share your project with the world for everyone to see,
|
|
|
|
|
you need a server to do that. Fortunately, there are free services that
|
|
|
|
|
does exactly that. Enter GitHub.
|
|
|
|
|
|
|
|
|
|
Majority of you readers might have heard of this before. After all, it
|
|
|
|
|
is _one of the largest and most popular development platform_ out there
|
|
|
|
|
for the software industry. It's also _the_ leading development platform
|
|
|
|
|
for open source software. It is where the big kids of the tech industry
|
|
|
|
|
hang out: Microsoft, Google, Linux Foundation, you name it.
|
|
|
|
|
|
|
|
|
|
Couple of that with the number of developers signed up, being the
|
|
|
|
|
de-facto platform for the open source community, and the nature of open
|
|
|
|
|
source, the network value is just too good to not ignore it especially
|
|
|
|
|
if you're looking for a first step through the door of the industry.
|
|
|
|
|
|
|
|
|
|
GitHub offer practically free unlimited public and private repo (with
|
|
|
|
|
limited collaborators) for your projects. Whether you want to show off
|
|
|
|
|
your projects or to keep your projects safe in the cloud, GitHub has you
|
|
|
|
|
covered. Being a software development platform, it has a variety of
|
|
|
|
|
features to aid software development:
|
|
|
|
|
|
|
|
|
|
* Issue tracking that is open for other people with GitHub accounts.
|
|
|
|
|
* An easy-to-use interface for forking, code review, and merge conflicts
|
|
|
|
|
management.
|
|
|
|
|
* Organizations can be created and invite other people to join and grant
|
|
|
|
|
them level of access for your projects. Whether you want non-members to
|
|
|
|
|
have a read-only access or can contribute alongside is a decision you
|
|
|
|
|
can make.
|
|
|
|
|
* GitHub also has a https://github.com/marketplace[marketplace of
|
|
|
|
|
different services] making a part of your development process to go much
|
|
|
|
|
smoother.
|
|
|
|
|
* Offers a social place for code snippets called
|
|
|
|
|
https://gist.github.com[GitHub Gists].
|
|
|
|
|
* Built-in tools for reporting and monitoring your projects.
|
|
|
|
|
* https://education.github.com/pack/[Grants aid for students to get
|
|
|
|
|
started on their software development journey] which further makes
|
|
|
|
|
GitHub more of a de-facto platform not only for seasoned developers but
|
|
|
|
|
also for newcomers.
|
|
|
|
|
|
|
|
|
|
Anyways, if you're looking for an alternative to GitHub, here's some
|
|
|
|
|
other Git-based web hosting sites:
|
|
|
|
|
|
|
|
|
|
* https://gitlab.com/[GitLab] is probably the closest competitor to
|
|
|
|
|
GitHub. It offers pretty much everything GitHub has (except for the
|
|
|
|
|
student pack) but it has some other tricks GitHub doesn't have:
|
|
|
|
|
** Offers true unlimited public and private repos with unlimited
|
|
|
|
|
collaborators so you can make your projects truly private here.
|
|
|
|
|
** Has built-in CI/CD tools making GitLab an out-of-the-box suitable
|
|
|
|
|
platform for DevOps development.
|
|
|
|
|
** Can be self-hosted (meaning you can run GitLab locally in your own
|
|
|
|
|
machine).
|
|
|
|
|
* https://bitbucket.org/[Bitbucket] is another competitor to GitHub. Its
|
|
|
|
|
core feature set is quite similar to GitLab: having built-in CI/CD
|
|
|
|
|
tools, can be self-hosted, and has a ton of built-in integration with
|
|
|
|
|
other services such as Trello and Slack.
|
|
|
|
|
|
|
|
|
|
=== http://heroku.com/[Heroku]
|
|
|
|
|
|
|
|
|
|
If you're looking to deploy your dynamic web app, look no further to
|
|
|
|
|
Heroku. Heroku offers an infrastructure as a service that is made sure
|
|
|
|
|
to be as easy as possible and it is sure easy in my experience so far.
|
|
|
|
|
|
|
|
|
|
Heroku just needs a Git repo from GitHub, GitLab, Bitbucket, and other
|
|
|
|
|
platforms and you're mostly done. Just tweak the app further, store your
|
|
|
|
|
secret credentials, enable related services for your app, and your app
|
|
|
|
|
will set ablaze live on the web.
|
|
|
|
|
|
|
|
|
|
Alternatives:
|
|
|
|
|
|
|
|
|
|
* https://glitch.com/[Glitch] — One of the coolest alternative to
|
|
|
|
|
Heroku. It's another app deployment platform but with the sense of
|
|
|
|
|
community mixed in. It lets you remix other people's app as well as you
|
|
|
|
|
let them remix your app (if you choose). This is a nice platform for
|
|
|
|
|
your hobby projects though it https://glitch.com/help/languages/[only
|
|
|
|
|
supports Node.js for now (as of this writing)].
|
|
|
|
|
* https://zeit.co/now[Now] An app deployment service from Zeit. It
|
|
|
|
|
offers a platform to deploy your web apps though you have to integrate
|
|
|
|
|
it with your app instead of just placing your app and letting it run.
|
|
|
|
|
Like Heroku, it also offers a generous free tier that is mostly enough
|
|
|
|
|
for managing multiple hobby projects.
|
|
|
|
|
* http://firebase.google.com/[Firebase] — An infrastructure-as-a-service
|
|
|
|
|
(IaaS) later acquired by Google. It offers a generous free tier services
|
|
|
|
|
if you're starting out but later it gets expensive as your project made
|
|
|
|
|
through the limit. The only downside when using this is you have to
|
|
|
|
|
integrate your app and may use some proprietary solutions along with it.
|
|
|
|
|
* https://repl.it/[Repl.it] — Possibly one of the best alternatives to
|
|
|
|
|
Heroku. Similar to Glitch, it's an online IDE that
|
|
|
|
|
https://repl.it/site/languages[supports a lot of languages] and it got
|
|
|
|
|
https://repl.it/discord[a community of hackers behind it]. It's a pretty
|
|
|
|
|
cool tool especially for hobby projects and such. It is also open for
|
|
|
|
|
other users in the Repl.it community, being able to fork your projects.
|
|
|
|
|
|
|
|
|
|
=== https://www.netlify.com/[Netlify]
|
|
|
|
|
|
|
|
|
|
If you want to publish your static website, no need to deploy it with
|
|
|
|
|
Heroku since it'll just add to your monthly quota.
|
|
|
|
|
https://www.netlify.com/[Netlify] is one of the perfect platforms for
|
|
|
|
|
that.
|
|
|
|
|
|
|
|
|
|
Like Heroku, Netlify is a platform that aims to make web app deployment
|
|
|
|
|
as easy as possible. Just create an account, login to Netlify, integrate
|
|
|
|
|
your Git repo, and give configurations for deployment then celebrate!
|
|
|
|
|
|
|
|
|
|
It offers out-of-the-box integration with common web workflow like task
|
|
|
|
|
runners and Git repos and
|
|
|
|
|
https://www.netlify.com/products/build/[automates them through a work
|
|
|
|
|
pipeline], doing all the dev-ops work for you. It's pretty fantastic
|
|
|
|
|
especially if you're working solo.
|
|
|
|
|
|
|
|
|
|
Of course, https://www.netlify.com/pricing/[Netlify offers a generous
|
|
|
|
|
free tier] limiting your account up to 100GB bandwidth for your list of
|
|
|
|
|
deployed projects. For me, that is more than enough.
|
|
|
|
|
|
|
|
|
|
Of course, tons of alternatives are available but here's the following
|
|
|
|
|
that topped the list for me:
|
|
|
|
|
|
|
|
|
|
* https://surge.sh/[Surge] — One of the more popular static site
|
|
|
|
|
deployment tool. It's simply a deployment tool available in the command
|
|
|
|
|
line. Also provides out-of-the-box integration with common workflows.
|
|
|
|
|
* https://pages.github.com/[GitHub Pages] — If you're mainly a
|
|
|
|
|
https://gitlab.com[GitLab] user,
|
|
|
|
|
https://docs.gitlab.com/ee/user/project/pages/[GitLab also offers a
|
|
|
|
|
similar service]. It's the free static web hosting service offered in
|
|
|
|
|
GitHub. You can set some configurations for your static website such as
|
|
|
|
|
the branch specified to hold your site's files. You could also create a
|
|
|
|
|
quick landing page for your repo with it.
|
|
|
|
|
* https://zeit.co/now[Now] — One of the more advanced alternative. It's
|
|
|
|
|
a platform for static and dynamic sites. Available as a command line
|
|
|
|
|
tool, the platform also offers a https://zeit.co/pricing[generous free
|
|
|
|
|
tier].
|
|
|
|
|
|
|
|
|
|
With all of those above, you're practically set for life in your web
|
|
|
|
|
development learning journey. It's pretty amazing that we get these
|
|
|
|
|
stuff for FREE, mind you. Now go ahead and ship some apps.
|
|
|
|
|
|
|
|
|
|
=== Other tools
|
|
|
|
|
|
|
|
|
|
Well, here's some honorable mentions:
|
|
|
|
|
|
|
|
|
|
* https://travis-ci.org/[Travis CI] — A continuous
|
|
|
|
|
integration/continuous deployment (CI/CD) service that integrates very
|
|
|
|
|
well with GitHub which is the reason why I list it here. If you're not
|
|
|
|
|
familiar with CI/CD systems yet, you can view
|
|
|
|
|
https://www.youtube.com/watch?v=ymPOI4gWQFY&list=PL0zVEGEvSaeFFy32i5A4041qSTbYqtKqv[this
|
|
|
|
|
video series by @mpjme from FunFunFunction] to get you started. The
|
|
|
|
|
video series assumes that you're familiar with programming workflows (in
|
|
|
|
|
which you're most likely to be since you're reading my posts right now).
|
|
|
|
|
* Your own automation script. — In some cases or reason, you'll have to
|
|
|
|
|
craft the deployment script yourself. You might write one of these since
|
|
|
|
|
you don't want to rely on a CI/CD service or just want to deploy it
|
|
|
|
|
yourself.
|
|
|
|
|
* Your own backend, maybe? — If it's powerful enough, I guess you could
|
|
|
|
|
but I recommend more to pass that responsibility to the companies that
|
|
|
|
|
offer dedicated servers. Unless your project _revolves around deploying
|
|
|
|
|
your own backend_, I don't see much reason to deploy it with your own.
|
|
|
|
|
|
2019-08-26 03:53:59 +00:00
|
|
|
|
|
2019-08-14 08:36:03 +00:00
|
|
|
|
== Conclusion
|
|
|
|
|
|
|
|
|
|
There's my general workflow in its glory using only with (mostly) free
|
|
|
|
|
and open source technologies. There's a lot more things to keep an eye
|
|
|
|
|
on especially if you're looking for a specific set of technologies or
|
|
|
|
|
needs. If you're looking for more open content, I can point you to the
|
|
|
|
|
following:
|
|
|
|
|
|
|
|
|
|
* https://github.com/sindresorhus/awesome[`+awesome+`] — A list of
|
|
|
|
|
resource list of various technologies and topics from software
|
|
|
|
|
development, music, research, to game development. You should be able to
|
|
|
|
|
get a start of your search of open content from there.
|
|
|
|
|
* https://freebies-hunt.netlify.com/[Freebies Hunt] — I've created this
|
|
|
|
|
website as a way of introducing you to free and open content, in
|
|
|
|
|
general. It contains free resources for programming, music, design, and
|
|
|
|
|
other interests I have. Quite similar to `+awesome+` but it stripped
|
|
|
|
|
down to my preferred resources. Of course, for the spirit of open
|
|
|
|
|
content (and software), everything on this website is open source from
|
|
|
|
|
the https://github.com/foo-dogsquared/freebies-hunt[website] and the
|
|
|
|
|
https://github.com/foo-dogsquared/freebies-hunt-api/[API] I've built.
|
|
|
|
|
|
|
|
|
|
One of the most beneficial things on free and open content today is that
|
|
|
|
|
they're easily accessible as they're easily created. Not only that it
|
|
|
|
|
does help on making the technology to easily create interest on the
|
|
|
|
|
public but also to create progress by everyone.
|
|
|
|
|
|
|
|
|
|
Though with the said nature of open content, there are problems that are
|
|
|
|
|
bound to be manifested such as the large amount of open content that can
|
|
|
|
|
be completely overwhelming to newcomers up to the quality of the open
|
|
|
|
|
content seeing as it can be made by everyone.
|
|
|
|
|
|
|
|
|
|
Overall, I don't think it can be a problem as long as there are leading
|
|
|
|
|
bodies that govern and direct the advancement of the technology or the
|
|
|
|
|
domain it operates with. (Of course there are problems bound with it as
|
|
|
|
|
well but that's how life works, solving problem inherently creates
|
|
|
|
|
another problem.)
|
|
|
|
|
|