JAVASCRIPT OR TYPESCRIPT? HOW TO BENEFIT FROM THE DICHOTOMY
Not every project needs TypeScript, but it's useful to use TypeScript when data schema matters, whereas JavaScript can be used where errors don’t matter as much.
Full-text search across article titles and summaries. Refine with sector, year, content type, and reading-time filters.
Not every project needs TypeScript, but it's useful to use TypeScript when data schema matters, whereas JavaScript can be used where errors don’t matter as much.
Emoji cloud adds vector emojis to projects with zero configuration and a single line of code.
Sponsored
A poorly implemented authentication system [5] is a recipe for disaster. And given the increase in data beaches in the past few years, it’s more important than ever for software engineering leaders to prioritize security, quality development practices, and robust governance controls. This article by FusionAuth [5] covers key best practices for mitigating common risks when implementing authentication — including application security, password hashing, regulatory compliance, costs, integration, and vendor assessment. Read the full article here
JSON Web Tokens (JWTs) are an open standard for securely sharing JSON data between parties through encoding and digital signatures. They are used for API authentication, data transfer, and authorization workflows. JWTs consist of three parts: a header, payload, and signature, and can be used to securely transmit data between various systems. While JWTs offer benefits like statelessness, efficiency, and interoperability, they also pose challenges such as security risks, token size, and limited central control.
Canva has implemented end-to-end distributed tracing for observability in their systems. They emphasize the Three Pillars of Observability: logs (timestamped events), metrics (quantifiable statistics), and traces (representation of request events). With distributed tracing, they use traces, spans (single operations within a trace), and tags (metadata key-value pairs) to gain insights into their system's performance. Canva also developed a custom frontend tracing SDK for themselves.
This article discusses the importance of speed and personalization in web applications. Fast loading times are crucial for user engagement and search engine rankings. The article explains how being on the edge, caching mechanisms, and Incremental Static Regeneration (ISR) can help developers create faster web apps.
A "Manager's ReadMe" is a document that outlines expectations for their reports. It provides insights into the manager's role, how they do 1:1 meetings, their office and remote work policies, team representation, communication channels, and work-related practices like sprint planning, retrospectives, and feature ownership. Creating such a document helps foster better trust in teams. This post shares a template for people to create a “readme” of their own to let others on their team understand their working style.
RFCs (Request For Comments) are documents proposing codebase changes to address specific problems or introduce new features before actual implementation begins. This post outlines when to write an RFC and their benefits and offers guidance on writing one, including sections like metadata, defining the problem, proposing solutions, and addressing open questions. It also provides templates and tools for creating RFCs.
Chrome 120 comes with the new CloseWatcher API, an API for directly listening and responding to close requests. Close requests are typically used to close popups and modals. They are typically the ESC key on desktop platforms and the back gesture or button on Android. Chrome 120 also comes with an easy-to-implement accordion pattern with the details element, permission policy violation reports, and more.
Dropbase is a platform for building internal web apps such as admin panels and internal engineering tools with Python. It lets you import your existing Python libraries and scripts, select UI components and bind them to data, and use State and Context objects to modify state and context directly with Python. Developers can share apps they create on Dropbase with other users via roles, groups, permissions, and other controls.
SuperDuperDB is an open-source framework for integrating AI directly with existing databases. The framework helps eliminate complex MLOps pipelines and specialized vector databases by turning existing databases into AI development and deployment environments. It supports LLM chat, streaming inference, scalable model training, vector search, and standard machine learning use cases.
This blog post provides a high-level overview of the internals of iMessage. It covers the Apple Push Notification Service (APNs) and its bidirectional capabilities, the role of IDS (Identity Services) as a keyserver for iMessage's end-to-end encryption, and the process of message encryption and decryption.
This article shows how different SQL database systems execute a peculiar SQL query, which involves subqueries and aggregation functions. Some systems follow the SQL standard and return a single row with the value 6, while others return values 3, 6, and 9 in a table of three rows. The article delves into the SQL standard's specifications regarding aggregation queries, outer references, and historical changes in behavior among different database systems.
Apache Kafka has introduced Tiered Storage, which allows for the separation of compute and storage. This article explores the architecture, use cases, benefits, and even presents a case study of storing petabytes of data in the Kafka commit log. Tiered Storage optimizes storage resources by using different storage tiers based on data access patterns, performance requirements, and cost considerations.
A website that shows how your computer reached the server the website is hosted on.
Code splitting involves breaking down JavaScript code into smaller modules, optimizing performance by selectively loading necessary code, and reducing initial load times. Implementing code splitting in React can be achieved through dynamic imports and React.lazy() for components.
A tech meetup host shares lessons from running a meetup, such as the importance of the physical space and the need for over-communication.
TaskWeaver is a code-first agent framework for planning and executing data analytics tasks using Python.
Sponsored
StackSpot [5] turns context into efficiency with an all-in-one platform spanning three distinct solutions: 🆕 AI code assistant: [5] Launched at last week’s AWS re:Invent 2023 last week! Generate highly contextualized code through AI, using your own internal knowledge sources [5] such as API catalogs, event schemas, code snippets.
This article covers best practices in front-end development, with code examples for each practice described. The practices described include improving code organization by using export barrels, named exports, absolute paths, proper file naming, and separating logic when possible. Other general best practices include distinguishing hooks from utility functions, using custom hooks for logic reusability, and applying proper linting to the code base.
This article explains the fundamental concepts of file systems and their organization by using Rust code examples. By going through the process of writing a file system from scratch, it covers topics such as structuring the disk, including superblocks, bitmaps, inodes, and data blocks. The article also demonstrates how file systems handle large files using various levels of pointers and how directory structures are implemented.
Managing and upgrading Kubernetes (k8s) clusters is challenging due to the rapid release cycle and complexity of the platform. An LTS (Long-Term Support) release of Kubernetes with a 24-month support period, where organizations would migrate to new clusters after the LTS period ends, would allow organizations to safely plan for upgrades and cause less headaches overall.
As engineers, we are used to having things in our control, where the outcome of a task normally depends on our implementation. Growing from being a senior engineer into a tech lead requires a mindset shift. Tech leads become force multipliers for the team by helping others be more productive. The post gives tips on how you grow to be a successful team leader and includes general advice on being a go-to-engineer.
Django, a Python web framework, has released version 5.0. It includes database-computed default values, an expanded Django ORM, support for database-generated columns, and simplified form field rendering.
lowstorage is a zero-dependency pseudo-database for Cloudflare Workers using R2 buckets. It’s designed to make object storage easier and cheaper by utilizing Cloudflare’s “forever free” tier.
A company was able to greatly improve its developer experience with a few infrastructure changes. The changes resulted in reducing the time to receive CI (Continuous Integration) feedback from over twenty minutes to less than three minutes, with a 75% reduction in local test execution time. It did this by reorganizing the GitHub workflows by separating concerns, reusing Docker test containers, and sharding tests for parallel execution.
This article discusses the decisions surrounding JavaScript prototypes, examines missteps in the design, and explores how these factors have affected the way we write JavaScript today. One key takeaway is that many developers believe JavaScript has true classes, even though a class in JavaScript is no different from any other function object. JavaScript is not truly object-oriented in the way a language like Java is.
The AWS SDK is now available for Rust.
This article describes tips for good code reviews, like “express gratitude” and “encourage dialogue”, all of which will help you to deliver amazing code reviews to your teammates.
A recap and list of talks at KubeCon NA 2023.
Sponsored
Tune in for a monthly dose of inspiration and explore how the AWS Cloud propels groundbreaking innovations worldwide.
Google's code review guidelines emphasize continuous improvement, maintaining or improving the codebase, following style guides, sharing knowledge, writing small code changes, and maintaining professionalism in feedback. Google's code review tool, Critique, is well-regarded by Google engineers and ex-employees, with over 97% user satisfaction. Critique has various features to increase productivity, including static analysis tools that provide actionable feedback, a focus on the latest code changes, machine learning-powered suggestions, tight integration with other Google tools, and a user-friendly interface. These are shown in the article with screenshots. The article also provides statistics on Google's code review process, such as code review frequency and efficiency at the company.
Building your own JavaScript framework can help understand how frameworks work at the most foundational level. This article covers the 3 fundamental parts of modern JavaScript frameworks: reactivity, DOM rendering, and modern API integration. It uses code examples to demonstrate how to build these features into your own framework step by step.
Asynchronous JavaScript code presents challenges in conducting end-to-end testing and synthetic monitoring in modern JavaScript-heavy web applications. This article highlights the common practice of testing only mission-critical features and suggests implementing a safety net to catch obvious application problems, such as JavaScript exceptions, while testing end-to-end. The article provides a detailed guide on how to set up Playwright, a testing framework, to monitor JavaScript exceptions during end-to-end tests.
Irina Stanescu is an ex-Uber Staff engineer who has worked as a tech lead and manager over the past 8 years. This interview explores the guiding principles that have helped Irina become an effective leader. She teaches how to lead by influencing and discusses how you can show others around you that you’re a leader by communicating effectively, taking initiative, and handling disagreements professionally.
The popular concept of least power dictates that the least powerful language should be chosen to accomplish a specific task. Applying this to web development means finding ways to use less JavaScript in favor of the declarative languages that power the web: CSS and HTML. This article shows you how to use CSS and HTML to create features and components we commonly use JavaScript for, like dialogue modals and menu accordions.
Sponsored
Memberful [14] offers reliable and easy-to-use tools to build a membership business [14] from an existing website — including a full-featured GraphQL API, webhooks, SSO, and much more. Use your existing stack, create any kind of subscription plan, and maintain
A website detailing onsite interview experiences with tech companies. It contains over 500 interview experiences with companies like Apple, Google, and Microsoft.
Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application. It allows developers to track down bottlenecks in Laravel (PHP) applications, find the most active users, and more.
A tech conference called DevTernity had women speakers on their website who did not exist in real life. For 3 years straight, the DevTernity conference listed non-existent software engineers representing Coinbase and Meta as featured speakers. This addition of fake women speakers happened after the conference organizers were called out a few years ago for having an all-male panel.
Every Uber ride requires around 1000 ETA requests - more than 18 million Uber rides are completed daily. Accurate ETA calculations are essential to their business function, yet this is a surprisingly complex problem to solve. This article explains how routing algorithms, traffic information, and map matching are used by Uber engineering teams to correctly project ETA for their customers.
TypeHero is a community and platform for TypeScript developers that aims to educate and clear up confusion about the intricacies of TypeScript’s typing system. It provides challenges for developers to test their TypeScript skills.
Hacker News commenters write about what side projects helped them land a job.
A benchmark comparing WebSocket performance in JavaScript found that Bun was 40% faster than Node.js. Bun became twice as fast when the JavaScript was written to be bun-specific.