diff options
Diffstat (limited to 'technical')
| -rw-r--r-- | technical/blog-roll.md | 114 | ||||
| -rw-r--r-- | technical/reviews/articles.md | 76 | ||||
| -rw-r--r-- | technical/reviews/linux.conf.au-2017.md | 330 | ||||
| -rw-r--r-- | technical/reviews/linux.conf.au-2018.md | 136 | ||||
| -rw-r--r-- | technical/reviews/mailing-lists.md | 68 | ||||
| -rw-r--r-- | technical/reviews/talks.md | 81 |
6 files changed, 0 insertions, 805 deletions
diff --git a/technical/blog-roll.md b/technical/blog-roll.md deleted file mode 100644 index a56cc6c..0000000 --- a/technical/blog-roll.md +++ /dev/null @@ -1,114 +0,0 @@ -This is a list of blog-ish websites where I found insightful stuff -that I would like not to forget. - -# [LispCast] - -Eric Normand's musings on programming paradigms and their application, -with a soft spot for functional programming. - -[When in doubt, refactor at the bottom] -: Quoting Sandi Metz: - - > Duplication is far cheaper than the wrong abstraction. - - The point being that blindly following the letter of the DRY law - can lead developers to add complexity to extracted functions - because "it almost does what I want; if I could add just one more - parameter to it…". - - Normand and Metz encourage developers to "mechanically" extract - small pieces of logic; even if they are not re-usable, bundling - things together and naming them helps make the potential - abstractions more visible. - -[Programming Paradigms and the Procedural Paradox] -: A discussion on our tendency to conflate *paradigms* with their - *features*; for example, when trying to answer "can this language - express that paradigm?", we often reduce the question to "does - this language possess those features?". - - Normand wonders whether we do this because the procedural - paradigm's metaphor (a series of steps that each may contain any - number of sub-tasks) maps so well to its features (sequential - statements, subroutines) that it trained us to mix those up. - -[LispCast]: https://lispcast.com/category/writing/ -[When in doubt, refactor at the bottom]: https://lispcast.com/refactor-bottom/ -[Programming Paradigms and the Procedural Paradox]: https://lispcast.com/procedural-paradox/ - -# [null program] - -Chris Wellons's in-depth looks into a fairly wide range of programming -techniques and applications. The articles often come with -illustrative code samples, which are always broken down into -bite-sized chunks that are easy to grok. - -Some recurring topics I enjoy reading about: - -- GNU/Linux plumbing - - [Raw Linux Threads via System Calls] - - [Appending to a File from Multiple Processes] - - [A Magnetized Needle and a Steady Hand] - -- C programming tricks - - [Global State: A Tale of Two Bad C APIs] - - [C Closures as a Library] - - [How to Write Portable C Without Complicating Your Build] - - [A Tutorial on Portable Makefiles] - -- Algorithmics - - [Inspecting C's qsort Through Animation] - - [A Branchless UTF-8 Decoder] - - [Render Multimedia in Pure C] - -- Emacs Lisp plumbing - - [Some Performance Advantages of Lexical Scope] - - [What's in an Emacs Lambda] - -[null program]: http://nullprogram.com/index/ -[Raw Linux Threads via System Calls]: https://nullprogram.com/blog/2015/05/15/ -[Appending to a File from Multiple Processes]: https://nullprogram.com/blog/2016/08/03/ -[A Magnetized Needle and a Steady Hand]: https://nullprogram.com/blog/2016/11/17/ -[Global State: A Tale of Two Bad C APIs]: https://nullprogram.com/blog/2014/10/12/ -[C Closures as a Library]: https://nullprogram.com/blog/2017/01/08/ -[How to Write Portable C Without Complicating Your Build]: https://nullprogram.com/blog/2017/03/30/ -[A Tutorial on Portable Makefiles]: https://nullprogram.com/blog/2017/08/20/ -[Inspecting C's qsort Through Animation]: https://nullprogram.com/blog/2016/09/05/ -[A Branchless UTF-8 Decoder]: https://nullprogram.com/blog/2017/10/06/ -[Render Multimedia in Pure C]: https://nullprogram.com/blog/2017/11/03/ -[Some Performance Advantages of Lexical Scope]: https://nullprogram.com/blog/2016/12/22/ -[What's in an Emacs Lambda]: https://nullprogram.com/blog/2017/12/14/ - -# [Et tu, Cthulhu] - -[A hash table re-hash] -: A benchmark of hash tables that manages to succinctly explain - common performance issues and tradeoffs with this data structure, - to show results across a wide range of implementations, and to - provide very understandable interepretations for those results. - -[Et tu, Cthulhu]: https://hpjansson.org/blag/ -[A hash table re-hash]: https://hpjansson.org/blag/2018/07/24/a-hash-table-re-hash/ - -# [Evanmiller.org] - -I mostly only read the articles dealing with programming languages. -The down-to-earth commentary made me feel like the author both -appreciates the thought process that went into the design, and has -enough hindsight to find where that thought process fell short. - -[A Taste of Rust] -: An overview of some of the language's features. Some comments - resonated particularly well with me, e.g. on nested functions: - - > With other languages, I’m never quite sure where to put - > helper functions. I’m usually wary of factoring code into - > small, “beautiful” functions because I’m afraid they’ll end - > up under the couch cushions, or behind the radiator next to - > my car keys. With Rust, I can build up a kind of organic - > tree of function definitions, each scoped to the place where - > they’re actually going to be used, and promote them up the - > tree as they take on the Platonic form of Reusable Code. - -[Evanmiller.org]: https://www.evanmiller.org/ -[A Taste of Rust]: https://www.evanmiller.org/a-taste-of-rust.html diff --git a/technical/reviews/articles.md b/technical/reviews/articles.md deleted file mode 100644 index 82dc7ee..0000000 --- a/technical/reviews/articles.md +++ /dev/null @@ -1,76 +0,0 @@ -# Phillip Rogaway - The Moral Character of Cryptographic Work - -:::: tags -- Cryptography -- Society -:::: - -An appeal to cryptographers to ponder on the [Russell-Einstein -manifesto], consider the moral implications of their work, take a step -back from "crypto-for-crypto", and focus on "crypto-for-privacy" (or, -to name the threat more explicitly, "anti-surveillance research"). - -Harps on FBI Director James Comey's "law-enforcement framing": - -> 1. Privacy is *personal* good. It's about your desire to control -> personal information about you. -> 2. Security, on the other hand, is a *collective* good. It's about -> living in a safe and secure world. -> 3. Privacy and security are inherently in conflict. As you -> strengthen one, you weaken the other. We need to find the right -> *balance*. -> 4. Modern communications technology has destroyed the former -> balance. It's been a boon to privacy, and a blow to security. -> Encryption is especially threatening. Our laws just haven't kept -> up. -> 5. Because of this, *bad guys* may win. The bad guys are -> terrorists, murderers, child pornographers, drug traffickers, and -> money launderers. The technology that we good guys use - the bad -> guys use it too, to escape detection. -> 6. At this point, we run the risk of Going Dark. Warrants will be -> issued, but, due to encryption, they'll be meaningless. We're -> becoming a country of unopenable closets. Default encryption may -> make a good marketing pitch, but it's reckless design. It will -> lead us to a very dark place. - -This framing is dismissed as "inconsistent with the history of -intelligence gathering, and with the NSA's own mission statement", -without further explanation. - -I wish the author had spent some prose explaining how exactly this -framing is fallacious. There is a footnote providing some references, -but as far as I can tell these references mainly reinforce the point -that the NSA's surveillance methods are a threat to privacy; it is not -obvious how "the NSA overreaches" contradicts "it's harder to catch -bad guys once they get better crypto". - -For what it's worth, I found that [Aaron Brantly's -article](#aaron-brantly---banning-encryption-to-stop-terrorists-a-worse-than-futile-excercise) -does a better job at showing the shortsightedness of this line of -reasoning, as does this footnote: - -> When crypto is outlawed only outlaws will have crypto. - -[Russell-Einstein manifesto]: https://en.wikipedia.org/wiki/Russell%E2%80%93Einstein_Manifesto - -# Aaron Brantly - Banning Encryption to Stop Terrorists: A Worse than Futile Excercise - -:::: tags -- Cryptography -- Society -:::: - -The debate can be phrased as follows: - -> Is increasing security in one narrow area worth degrading it in -> every other? - -Answering "yes" overlooks two things: - -1. Weakening officially distributed encryption will not impact - terrorists, who will simply move to new, unregulated platforms. - -2. Once they have done that, we end up in a situation where lawful - citizens are stuck with insecure communication channels, and - terrorists are the only ones benefiting from state-of-the-art - confidentiality/integrity/authenticity. diff --git a/technical/reviews/linux.conf.au-2017.md b/technical/reviews/linux.conf.au-2017.md deleted file mode 100644 index 9eb8da7..0000000 --- a/technical/reviews/linux.conf.au-2017.md +++ /dev/null @@ -1,330 +0,0 @@ -# linux.conf.au 2017 - -## General comments - -Re-stating the audience's questions before replying is helpful. - -## Choose Your Own Adventure, Please! - -Keynote by Pia Waugh. - -Warns against short-sighted itch-scratching; wants to encourage more -long-lasting systemic change. To contrast with Maciej Cegłowski, who -warns against [ivory-tower wank] in Sillicon Valley, where no-one -seems interested in working on the severe poverty problems nearby. - -(To be fair, Pia does say we need both "symptomatic relief" and -systemic change.) - -41:30 - -> My favourite story from my studies with martial arts was actually -> about two monks walking around. They're walking along, elder one, -> younger one, and when they get to the river, a person comes and says -> "I'm being chased by robbers, can you help me across the river -> please?". The older monk says "Yep, not a problem", picks them up -> and carries them across (because they're hurt). The person gets -> away. And they're walking along, still in silence, and the younger -> monk says: "… You know, back at the river back there"; the older -> monk says "Yeah?"; the younger monk says "I thought we had taken a -> vow of silence". The other goes, "Yeah?". "… Should you have -> spoken to that person?", and the older monk says: "I put that person -> down back at the river. Why haven't you?" - -That story appeals to me: it's got some sort of -Jesus-ish-unconditional-forgiveness-Zen vibe that feels reassuring, -"it's OK to make mistakes, as long as you aimed for the Greater Good, -focus on the Spirit of the Law instead of upholding the Letter". But -slippery slope turns that into "move fast and break things", -consequences and accountability be damned. - -You can even link that to ["fussy" compilers] and false alarms: why -should Buddhist GCC warn on Vow-of-Silence violation if it's not -actually a problem? The warning should be refined, the diagnosis -should be smarter, the standard amended, otherwise how do you -distinguish between the shades of red? - -["fussy" compilers]: https://lists.gnu.org/archive/html/emacs-devel/2016-04/msg00190.html -[ivory-tower wank]: http://idlewords.com/talks/superintelligence.htm - -## Stephen King's practical advice for tech writers - -By Rikki Endsley. - -Lots of pointers, e.g. [The Care and Feeding of the -Press](http://netpress.org/care-feeding-press/). - -Suggested outline: - -- intro (invite the reader in) -- state the problem (background) -- solution -- (for tech article, tutorial, whitepaper: technical stuff (howto, FAQ)) -- conclude (important dates, action items) - -Parasite words: "very", "some". Be mindful of slang. - -## Sharing the love: making games with PICO-8 - -By John Dalton. - -> Sad old people, longing for the glory days - -PICO-8 restores the "Democracy of Creating". - -Kids get the point of sharing without having to be "encouraged" by -licences. - -## Writing less, saying more: UX lessons from the small screen - -By Claire Mahoney. - -- "mobile" is not necessarily "on the move" -- a "mobile" app does not have to be a "diet" version of the original - -Users do not expect the functionality to be diminished. - -> Context can be better than words - -(I feel like there is a connection to be made here with namespaces in -programming languages.) - -Patterns are good, repetition is not. - -Defining purpose with "when X, I want Y so I can Z" helps "keeping it -real" and reminding you of the user out there. - -## Mamas Don't Let Your Babies Grow Up to Be Rock Star Developers - -By Rikki Endsley. - -When writing job descriptions, stop asking for rock stars. Focus on: - -- job requirements -- job environment - -Makes it easier for people to figure whether they will fit in. - -Look for developers interested in making *others* succeed, learning -*new* skills; make sure they are accessible, they use the best tool -for the job, and they are able to innovate, lead, and collaborate with -a diverse mix of people. - -If you have a rockstar on your hands, make sure the janitors still get -some credits. - -## Why haven't you licensed your project? - -By Richard Fontana. - -"Post open-source" has actually been a thing for a while: the term -describes the widespread trend of not attributing a license to one's -project. - -Berne convention says that copyright is automatic, so this POSS -software might be implicitly "proprietary". Why worry? There is a -lot of proprietary software already. - -Not putting on a license constitutes a statement for some developers. - -Some attempts at public-domain dedication: - -- [WTFPL](http://www.wtfpl.net/) -- [Unlicense](http://unlicense.org/) -- [0-clause BSD](http://landley.net/toybox/license.html) -- [BOLA](https://blitiri.com.ar/p/bola/) -- [CC0](https://creativecommons.org/share-your-work/public-domain/cc0/) - -## Handle Conflict, Like a Boss! - -By Deb Nicholson. - -Conflict mostly comes from missing information, mismatched goals. - -Avoidance, accomodation and assertion each have their own issues as -conflict-handling strategies. - -Using historical motivations can help give credit to new ideas. - -Hypotheticals such as "What's the worst that could happen?" help -identify the root issues people will not directly talk about. - -No ad hominem. No name-calling. Period. Beware of [Contempt Culture]. - -Setting expectations can help enforce a civil tone and constructive -criticism. - -[Contempt Culture]: (https://blog.aurynn.com/2015/12/16-contempt-culture). - -## The journey of a word: how text ends up on a page - -By Simon Cozens. - -Very interesting explanations on the lengths Unicode must go to in -order to turn humanity's sprawling mess of written communication -methods into rigorous rules that a computer can understand. - -Some diacritics can be encoded either with a single code point or a -vowel plus a combining code point; this is because Unicode intends to -have one code point for *every character that other encodings have -ever contained*. - -Cozens is publishing a free online book on the subject: [Fonts and -Layout for Global Scripts]. - -[Fonts and Layout for Global Scripts]: https://simoncozens.github.io/fonts-and-layout/ - -## Surviving the Next 30 Years of Free Software - -By Karen Sandler. - -Is copyright assignment to big organizations (Canonical, FSF?) the -solution to problems we cannot anticipate? - -Wills are tricky: recipients might be taxed on the "monetary value" of -the "legacy". - -Using a trust as a "legal hack": would build a "registry" of free -software; the trust can map handles to contact information to preserve -anonymity. - -The idea is vaporware for now, since this trust cannot be built -without debating a lot of finer points. - -> The best gift you can give to the people you love is to make sure -> they're prepared for when you're gone. - -## The relationship between openness and democracy - -By Pia Waugh. - -Openness creates a natural incentive for "doing the right thing". - -Some people think shady deals which allow politicians to make huge -amounts of money from the industry are fair game, since they have to -get the investments they made during their campaign back. - -On "policy-based evidence" as an alternative to evidence-based policy: - -> That's rather funny'n'clever'n'witty… Oh shit, you're serious. - -How representative and legitimate are elected individuals? Never mind -the participation rate, most people vote for (or against) one or two -things, not the whole program. - -> (13:00) Everyone loves to kick public servants; **everyone**. - -> (14:30) I was gonna start a cartoon. And the first thing was gonna -> be someone saying "I'm surprised that you're working in government, -> I would've thought you'd disagree with X, Y, Z." OK. -> -> The second panel somone saying to me "I just can't believe you're -> working in government! I thought you had *integrity*! I thought -> you would disagree with all of these things!" … *OK*. -> -> The third person says "YOU MOTHER-"… Anyway, goes on a complete -> tirade, I'll probably get hit on the head. -> -> The fourth panel is me running off in the distance. Into the -> sunset. And the three people saying to each other "Why are there no -> good people in government?" - -"Consulting the public" used to be a point on a checklist, not -intended to yield useful outputs. - -## JavaScript is Awe-ful - -By Katie McLaughlin. - -In JavaScript, functions have to add `var` explicitly to their local -variable declarations, otherwise they will assign to global variables. - -``` javascript -> [] + [] -"" -> [] + {} -[object Object] -> {} + [] -0 -> {} + {} -NaN -``` - -JavaScript is a registered trademark; ECMAScript is the actual, -*standardised*, **versioned** language. - -Some examples of things which can be accomplished without JavaScript: -<http://youmightnotneedjs.com/>. - -Cross-compilers alleviate some of the pain; one has to be careful with -their prefered language's warts though. - -In Ruby, `&&` and `and` do not have the same precedence with respect -to `not`. - -## Data Structures and Algorithms in the 21st Century - -By Jacinta Catherine Richardson. - -Voronoi diagrams have a lot of applications: - -- modeling the capacity of wireless networks -- robot navigation -- mouse hoverstate - -Fourier transforms help with data compression. Naively: O(n²); from -the sixties onward: O(n log(n)). Nearly Optimal Sparse Fourier -Transform (2012): O(k log(n)), helps on-the-fly data compression. - -Singular Value Decomposition helps with pattern recognition/comparison -by allowing to express e.g. rotations. - -> New stuff! - -Evolutionary algorithms (a form of AI/machine learning) to find -optima: - -- a function to tell "is this good enough?" - -Genetic algorithms (a form of evolutionary): - -- fitness criteria -- swap information ("breed") -- random-ish variations - -> Setting up the fitness criteria and the initial conditions for -> genetic algorithms […] is as much art as it is science. - -Artificial Immune Systems (90s) is used in computer security. - -Swarm algorithms: agents share the value of their findings and -converge. Used e.g. to locate cancer; considered for e.g. traveling -sales person problem, unmanned cars. - -Bacterial Foraging Optimization; Shuffled Frog Leaping; -Teaching-Learning-Based Optimisations. - -[Foldit](http://fold.it) is an experiment consisting in making humans -solve hard problems (e.g. protein folding) through competitive gaming. - -Graph isomorphism is *hard*. Easy to verify, hard to solve. Until a -week ago: we can now solve them in quasi-polynomial time. - -## My personal fight against the modern laptop - -By Hamish Coleman. - -Ports, durability, keys are getting worse. - -Plugging an older keyboard on newer Thinkpads presents issues: - -- the motherboard sends in high-voltage current to enable backlight -- some keys don't work; the firmware must be changed (and then - re-encrypted) - -Sharing firmware patches is challenging; most end-users have no idea -what these even are; some of them run Windows and cannot easily use -the patching tools. - -Newer firmwares seem to be signed; this will probably make them harder -to tweak. diff --git a/technical/reviews/linux.conf.au-2018.md b/technical/reviews/linux.conf.au-2018.md deleted file mode 100644 index 657bb64..0000000 --- a/technical/reviews/linux.conf.au-2018.md +++ /dev/null @@ -1,136 +0,0 @@ -# linux.conf.au 2018 - -## Making Technology More Inclusive Through Papercraft and Sound - -By Andrew Huang. - -I like how the talk goes over a range of cross-domain topics: - -- high-level motivations - -Improving inclusiveness is necessary to make open-source actually -empower people; right now a very small subset of the population is -computer-savvy enough to take advantage of it. If the situation does -not improve, a handful of developers will hold a lot of power over -lots of alienated users, and lawmakers may resort to "preposterous" -solutions to attempt to regain control, e.g. license bonds for -software developments. - -- Kickstarter campaign management -- design choices & rationale - - "China-ready" - - "patience of a child" constraint -- gory hardware details -- the end result - -## QUIC: Replacing TCP for the Web - -By Jana Iyengar. - -Starts by introducing impressive application performance improvements, -although where were those measured? E.g. rural areas? - -Advantage that can already be inferred from the layer view: QUIC needs -fewer handshakes than TCP+TLS. - -Achieves 0-RTT when the server's cryptographic credentials are known. - -Supports "stream multiplexing": the upper layer (e.g. HTTP) can -transfer multiple objects independently in a single connection. -Losing part of one object does not block the others: retransmission is -managed at the stream level, not at the connection level. - -On top of UDP: allows userspace (Chrome) implementation. - -> If you think of layers as a set of functions, things that you want -> done, UDP is not a transport protocol. - -I.e. UDP does not provide reliability, same-order delivery… - -Jana was "in the SCTP bandwagon". - -They actually have *better performance improvements* for *bigger -latencies*? Nice. - -> § QUIC improvements by country - -👏 - -(Of course the end goal is probably to make sure regions with poor -connections do not miss out on the adfest; still, these remain welcome -technical improvements) - -Transport headers are encrypted to prevent "middlebox ossification". -They left a *single* byte unencrypted (the flags byte): this allowed -middleboxes to observe that it kinda had the same value on most -connections, assume that this was a "nominal" value, and block traffic -when this value differed. - -## You Can't Unit Test C, Right? - -By Benno Rice. - -- Mentions [Check](https://libcheck.github.io/check/) and - [Kyua](https://github.com/jmmv/kyua). -- Factor your boilerplate into libraries, especially the ugly hacks. -- Keep `main` small so that you don't need to test it so much. - -## Changing the world through (fan-)fiction - -By Paul Fenwick. - -Reading fiction is a convenient way to get us to think through -concepts we had not considered before. By re-purposing a familiar -setting, *fan*fiction lowers the barrier to entry to the writing -exercise: it makes it easier for the writer to get their point across -and to reach their audience. - -Some recommendations: - -- The Last Ringbearer -- [My Little Pony: Friendship is Optimal] -- [Harry Potter and the Methods of Rationality] - -Our media teaches us what is normal. Hence fiction opens up ways to -improve the status quo by acquainting us to new ideas. - -Another recommendation: Steven Universe. - -Mainstream and folklore stories feature a fair amount of unhealthy -relationships; this is problematic because repeated exposure helps -normalization[^I find that SMBC is a positive example of this effect: -it regularly (and, AFAICT, fairly randomly) features gay couples in -comics where the joke is *not* about homosexuality]. - -In Japan, doujinshi is considered normal and "adding value to the -brand", whereas similar things are flagged as "copyright infringement" -in other countries. - -[My Little Pony: Friendship is Optimal]: https://www.fimfiction.net/story/62074/Friendship-is-Optimal -[Harry Potter and the Methods of Rationality]: http://www.hpmor.com/ - -## Lessons from three years of volunteering to teach students code - -By David Tulloh. - -Takeways: - -1. Volunteering in schools is easy and fun. -2. We should care about what is taught in schools. -3. We should get involved and support schools teaching IT. - -CSIRO: Australian program to get professional developers to teach in -schools. - -[Pixees](https://pixees.fr/) seems to be a French equivalent. - -Tried to move students from "programmers" to "developers" by evoking: - -- automated testing -- version control -- bug tracking -- code review - -An audience member noted that while programs ala CSIRO are helpful, -this should be organized at the government policy level. - diff --git a/technical/reviews/mailing-lists.md b/technical/reviews/mailing-lists.md deleted file mode 100644 index c63d376..0000000 --- a/technical/reviews/mailing-lists.md +++ /dev/null @@ -1,68 +0,0 @@ -# Emacs - -## 2019-01 - -### [Apropos 54f297904e0c: Temporarily comment out CC Mode from tests which are incompatible with it.][cc-mode/electric-pair] - -A thread that feels very representative of the friction between -"keeping things working as they always did" vs. "simplifying that huge -lumbering beast of a codebase". I find [Stefan Monnier's -intervention][cc-mode/electric-pair-stefan] helpful because it -captures both sides of the argument quite well: - -> >> I understand that there's a transition needed between these two and this -> >> intermediate state can require more work, but it's important to keep the -> >> long term goal in mind when designing the current solution. -> > Whose long term goal? -> -> At the very least mine. -> -> > My goal, both long and short term, is to keep CC Mode -> > working properly. -> -> That's orthogonal. -> -> To give you a similarly general goal, my own goal is to make it so that -> **any feature which makes sense in many major mode be implemented once and -> then used in the relevant major modes, rather than being implemented -> independently for those major modes.** -> -> This is both for uniformity between major modes, and because it both -> simplifies and improves many major modes (which would otherwise either -> not provide the feature or only in very primitive ways). -> -> **And those maintainers like you who did go to the trouble of being early -> implementers of the feature suffer through the pain of having to adapt -> their code once the generic version of the feature becomes available.** -> Sometimes even at the cost of having the new feature working slightly -> worse in some corner cases. -> -> But many of them are quite happy to be able to drop their old code and -> get rid of that responsibility (i.e. bug reports about regressions can -> be redirected to Emacs maintainers). - -On a non-technical note, this thread allowed RMS to advertise the [GNU -Kind Communications Guidelines][gnu-kind-communication]: - -> To ask "who started it" is to oversimplify. Often what happens -> is that a little harshness creeps into a discussion, then people -> react to that in a way that is a little more harsh. So nobody -> "started it" but multiple people exacerbated it. -> -> **Thus, part of the effort is, when we feel harshness coming at us, -> to damp it down rather than hitting back.** - -[cc-mode/electric-pair]: https://lists.gnu.org/archive/html/emacs-devel/2019-01/msg00360.html -[cc-mode/electric-pair-stefan]: https://lists.gnu.org/archive/html/emacs-devel/2019-01/msg00518.html -[gnu-kind-communication]: https://www.gnu.org/philosophy/kind-communication.html - -### [Documentation about the completion framework][completion-documentation] - -Helpful pointers for whoever wants to dig into completion plumbing. -Personally, I struggled to get to grips with it when [debugging some -`icomplete` issue][icomplete-issue], relying on the source for -information, and giving up while trying to write an automated test -case. - -[completion-documentation]: https://lists.gnu.org/archive/html/emacs-devel/2019-01/msg00504.html -[icomplete-issue]: https://gitlab.com/peniblec/memory-leaks/commit/dcc0c05dc1f6a22645bf9355b72aa44b49776620 diff --git a/technical/reviews/talks.md b/technical/reviews/talks.md deleted file mode 100644 index ed272c8..0000000 --- a/technical/reviews/talks.md +++ /dev/null @@ -1,81 +0,0 @@ -# Sandi Metz - Nothing is Something - -:::: tags -- OOP -- Ruby -:::: - -Some insightful thoughts on OOP. - -Clever examples of message-passing to get rid of conditionals. - -Prefer composition with dependency injection to inheritance: -inheriting to override a method really means that the parent class had -a default "null" behaviour that can be injected explicitly. - -Name the role, make an interface for it, and make classes that -implement each behaviour (the null one and the specialiazed one). -This will make it easier to compose specializations (i.e. save you -from multiple inheritance). - - -# Sandi Metz - Rules - -:::: tags -- OOP -- Ruby -:::: - -Some theory-crafting on rule-following, then the actual rules, which -amount to - -- small classes, -- tiny methods, -- few parameters. - -At the 16-minute mark, an interesting interaction between Metz and a -programmer starting to apply these rules: the programmer wonders when -they will be able to understand the new application "the same way" -they understood the old one. I.e. will they ever reach a point where -they have a complete mental map of every interaction between every -object, the same way they used to have a complete mental map of the -old monolithic, sequential application? - -Metz's response is that nope, this will never happen; they will "cease -to care" instead. In exchange, they will be able to make localized -changes without worrying about breaking the whole application. - - -# Fred George - The Secret Assumption of Agile - -:::: tags -- Agile -- OOP -- programming methods -- project management -- training -:::: - -Advice on when to refactor: - -- *after* design, *before* writing unit tests for the new stuff: - prepare ground for the addition to fit right in; - -- *after* implementing the new behaviour, *before* integrating. - -Goes over the usual code smells taught during the training he gives -(conditionals, getters & setters, class names ala "Manager", too many -instance variables) - -Mentions a requirement for training "retention": skills must be -applied within a month after receiving the training, otherwise the -rationale will be lost. - -Questions: - -- Does he know of open-source projects that showcase this style of - programming? - - Smalltalk, some NodeJS libraries - -- Does he rely on naming conventions? - - Quite a lot. |
