Building software that has
useful features while still
being easy-to-use takes
a lot of work, but we feel
the greatest satisfaction
in seeing our users happy.
is an open-source
compiler that extends the
Java programming language
with an entirely new language
This website, the one you're currently viewing, seems pretty straightforward, but actually has some
interesting technologies behind it.
We wanted to try the best
of the latest tech, so we
used the following tools:
These lightweight virtual-machines (or "containers")
greatly minimize the problems of deploying an
application to production. For complex applications,
deployment can be a nightmare, because for even
moderately-complex setups, it's easy for the
developer's setup to get out of sync
with what is installed in production.
Creating a container can be a decent amount of work,
but in the long run using them saves companies enormous amounts
of time that would be wasted fixing problems in their
deployments - and on top of this, Docker is just a really
fascinating technology to work with!
Amazon Web Services
Amazon Web Services (AWS) provide all the infrastructure and application servers
needed to run almost any type of application, from standard
eCommerce websites, to machine-learning batch-jobs. And one of the
its most useful features is that all your infrastructure can be
defined as code! Called "Infrastructure As Code" or IAS,
servers, networks and load balancers are not directly wired
together. Instead, they are wired "virtually," and these
virtual connections can be defined in a scripting language called Cloudformation.
In a Cloudformation script, you describe your server hardware and network setup,
and when you run the script, AWS creates these connections between the
devices, so that your infrastructure is assembled in a matter of minutes!
We deploy the Docker containers that runs the code for this website into AWS.
AWS then manages our containers using their Elastic Container Service.
Websites these days need to be readable in the large screens of desktops
and the small screens of cellphones (and everything in between).
To support this large range of browser sizes, web programmers can
use Responsive-Website techniques to allow their websites to grow or shrink
to different sizes.
On a personal note, it was a chore to get the Unconventional Thinking
website to look good at almost any size - Response Websites are
surprisingly a lot of work because it's like creating three sites
in one - but we feel the results are worth it. In fact, if you're
on a desktop computer, try scrolling back up to the top of the page and
reducing the width of your browser, until the page is as small as a cellphone.
You should see the site constantly
reconfiguring itself to match the smaller proportions.