John Ousterhout contrasts his book "A Philosophy of Software Design" (APoSD) with Robert Martin's "Clean Code," arguing they offer distinct, complementary perspectives. APoSD focuses on high-level design principles for managing complexity, emphasizing modularity, information hiding, and deep classes with simple interfaces. Clean Code, conversely, concentrates on low-level coding style and best practices, addressing naming conventions, function length, and comment usage. Ousterhout believes both approaches are valuable but APoSD's strategic focus on managing complexity in larger systems is more critical for long-term software success than Clean Code's tactical advice. He suggests developers benefit from studying both, prioritizing APoSD's broader design philosophy before implementing Clean Code's stylistic refinements.
This blog post highlights the surprising foresight of Samuel Butler's 1879 writings, which anticipate many modern concerns about artificial general intelligence (AGI). Butler, observing the rapid evolution of machines, extrapolated to a future where machines surpass human intelligence, potentially inheriting the Earth. He explored themes of machine consciousness, self-replication, competition with humans, and the blurring lines between life and machine. While acknowledging the benefits of machines, Butler pondered their potential to become the dominant species, subtly controlling humanity through dependence. He even foresaw the importance of training data and algorithms in shaping machine behavior. Ultimately, Butler's musings offer a remarkably prescient glimpse into the potential trajectory and inherent risks of increasingly sophisticated AI, raising questions still relevant today about humanity's role in its own technological future.
Hacker News commenters discuss the limitations of predicting the future, especially regarding transformative technologies like AGI. They point out Samuel Butler's prescient observations about machines evolving and potentially surpassing human intelligence, while also noting the difficulty of foreseeing the societal impact of such developments. Some highlight the exponential nature of technological progress, suggesting we're ill-equipped to comprehend its long-term implications. Others express skepticism about the timeline for AGI, arguing that Butler's vision remains distant. The "Darwin among the Machines" quote is questioned as potentially misattributed, and several commenters note the piece's failure to anticipate the impact of digital computing. There's also discussion around whether intelligence alone is sufficient for dominance, with some emphasizing the importance of factors like agency and access to resources.
"The Licensing Racket," by Philip Hamburger, exposes the pervasive and often absurd world of occupational licensing in America. Hamburger argues that these boards, ostensibly designed to protect the public, frequently serve as protectionist barriers for existing practitioners, stifling competition and harming consumers with higher prices and reduced access to services. He details the often arbitrary and onerous requirements imposed on aspiring professionals, from florists and interior designers to fortune tellers, illustrating how these regulations disproportionately impact lower-income individuals seeking economic advancement. The book ultimately calls for a reassessment of the necessity and scope of occupational licensing, advocating for deregulation and a return to more open markets.
Hacker News users generally agree with the premise of the WSJ article, lamenting the excessive licensing requirements across various professions. Several commenters share personal anecdotes of burdensome and seemingly pointless licensing procedures. Some highlight the anti-competitive nature of these boards, suggesting they serve primarily to protect established professionals and inflate prices. Others point to the variability of licensing requirements across states as further evidence of their arbitrary nature. A few commenters discuss potential solutions, including deregulation and national reciprocity agreements, while acknowledging the difficulty of implementing meaningful reform. The discussion also touches upon the historical context of licensing, with some suggesting it originated as a way to ensure quality and protect consumers, but has since morphed into a protectionist racket.
Jonathan Crary's "Superbloom" argues that the relentless pursuit of seamless technological connection, exemplified by platforms like Zoom and social media, has paradoxically fragmented our experience of reality. Crary posits that these technologies, promising increased interaction, instead foster alienation by reducing human experience to quantifiable data points and encouraging a constant state of distraction. This constant connectivity degrades our capacity for focused attention, critical thinking, and genuine engagement with the world, ultimately hindering the development of individual subjectivity and shared social realities. The book urges a critical reassessment of our relationship with these technologies and advocates for reclaiming our agency in shaping a more meaningful and less atomized future.
HN commenters largely disagree with the premise of the review and the book it covers ("Superbloom"). Several argue the reviewer misrepresents or misunderstands the book's arguments, especially regarding technology's role in societal fragmentation. Some suggest the reviewer's nostalgia for pre-internet community blinds them to the downsides of those times, like geographic limitations and social conformity. Others point out that "technologies of connection" are tools, and blaming them for societal issues is like blaming hammers for violence. A few commenters mention the irony of discussing connection and disconnection on a platform designed for connection, highlighting the complexity of the issue. The most compelling comments offer alternative perspectives on how technology impacts community, emphasizing individual agency and the potential for both positive and negative consequences depending on usage.
Agnes Callard's Open Socrates offers a practical philosophy focused on "aspiring." Callard argues that we should actively strive for values we don't yet hold, embracing the difficult process of becoming the kind of person who embodies them. The book explores this through engaging with figures like Socrates and Plato, emphasizing the importance of self-creation and the pursuit of a life guided by reason and critical thinking. While not providing easy answers, it encourages readers to confront their own limitations and actively work towards a better version of themselves.
HN commenters generally express interest in Callard's approach to philosophy as a way of life, rather than just an academic pursuit. Several praise the reviewer's clear explanation of Callard's "aspirational" philosophy. Some discuss their own experiences with transformational learning and self-improvement, echoing Callard's emphasis on actively striving for a better self. A few express skepticism about the practicality or accessibility of her methods, questioning whether her approach is truly novel or simply repackaged ancient wisdom. Others are intrigued by the concept of "proleptic reasons," where present actions are justified by a future, hoped-for self. Overall, the comments reflect a mix of curiosity, cautious optimism, and some doubt regarding the applicability of Callard's philosophical framework.
Summary of Comments ( 314 )
https://news.ycombinator.com/item?id=43166362
HN commenters largely agree with Ousterhout's criticisms of "Clean Code," finding many of its rules dogmatic and unproductive. Several commenters pointed to specific examples from the book that they found counterproductive, like the single responsibility principle leading to excessive class fragmentation, and the obsession with short functions and methods obscuring larger architectural issues. Some felt that "Clean Code" focuses too much on low-level details at the expense of higher-level design considerations, which Ousterhout emphasizes. A few commenters offered alternative resources on software design they found more valuable. There was some debate over the value of comments, with some arguing that clear code should speak for itself and others suggesting that comments serve a crucial role in explaining intent and rationale. Finally, some pointed out that "Clean Code," while flawed, can be a helpful starting point for junior developers, but should not be taken as gospel.
The Hacker News post "Clean Code vs. A Philosophy Of Software Design" sparked a lively discussion with a variety of perspectives on the two books. Several commenters appreciated Ousterhout's emphasis on deep modularity and strategic design compared to what they perceived as Clean Code's focus on more superficial aspects of code style. One commenter, seemingly experienced with large codebases, expressed strong agreement with Ousterhout, highlighting the challenges of maintaining systems over time and the importance of design choices for long-term health and developer productivity. They found Ousterhout's advice practical and applicable to real-world scenarios, something they felt was sometimes lacking in Clean Code.
Another commenter questioned the target audience of Clean Code, suggesting that its advice might be more suitable for beginners still grappling with fundamental programming concepts. They appreciated the depth and strategic thinking encouraged by Ousterhout's book, implying it's better suited for experienced developers dealing with complex systems.
Several comments centered on the perceived rigidity and prescriptiveness of Clean Code, contrasting it with the more principle-based approach of Ousterhout's book. One commenter specifically criticized Clean Code's rules as sometimes arbitrary and lacking sufficient justification. This led to a discussion about the nuance required in applying coding principles, emphasizing that context and specific project requirements should always be considered. There was also a contrasting viewpoint that appreciated the concreteness of Clean Code's rules, finding them easier to grasp and implement, especially for less experienced developers.
The debate extended to specific examples from the books, with commenters dissecting the advice offered on function length and commenting. The practicality and usefulness of these specific recommendations were contested, highlighting the subjective nature of some coding practices.
A few comments touched on the larger context of software design, discussing the importance of considering the trade-offs between different approaches and the evolution of best practices over time. They acknowledged that while some aspects of Clean Code might be considered dated, it still holds value in certain contexts. The overall sentiment seemed to lean towards valuing the deep modularity principles espoused by Ousterhout, with Clean Code seen as potentially useful but needing to be applied judiciously.
Finally, some commenters expressed a desire for more concrete examples and case studies in Ousterhout's book to further illustrate his principles. Despite this, the overall tone of the discussion was one of appreciation for Ousterhout's contribution to the ongoing conversation about software design.