Adding in the backend for the fitness app I released for me and some friends.
Probably some small bug fixes for AppDoctor and then continue to try and learn rust.
Basically every elixir book I could get my hands on. Out of all of them “elixir in action” was my favorite. Now starting on rust with “the rust programming language”. Other then that I read through a couple marketing books in preparation for launching my saas.
May I point out Intercooler.js? It makes most reasonable uses of AJAX usable from declarative HTML attributes, and it doesn’t require architecting your server-side app around it.
One thing that intercooler approaches lack, and that requires a a clear server-side framework/library role is the fact that the LiveView components are stateful. It’s not only a matter of translating stateless HTTP requests to a server that patches parts of the page. Live views are processes on the server which hold state and can update the DOM at anytime, regardless of client events which may or may not be sent. This fact also allows us to do change tracking and send the minimal diffs on the wire that you see in the examples. That kind of optimization wouldn’t be possible without a stateful server.
Pardon my ignorance of Phoenix, but does this work by sticking a browser session to one server if the websocket connection drops, or does it rely on the transparent inter-server process communication in BEAM if you get a different server? Or does dropping the connection kill the component and you use error recovery to restart it on the new connection?
Phoenix websocket works horizontally. I believe it uses pg2 if I remember correctly to make sure messages are fanned out to connect servers. Though I may have that part wrong.
Still taking time off of writing code to try to get some marketing/buzz going about what we have been working on. Got around to writing a blog post attempting to explain everything in simple terms.
Preparing for the birth of my third child next Tuesday. (It’s scheduled because reasons.) Practically speaking that means lots of cleaning and reorganizing around the house to maximize comfort for my wife while she recovers, as well as keeping the older kids busy to tire them out. :)
Taking a weekend off development of appdocotor to try and build somewhat a social media presence before launch. Not at all my strong suit so I have alot to learn about that, sales and marketing.
defdelegate is awesome. I love having a common interface for function calls that delegates to more specific files.
Working with a designer to get some pdf’s of the frontend for my project appdoctor
and then finally get to kick of the react based front end.
I spent around the last 5 months working on the back end for my saas I have been working on. Appdoctor.io . I finally feel it is done(tests and all) and am now starting on the front end. The back end is built in elixir / hosted across multiple regions on digital ocean.
The application does a couple things.
It can proxy requests.
Google-com-ACCOUNTID.appdoctor.io will make a request like your calling google.com directly. This request is searchable and you can assign rules to trigger on…so something like if a request to Google takes longer then 1 second email team 1.
Used for public status pages. Can be configured to send health checks and set up public status pages at status.appdoctor.io/uniquename much like statuspage.io including response times / failed requests ect
3.Can be used to set up complex automated tests against production apis from multiple regions.
Should request Google from Europe region and pass if response is faster then 300ms
Sleep x amount of time
Some other request/assertion from another region.
I even splurged a little and took some time so users can right lua assertions if the basic assertion syntax is not enough.
I am really excited to finally be “done” with the backend and able to get one step closer to launch. I used all the in’s and outs of elixir extensively so feel free to as any questions.
using distributed elixir so when a server crashes another server will pick up it’s work(a running test for example)
Test run in a spawned execution genserver and stop themself once the test is done. I love that elixir can act as my job runner.