In the midst of industry discussions about productivity and automation, it’s all too easy to forget to fully come to terms with complexity. However, it’s important that we don’t ignore complexity or see it as something that can be fixed: we need to embrace it and use it to our advantage.
This article explores how to manage vector data in a PostgreSQL database using Supabase. It also delves deeper into the creation of embeddings using OpenAI, which offers an efficient way to transform complex data into meaningful numerical representations.
Database migrations are challenging, even with tools like Django’s migration engine. Migrating databases involves planning for scenarios like adding new fields, removing fields, and changing fields with attached business logic. There are advanced tactics, like dual-write strategies and phased deployments, that can help mitigate such challenges. This article dives into best practices for database migrations, like generating immutable migration scripts, ensuring the database version is contained within the database, focusing on backward compatibility, and leveraging modern tools to simplify migrations.
Vue projects need clear rules and requirements for their layout architecture, such as declaring layouts and components for each page, ensuring changes to one page do not affect others, and handling common layout elements efficiently. This article provides examples, with code provided, of creating different layouts: three-column, two-column, and blank. It offers practical insights for managing layouts in Vue applications.
Version control systems, and Git in particular, are essential tools for tracking code changes, collaborating with your team, and ensuring the stability of your codebase. While Git is primarily designed for source code, you can also use it in combination with MySQL databases for version control and schema change management. This article explores how to integrate Git with MySQL for version control using Git hooks, with specific examples in a guide format.
Working with your manager effectively is necessary to perform well at your job, get promoted faster, and take on more responsibility as a teammate. This article walks through building trust with your manager, getting your manager to want to promote you, and dealing with an unsupportive manager. It gives actionable tips for each step, such as building trust through feedback.
DevOps has shifted to become more of a job title and a buzzword. DevOps and Cloud teams have become overbooked, leading to inefficiencies and frustration. One potential solution is platform engineering, which involves building an Internal Development Platform (IDP) that provides composable building blocks and tools for engineers.
Having a long-term plan for your career can help you reduce career-related stress, increase your perceived employability, and allow you to connect more deeply with your purpose. This article outlines 4 steps that will help you to move beyond yearly career goals and create a five-year plan.
Bruno is an open-source IDE for exploring and testing APIs. It stores your collections directly in a folder on your filesystem. Bruno uses a plain text markup language, Bru, to save information about API requests. You can use git or any version control of your choice to collaborate over your API collections.
The P vs. NP problem is an important unsolved problem in computer science. Researchers used a Socratic Method to prompt GPT-4 and found that it provided arguments suggesting that P does not equal NP, although the validity of this conclusion is still under scrutiny. The study highlights the potential for large language models to assist in solving complex problems and the importance of prompt engineering to guide AI in productive discussions.
For startups, it’s important to balance staying focused on the main goal with leaving time to explore new opportunities. People working at startups should say “no” to distractions that diverge from their initial vision, but qualify their “yes” answers by setting conditions that make an opportunity worthwhile, such as the opportunity advancing the business significantly.
Do-everything workplace managers like Asana and Trello promise organizational utopias, but they reveal limitations that date all the way back to the factory floors of the 1900s.
Raycasting is a rendering technique that creates a 3D perspective in a 2D map. This tutorial shows readers how to create a raycasting engine with code examples.
Personal computers, the Internet, mobile, and the cloud were platform shifts over the past few decades. Whether AI is a platform shift is yet to be seen.
This article aims to help you make an informed decision on which backend technology to choose by comparing Node.js and Python and discussing their key differences, advantages, and real-world use cases.
“Data is the new oil” was a common slogan of the last decade, but this might not hold true anymore with the advent of generative AI. On one hand, quality data still matters as LLMs can be greatly influenced by training data quality. On the other hand, fine tuning models only requires ~100 data points, which can be easily curated. LLMs can also now generate great synthetic data, which lowers the usefulness of “real” data.
GDevelop is a full-featured, no-code, open-source game development software. You can build games for mobile, desktop, and the web. GDevelop is fast and easy to use. The game logic is built up using an intuitive and powerful event-based system.
A team of Postman engineers tackled a storage issue with the Sync service, which had been running since 2014 and was facing physical storage limitations on an AWS RDS Aurora cluster. The team initially attempted to prune older records to free up space but found that it didn't work as expected due to certain constraints. They then devised an approach to free up tables without compromising system reliability, resulting in 60TB of space freed.
Parallelism is the practice of using multi-threading or multiprocessing to take advantage of multiple CPU cores for improved performance. There are still many optimizations you can make to lower-level code when parallelism isn’t available. This article explores various optimizations, including simplifying rounding operations, reducing memory usage by reusing arrays, and minimizing conditional statements.
Indie hacking and side hustles are more common for software engineers today due to the recent state of the tech market, the advent of AI, and inflationary pressures. This author interviewed seven indie hackers and software engineers with side ventures who make over 20k a month and distilled the learnings. Software engineers who have successful side ventures got there by focusing on the intersection of their unfair advantages and passions and maintaining non-negotiable consistency.
2023.09.28·
engineercodex.substack.com·6 min read·TLDR Web Dev
In the world of open source software, it's not enough for a project to simply position itself as an open-source alternative to a commercial product. To succeed, open-source companies must have a clear reason for being open source or surpass their competitors. Projects like PostHog, Medplum, and Minio succeed by providing transparency and trust in data handling, while others thrive by allowing community-driven integrations and enhancements, ultimately striving to be better than closed-source alternatives.
The Angular team recently made significant changes to its framework, creating a more user-friendly experience for frontend developers. It has moved away from modules, added signals, and is considering a new control flow syntax inspired by Svelte. Angular’s focus on developer experience has made it more attractive compared to other competitors like React.
Valibot is a modular and type-safe schema library for validating structural data. It’s an extremely small package at less than 300 bytes. Valibot is implemented in TypeScript and has many validation helpers included.
Carton is a library that lets you run any machine-learning model from any programming language. It wraps existing models and provides a uniform interface for your application to use regardless of the framework the underlying model was implemented in.
Unlike many tech companies, Linear doesn't employ product managers or cross-functional teams. Instead, it has a single head of product. Rather than setting metric-based goals, it prioritizes a company-wide north-star objective. In contrast to common practice, it doesn't rely on A/B testing for decision-making. Furthermore, its hiring process includes a paid work trial, and the company operates entirely remotely. Impressively, Linear has maintained profitability for over two years, spent a mere $35,000 on marketing, and experienced minimal employee turnover.
This blog post discusses the implementation of breakpoint functionality in a debugger tool called DbgRs. The tool already had the ability to resolve addresses to names in a module, a crucial step before implementing breakpoints. The post walks readers through the capability to set hardware breakpoints with many code examples.