1. Cursorless is alien magic from the future
Total comment counts : 47
Summary
The author discusses their experience using the Cursorless plugin for Visual Studio Code, which integrates voice control software to enable code editing. The plugin allows for precise navigation and manipulation of code using spoken commands based on the structure of the code’s Abstract Syntax Tree (AST). Targets and destinations are identified by colored hats placed above individual code elements, and the plugin can perform actions across the entire code, such as selecting and manipulating functions or lambdas. The author describes the process of learning and using Cursorless commands, as well as creating custom commands using Talon, another voice control software. They also mention experimenting with a different way to explain pointer concepts in Go programming using the concept of “raising” and “lowering.” The author expresses interest in comparing Cursorless with GitHub Copilot’s voice coding capabilities.
Top 1 Comment Summary
The author of the article is surprised to see it gaining popularity. They share a repository of Talon experiments they are working on, which can be found at the provided GitHub link.
Top 2 Comment Summary
The article discusses a new approach that utilizes the tree-sitter abstract syntax tree for performing operations on different parts of a text buffer. This approach is similar to textobjects in Vim/Evil but includes a spoken component. The author sees promise in this approach, especially if it incorporates a “record and perform” feature, allowing users to speak commands while executing other actions. This would eliminate the need to alternate between typing and speaking, making the writing process more seamless. The author also mentions that being able to type and speak simultaneously would engage different parts of cognition and improve the flow state. Additionally, the author suggests that this approach could be used for taking notes. Finally, the author humorously predicts the development of an Emacs package based on this approach.
2. I skipped to the ending
Total comment counts : 43
Summary
The author reflects on their early experiences with web development and their ambition to work for Google. After initially joining a startup and experiencing fulfilling work, they eventually accept an offer from Google. However, their time at Google is disappointing. They encounter disorganization, lack of support, and toxic management. The author realizes that they prioritize personal growth and meaningful work over financial compensation and the prestige of working for a big company. They decide to leave Google and value the lessons learned along the way.
Top 1 Comment Summary
The article discusses how the metric of having more people under your leadership is seen as a measure of success at Google, but it can lead to unintended consequences. The author shares a personal experience where a project to redesign a corporate homepage took much longer than necessary due to the creation of unnecessary sub-teams. The author reflects on why this happened and eventually realizes that it was a way for their boss to increase headcount, secure a promotion, and receive a pay raise.
Top 2 Comment Summary
The author of the article shares a story about a conversation they had with someone who mentioned that it would be difficult to fire them due to paperwork. The author expresses that they would take advantage of this situation by working on an open-source project, even if it had to be under the name of their employer. They see it as an opportunity to get paid for doing something they enjoy that would also benefit others.
3. Typing fast is about latency, not throughput
Total comment counts : 46
Summary
The author challenges the common misconception that typing speed above 80 words per minute is not important. They argue that while throughput (the amount of work produced) may not be hindered, latency (the delay in thought process) becomes an issue. Fast typing allows for quick revisions and structuring of sentences for writers, while for coders, it enables better organization and flow of thoughts. The author emphasizes that even a mere three-second delay in typing can be frustrating and disrupt the thought process.
Top 1 Comment Summary
The article discusses the relationship between typing speed, accuracy, and the flow of thoughts. The author, who is a competitive typist and programmer, believes that typing no longer requires much thought because they can simply think of the code they want to write and it is transcribed onto the computer. The author also emphasizes the importance of typing accurately rather than quickly, as typing competitions require 100% accuracy. This accuracy gives the author confidence that what they are typing is correct without the need to constantly look at it, which could potentially derail their thoughts from the actual code.
Top 2 Comment Summary
The article discusses how many companies have low developer productivity and allow their code output to degrade. The author shares their own experience, stating that even junior developers at their startup can ship a couple hundred lines of code per week, while the most productive ones average around 1,000 lines of code per week. The author emphasizes the importance of maintaining a fast development environment, efficient testing and deployment processes, and minimizing risk. They also mention that about 60% of overall development time is spent on product-related tasks. The author finds it shocking that some companies accept an average of only 125 lines of code per week as the norm, and highlights the need for companies to improve their productivity levels.
4. Switching to Elixir
Total comment counts : 34
Summary
The author recently started a job at a company that uses Elixir as its main backend language. Despite having no previous experience with Elixir or Erlang, they found it easy to pick up due to its Ruby-inspired syntax. They appreciate that Elixir does not have classes, instances, or inheritance, making it immutable and functional. They believe that this eliminates the difficulties of maintaining code with mutable state. Elixir also supports DSLs through compile-time macros, providing errors at compile time rather than runtime. The author enjoys the pipeline syntax in Elixir and also mentions a preference for Clojure’s threading operators. They particularly like Elixir’s “with” expression, which splits complex functions into happy paths and error handling. The author appreciates the use of Result/Either monads over exceptions in Elixir. After three months of using Elixir, they find it enjoyable and believe it carries on the fun aspect of programming that Ruby has.
Top 1 Comment Summary
The author has been watching Elixir YouTube videos and has developed an interest in the language. They appreciate the ideas of Erlang but find it quirky. The author believes that Elixir’s use of isolated processes and message passing is promising for distributed programming. However, they express concern about the complexity of certain concepts and the risk associated with niche languages and platforms. Despite this, they are impressed with the Elixir community and are excited to see what happens with the language’s type system implementation.
Top 2 Comment Summary
The article discusses the benefits of using Elixir/Erlang for running “background jobs” without worrying about blocking IO. The author recounts a previous experience where they had to handle HTTP requests in a webhook handler, which would occasionally cause the entire site to crash due to the OS processes being overwhelmed. The author expresses a desire to use Elixir instead, as it would have allowed them to easily spin up a Task to handle the requests and continue processing.
5. Rust – Faster compilation with the parallel front-end in nightly
Total comment counts : 12
Summary
The Rust compiler’s front-end can now use parallel execution, which significantly reduces compile times. This feature is currently experimental and can be tried by running the nightly compiler with the -Z threads=8 option. The addition of parallelism in the front-end complements the existing parallelism in the back-end and interprocess parallelism used by Cargo. The front-end is split into two halves, with the new parallel execution implemented in the first half. The parallel front-end uses fine-grained parallelism and synchronized data structures to perform compilation tasks. When the parallel front-end is enabled and configured with multiple threads, compile times can be reduced by up to 50%, although the improvement varies depending on the code and build configuration. However, caution is advised as the parallel front-end is still under development and may have threading bugs. The parallel front-end is expected to be shipped in stable releases in 2024.
Top 1 Comment Summary
The author expresses their opinion that compilation speed is the main drawback of using Rust. They mention that while working with a Rust monorepo, their biggest complaint was the slow compilation speed, which made CI/CD more expensive and could cause delays in development if the cache needed to be removed. However, the author appreciates the progress being made to address this issue.
Top 2 Comment Summary
The author expresses enthusiasm for using Rust, despite its slow compilation times in the past. They have been using Rust extensively and are happy with it. However, they mention that one of their projects has grown and now takes over 5 seconds to compile even for a simple change. This has become a frustration for them, and they hope for progress in improving the compilation times.
6. An implementation of Common Lisp targeting Lua
Total comment counts : 5
Summary
The article discusses Lua Common Lisp (LCL), which is an implementation of Common Lisp that targets the Lua language. The goal of LCL is to provide a Common Lisp implementation that can run on any Lua VM. LCL includes a Common Lisp to Lua compiler and can be used by directly calling Lisp functions from Lua. However, it is important to note that LCL is still under development and many functions and macros are either missing or incomplete. The article also provides details on how to compile and use LCL, as well as the different data structures and calling conventions supported by LCL.
Top 1 Comment Summary
The article asks if there is a subset of Common Lisp code that has been implemented in Lua+CL. It also questions the availability of historic code that was created when trying to achieve compatibility between different Lisp variants.
Top 2 Comment Summary
The article mentions that the person is looking for something similar to a tool that exists for another programming language called Go. They believe that such a tool would work well because both Go and the other language use mutable data structures, have garbage collection, and are expected to have good performance. The tool would allow them to use all the Go libraries in the other language.
7. Nordic is getting involved in RISC-V
Total comment counts : 11
Summary
Nordic Semiconductor has joined a consortium of semiconductor companies to support the adoption of open source chip architecture RISC-V. The move has raised questions about the company’s relationship with Arm, as Nordic has been using Arm’s chip architecture in its wireless connectivity products since 2012. However, Nordic sees RISC-V as a complementary alternative to Arm, particularly in power consumption-critical mobile and IoT applications. RISC-V allows users to develop customized hardware for extreme levels of low power consumption. This gives Nordic’s customers the flexibility to optimize their applications for specific needs. RISC-V also lowers barriers to entry and encourages innovation in the IoT market, without conflicting with Nordic’s use of Arm cores in its wireless IoT devices.
Top 1 Comment Summary
The article discusses how Nordic, a supplier of BT chips, is facing tough competition from low-cost Chinese competitors. It suggests that Nordic could potentially benefit from adopting RISC-V, a technology that could help them compete with western chip companies. The author also expresses curiosity about Texas Instruments’ plans for RISC-V as they enter the low-cost microcontroller market.
Top 2 Comment Summary
The article discusses the potential impact of Nordic, a leading company in small embedded Bluetooth systems-on-chip (SoCs), introducing a RISC-V product. This move is seen as a way to bring RISC-V technology to many low-cost embedded devices.
8. Moving our Encrypted DNS servers to run in RAM
Total comment counts : 11
Summary
error
Top 1 Comment Summary
The article states that Mullvad, a VPN service, is making its encrypted DNS available to all users, regardless of whether they are paying for the VPN or not. Additionally, they offer optional content blocking through blocklists, which can be set on the desired TLS/HTTPS DNS server. A link to the blocklists is provided in the article.
Top 2 Comment Summary
The article raises questions about whether the servers mentioned are physical or virtual machines (VMs). It discusses the ability to freeze, snapshot, clone, or live replicate certain VM types, including their memory contents. It also mentions that everything in a VM or container can be accessed from the bare metal host. The article then asks whether there is a diagram of the physical setup and requests assistance from Mullvad architects to avoid going down theoretical hypothetical paths.
9. Wyoming discovery could be America’s first new source of rare-earths since 1952
Total comment counts : 10
Summary
I’m sorry, but I cannot summarize the article without having access to it. If you could provide me with the necessary information or a brief summary of the article, I would be happy to assist you.
Top 1 Comment Summary
The article explains that rare earth elements are not actually rare, but what is rare is finding a country that allows mining and having refinery capacity. Currently, the only refineries are in Australia and China, but the US is trying to find ways to build its own refineries and semiconductor fabs.
Top 2 Comment Summary
Researchers at West Virginia University are working on a process to extract rare earth elements from acid mine drainage, a byproduct of coal mining. This process aims to not only clean up the environmental hazard of acid mine drainage but also produce valuable rare earth elements from what would otherwise be waste. The team has received $8 million in funding for this project, which could have significant economic and environmental benefits.
10. Link-Time Optimisation (LTO)
Total comment counts : 11
Summary
The article provides a comprehensive overview of Link-Time Optimization (LTO), a technique used to improve runtime performance by analyzing and optimizing code across multiple files. The author explains the basic workflow of traditional compilation and linking without LTO, where each source code file is optimized separately and the object files are linked to produce the final output.
In contrast, with LTO, each source code file is compiled to produce an object file that contains the compiler’s internal representation (IR) instead of machine code. The linking stage then performs whole-program analysis and optimization using the IR from all source units. This enables the removal of unused symbols and the inlining of functions from other source units, among other optimizations.
The article further explores different variations of LTO, such as basic LTO, parallel LTO, and thin LTO. Basic LTO involves combining all compilation units into a single module for analysis and optimization. It achieves a significant runtime performance improvement but consumes more memory and time during compilation and linking. Parallel LTO, on the other hand, processes compilation units in parallel, resulting in faster compilation times while still benefiting from most of the same optimizations as basic LTO. Thin LTO eliminates the use of IR in the whole-program analysis step but still provides runtime performance improvements.
The article also mentions other variants of LTO, such as unified LTO and fat LTO objects, and hints at more advanced features and techniques. The author welcomes feedback and intends to update the guide with additional information.
Overall, the article serves as a helpful resource for those interested in understanding the different dimensions and features of LTO across various compilers and linking tools. It provides insights into the benefits, trade-offs, and technical details of implementing LTO.
Top 1 Comment Summary
The article points out a misconception by stating that LLVM has had LTO (Link-Time Optimization) available for a long time, even before GCC. It also mentions that RMS (Richard Stallman) permitted the saving of GCC’s intermediate representation (IR) to disk partially in response to LLVM’s popularity. Additionally, the article remarks that the distinction between function summary and non-summary modes is important but has been overlooked.
Top 2 Comment Summary
The article mentions that certain language implementation strategies don’t have LTO-like features, and the author has ignored them in the discussion. JVM implementations and ART, along with CLR, do provide optimizations similar to LTO. Additionally, profile-guided optimization (PGO) is now commonly used, allowing information to be carried over between runs and aiding the JIT compiler in quickly achieving optimal execution.