πŸ“š Agora node [[programming]] β˜†
Agora nodes contain community contributions with titles or topics that match your search. x
πŸ“œ File programming.md by @neil β˜† πŸ“Ž οΈπŸ”— ✍️ β›Ά

ProgrammingΒ§

TimelineΒ§

Early stuffΒ§

  • I have early memories coding with my Mum and my Grandad
  • typing in BASIC to the [[Amstrad]]
  • making the screen background flash different colours
  • making it print out "Hello, <name>" over and over
  • these were from the instruction manual I’m pretty sure

β₯… [[2020-03-21_22-11-58_serveimage.jpg]]

  • also I think we got these other books full of code from somewhere, where you just went through and typed a full program in line by line. Often it didn’t work, you had to go through line by line and find the error.
  • I also remember making a program with my Grandad on his business Amstrad PC. It was something to do with the Blitz, a game of dropping bombs on a city.

CollegeΒ§

  • I learned Pascal at college in my Computing A-level

The webΒ§

  • I remember teaching myself HTML around late 1990s it must’ve been, from Webmonkey. I was listening to [[Tri Repetae]] by [[Autechre]] a lot while doing it. Fun times.

NowΒ§

I’d like to learn [[Lisp]]. We were doing a group learning via [[SICP]] for a while at https://evalapply.space, but that has gone dormant for now.

Perhaps [[Clojure]].

πŸ“œ File Programming.md by @bunnynabbit β˜† πŸ“Ž οΈπŸ”— πŸ€— β›Ά

I’m a big fan of [[object-orientated programming]]. I primarily use [[Visual Studio Code]] as my editor.

Programming languagesΒ§

πŸ“œ File programming.md by @goldfishlaser β˜† πŸ“Ž οΈπŸ”— β›Ά

programmingΒ§

Core ideaΒ§

πŸ“œ File programming.myco by @melanocarpa β˜† πŸ“Ž οΈπŸ”— ✍️ β›Ά

Programming is an act of commanding a computer to do something, usually, something you want.

Opinions on how to program

Turns out, many programmers have no idea how to, so those who think they know how to, teach the former.

There are some.

Boring languages are underrated. Many appear to be rated quite highly, at least if you look at market share. But even so, they're underrated.

The author states that installation of software has become increasingly complex. They mostly talk about open-source stuff. They emphasize that requiring users to have a whole database such as Postgres to run a an application is wrong. I do agree! Whenever there is a Python application that wants some Postgres and Redis, I just don't install it. There are enough sources of headaches for me already.

Actually, I try to make Mycorrhiza installable! No DB, next to zero CLI options, etc. Leave the crust to the working application! However, I have problems with delivering binaries. Let's work on that.

πŸ“œ File programming.md by @agora@botsin.space β˜† πŸ“Ž β›Ά
πŸ“œ File Programming.md by @agora@botsin.space β˜† πŸ“Ž β›Ά
πŸ“œ File programming.md by @an_agora@twitter.com β˜† πŸ“Ž β›Ά

Loading pushes...

✨ AI Synthesis Mistral Gemini ChatGPT Claude x

Expanding this section will automatically generate an AI synthesis of the contributions in this node.

🌌 Agora context for [[programming]]

Rendering context...

πŸ“š Agora node [[20200604222704 functional_programming]] (pulled by the Agora)
πŸ“œ File 20200604222704-functional_programming.org by @ryan β˜† πŸ“Ž
  • functional programming is a way of writing code by means of pure functions

  • benefits of functional programming:

    1. Immutability

      • All values derived from old values

    2. Testability

      • Pure functions are easy to test

  • difficulties of functional programming:

    1. unintuivive

      • many people learn programming either imperatively or in an object-oriented manner

    2. impractical?

      • interfacing with "the real world" is challenging

πŸ“š Agora node [[20210307153455 programming]] (pulled by the Agora)
πŸ“œ File 20210307153455-programming.org by @ryan β˜† πŸ“Ž
πŸ“š Agora node [[20210311213212 object_oriented_programming]] (pulled by the Agora)
πŸ“œ File 20210311213212-object_oriented_programming.org by @ryan β˜† πŸ“Ž

There are, broadly speaking, two kinds of object-oriented programming:

  1. Smalltalklike, which is similar to the actor model

  2. Javalike, which has more to do with inheritencehierarchies.

The contents of this page will mostly have to do with the latter. See the "actor model" page for Smalltalk-like OOP.

The holy trinity of OOP languages are C++ Java and C#

OOP languages proper are characterized by framing every aspect of the program as a class In Java there is a special class which must have a static method called main. Java and C#, until recently, did not allow for free function.

πŸ“š Agora node [[20210423133319 type_programming]] (pulled by the Agora)
πŸ“œ File 20210423133319-type_programming.org by @ryan β˜† πŸ“Ž
πŸ“š Agora node [[20210423171911 concurrent_programming]] (pulled by the Agora)
πŸ“œ File 20210423171911-concurrent_programming.org by @ryan β˜† πŸ“Ž
πŸ“š Agora node [[20210521211550 class_programming]] (pulled by the Agora)
πŸ“œ File 20210521211550-class_programming.org by @ryan β˜† πŸ“Ž
πŸ“š Agora node [[20210521211721 function_programming]] (pulled by the Agora)
πŸ“œ File 20210521211721-function_programming.org by @ryan β˜† πŸ“Ž
πŸ“š Agora node [[20210521211757 method_programming]] (pulled by the Agora)
πŸ“œ File 20210521211757-method_programming.org by @ryan β˜† πŸ“Ž
πŸ“š Agora node [[20210607154216 pure_functional_programming]] (pulled by the Agora)
πŸ“œ File 20210607154216-pure_functional_programming.org by @ryan β˜† πŸ“Ž
πŸ“š Agora node [[concepts techniques and models of computer programming]] (pulled by the Agora)
πŸ“œ File concepts techniques and models of computer programming.md by @flancian β˜† πŸ“Ž οΈπŸ”— ✍️

Concepts, Techniques and Models of Computer ProgrammingΒ§

πŸ“š Agora node [[end user programming]] (pulled by the Agora)
πŸ“œ File content/end-user programming.md by @scalingsynthesis β˜† πŸ“Ž οΈπŸ”— ✍️

Authored by:: [[P- Brendan Langen]]

Refers to the act of software users (which are not necessarily developers) altering and adding on to their programs, perhaps through a [[DSL]]. End user programming is a a prominent affordance of modern distributed tools and systems, as it empowers self-expression through the modification of the tool.

See the excellent work from Ink + Switch 2019 describing the past and future of end-user programming.

πŸ“š Agora node [[flow based programming]] (pulled by the Agora)
πŸ“œ File pages/flow-based-programming.org by @jakeisnt β˜† πŸ“Ž

FBP is a programming paradigm that defines applications as networks of black-box processes, exchanging data across predefiend connections by message passing.

The connections are always specified external to these processes. This allows a product to be thought of as a holistic system just as much as it is a selection of separate services.

The best source for this is probably the google groupwhere the founder of this idea discusses the paradigm. https://en.wikipedia.org/wiki/Flow-based_programming

πŸ“š Agora node [[functional programming]] (pulled by the Agora)
πŸ“œ File content/functional programming.md by @scalingsynthesis β˜† πŸ“Ž οΈπŸ”— ✍️
πŸ“š Agora node [[joel spolsky on extreme programming]] (pulled by the Agora)
πŸ“œ File joel-spolsky-on-extreme-programming.md by @vera.wiki.anagora.org β˜† πŸ“Ž

One of [[Extreme Programming]]‘s leading blogger advocates gets much less credit than he deserves for promoting each of XP’s values and practices.

[I haven’t found Spolsky’s articles particularly pro-XP. And since this page is called "Spolsky on XP" and not "Spolsky for" or "against XP", I suggest it’s rather disingenious to try to suggest he’s supporting XP. So, while it’s perfectly OK to give both pro and con quotes, let this page be more about debating whether he’s either. [[Delete When Cooked]] that’s the point he openly hates XP, while espousing its practices anyway. Please don’t ruin the joke!]

Pro-XP remarks

[[Refactor Mercilessly]] "There’s a subtle reason that programmers always want to throw away the code and start over. The reason is that they think the old code is a mess. And here is the interesting observation: they are probably wrong. The reason that they think the old code is a mess is because of a cardinal, fundamental law of programming: It’s harder to read code than to write it. This is why code reuse is so hard. This is why everybody on your team has a different function they like to use for splitting strings into arrays of strings. They write their own function because it’s easier and more fun than figuring out how the old function works."

[http://www.joelonsoftware.com/articles/fog0000000069.html www.joelonsoftware.com]

[[Common Workspace]] "The bizarre thing she claims, which could be true, is that open-space-dwellers actually get voluntarily interrupted less because people can quickly see whether they’re interruptible or not."

[http://www.joelonsoftware.com/items/2005/10/16.html www.joelonsoftware.com]

[[Onsite Customer]] "…and you make them sign the spec in indelible ink, nay, blood, and they do, and then you build that thing they signed off on, promptly, precisely and exactly, and they see it and they are horrified and shocked, and you spend the rest of the week reading up on whether your E&O insurance is going to cover the legal fees for the lawsuit you’ve gotten yourself into…"

[http://www.joelonsoftware.com/items/2005/10/12.html www.joelonsoftware.com]

[[Business Value First]] "… So if you want to get things done, you positively have to understand at any given point in time what is the most important thing to get done right now and if you’re not doing it, you’re not making progress at the fastest possible rate … don’t do unimportant-slash-fun features first because ‘you’re going to have to do them eventually anyway.’"

[http://www.joelonsoftware.com/articles/SetYourPriorities.html www.joelonsoftware.com]

[[Design Smell]] "… You start to smell subtle hints of uncleanliness beneath the surface and they bug you enough to reach out and fix the code"

[http://www.joelonsoftware.com/articles/Wrong.html www.joelonsoftware.com]

Remarks against XP

Anything?

Neutral remarks

In "Five Worlds" Spolsky expressed doubt at Kent Beck’s claim that [[Extreme Programming]] development (in particular [[Pair Programming]] and [[Test Driven Development]]) can prevent software bugs almost completely. He follows with examining the bug database at his own company and concluding that very few of the entries would have appeared under XP. First, some of them were features, due to their liberal use of their bug tracking software for tracking ideas as well. Second, of the entries that were bugs, some appeared only under specific use conditions that would most likely not occur to any developer to test for. Third, in specific development environments some of the bugs would be dismissed altogether, since the conditions they occur in would not be considered relevant. And it is these environments that XP is most likely to be used in, which means Kent Beck is right, but only in particular circumstances, which makes Joel end with these cautionary words: "When somebody tells you about methodology, think about how it applies to the work you’re doing."

[http://www.joelonsoftware.com/articles/FiveWorlds.html www.joelonsoftware.com]

"Priority list in hand, we set out to more or less work down the list in order until about March, when we plan to stop adding new features and start the integration and testing phase. We’ll write specs for each (nonobvious) feature right before implementing that feature. (The nattering scorekeepers of the BDUF/Agile beauty contest are now thoroughly confused. ‘Was that a vote for BDUF? Or Agile? What does he want? Can’t he just take sides for once?!’)"

[http://www.joelonsoftware.com/articles/SetYourPriorities.html www.joelonsoftware.com]

See original on [http://c2.com/cgi/wiki?JoelSpolskyOnExtremeProgramming c2.com]

πŸ“š Agora node [[linear programming]] (pulled by the Agora)
πŸ“œ File linear-programming.md by @neil β˜† πŸ“Ž οΈπŸ”— ✍️

Linear programmingΒ§

The method was then independently reinvented in the United States by Tjalling Koopmans and by George Danzig, who while working on transport and allocation problems for the US Airforce during the war coined the phrase ‘linear programming’

– [[Red Plenty]]

These are known as β€˜linear’ equations, because if graphed they produce straight lines, and it is a property of linear equations that you can only solve them if you have as many equations to work with as there are variables

– [[Red Plenty]]

Otherwise, they are β€˜undetermined’ – there are an infinite number of possible solutions, and no way to decide between them.

– [[Red Plenty]]

Linear programming was not only a quintessentially socialist kind of mathematics, β€˜characterized by a constant overlap of theory and practice’, it also offered a new kind of socialist political economy

[[Half-Earth Socialism]]

Linear programming offered a systematic way to allocate resources, so that it optimized some metrics of overall national well-being

[[Half-Earth Socialism]]

the method is ubiquitous in contemporary applied mathematics, including in planning renewable energy systems

[[Half-Earth Socialism]]

Rather than relying on a Platonic elite of logicians, Neurath thought that a visual language could democratize reason by making the essence of an economic problem apparent to non-experts

[[Half-Earth Socialism]]

There were two main currents that shaped planning debates in the Soviet Union over the following decade: the theory of mathematical optimization (e.g., linear programming) and the cybernetic theory of control, built around differential equations

[[Half-Earth Socialism]]

For all its pedagogical and democratic value, linear programming alone will not suffice to plan something as complex as the global economy

[[Half-Earth Socialism]]

Kantorovich’s linear programming will not be enough in itself to create a global in natura economy

[[Half-Earth Socialism]]

πŸ“œ File linear programming.md by @agora@botsin.space β˜† πŸ“Ž
πŸ“š Agora node [[literate programming]] (pulled by the Agora)
πŸ“œ File literate_programming.myco by @melanocarpa β˜† πŸ“Ž οΈπŸ”— ✍️
πŸ“œ File literate-programming.md by @neil β˜† πŸ“Ž οΈπŸ”— ✍️

Literate programmingΒ§

Tried the paradigm a little bit on config files, with [[My Spacemacs User Config]].

It could be problematic on shared projects though, presumably - you’d be forcing everyone in to doing it that way, otherwise your literate file and the code would get out of sync.

πŸ“š Agora node [[metaprogramming]] (pulled by the Agora)
πŸ“œ File pages/metaprogramming.org by @jakeisnt β˜† πŸ“Ž

essays about the act and art of programming

https://www.dreamsongs.com/HOPLIV.html, history of Programming Languages https://www.dreamsongs.com/RPG_2015_Site/RPG2015.html https://dsalo.info/a-specialist-profession-or-a-profession-of-specialists/

https://www.scotthyoung.com/blog/2020/05/04/do-the-real-thing/

https://www.12factor.net/ the 12 factor app

TODOprogramming tax

higher level languages are built to help the programmer focus on higher level ideas, protecting them from thinking about memory permissions, etc. this is the case most of the time but all abstractions are at some point leaky given our finite access to memory and compute.

javascript does not accomplish this; it merely shifts the responsibilities of the programmer operating at lower levels of abstraction from thinking about pointers, memory mapping, etc. to thinking about undefined, NaN and object comparisons instead .

proper abstraction enables the programmer to think at a higher level; javascript comes close before dragging the developer down with it http://www.catb.org/~esr/writings/cathedral-bazaar/ Books https://news.ycombinator.com/item?id=24095428 the human factor of programming

πŸ“œ File metaprogramming.md by @agora@botsin.space β˜† πŸ“Ž
πŸ“š Agora node [[music for programming]] (pulled by the Agora)
πŸ“œ File music for programming.md by @flancian β˜† πŸ“Ž οΈπŸ”— ✍️
πŸ“œ File music for programming.md by @agora@botsin.space β˜† πŸ“Ž
πŸ“š Agora node [[musicforprogramming]] (pulled by the Agora)
πŸ“œ File musicforprogramming.md by @neil β˜† πŸ“Ž οΈπŸ”— ✍️

musicForProgrammingΒ§

πŸ“š Agora node [[neuro linguistic programming]] (pulled by the Agora)
πŸ“œ File Neuro Linguistic Programming.md by @binnyva β˜† πŸ“Ž

Neuro Linguistic ProgrammingΒ§

Neuro Linguistic ProgrammingΒ§

Context: Created from Slides of a NLP course. Disclaimer: NLP has been described as Pseudoscience by many reports.

The study of the structure of subjective experience…

  • Neuro: Nervous system through which experience is received and processed through the five senses
  • Linguistic: Language and non-verbal communication systems through which neural representations are coded, ordered and given meaning.
  • Programming: The ability to organize our communication and neurological systems to achieve specific desired goals and results.

NLP is …

  • Attitude: A sense of curiosity and adventure - desire to learn the skills to be able to find out what kinds of communication influences somebody and the kind of things worth knowing. To look at life as a rare and unprecedented opportunity to learn.
  • Technology: Enabling the practitioner to organize information and perceptions in ways that allow them to achieve results that were one inconceivable.
  • Methodology: All behavior has a structure - and that structure can be modeled, learned taught and changed(re-programmed). The way to know what will be useful and effective are the perceptual skills.

Human Communication ModelΒ§

Each event goes thru a filter of…

  • Distort
  • Delete
  • Generalize Before it reaches our memory storage.

Then it is further affected by

  • Language
  • Memories
  • Decisions
  • Personality traits
  • Values and Beliefs
  • Attitudes

These can dive change in any direction - forward or backward…

Thoughts Biological Physical
Viusalise Body Chemistry Body Language
Hear inside Posture
Feel inside Facial Expressions
Say to yourself

Logical Levels of NLPΒ§

  1. Environment: Where? When? With Whom?
  2. Behavior: What you say and do
  3. Capabilities: How?
  4. Beliefs and values: Why?
  5. Identity: Who am I?
  6. Purpose: What for?

Four Pillars of NLPΒ§

  • Outcome
  • Sensory Acuity(Skin color, breathing, eyes, etc.)
  • Rapport
  • Flexibility

RapportΒ§

  • The process that allows you to communicate with a client’s unconscious mind
  • When people are like each other, they like each other.
  • The state whereby a client(or anyone) will uncritically accept suggestions or advice that you give them.
  • A naturally occurring state

Some methods to build rapport

  • Ask and use their name
  • Actively listen
  • Ask questions
  • Show empathy
  • Find common ground
  • Follow the lead
  • Be genuine

3 Components of Rapport…

1. Mirror and MatchingΒ§

  • Position gestures
  • Facial Expressions
  • Breathing
  • Voice : Tone, tempo, volume, Timbre
  • Internal thought words
  • Key words

But when doing this, be subtle - avoid mimicry.

2. PacingΒ§

3. LeadingΒ§

NLP PresuppositionsΒ§

  • Everyone has a unique model of the world
  • Behind every behavior is a positive intention
  • People always make the best choices available to them
  • All behavior has positive intention
  • Respect your client’s model of the world
  • People are not their behaviors
  • The meaning of the behavior is dependant on the context it is exhibited in
  • The most important thing about a person is that person’s behavior.
  • Everyone is doing the best they can with the resources they have available.
  • The person with the most Flexibility in their behavior will have greater influence over others
  • Resistance in a client is a lack or rapport
  • There are no un-resourceful people - only un-resourceful states.
  • Everyone is in change of their mind and therefore their results.
  • The meaning of the communication is the response you get.
  • Every behavior is useful in some context
  • People work perfectly to produce the results they are getting.
  • Positive changes always comes from adding resources
  • There is no substitute for clean open sensory channels
  • The positive worth of an individual is held constant, while the value and appropriateness of internal and/or external behavior is questioned.
  • The quality of our lives is determined by the quality of our communications.
  • If one person can do something, anyone can learn to do it.
  • Map is not the territory
  • If you change your map you’ll change your emotional state
  • People maps are made of pictures, sounds,feelings, smells and tastes.
  • People respond to their maps of reality, not to reality
  • Choice is better than no choice.
  • Experience has a structure
Effect Thinking Cause Thinking
People don’t listen to me What should I do to make them listen
This company wont give me growth opportunities What should I do to create more opportunities?

VakogΒ§

  • Visual
  • Auditory
  • Kinaesthetic
  • Olfactory(Smell)
  • Gustator(Taste)

Cycle of Success or failureΒ§

1 Belief > 2 Potential > 3 Actions > 4 Results > 1 Belief…

Hierarchy of IdeasΒ§

Chucking Up/Zoom OutΒ§

  • What is this an example of?
  • For what purpose?
  • What is your higher intention?
  • What will having that give you?

Chucking Down/Zoom inΒ§

  • What are examples of this?
  • What specifically?
  • What are the steps or details?
  • What are the pieces that make up this thing?

Meta ModelΒ§

Think Iceberg Model

Surface StructureΒ§

  • Behaviors we exhibit
  • Words we use
  • Facial expressions
  • Things that can be seen by a camera

Deep StructureΒ§

  • Beliefs
  • Attitude
  • Values
  • Feelings
  • Deep meaning of what we say - contains information that is unexpressed or not consciously known

Meta Modal DistortionΒ§

  1. Mind Read(Claiming to know someone’s internal state) - "I know you don’t like me"
  2. Lost Performative(Person/source doing the judgment is left out) - "Its good to study in the morning"
  3. Cause and Effect(where the cause is WRONGLY put outside the self) - "You make me mad"
  4. Complex Equivalence(Where two experiences are interpreted as being synonymous) - "She is always yelling at me - so she doesn’t like me."
  5. Presuppositions(The speaker has assumed that something is true) - "Had he known this, he wouldn’t have done that."
  6. Universal Quantifiers(Universal generalizations - all, every, everyone etc.) - "She never listens to me"
  7. Modal Operators
    1. Modal Operator of Necessity(have to, must, should, should not, etc.) "I must earn a lot of money"
    2. Modal Operator of Possibility(can/can’t, will/wont, possible/impossible, etc.) "I can’t earn a lot of money"
  8. Unspecified verbs - "He rejected me"
  9. Simple Deletions…
    1. Lack of referential index(fails to specify a person or a thing). "They don’t listen to me"
    2. Comparative Deletions(better, worse, most, etc) "She is a much better person"

Power of MetaphorsΒ§

Purpose of a metaphor is to pace and lead a client’s behavior through a story. Major points…

  1. Displacing the referential index from the client to a character in a story.
  2. Pacing the client’s problems by establishing behaviors and events between the characters in the story that are similar to those in the client’s situation
  3. Accessing resources for the client with the context of the story
  4. Finishing the story such that a sequence of events occurs in which the characters in the story resolve the conflict and achieve the desired outcome.

AnchoringΒ§

It refers to a natural process by which any element of an experience(sensory and modality component) can recreate(re-evoke) the entire experience.

Re-framingΒ§

Considering an negative issue from many different aspects to find a positive

  • Context Re-framing: Take the undesired attribute and find a different situation where it would be valuable
  • Content Re-framing: Take the undesired attribute and find a description where the attribute takes on a positive value.

TagsΒ§

#psychology #therapy #literature-notes #nlp

πŸ“š Agora node [[object orientated programming]] (pulled by the Agora)
πŸ“œ File Object-orientated programming.md by @bunnynabbit β˜† πŸ“Ž οΈπŸ”— πŸ€—

For me, object-orientated programming creates [[structure]] and enforces restraint. Encapsulation helps to define domains.

I like to write comments for classes in a first-person perspective. I believe I picked on this from [[Smalltalk]].

/** I'm a dummy change record for a BaseLevel. Unlike ChangeRecord, I do not keep track of changes. Instead, my methods are very minimal and don't do much in terms of operation. */
class NullChangeRecord

LuaΒ§

πŸ“š Agora node [[tao of programming]] (pulled by the Agora)
πŸ“œ File tao of programming.md by @flancian β˜† πŸ“Ž οΈπŸ”— ✍️

Tao of ProgrammingΒ§

πŸ“š Agora node [[the architecture of computer programming]] (pulled by the Agora)
πŸ“œ File the architecture of computer programming.md by @flancian β˜† πŸ“Ž οΈπŸ”— ✍️

the architecture of computer programmingΒ§

πŸ“œ File the architecture of computer programming.md by @an_agora@twitter.com β˜† πŸ“Ž