Posts
To Freemium or Not Freemium?
I usually don't write about the side projects I'm working on. In the spirit of changing that, I'm going write about my thoughts for CloudSh & the Freemium model.
CloudSh is a SAAS service providing search for static sites, or any site really, as long as the content is public.
I initially planned on having an free level, then changed my mind, then changed it again! WTF?! It's hard working in a vacuum!
Rails JSON Serialized Fields
Using Rails 5 to serialize objects into a JSON field in the DB. We're gonna assume we want to store some options as a JSON field on a User model. And we want an Options model to work with in code.
Book: A Philosophy of Software Design
A Philosophy of Software Design by John Ousterhout is a great, short read of software design philosophy. I thought it was very to the point and didn't try to cover too much. It even changed my perspective on comments in code! Definately a good read.
JS Widgets
Basic Webpack setup for creating a JS widget w/ a loading script.
Elixir Deploys with Make
This is one of the first times I've used make
, but I regret not
using it more often. It's pretty simple to get started and really
powerful. This was a mix of a lot of different resources.
Elixir and Docker
Elixir releases need to be built on the same system as they run on. Seems like Docker is perfect for building the releases and running them.
Well, it's prefect for building the release. Running in Docker can make some of the BEAM stuff harder, like live code updates and clustering. Looks like there are some solutions for both, but for now I don't mind just restarting the Docker containers.
Building Releases with Distillery
Seems like just running the app with mix is probably fine for now, but will make using a lot of the BEAM hard/impossible later. Also, the project has multiple apps, so making different builds for each seems like it might be a good idea.
Beanstalk with Terraform
This took the longest time to get working. Partly because of my own typos :p. But, also because I wanted to setup everything with Terraform.
The Beanstalk stack is just the basic Docker stack. I setup RDS for the database because both apps need it.
Deploying an Elixir Umbrella Application
The plan; use Distillery to build the Elixir apps in a Docker container. Then create Docker containers with the compiled apps. Use those to deploy on AWS Beanstalk. Build the AWS Beanstalk setup with Terraform. And deploy through a Makefile to automate things.
It's a lot of setup to deploy an app!
Elixir Phoenix Partials
How to create partials in Elixir with block like syntax. Like:
= render_shared "page_header.html", title: "Listing Posts", body: fn ->
= link "New Post", class: 'btn btn-sm btn-outline-secondary', to: post_path(@conn, :new)
Secret weapons
Startups need secret weapons. Any advantage that a startup can leverage is important. My secret weapons might not be yours, but you'll have your own.
For software startups, the team, process, communication, and languages have the ability to accelerate the business and to be treated as secret weapons.
What Scrum got right
Scrum was a huge change in how software was built and a lot of its ideas are great, but some also have major problems.
Most of my experience is in early stage startups and may not apply as well to larger organizations, though I think a lot of it still does.
Upgrading dev tools: puma-dev and asdf
POW -> Puma-dev & RVM -> asdf
Sass Bootstrap 4 in Phoenix 1.3
Getting started with Elixir
Phoenix is a web framework build on Elixir, which runs on the Erlang VM. Why check out another web framework & language?
IDK... the grass is always greener. There are new ideas in new frameworks. Maybe one will fit more with my personal development opinions.
CES 2018
CES was about robots this year. There were a lot of toy focused robot kits that were cool. I like the Jimu kit the most.
GoBuffalo Nested Resources
Buffalo is a web framework written in Go by Mark Bates. I've been working more with Go and started using Buffalo. Mark has done an awesome job with it! Thanks Mark!
Pretty quickly into my app I wanted nested resources. Support for them seems pretty much there. It takes some work, but all in all it was pretty easy to get going. Here are some notes about how I approached it.