Changesets can take a little while to grok, but they work.
1,187 karma · joined March 31, 2007
[ my public key: https://keybase.io/udi; my proof: https://keybase.io/udi/sigs/cvmizkp14UtXju7hS_dkIlcdnilsIyDowFa8pQuCVfE ]
Changesets can take a little while to grok, but they work.
Diet ID, designed by leading experts in nutrition and preventive medicine, has reinvented how we assess and improve diets for better health. We empower people to rapidly figure out where they are and where they want to go, and give them a guided, step-by-step path to get there using a quick and accurate image-based pattern-matching system. Learn more about us at https://dietid.com
We are looking to hire a Senior Full-Stack Engineer to join our small team. Ideally you can join us on-site at our main office in Detroit, but we are a semi-distributed company with employees in New York, Connecticut and Texas as well.
Our application is a Ruby on Rails back-end with a React front-end (and some React Native). If you're deeply familiar with these (or similar) technologies, and find the idea of helping people assess and improve how they eat for better health, then please send a resume to tech@dietid.com. Thanks!!
(Disclosure, I'm part of the podcastnotes team)
Are there performance implications?
Working with Elixir/Phoenix is a far superior experience in nearly every way for web/api IMO.
"This summer, as New Yorkers head out to Long Island’s beach towns and parks on the Southern State Parkway, they’ll pass beneath a series of overpass bridges made infamous in Robert A. Caro’s monumental 1974 biography of Robert Moses, The Power Broker.
In one of the book's most memorable passages, Caro reveals that Moses ordered his engineers to build the bridges low over the parkway to keep buses from the city away from Jones Beach—buses presumably filled with the poor blacks and Puerto Ricans Moses despised. The story was told to Caro by Sidney M. Shapiro, a close Moses associate and former chief engineer and general manager of the Long Island State Park Commission."
This article says that the story is not necessarily that straightforward, but this does speak directly to your comment.
1. So much faster. I'm getting super consistent 30ms response times on a heavily trafficked web app. AND I did this while completely ripping out a complicated layered caching system that I was using in last iteration of the app. It's just web app talking directly to postgres database, which sounded crazy to me, but actually works.
2. Socket/Channel goodness baked in. I built a real-time chat experience in about a day with Phoenix channels/presence. Makes it quite easy.
3. Less moving parts. Language level support for async tasks and in memory caching lets you do A LOT without installing/managing redis, queues, and other tools. For fancier use cases you still might want to go there, but for a lot of common tasks (send email after user registers for instance) you can go a long way with just Elixir. And you can keep related code together more easily because of this.
4. Easier testing and maintenance. Functional language by nature tends to lead to more modular, maintainable and testable code. Hard to appreciate this until you build a large-ish project with it, but I've found this to be very true.
Such as: https://github.com/d3/d3-shape
https://github.com/d3/d3-scale
Doing it from scratch without the help of utilities like these would be much harder.
A couple examples:
var line = d3.line() .x(function(d) { return x(d.date); }) .y(function(d) { return y(d.value); }) .curve(d3.curveCatmullRom.alpha(0.5));
line(data); // gives you svg path
and
var color = d3.scaleLinear().domain([10, 100]).range(["brown", "steelblue"]);
color(20); // "#9a3439" color(50); // "#7b5167"
If someone only wants to buy, say, $100 worth of bitcoin just to get their foot in the door and they don't put in the time to research how to keep their local wallet secure and make sure their computer/phone has not been hacked, they're very likely better off keeping that small amount of bitcoin with a service like Coinbase (and set up 2fa!)
Of course if you play with bigger amounts, and you take the time to educate yourself further about taking custody of your own funds, then I completely agree with what you've said.