While working on it, I realized I should build a small Hex package for authoring and playing demos right in a Phoenix app (it's very easy to author scripts with AI or by hand):
2,811 karma · joined May 8, 2014
While working on it, I realized I should build a small Hex package for authoring and playing demos right in a Phoenix app (it's very easy to author scripts with AI or by hand):
The moral of the story? Let’s give this new SQL syntax a chance.
https://www.npr.org/2014/04/07/300246095/if-jesus-never-call...
Excerpts:
> During his lifetime, Jesus himself didn't call himself God and didn't consider himself God, and ... none of his disciples had any inkling at all that he was God. ...
> You do find Jesus calling himself God in the Gospel of John, or the last Gospel. Jesus says things like, "Before Abraham was, I am." And, "I and the Father are one," and, "If you've seen me, you've seen the Father." These are all statements you find only in the Gospel of John, and that's striking because we have earlier gospels and we have the writings of Paul, and in none of them is there any indication that Jesus said such things.
> I think it's completely implausible that Matthew, Mark and Luke would not mention that Jesus called himself God if that's what he was declaring about himself. That would be a rather important point to make. This is not an unusual view amongst scholars; it's simply the view that the Gospel of John is providing a theological understanding of Jesus that is not what was historically accurate.
> Right at the same time that Christians were calling Jesus "God" is exactly when Romans started calling their emperors "God." So these Christians were not doing this in a vacuum; they were actually doing it in a context. I don't think this could be an accident that this is a point at which the emperors are being called "God." So by calling Jesus "God," in fact, it was a competition between your God, the emperor, and our God, Jesus.
“Muslim” is a more transcendent term that encompasses all the prophets mentioned in the Quran, as well as those not mentioned. Their creed and state of mind (absolute submission to God’s will) is the same, but they did not follow a religion called “Islam”. Earlier prophets and their followers prayed, fasted, and gave charity. Some even made the pilgrimage to Makkah. However, certain details of these rituals may have differed between them and today’s Islam, and between one another.
As far as prayer rugs and other accessories, those are not actually part of our rituals as Muslims. Some people use them for practical purposes (prayer rugs help you avoid prostrating on dirt, asphalt, a potentially unclean carpet, etc. and prayer beads make it easier to keep count), while some others may have cultural reasons, and some just want to enhance their spiritual experience (e.g. incense and perfume).
- Implement redirects from the old login screen to the new one - Keep sessions in sync - Make sure all internal and external users know how to clear cookies - Remind everyone to update bookmarks on all devices - Troubleshoot edge cases
In e.g. Elixir these are non-issues. Please, just give us declarative structs that are immutable by default (if they’re really needed, make constructors and mutability opt-in). Isn’t the trend already toward more FP in JS?
- Elixir docs are top notch, both the existing docs for the language and its ecosystem, and the ease of generating your own docs for your projects and libraries.
- The only thing that is not currently top notch in Elixir is the Language Server and therefore IDE support. This will hopefully improve soon after the formation of an official Language Server team to unify previously disparate efforts (https://elixir-lang.org/blog/2024/08/15/welcome-elixir-langu...).
I mention the Language Server and IDE support because, IMO, it is the biggest __technical__ hurdle preventing widespread adoption. If you’re considering learning Elixir, I think now is a great time!
I enjoyed reading and memorizing when I lived in Syria for 5 years (7th-11th grade), then had a hiatus until my mid-20s when I suddenly started reading and memorizing again, and added reading more explanation and commentary and criticism. I tried to write my own but it was mostly cringe.
Every now and then my interest in Arabic poetry has been rekindled. This year, I finally started feeling confident enough to share my poetry with not just with family and close friends, but also on social media.
I don’t have a formal learning method as I tend to learn by repetition and osmosis (same with programming), but a few tips:
- Examine and study other folks’ work, especially of those who are famous or whom you personally admire. Don’t just examine the works of art themselves, but also seek out any resources that can help you understand the underlying history, tools, conventions, etc.
- Balance that with learning via your own endeavors. You’ll probably do better working on things that actually interest you. Personally, I can’t imagine enjoying or doing a good job writing poetry on a subject that doesn’t excite me.
- Don’t be shy about seeking feedback. Earlier this year I wrote a poem I was very proud of, but a friend of a friend (a top authority in Arabic and a poet in his own right) picked it apart quite thoroughly. It was humbling, but I internalized the feedback and came back stronger and more confident.
I’m optimistic that LS will finally be done right, and that should help convince those curious about Elixir to stick around and __actually__ use it.
It should also make it easier to sell decision makers on Elixir as a serious language.
On the consumer side, there was 95, then 98, then 98 SE (Second Edition), and then ME.
I’ve developed with Elixir professionally for 2 years and it’s a really enjoyable language and ecosystem. So much thought has gone into the design of the language and its standard libraries, and that meticulousness has extended to most of the popular 3rd-party packages. Stability is great; I remember reading or hearing that there is no intent to ever make an Elixir 2.0. Devtools are great with the only major exception being IDE/LSP integration (still a WIP). The community is also less fragmented than other.
If the BEAM becomes a bottleneck, Elixir also lets you write NIFs (Natively Implemented Functions) in Rust (using Rustler) or other languages like Zig (using Zigler).
Also worth noting: the same Carson Gross built htmx[1].
They are separate projects, but they play together nicely.
Is an SPA actually required? You might be able to build what you need using tools that involve less mental and technical overhead. Take a look at htmx, UnPoly, Rails/Hotwire, Phoenix LiveView, and/or Laravel LiveWire. Or maybe even good old-fashioned server-rendered HTML if you don’t need to build something that’s highly interactive.
Even in the lowest tax brackets, workers still have to deal with payroll taxes. On the other hand, if your income is derived from investments, you escape payroll taxes __and__ you pay less in capital gains taxes than you would in normal income taxes. In other words, we pay a higher share of our income that we earn from doing actual work than many billionaires do on passive income.
Not to mention all the loopholes tailor-made for billionaires and corporations.
Anyways, regarding the mechanics of trickle-down economics, concentrating more wealth in the hands of the wealthy is, from a morally neutral “let’s just grow our GDP” standpoint, bad for the economy. Folks who already have everything they need/want may, given a few more billion dollars, buy a mega yacht here or make a trip to space there, but most of it will be hoarded away or, worse, used to influence policy so they can rake in more billions. If you spread those billions among the less wealthy, they’re more likely to go out and spend it on necessities, which puts more money in the hands of people who need it, and so on. The faster that money circulates, the more GDP grows.
Source: https://en.m.wikipedia.org/wiki/Velocity_of_money
It’s shocking how many Americans can be persuaded to hand over their hard-earned money and worship the thieves at the same time. As if they’ll somehow be getting that money back.
Does client-side state often need to exist independently of server-side state? I’m having trouble imagining a shopping cart or email draft being optimal UX-wise without the ability to resume on a different device.
For things like dropdowns and modals, you can bring in _hyperscript, Bootstrap, Alpine, or even CSS hacks (my preferred approach).
> the rich and bountiful lands of JSX and TypeScript
One person’s richness is another person’s needless complexity.
JSX is cool when you first try it, but the novelty wears off (at least for me it did). There are superior templating languages (Django, Jinja, EEx, erb) that don’t require bizarre syntax such as nested ternaries, and they make it feel like you’re just using a slightly-enhanced superset of HTML (not to mention being able to use them to render things other than HTML).
As for TypeScript, with the checks stripped out at runtime, you’ll still need to validate and test the assumptions your typed code is making. Frankly, TS seems like busywork to me.
Finally, Progressive Enhancement is a thing with htmx. You might be able to have it with React, but then you introduce even more complexity into the build system.
One of the first detailed explanations of Zero was made by Persian Muslim polymath AlKhawarizmi, whose name went through multiple translations, eventually giving us the word “Algorithm”.
FWIW, for the app I’m working on currently, I’m outsourcing most of my styles to Bootstrap, while pushing hard for progressive enhancement via CSS hacks (for effects like expanding/collapsing menus and switching tabs). I’m using htmx when JS is enabled, and regular HTTP for when it’s disabled (the Django back-end renders partial or full pages based on request type). Bootstrap and htmx don’t really step on each other’s toes, and I don’t see why htmx + Tailwind to be different.
If in doubt, experiment!
With any solution, you’ll need to have some awareness around SQL injection, CSRF, XSS, etc. Some frameworks have sensible defaults to help you avoid common mistakes, but there’s no 100% fool-proof solution.
Right now I’m in dev mode and haven’t deployed anything yet. DigitalOcean does have a managed app platform: https://www.digitalocean.com/products/app-platform
If you don’t expect to have scalability or real-time needs, I would not really recommend Elixir/Phoenix. The core language, dev tools, docs, and OTP are best-in-class, but there’s a learning curve, and the ecosystem has less mindshare than Python and Ruby.
I personally prefer Python/Django with htmx for client-side interactivity (if you need it), but if you want something better-integrated out of the box, you can’t go wrong with Ruby/Rails/Hotwire either.
Using a VPS is cheap and initially simple, but keep in mind you have to do more setup and maintenance on the OS, Web server, database, etc. yourself. I’ve had a great experience with DigitalOcean VPSs in the past, but for the app I’m building now, I am leaning toward using their managed app platform to minimize sysadmin/infra work on my part.