This former Google engineer reflects on his 9-year journey at the company. The pros include high compensation, great perks, and the opportunity to build a team. The cons include burnout, a USA-centric culture, and a lack of career growth opportunities.
Linus Torvalds (the creator of Git and Linux) says that data structures are more important than code in software development since good data structures lead to better code design and maintainability. This article supports this view with personal experience, describing how restructuring data in a project allowed a team to move faster in the long run. This prioritization is also how Git grew to be the dominant version control system.
This developer expresses their fondness for Go but also lists features they miss from other languages. They find the lack of ordered maps in Go's standard library inconvenient, requiring developers to use third-party implementations or manually sort maps. The developer also misses keyword and default arguments for functions, which would simplify function calls and improve API design. They also wish there was lambda syntax in Go.
Sponsored
As a developer, few things are more frustrating than an API that's slower than molasses — the code works, but it can't possibly be a good user experience. Frontend developer Dan Mindru used Sentry's Trace View to debug the ‘final boss of endpoints [10]' and shave off valuable seconds. Read about Dan's optimization journey on the Sentry
PyScript is an open source platform for Python in the browser.
A simple way to scrape websites that integrates with Microsoft Azure.
MPV is an open-source cross-platform media player.
Eric Schmidt, the former CEO of Google, recently had a talk at Stanford. This is the transcript of the talk, in which he discusses the rapid advancements in AI and its potential impact on the world. He predicts that within the next year or two, significant changes will arise due to the integration of three key AI advancements: large context windows, AI agents, and text-to-action capabilities. He also mentioned some controversial things about OpenAI and Google's work culture, which led to the talk being taken down.
The PyTorch framework was initially successful for rapid prototyping, but now has a better successor in JAX, a framework created by Google DeepMind. JAX has a compiler-driven approach, which allows for automatic optimization and parallelization. It also has a functional API, better reproducibility, portability across different hardware, and automatic scaling.
This interviewer had a bizarre interview with a candidate named Adam. Adam was critical of the interview process, claiming it was too long and unnecessary, and that he could assess a developer's skills simply by looking at their GitHub profile. Despite the interviewer's attempts to explain his process and adjust it to Adam's preferences, Adam abruptly ended the interview, claiming it wouldn't be a good fit. After the call, Adam sent an aggressive email criticizing the interviewer's interview style and even his open source work.
2024.08.19·links.tldrnewsletter.com·10 min read·TLDR Web Dev Examples of using JSX without a framework.
Job interviews are not just about companies assessing candidates, but also about candidates evaluating companies.
This developer created a 13KB game that had procedurally generated levels and a pixel art style with an engine called LittleJS.
A Hacker News poster asks for advice on server monitoring, specifically about specific metrics beyond the basics (like network performance, processes, and services).
Canva's collaboration team implemented real-time mouse pointers to make its whiteboard product better. Initially, they utilized a backend-centric architecture using WebSockets and Redis, which scaled to support hundreds of thousands of simultaneous users, but had limitations in update rate. Recognizing these limitations, the team migrated to a WebRTC-based architecture, which allowed direct peer-to-peer communication between clients, reducing latency and improving scalability.
Dependency Injection (DI) is a design pattern that improves flexibility, testability, and maintainability by injecting external dependencies into your code rather than hard-coding them. In React applications, DI can be implemented using createContext and useContext to manage dependencies across components without prop drilling. This approach simplifies testing, makes code less coupled, and provides better separation of concerns, though it does add some complexity.
2024.08.16·codedrivendevelopment.com·8 min read·TLDR Web Dev TypeScript's implementation of enums is counterintuitive and inconsistent with type-safe JavaScript. It has unexpected behavior when dealing with numerics, incompatibilities with nominal typing, and numerous bugs related to them in the TypeScript repository.
Many devs find that test-driven development doesn't really make them more productive. While they may have found it useful when they were newer to coding, it became less useful once they gained more experience.
Sqlean-time is a high-precision date/time extension for SQLite. It provides a structured API and a rich set of functions for working with Time and Duration values. The extension enables storing and manipulating dates for billions of years in the past and future with nanosecond precision.
Hamming is an end-to-end platform that streamlines the development and deployment of trustworthy AI voice apps by offering tools for prompt optimization, automated voice testing, monitoring, and more.
Kardinal is a framework for creating lightweight ephemeral development environments within a shared Kubernetes cluster.
Daniel Beck, a seasoned developer, shares his personal experiences with XSLT, inefficient database connections, and disastrous refactoring efforts. His experience with horrific codebase complexity only reinforced how hard it can be to rectify human errors.
The Frugal Architect mindset treats cost as a key design factor alongside security and performance. This approach aligns with the AWS Well-Architected Framework, which provides guidelines for optimizing cloud architecture by focusing on cost efficiency and sustainability. By continually evaluating and adjusting architectural decisions, organizations can balance innovation with responsible resource usage and drive maximum value from their investments.
Despite a push for employees to return to the office, a growing number of CEOs are being given the option to run their companies remotely, often living hundreds of miles away from their company headquarters.
Starting a startup requires deep expertise in a problem and the ability to build a solution, whether through tech or distribution, so you should gauge your unique advantages and your desired outcome.
Rails 7.2 has better production defaults, performance boosts with YJIT enabled by default, optimized Puma settings, and easier setup with pre-configured development containers.
Kiota is a command line tool for generating an API client to call any OpenAPI described API you are interested in.
This blog post explores collision detection algorithms in video games. It starts by explaining the naive approach, which involves checking every pair of objects for collisions, and its limitations in terms of performance. It then introduces the concept of sorting objects based on their position to reduce the number of unnecessary checks. By sorting objects and implementing an early break condition, the algorithm becomes more efficient, especially in scenarios where objects are evenly distributed.
You can speed up client-side rendered apps by preloading the necessary page chunks before they're needed, avoiding delays caused by lazy loading. By injecting a small script during the build process, you can make sure that route-specific chunks load in parallel with the app's entry point.
This article introduces three key rules to manage React side effects properly: keep side effects out of the render process, place side effects triggered by events in event handlers, and use useEffect to handle side effects that synchronize with external systems.
JavaScript, HTML/CSS, and Python are still the most used languages, but Python has become the most desired, with developers increasingly favoring it over JavaScript. AI tools are rapidly being adopted, with most developers using them to write code, although many are still cautious about relying on AI for testing. Most developers dislike their jobs, but still enjoy the practice of coding.
2024.08.15·newsletter.techworld-with-milan.com·12 min read·TLDR Web Dev This author, a solo developer, shares his experience building a chatbot builder called Fastmind. He used React for the frontend, Hono for the backend, and Convex for the database. The architecture has separate frontend applications for the chatbot builder, chat widget, and marketing website.
Sponsored
Finding the root cause of an issue gets harder the further down your stack it is. The solution? Use Synthetic Monitoring [9] to run self-healing tests that narrow your focus, and Datadog APM [9] to collect distributed traces of requests across your backend services
Rate My OpenAPI is a suite of tools designed to help software developers using OpenAPI to design and implement their APIs. It makes sure that the APIs you develop are meeting quality and usability standards.
ObsoHTML is a Node.js script that scans HTML, PHP, JavaScript, and TypeScript files in a designated directory to detect outdated or proprietary HTML attributes and elements. It assists in identifying and updating deprecated HTML code to align with modern web standards.
This developer won $2,750 in a marketing video contest by using JavaScript, AI tools like ChatGPT and Elevenlabs, and a strategic understanding of the contest's rules. They identified key factors that made the contest winnable, such as the judging criteria favoring video entries and the availability of multiple prizes. The developer then used Playwright to scrape the competition and determine which entries were less likely to win based on quality and type. Finally, they used ChatGPT to generate code for calculating their odds of winning based on the number of entries submitted, leading them to submit eight videos and win seven prizes.
The complex situation surrounding the "National Public Data" data breach involved the alleged leak of billions of records containing personal information. The breach is difficult to analyze due to the fragmented nature of the leaked data, which has been distributed in various forms and sizes by anonymous actors. This author outlines the different sets of data he has encountered, including social security numbers, email addresses, and other personal information, and explores the challenges of attributing the data back to its source.
In-app browsers, embedded within native mobile apps, often lack key features, compromise user privacy, and offer inconsistent UI/UX, leading to a suboptimal browsing experience.
This article presents a method for optimizing TypeScript type checking performance by using a systematic approach of branching, adjusting code, and measuring the impact with benchmarking tools.
YTCH - if YouTube had actual TV channels.
Japanese website design often appears cluttered and outdated to some, but it's rooted in unique psychological principles that cater to local user preferences (which is explored in this video).
Judge James Donato ruled that Google will be forced to open its Android app store to rival stores, effectively ending its monopoly, and will issue a final ruling on the specifics in two weeks.
A notorious hack of a fast-food chain's mobile app exposed a loophole that allowed users to generate unlimited free meal vouchers. This incident shows the importance of securing both frontend and backend systems against vulnerabilities like XSS, CSRF, and IDOR. Proper input validation, content security policies, and secure handling of environment variables are important for security.
This is a compilation of best practices, pitfalls to avoid, and code snippets for using the Effect library. It emphasizes the importance of using Effect for fallible operations and avoiding unnecessary use of "any" and "unknown" types. Developers should also handle errors appropriately and avoid common mistakes like swallowing errors and misusing Effect.catchAll and Effect.retry.
Programmers should create their own programming language as a learning exercise. Creating a language, even if it's "bad," offers valuable insights into language design, parsing, runtime execution, and the inner workings of other languages. By experimenting with different language features and implementation choices, programmers can gain a deeper understanding of the tools they use daily.
Simplifying concepts beyond what is strictly accurate makes them easier to learn. This concept originates from Dante Alighieri's work, which in turn references Aristotle's observation that examples are not always the foundation of an argument. Simplifying beyond truth can be useful in the initial stages of learning something, allowing for learning complex concepts turn-by-turn.
Leaders who go beyond their expected roles to connect with employees are more memorable and influential than those who don't. Good leaders should focus on producing these memorable anecdotes that carry their desired message, rather than simply focusing on their official duties. This article goes over various stories and examples of good leaders who have done so.
2024.08.14·registerspill.thorstenball.com·7 min read·TLDR Web Dev