704 karma · joined April 3, 2012
Business: https://www.joyapp.com
So now, I lose control over the process and can't even refund the customer if they forget. And people won't try the app.
People who try my app end up liking it, but needing to provide payment up front is a deal breaker for most.
Moreover, technically it requires quite a bit of rework, as you need a user + IAP record together. And testing IAP is a huge PITA.
I'm slightly encouraged to see this happen to a major app[2], to see if Apple responds or rethink this. It's terrible.
[2] Which, incidentally I used and love. And only tried because of the free billing-less trial!
Also the network tab is just... odd.
I imagine the latter is possible thanks to it being a docker image.
So far I've been using this script I built for similar purposes:
https://gist.github.com/silviogutierrez/3dca60a6b5b8fe214052...
Runs locally, and only on changed files against master. Fixes all my python, JS, yaml, terraform, etc. And you can run it against a single file too so I integrated it with vim to replace all my linters.
I really hope the GitHub initiative projects takes off as a standard API (à la language server) for linters and fixers. Seems every single IDE needs to reinvent a plugin for applying a specific linter.
- Added a picture of the back of your 6k with the webcam. I'm sure it changes the look, however short the cable is.
- Address the lack of speakers. I see you mention using a bluetooth speaker or your home audio setup. What's it like using the MacBook Pro speakers?
- Added a picture of your setup + speaker if that's what you use regularly.
I love your minimalist look and have a similar one, but have been holding on to my LG 5k because of the speaker/webcam.
Using nix I made everything reproducible. So given a project name and branch name, everything is checked out (shallow checkout for big projects) and setup for me. If I'm working on another machine, just run "launch org/project <branch>" and profit.
There are edge cases: if I forget to push, I do remote in and do that. When I'm done with a branch, I make it a habit to purge that "instance" of the project. But first I have git go through the project and its submodules (if any) and ensure everything has been pushed and the repo not modified.
Note: my projects are database backed and have state etc. All of that is part of the setup script, per project. If your database is in a customized-state for development for a super specific scenario, then you're probably not automatically testing it and that's a code smell to me.
[1] https://medium.com/@Joachim8675309/devops-concepts-pets-vs-c...
I'd love to use this for the table to come rendered from the server then hydrate on the frontend and enable AJAX pagination, etc.
Completely understand if you can't, after all, you'd likely need to more tightly integrate with ReactDOMServer.
What's your rationale for now putting the venv inside the project and ignoring it? À la node_modules.
I've shifted to this after years of your method and like it. I do hate .gitignore expanding arbitrarily. But that's life.
But I'm not sure one can find something of "the right power" that has the same support from cloud providers, the open source community, the critical mass, etc. [1]
Eventually, a standard "simplified" abstraction over k8s will emerge. Many already exist, but they're all over the place. And some are vendor specific (Google Cloud Run is basically just running k8s for you). Then if you need the power, you can eject. Something like Create React App, but by Kubernetes. Create Kubernetes App.
[1] Though Nomad looks promising.
Mainly just kustomize piped into kube apply.
But, but, but. Having to a create a one-off database migration script imperatively.
Instead, every project I work on has a shell.nix in the root (and if it's not a project I control, I have a shell.nix mapping elsewhere).
Check it out, run nix-shell. Profit.
Once you're really ready for the big leagues, run it with --pure.
I can buy a new laptop and be back to 100% in a few minutes. Though the amount of time I spent learning how to get there far exceeds any time savings. Ever.
How about "infrastructure-as-some-sort-of-text-file-versioned-in-my-repository". It's a mouthful, but maybe it'll catch on.
As far as I can tell: those are imperative. At least in some areas.
Kubernetes is declarative. You mention the end state and it just "figures it out". Mind you, with issues sometimes.
All abstractions leak. Note that k8s's adamance about declarative configuration can make you bend over backwards. Example: running a migration script post deploys. Or waiting for other services to start before starting your own. Etc.
I think in many ways, those compete with Terraform which is "declarative"-ish. There's very much a state file.
Open cron.yaml and see. With schedule. Self documented.
Amazing. Every time. Even when some as my k8s battle wounds are still healing (or permanently scarred). See other replies for more info.
So terraform creates the cluster, DNS and VPC. Then k8s runs pretty much everything.
Note: my experience was all with cloud-provided Kubernetes, never running my own. So it was already an order of magnitude easier. Can't even imagine rolling my own. [2]
[1] My personal favorite. Truly egregious, despite how amazing k8s is. https://github.com/kubernetes/kubernetes/issues/63371#issuec...
[2] https://github.com/kelseyhightower/kubernetes-the-hard-way
In retrospect though, maybe it's exactly what I needed. Great suggestion.
Even ingress is trivial if you use a cloud balancer per ingress. But I wanted to save money so use a single cloud balancer for multiple ingresses. So you need something like ingress-nginx, which has a few vendor-specific subtleties.
Kubernetes is very complex and took a long time to learn properly. And there have been fires among the way. I plan to write extensively on my blog about it.
But at the end of the day: having my entire application stack as YAML files, fully reproducible [1] is invaluable. Even cron jobs.
Note: I don't use micro services, service meshes, or any fancy stuff. Just a plain ol' Django monolith.
Maybe there's room for a simpler IAC solution out there. Swarm looked promising then fizzled. But right now the leader is k8s[2] and for that alone it's worth it.
[1] Combined with Terraform
[2] There are other proprietary solutions. But k8s is vendor agnostic. I can and have repointed my entire infrastructure with minimal fuss.
I do keep track of if I already unsubscribed from a related list. Sometimes "unsubscribe from all" is completely ignored. Which really angers me.
If it's a random, clearly bought newsletter list from a related list, it depends on my mood. Likely spam.
Other notorious example: business A founder also founds (unrelated) business B. They just email their entire A client base with zero association to A. Big peeve of mine.
-- Edits (some more ramblings) --
My personal favorite: the "I want to receive marketing email" checkbox that rechecks if you have an unrelated issue with your transaction. Say, invalid CC details.
Still, even with these boxes, I think my standard is just: "I did business with them, I will get at least 1 marketing email. I'm ok with that. I will unsubscribe and not hear from them again." Anything past that is unacceptable.
To be clear: that's not how I think it should be. It's just how businesses, even small, genuine mom and pop shops, have been taught to operate. It's cultural. It reminds me a lot of tipping in the US. I'm vehemently anti-tipping "culture" because a standard 20% is the opposite of rewarding for performance. But I still tip at a baseline of 18%+.
It's too ingrained. And I'm not going to protest by not tipping and try to change it.
I think we've come too far unless changed by law or restaurant management. Same goes for marketing emails.
The elephant in the room: Facebook Pixel and the Facebook SDK.
I've held strong and refuse to add the SDK to our app. Or any Facebook integration (to the website). But per my marketing friends, we're essentially wasting our money on all our Facebook advertising. For better or worse, ads are very important for our consumer-facing product (https://www.joyapp.com).
The fact that 90% of apps out there have what many consider spyware should alarm more people. This is even if you don't use Facebook sign in![1][2]
But now you have truly deterministic builds.
Well, almost. Don't forget to pin channels.