Skip to content

Instantly share code, notes, and snippets.

Brian Marick marick

Block or report user

Report or block marick

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View class-questions.md
  • You’ve talked a lot in the past about releasing regularly and constantly having a shippable product. At the same time, companies like Google and Facebook have the “single branch” approach where everyone commits to the master branch, so anyone can break anything at any given time. When you’re operating at the scale of these companies, with thousands of developers, do you think the approach of continuous deployment to one branch is flawed?

  • You mentioned in your lightning talk about being naive in the face of expertise that you had assumed it was an immutable fact that developers would never like writing tests. As students, much of our work is graded by an autograder where other people take the time to write the tests, and we generally only have to worry about writing the code. Do you think teaching computer science in this way reinforces the idea that developers should not be worrying about testing? And how do you think CS education should change to adapt a test-first approach?

  • I know that Agile scrum

View questions.md

The Agile Manifesto (http://agilemanifesto.org) is important, including the second principles page, which people hardly ever read.

Here are some things of mine they could look at. I’d be happy to receive email that might help a pair of us decide on better questions.

For those inclined to look at videos, they could randomly pick one of these:

@marick
marick / philosophers.md
Last active Jun 23, 2019
Process philosophers
View philosophers.md
View library-of-context.md

A proposal to improve the speed at which reliable knowledge about software development is created

Extracted from a talk at NewCrafts Paris 2019, titled "Learning From How Science and Philosophy Progress".

Contents

  • Interaction rituals, the scene, and scenius
  • Science and reliable knowledge
  • Software and reliable knowledge
  • Scenes have places
View npm.txt
1393 $ /usr/local/lib/node_modules/node/bin/node[82126]: ../src/node.cc:4012:void node::PlatformExit(): Assertion `(err) != (-1)' failed.
1: /usr/local/lib/node_modules/node/bin/node[82125]: ../src/node.cc:4012:void node::PlatformExit(): Assertion `(err) != (-1)' failed.
1: /usr/local/lib/node_modules/node/bin/node[82122]: ../src/node.cc:4012:void node::PlatformExit(): Assertion `(err) != (-1)' failed.
1: /usr/local/lib/node_modules/node/bin/node[82123]: ../src/node.cc:4012:void node::PlatformExit(): Assertion `(err) != (-1)' failed.
1: /usr/local/lib/node_modules/node/bin/node[82127]: ../src/node.cc:4012:void node::PlatformExit(): Assertion `(err) != (-1)' failed.
1: /usr/local/lib/node_modules/node/bin/node[82120]: ../src/node.cc:4012:void node::PlatformExit(): Assertion `(err) != (-1)' failed.
1: /node::Abort()usr/local/lib/node_modules/node/bin/node[82121]: ../src/node.cc:4012:void node::PlatformExit(): Assertion `(err) != (-1)' failed.
node::Abort() [/usr/local/lib/node_modules/node/bin/node] [/usr
@marick
marick / bordeaux.md
Last active Sep 26, 2018
Language descriptions from Bordeaux talk
View bordeaux.md

Clojure

  • Clojure excels at transforming streams of data. It’s great at taking data flooding in from a network, changing it, and storing it into a database.

  • Clojure code is interoperable with Java programs because it’s compiled to run on the Java Virtual Machine. For Java shops, that means it’s easy to adopt gradually. (It’s just one more JAR!)

  • There is a mostly-compatible implementation, ClojureScript, that runs on the JavaScript Virtual Machine (that is, in-browser). Many open source libraries work in both implementations, and you can write your own libraries to work that way.

  • There is a lot of emphasis on performance. The underlying data structures are tuned to work fast. For many many execution profiles, you can expect performance not too different from Java’s.

View reverse.txt
> To show the use of `map` and `andThen`, let me define a function
> `headButLast` that takes the `head` of a `List String` and removes its last
> character:
>
> {lang=elm}
> ~~~~~~~~~~~~~~
> > headButLast ["Dawn"]
> Just "Daw" : Maybe.Maybe String
> ~~~~~~~~~~~~~~
>
View 80s.md

...

Like a lot of the early agile advocates, I was programming in the 1980's, when programmers didn’t tend to be people who thought it was a way to become rich. As I thought of it at the time (and it might even be true), programmers were divided into two categories: corporate drones and people with a strong math/physics attitude, including a lot of received wisdom about elegance and simplicity.

I was the latter. So were a lot of people who’ve come to be identified with “Agile”. What we noticed was that when programmers like us had power, we tended to favor our own values over those who were actually paying for the software we were writing. We’d force users to think in terms of our abstractions instead of their own — which tended to be messier, less abstract.

Some of us became “reformed sinners”, became much more inclined to err on the side of letting the users’ needs drive the software. We still had our values, but not at the expense of theirs. Sometimes a magical thing happens: we can find abstractions

View type-classes.md

(<$>) :: Functor f => (a -> b) -> f a -> f b

vs.

(<$>) :: Functor f => (a -> b) -> f a -> f b

View lenses.md

TL;DR: given a functional-reference/optics library, should you be able to say "set the endpoint of this path to X, creating empty elements along the way as necessary"?


Scala and Elm have a lens implementation libraries (Scala, Elm). They add an Optional to the canonical Lens/Prism/Iso types. It's useful for dictionaries/maps/hashes. I think it corresponds roughly to Haskell/Lens's Lens.At. I have a question about the behavior of Elm's version that seems Not What You'd Want, but can't interpret the Haskell or Scala versions well enough to determine an answer from them.

The issue is composing two Optional values together. Suppose we have two Optionals that focus on particular keys in a dictionary:

  • top is an Optional tha
You can’t perform that action at this time.