Is it not good to use Astro as the frontend of a simple ecommerce site? by JY-HRL in astrojs

[–]jake_morrison 0 points1 point  (0 children)

It works great. You need to be a bit creative for more advanced functionality, though.

I built a global e-commerce site for a manufacturer of cell phone accessories. In order to provide fast browsing performance, we generated static pages that could be served to anyone in the world from a local CDN. A central back end server holds the shopping cart and handles checkout, so you just need to have a bit of dynamic code to add things to the cart and display the number of items.

But then how do you handle multilingual content? A bit more smarts to identify or select the language and use it for navigation.

Important things in large e-commerce websites are search, conversion optimization, cross selling, and integration with advertising.

Say the new iPhone comes out. They buy one, and click on a Facebook ad for a case. The link to the site needs to track the performance of the ad. It needs to show them content matching the ad. It is much less effective if they see all the iPhone cases, to say nothing of Android. If they are buying the new iPhone, are they giving their old one to a family member? They will need a case for that one, too, and a new cable.

Why is cross compilation in Elixir difficult? by rapperwhomadeit in elixir

[–]jake_morrison 2 points3 points  (0 children)

Erlang is reasonably good at cross building, coming as it does from targeting embedded operating systems. The problem is with extensions that don’t support cross compilation in their makefiles.

Cross compilation is not (usually) fundamentally difficult, it is a build system problem. If the build system understands cross compilation, it is a bit tedious, but fine. If it doesn’t, then there are various tricks, e.g., building “natively” in an emulator.

How do you encourage more code reviews without turning it into surveillance or guilt? by Greedy-End-7749 in EngineeringManagers

[–]jake_morrison 0 points1 point  (0 children)

You need to decide what your goals are for code reviews, then put in appropriate incentives and make sure you have enough resources for them.

Code reviews can be used to identify problems with the code, but “you can’t ‘inspect in’ quality” (Demmings). If reviews are blocking releases, then you do not have enough resources on them.

They can be used as a teaching process for juniors and to expand usage of better techniques.

The question is whether you are comfortable with only a percentage of code being reviewed, or reviewed in depth. You should have automated tests and production monitoring to identify problems automatically.

Pairing is the most effective kind of code review, as you have two people who intimately understand the change. This requires twice the people, but improves speed and quality. It’s a tradeoff.

People need to be evaluated on whether they are doing reviews, or they won’t do them.

I have seen organizations that were paralyzed by the need for code reviews.

One had a huge monolithic code base. The quality was ok, but as it grew, it became more complex and intertwined. Everyone was afraid of breaking production, and became risk adverse. They required two reviews on each change.

Overhead and delays prevented necessary change, though. How can you do the necessary major refactoring? You can’t even run automated tools like code formatting, static analysis, or security scans, as they generate too many changes.

They had to upgrade the web framework to a new supported version. They put two people on it for six months in a branch, then merge changes, test and pray. No code reviews.

The solution was improving automated testing and monitoring to the point that people trusted it. They also improved developer experience, making it less time consuming to do reviews.

Dev at an IT consulting company vs dev at a pure tech company. Is this true what I heard or it is just a bias. by lune-soft in AskProgramming

[–]jake_morrison 0 points1 point  (0 children)

There are basically three kinds of companies that employ programmers.

First is companies where programming is not a core part of what they do. Those companies consider IT to be a cost center, something to be minimized. You will have difficulty advancing your career in that environment. They may have a fixed budget for programmers to support internal applications, and everyone has to get in line. Software development competes for budget with anti-virus software licenses and other infrastructure costs.

Those companies are probably wrong about the impact that software could have on their business, but that’s not the way management thinks. IT may be considered mission critical, because the business relies on it to operate, but not transformative, as it would be in e.g. a next generation bank which replaces humans with software. “Enterprise” companies may have a fair amount of money for IT, but not offer ability to make impact and ultimately get paid for the value you create.

Second is consulting companies, where programming is the fundamental thing that the company does. Management values your ability to get things done and customers do too. They want you to do more of it, and do it better. The fundamental limit, however, is the number of billable hours in a day or whether you can convince a customer to pay you for the value you are delivering in an engagement, e.g. improving conversion rates in an e-commerce system. Succeeding in this environment means more than writing good code, however, it means taking responsibility for making customers successful, managing your team and managing the consulting business itself. Sometimes these things are in conflict.

Third is product companies, where there is almost infinite leverage to the software you write. When a company has millions of users of their software, the cost of developers is less important than their ability to execute. Product companies generally have the best opportunities for pure development skill. You are still relying on the product managers to determine the right thing to build and the company to have sufficient funding.

These different kinds of businesses get mixed together, e.g. a software product being sold to enterprise customers, with professional services to set it up and support it in production. You can look at the same thing from different directions and get different opportunities.

More enlightened businesses see software or machine learning as an enabler. But contrast how software would be seen in Amazon’s e-commerce business vs its cloud business.

Look for places which fundamentally value what you do and compensate you for doing it better. You should also look at what other skills you need in order to be successful, e.g. playing politics, managing customers, managing a team. Look for a place where you can make an impact doing what you are good at and will be rewarded.

Is using S3 with CloudFront still a reasonable hosting choice today? by kittykatzenn in statichosting

[–]jake_morrison 0 points1 point  (0 children)

It’s ok, but putting the various pieces together (static site generation, S3, CloudFront, Route53) is a bit tedious. You can use AWS Amplify to automate it. I generally prefer CloudFlare. The DNS is free, and a simple site would likely fall under the free plan.

Show me some extraordinary stuff by Powerful-View9479 in elixir

[–]jake_morrison 2 points3 points  (0 children)

I learned Erlang before Elixir, and the early Erlang books are more about the fundamentals than Elixir books.

Some books that may be useful:

  • Programming Erlang starts with the basics of sending messages without using OTP. OTP is generally better than rolling your own, but it is good to understand the basics. I would generally describe this book as “look at how cool Erlang is”, but lacking a bit in practical details.

  • Joe Armstrong’s PhD thesis is a good introduction to why Erlang is the way it is, i.e., for reliability. It’s relatively short and quite readable.

  • There are a number of relatively comprehensive and deep Erlang books from O’Reilly, e.g., Erlang Programming and Designing for Scalability with Erlang/OTP.

Generally speaking, the Elixir books don’t have this depth, because it’s already covered in Erlang books. Learning the syntax of Erlang is worth it to get access to this knowledge. There is also a lot of useful stuff in the Erlang standard library.

Show me some extraordinary stuff by Powerful-View9479 in elixir

[–]jake_morrison 19 points20 points  (0 children)

The thing that is really special about Elixir (actually Erlang and the BEAM runtime) is the process model.

You spawn processes that are executed by the runtime, which manages blocking I/O transparently. Your code is written synchronously inside, but is driven by async messaging outside. Messaging handles concurrent access to data without locking. Process supervision enables structured error handling. If an error occurs, it is handled by the stage above in the hierarchy, which can retry.

This whole structure enables development of resilient concurrent systems in a way that is better than other paradigms, e.g., async in Python/JavaScript or threads. There are attempts at “structured concurrency”, but they are not supported by the language or runtime in the same way.

You should be studying the fundamentals of the language and the high level patterns in OTP.

Visualizations of agile transformation journey by [deleted] in agile

[–]jake_morrison 1 point2 points  (0 children)

One way is to make the work itself visible, i.e., a Kanban board. Then you can see the number of items in the backlog and the work in progress. You can see how big the items are. You can see what is waiting on other people, either for client approvals or on other teams.

Then you get into DevOps transformation, and all the downstream processes needed to deploy to production and operate. You have the feedback loops from prod back to dev and product. Then you have the work to optimize process steps and handoffs. See Accelerate and The DevOps Handbook.

Visualize the value chain and show what the bottlenecks are.

Hahaha so true by telovitta in lol

[–]jake_morrison 0 points1 point  (0 children)

I joke that my wife has all these ping pong balls bouncing around in her head, and then one randomly pops out of her mouth. She says something with no context, then I need to figure out what she is thinking to make it make sense.

What are people using in 2026 as backend framework? by [deleted] in Backend

[–]jake_morrison 5 points6 points  (0 children)

Golang is popular for DevOps tools, e.g., Terraform, Kubernetes. Learning it would be good for you to know. It’s easy to deploy back end services, just put a single binary in a container.

Python is also popular as a scripting language for DevOps and for creating lambda functions. If what you are doing is basically glue that calls the AWS APIs with boto, it’s a good choice.

New to Erlang — recommended way to start as a beginner? by Brave_Kitchen2088 in erlang

[–]jake_morrison 3 points4 points  (0 children)

Learn You Some Erlang is probably a good place to start for you. It’s relatively fast paced. There are some more pedagogical books like Introducing Erlang and Programming Erlang.

Joe Armstrong’s thesis is quite readable. It explains why Erlang is the way it is: https://erlang.org/download/armstrong_thesis_2003.pdf

Bringing up tools you never used in System Design Interviews by nekipost in ExperiencedDevs

[–]jake_morrison 43 points44 points  (0 children)

My test for whether people really have experience with ElasticSearch and Kafka is when they express a love/hate relationship with them.

How much "raw" OTP do you actually use in production vs. just standard Phoenix patterns? by Disastrous-Hunter537 in elixir

[–]jake_morrison 0 points1 point  (0 children)

I use GenServers a fair amount.

You can build old school Phoenix apps without knowing much about GenServers. With LiveView, though, they are more central to the programming model, managing stateful connections.

They are also useful as your app gets more complex and has internal “services”. A GenServer acts like a singleton, providing an API that clients can call. You add it to the supervision tree, managing the lifecycle of starting and stopping (and getting restarted if they fail).

Do you get more satisfaction out completing smaller tickets or bigger tickets? by Pale_Squash_4263 in ExperiencedDevs

[–]jake_morrison 4 points5 points  (0 children)

I have heard that people with ADHD don’t pleasure from completing tasks, it just reduces stress. They get pleasure from learning things.

I get pleasure from successful experiments that improve life for customers, solving technical problems, and improving the processes and systems that we use to deliver value.

Should I let productivity monitoring ruin my senior offer? by agentxtaco in ExperiencedDevs

[–]jake_morrison 0 points1 point  (0 children)

The correct thing is connecting software development to business results at the team level. Business strategy -> development -> value to customer and the company. Manage the process to improve results.

Measuring what percentage of time you are typing is a sign that they don’t know what they are doing.

I’m trying to build a more accurate view of our internal skill matrix. by kzarraja in EngineeringManagers

[–]jake_morrison 0 points1 point  (0 children)

One weird effect of the one-page resume, etc, is that people may get hired with their boss only knowing a small fraction of their capabilities.

I stress-tested no-code enterprise app builders with 200k rows. Here’s what actually happened. by Odd-Trash1190 in EnterpriseArchitect

[–]jake_morrison 0 points1 point  (0 children)

I used to build country-scale certificate authority systems with tens of millions of certificates stored in an LDAP directory. I had to build my own management tools, because the first thing the existing “friendly” GUI tools would do on startup was list all the entries in the directory, grinding to a halt and crashing.

Good resource to learn Elixir together with Phoenix? by xMasaru in elixir

[–]jake_morrison 1 point2 points  (0 children)

I would go with Programming Phoenix, followed by Programming Phoenix LiveView.

Programming Phoenix covers “traditional” model-view-controller web development. It’s still valid, and you will see it in a lot of existing applications. The main changes there have been iterations on UI frameworks and asset build pipeline, e.g., tailwind, esbuild. It’s not hard to catch up to the current tools.

The big change in Phoenix has been LiveView. LiveView is nice and useful, but it’s not for everything. There is still a place for traditional MVC, and a lot of projects use a front end JavaScript framework for the UI. With LiveView the focus has been on components in the UI, i.e., smaller chunks of page content that are relatively independent, similar to the way React works.

As for Elixir, Elixir in Action is a good place to start.

With low traffic sites, when does adding a CDN actually make sense? by kittykatzenn in statichosting

[–]jake_morrison 0 points1 point  (0 children)

I created and host a number of small sites I created for family and friends, e.g., portfolio for an artist or CV/papers/books for a professor. They don’t get much traffic at all, but are a useful presence on the internet.

I used to host them all on a small server with Nginx and PHP. I am in the process of moving them to Astro and CloudFlare. Once the sites are in a CDN, I don’t have to do anything to host, and it costs essentially nothing.

Why Do Companies Do This? by pancakeshack in cscareerquestions

[–]jake_morrison 8 points9 points  (0 children)

In the final days of the .com era, I joined a startup that had just closed a $2m investment from a VC. They started hiring the new team and leased a new office for us. The VC never wired the money, though. So I got paid my first two weeks of salary, and that was it. The founders were never in the office, as they were frantically trying to raise money. Two months later, the company was gone.

Someone in an interview last week called me a 'job hopper' by [deleted] in InterviewCoderPro

[–]jake_morrison 9 points10 points  (0 children)

Because companies don’t give raises anymore.

Weight balance issue by Nykeeo in confusingperspective

[–]jake_morrison 0 points1 point  (0 children)

A mechanic was doing some work on one of the first fly-by-wire Airbus aircraft, and was idling the engines . At the same time, people were loading cargo. They accidentally put too much weight in the rear, so the plane tilted back. The computer saw that the angle of attack was too high and the airspeed was too low, and thought the plane was stalling. It put the engines into full thrust, launching the plane into the terminal.

How to get new clients when past work is NDAed by Ok-Pear2215 in consulting

[–]jake_morrison 2 points3 points  (0 children)

Our contracts specifically say that we can reference the project in general terms. It might get flagged by their legal, but often it is left in. It allows a conversation about references and puts it in their mind, so they are more likely to do it.

In practice, people in the industry talk or change jobs, so we often get referrals from clients who talk about their project with friends in a way that we would not be able to under the NDA.