Computer Science & Software Engineering
Brashly stroked, computer science is what I learned in school, and software engineering is what I encounter in the ‘real world’. The boundary is blurry, so let’s have them all in place.
Dated Oct 1, 1974; last modified on Sat, 27 Mar 2021
Brashly stroked, computer science is what I learned in school, and software engineering is what I encounter in the ‘real world’. The boundary is blurry, so let’s have them all in place.
Random Link ¯\_(ツ)_/¯ | ||
Dec 14, 2023 | » | Large Language Models
(2 items)
Introduction to LLMs; LLMs: Stochastic Parrots 🦜 and How (Not) to Use Them; |
Oct 4, 2021 | » | Computational Bias and Fairness
(2 items)
Journal Reviews on Fairness; Rage Against the Algorithm; |
Apr 1, 2019 | » | Miscellaneous
(4 items)
Of Code Smells and Hygiene; On Data Science; APIs Are Not In the Efficiency Business; Kernighan's Remarks on the Digital Humanities; |
Jan 3, 2021 | » | Computer Graphics Potpourri
2 min; updated Feb 12, 2023
Retained Mode vs. Immediate Mode In retained mode, the graphics library exposes an API to the application for building/updating a scene. However, the graphics library is in charge of issuing drawing commands. In contrast, an immediate-mode API allows the application to issue the drawing commands. Retained-mode APIs abstract away initialization, state maintenance and cleanup, but uses more memory. Immediate-mode APIs allow for more targeted optimizations. https://reactjs.org/ is one of the more popular retained-mode web APIs.... |
Jan 15, 2022 | » | Software Engineering Journal Reviews
9 min; updated Feb 12, 2023
Formal Software Design Alloy is an open-source language and analyzer for software modeling. An Alloy model is a collection of constraints that describe a set of structures, e.g. all possible security configurations of a web application. Alloy’s tool, the Alloy Analyzer is a solver that takes the constraints of a model and finds structures that satisfy them. 📑 The Alloy Analyzer leverages a SAT solver, and this precludes Alloy from analyzing optimization problems.... |
Dec 16, 2022 | » | Productivity for Software Engineers
8 min; updated Feb 12, 2023
Measuring Productivity Devs' Diverging Perceptions of Productivity Got interested in measuring it two years into my SWE career. Initially rated myself based on % of completed daily objectives. The objectives didn’t necessarily correspond to work items. Stopped because the numbers were high even on days when I didn’t feel productive. Switched to “stuff that affects others” (later came to know these are “function points”). More intuitively captures non-code objectives, e.g., aligning folks on feature specs.... |
Jun 11, 2022 | » | Testing Your Code
8 min; updated Nov 19, 2022
Why Write Tests Helps catch bugs in the code, and in the programmer’s mental model of what the code does. The later a bug is caught in the development cycle, the more expensive it is to fix it. A good test today is a future debugging session saved. The test is the first client of your code. It uncovers sub-optimal design choices, tight couplings, missed cases, etc.... |
Nov 21, 2020 | » | On Systems Programming
2 min; updated Sep 5, 2022
Garbage Collection Garbage Collection is about simulating a computer with infinite memory. Consequently, if you have more RAM than your program will ever need, then a null garbage collector is a valid one. Traits of Beautiful Code is the chief designer of Ruby, and thus the frequent illustrations and praises for Ruby. How do other chief designers explain their rationale? For instance, what would Java’s designer say to ’s criticism?... |
Jan 3, 2021 | » | Information Retrieval Medley
3 min; updated Sep 5, 2022
Pagination with Relative Cursors Exposing pagination through URLs like example.com/items?page=25&limit=100 leads to SQL like SELECT * from 'items' LIMIT 100 OFFSET 2400;, which inefficiently goes through 2,500 records and discards the first 2,400. With relative cursors, we have URLs like example.com/items?limit=50&lastID=XXX, which leads to SQL like SELECT * from 'items' WHERE 'id' > XXX ORDER BY 'id' ASC LIMIT 50, and this is more efficient, assuming there are indexes for id.... |
May 17, 2020 | » | On Distributed Systems
2 min; updated Sep 5, 2022
Mergeable Replicated Data Types On a distributed system, each replica should [eventually] converge to the same state. Commutative Replicated Data Types (CRDTs) can accept updates and achieve consistent without remote synchronization. The Need for Commutativity Say we have a queue \( 1 \to 2 \). Suppose two replicas, \(r_1\) and \(r_2\), independently call pop(). Each replica will have \(2\) on their queue. However, on receiving an update that the other replica popped, each replica will call pop() to be consistent, thereby deleting \(2\).... |
Nov 14, 2020 | » | Software Dependencies
6 min; updated Sep 5, 2022
Dependency Management Golang introduced a new library referencing mode to overcome limitations of the old one. While the two library modes are supported by Golang, they are incompatible, e.g. dependency management (DM) issues, reference inconsistencies, build failures, etc. did an empirical study that resulted in HERO, an automated technique to detect DM issues and suggest fixes. Applied to 19k Golang projects, HERO detected 98.5% on a DM issue benchmark, and found 2,422 new DM issues in 2,356 Golang projects.... |
Oct 28, 2021 | » | Socio-Economic Equity in Tech
7 min; updated Sep 5, 2022
When it comes to STEM diversity goals, Asian American and Pacific Islander (AAPI) tends to be excluded from the URMs under discussion, e.g. . However, AAPI as a blanket term obscures the struggles of member groups, e.g. \(62\%\) of AAPI adults aged 24 and older have an associate’s degree or higher, compared to 28% of Native Hawaiians and Pacific Islanders of the same age. AA comprises \(\approx 50\) ethnic groups, while PI has \(\approx 20\).... |
Jun 6, 2022 | » | Perspectives on Software Engineering
2 min; updated Sep 5, 2022
On the Clean Code Movement Good enough is good enough. The architectural choices and bugs in the implementation tend to be more impactful, so focus more on those. Be conservative in what you consider technical debt. It should be something that slows down current/future changes, and not code that doesn’t “feel nice”. A code base that is free if technical debt is likely over-emphasizing polish over delivery. Abstractions and indirections in the name of future-proofing tend to be wrong especially when treading new paths, where you can’t reliably predict the future.... |
Jul 2, 2022 | » | Debugging
7 min; updated Sep 5, 2022
Debugging 101 Definition? Debugging involves inspecting a program’s internal state. printf Debugging and Logging In printf debugging, one adds print statements and keeps iterating until enough information has been extracted. Using logging has several advantages over printf debugging: varying logging destinations (e.g. standard output, files, sockets, remote servers, etc.); severity levels (e.g. INFO, DEBUG, WARN, ERROR, &c) that support filtering of output; color-coding for readability. Terminals have varying levels of color support: plain color; ANSI escape codes (16 color codes with bold/italic and background); 256 color palette; 24-bit truecolor (“888” colors, aka 16 million, e.... |
Oct 1, 1974 | » | Mythical Man Month [Book]
(4 items)
01. The Tar Pit; Mythical Man Month [Brooks, Jr., Frederick P]; 02. The Mythical Man-Month; 03. The Surgical Team; |
Oct 21, 1994 | » | Design Patterns: Elements of Reusable Object-Oriented Software
(2 items)
Intro to Design Patterns; Observer; |
Mar 16, 2017 | » | Designing Data-Intensive Applications [Book]
(7 items)
Relational Model Versus Document Model; Thinking About Data Systems; Designing Data-Intensive Applications [Kleppmann, Martin]; Query Languages for Data; Reliability; Maintainability; Scalability; |
Feb 14, 2020 | » | Signal Is Finally Bringing Its Secure Messaging To the Masses [Andy Greenberg]
3 min; updated Sep 5, 2022
Signal Is Finally Bringing Its Secure Messaging To the Masses. Andy Greenberg. www.wired.com . it.slashdot.org . news.ycombinator.com . Feb 14, 2020. Attracting the Masses Brian Acton (WhatsApp cofounder) injected $50m into the Signal Foundation, allowing them to grow from 3 to 50 full-timers. You’d think that at Signal’s dominance, getting $$$ shouldn’t be a problem. But VCs expect a multiple return and Signal doesn’t look like it will monetize soon.... |
Aug 18, 2022 | » | Sorting and Searching
(1 items)
Binary Search; |
Feb 9, 2020 | » | The Missing Semester of your CS Education
(5 items)
The Missing Semester of your CS Education [MIT]; 01. The Shell; 02. Shell Tools; 06. Version Control (Git); Miscellaneous Topics; |
Sep 13, 2017 | » | Networks
(7 items)
Examples of Influential Power; Modeling Influence with Graphs; The Contagion Model; Infection Models: SI, SIS, SIR; Bayesian Rating; Journal Reviews; Networks: Friends, Money and Bytes [COS 381]; |
May 19, 2020 | » | The World Wide Web
(8 items)
Towards a Collaborative Web Browser; Reviews of WWW Proceedings; Privacy on the Web; Chrome vs. Everybody; Facebook to Pay $550 Million to Settle Facial Recognition Suit; Facebook Monetizing Encrypted Messaging by Analyzing Metadata [Twitter]; An Apology for the Internet - How It Went Wrong [Intelligencer]; A Zooming Web Browser; |
Nov 7, 2021 | » | Algorithms and Data Structures
(1 items)
Bloom Filters; |
Apr 12, 2021 | » | Areas of Interest in Computer Science
1 min; updated Sep 2, 2021
Maybe a good approximation is where Google Research is spending $$$ : Algorithms and Optimization; Augmented Reality and Virtual Reality; Geo; Human Computer Interaction; Health Research; Machine Learning and Data Mining; Mobile; Machine Perception; Networking; Natural Language Processing; Privacy; Quantum Computing; Structured Data, Extraction, Semantic Graph, and Database Management; Security; Software Engineering and Programming Languages; Systems; Misc. Research Scholar Program recipients. research.google . Apr 7, 2021.... |
Sep 12, 2018 | » | Information Security [COS 432]
(14 items)
Privacy in CS and in the Law; Web Applications 101; Information Security [COS 432]; Tracking and Data Collection; 02. Threat Models for Web Security; Secure Multiparty Computation; 03. Cross-Site Request Forgery (XSRF); Privacy [COS 432]; Identity Access Management; Research on Privacy Enhancing Techniques; Applications for DP; Building Intuition About DP; SQL Injection; Cross-Site Scripting (XSS); |
Oct 24, 2020 | » | Machine Learning & Its Applications
(20 items)
Similarity Measures; Similarity Measures; ML Crash Course [dev@google]; Machine Learning and Predictive Analytics [ELE 364]; The Nearest Neighbor Algorithm; The Nearest Neighbor Algorithm; Caveats on Similarity Learning; Caveats on Similarity Learning; Handling Noisy Data in Nearest Neighbors; Handling Noisy Data in Nearest Neighbors; The Case for Range Normalization; The Case for Range Normalization; Predicting Continuous Targets Using NN; Predicting Continuous Targets Using NN; Other Measures of Similarity in NN; Other Measures of Similarity in NN; The Curse of Dimensionality and Feature Selection; The Curse of Dimensionality and Feature Selection; ML Usefulness to a Dev; ML Usefulness to a Dev; |
May 3, 2020 | » | Programming Challenges
(63 items)
Learning Haskell via AoC 2021; 000. Longest Two-Character Substring; Wiki Page; General Tips on Performance and Optimization; AoC 2021 Day 01: Sonar Sweep; App Layout; AoC 2021 Day 02: Dive!; Browse Page; AoC 2021 Day 03: Binary Diagnostic; The Cards Manager; AoC 2021 Day 04: Giant Squid; Reusable Cards; AoC 2021 Day 05: Hydrothermal Venture; Home Page; AoC 2021 Day 06: Lanternfish; AoC 2021 Day 07: The Treachery of Whales; AoC 2021 Day 08: Seven Segment Search; AoC 2021 Day 09: Smoke Basin; Classes in C++; AoC 2021 Day 10: Syntax Scoring; 019. Counting Sundays; Structures in C++; 020. Factorial Digit Sum; 021. Amicable Numbers; 022. Name Scores; 023. Non-Abundant Sums; AoC 2021 Input Parser; Enumerations in C++; Unions in C++; AoC 2021 Main; AoC 2021 Solution Runner; AoC 2021 Test Code; AoC 2021 Parsing Arguments; 218. To-Do List Pt. I; 380. Smooshed Morse Code; Minimum Penalty for a Shop; Shortest Path in a Grid w/ Obstacles Elimination; Minimizing Bottom-Right Paths in a 2xN Grid; Queen's Movements on a Chessboard w/ Obstacles; Testing in a Monorepo; Database Layer; Continuous Integration Tooling; Of Stale UI and Re-renders; Inheritance; Markup Features; Of Builds and Bundlers; Client/Server Interface; Use of Local Storage; Hosting the Flashcards App; C++ Meta-Programming; Sorting and Searching; Spanning 4-Directional Walks From Origin to Destination w/ Obstacles; Unique Paths to the Bottom-Right Corner w/ Obstacles; Unique Paths to the Bottom-Right Corner; Resource Management in C++; Templates in C++; 01. Sum of Powers; AoC 2019 Day 01: The Tyranny of the Rocket Equation; To-Do List (Intermediate); Smooshed Morse Code (Intermediate); AoC 2019 Day 02: 1202 Program Alarm; Fermat's Little Theorem (Intermediate); Linear Feedback Shift Register (Intermediate); |