GOLANG! Ever since I saw the blue-ish/cyan gopher, I've been hooked. Go language is a low level
language so you can basically do absolutly everything. I've used Go in many projects, and experimented with the
new advanced 1.8 stuff. Atlys.io website is built entirely in Golang and it feels like a normal website! Even
though it looks like a standard webpage, the backend does extremly complexed tasks like global authentication methods,
bandwidth useage, and PCI compliant billing. I've also used Golang to communicate to other API like CloudFront, Rancher,
Authorize.net, and many others.
Golang is the one language that is cross platform and allows you to create anything.
Unlike other languages, Golang is compiled, so you can export for Windows, Mac, Linux, iOS, Android and ARM devices
like the raspberry pi!
Bitcoin was a first, but Ethereum is a different story. Ethereum has allowed me to make trustless contract to do real
life functionality within the blockchain. Using Twilio API and Ethereum I created TextMessage.eth contract, it will send a normal
SMS Text Message to any phone number. All you have to do is send it 10 cents USD, a phone number, and the body of the message. Since
everything on the blockchain is public, the sender must send their variables encrypted. Other contracts can even send txt messages
by using TextMessage.eth. Imagine 2 Factor Authentication within the blockchain!
IPFS - InterPlanetary File System
Everyone has done S3, NFS Server, OpenStack, etc etc, but IPFS is something new. Rather than having 1 server hosting files, IPFS allows
files to be distributed in a decentralized way. IPFS can host any type of file, even text! Each file creates a new hash, for example:
Ruby on Rails
Most of my web based applications are written in Ruby on Rails using MySQL as a database. It's always worked out
for me with the Rails design, structure, and the MVC approach. Many of my applications have millions rows in MySQL, and
this is where Ruby fails. Unless... you use Memcached or Redis to cache huge queries. I've used both, but memcached
seems to be working great for my applications.
Using Gems is another huge bonus to using Ruby on Rails.
One of my favorites is Turbograft.
It's a fork of the normal TurboLinks but lets you do even more seemless page loading and transitions. Another huge bonus with
turbograft is that it allows you to update/refresh an individual 'div'.
Who doesn't love Docker! I've used Docker in production and development environments to
scale up/down web services and manage temporary worker containers. I've also used Docker along with
Rancher Server to produce a effective way for other non developers to upgrade a channels/containers.
With Docker and Rancher Server I was able to communicate to Ranchers API. I used the API to
automatically create new containers and servers off a single click of a button!
AWS (Sever Architecture)
Amazon Web Services actually deserves its own page because of the amount of products they have. My work production stack is hosted on multiple EC2's,
hosted in multiple regions. These EC2 servers are also connected to a ELB (Elastic Load Balancer), and using RDS for MySQL host.
Using AWS Route 53, I'm able to automate the change of DNS for hundreds of subdomains and domains.
How I do manage all of these servers? Good question, heres the answer: ANSIBLE. Ansible saves the day and ensures I don't have
SSH into each servers to do a silly command. Ansible along with all of the AWS products make a great pair. Ansible even has modules
for most of the AWS products!
A perfect tool for deployment in production mode. I've created a tons of playbooks to help my
production mode servers stay stable and other automated server related tasks. I use ansible
playbooks to automatically update applications while scaling between multiple servers for a
0 downtime deployment. Ansible is an extremly powerful tool with a huge community and tons of modules.
I've used all the different types of databases, but MySQL has always been my #1. Its highly customizable
for huge queries, and its opensource! All of my personal and work related projects have been using
MySQL. I've used MySQL with Ruby on Rails, Go, C#, PHP, Java, and even an Arduino (ATMEGA). Eve-Business
holds 70+ million rows and it's still doing it's daily tasks.
Stronghold2D was created in Unity3D using C#. I've used Unity3D since the beginning of 4.0, and WOW it
has advanced over the years. Unfortunately, I don't do Shader programming so I don't use the new
shadow and lighting effects in version 5.5+. I've used Unity3D for simple, minimal, flat art while still using super
advanced method a normal 3D game would.
Stronghold2D needed C# and Unity, it allows cannons to do complex mathmatical equations to find the
perfect angle to shoot at. This alorithm includes distance, bullet velocity, and even gravity! The C#
language includes many libraries so doing a HTTP POST to recieve some JSON is quick, and affordable.
I've been using Rancher Server for a little over 1 year now. Rancher's UI/UX isn't at 100% yet, and the functionality
works 95% of the time, but the other 5% is not knowing what Rancher is actually doing. Rancher's API is fantistic
though, and I do use this often (using golang). Rancher's API lets me do HTTP requests to automatically create new stacks,
containers, and even update load balancer DNS names.
It's about time for all of us to encrypt HTTP! With LetsEncrypt, there's no excuses for not having a SSL implemented onto your domains.
Using automated tasks, I'm able to create and recreate SSL certificates without any payments, emails, confirmations, or hassle. One of my favorite
LetsEncrypt packages is dehyrated created by lukas2511. Dehyrated lets me created SSL's based on the
domains I own on CloudFlare! Why just use the root domain when you can create many sub domains per week! So LetsEncrypt HTTP!
With all companies theres always a question of "what if I get a gazillion hits? Can my server support it?". This is a very
hard question to solve, and with different applications/engines, the solution is different. I use HA Proxy to load balance
between multiple servers running Ruby on Rails and it works great! I havnt gotten a gazillion hits yet, but thats when more
advanced solution come into play. Read about AWS below.
Even though it's pretty old, everyone still enjoys some PHP sometimes. With composer, you do some pretty advanced
things with libraries, I've dealt with a ansible-playbook composer package. Stronghold2D still uses a couple very simple
lightweight PHP scripts to record Multiplayer Battles in JSON, saving players stronghold base data, authentication,
and the global chat in-app.
I use PHP if the task is simple and quick, for example a script that can accept params,
query MySQL and return JSON. If it was a more complex task, I'd probably use Golang.
You know when a website has that crisp, clean, smooth feel when you click something? A special blend of jQuery and
CSS3 transition can make a site feel real, while remaining lightweight. I've used jQuery 2/3 and CSS3 in all of my
projects to give the end user that native application feel. I use a lot of AJAX for a smooth, no load, seemless
experience. With this new age software/services out now, people don't wait for a heavy load.
Most people have an iPhone or an Android device, unfortunately they are completly different languages. That's why
I use a cross platform engine, Unity3D. But once you have the game/app compiled, it needs to be sent to multiple mobile marketplaces.
I have years of experience with Google Play Store, Apple App Store, and Amazon App Store. Stronghold2D is a cross platform game,
and it's even available for Windows, Mac and Linux.
Automate Builds and Automagically submit App to Google Play and iTunes Connect. Fastlane has many plugins to automate this process. takes a little bit to setup,
but once its used correctly, its fully automated. Even screenshots and .ipa validatation for itunes connect! I've used some of these plugins to automate the process for Stronghold2D.
Others I Didn't Mention
The list above are the most important/coolest things I've worked on. If I wrote a description for every single tool I've used, this page would lag out and 500 crash.
Eh, Probably not. But some other Softwares, Tools, and Applications I use are:
Github, Illustrator, Android Studio, Xcode, Slack, Slack API, Chrome & Store,