Having just concluded a big upgrade to my company’s industrial learning site LunchBox Sessions, I get to flip back to the domain I enjoy most — interactive animations and the tools for building them. I spent a good portion of last summer squeezing every drop of perf out of SVG, and I’m excited to get back to it with the ideas I’ve accumulated in the time since: splitting static elements into separate GPU layers to avoid excessive painting, encoding lines separately so I can do dynamic LOD, adding null to the end of all my loops (sigh, CoffeeScript), and so forth. But, first on the table for this week: hammock time.
I’ve been trying to write some music this week. I’m between big projects at work, so I’m taking the time to set up all my instruments and put myself into a more relaxed / playful mindset, rather than my more normal “grind grind grind” programming mindset. I had a fun noise/drone jam earlier this evening, played a bit of french horn and bass clarinet, and got all my hand percussion and bowed instruments set up nicely. I have one new song written and ready to record and decorate with arrangements, so that’ll probably be my day tomorrow.
Honestly this sounds an awful lot like Clojure (mod various community issues on the Core maintainership side which are being addressed) or Haskell (mod the awfulness of Cabal). I suppose I’m surprised that the author has turned to Python as their go to language as I found both Haskell and Clojure to be huge steps up from Python at least in terms of being able to understand my own code if not also in library infrastructure.
I suppose I’m surprised that the author has turned to Python as their go to language as I found both Haskell and Clojure to be huge steps up from Python at least in terms of being able to understand my own code if not also in library infrastructure.
To be clear, I’m not in any way saying that Python tops the list of programming languages in terms of their ability to implement the wish list. If anything it’s the opposite: The wish list has been informed by things that I’ve found painful in writing in languages like Python.
The only item on this list that Python is among the front-runners for is community. My choice of Python is a mix of community, convenience and, uh, contingent factors, rather than a suggestion for other people to do the same.
IMHO you also have to do something about the Haskell community as well, because
Friendly. Elitism is toxic, and a community that isn’t helpful to beginners or goes on and on about how they’re super smart for using this language that other people don’t get is the worst.
I can neither confirm nor deny whether the Haskell community was near the top of the list of languages I had in mind when I wrote that sentence.
OK, I can confirm it. There are some absolutely lovely people in the Haskell community, many of whom I consider to be friends, but I also have very little desire to engage with the community as a whole due to an unfortunate prevalence of this sort of attitude.
If anyone here has any suggestions around Conal Elliott’s continuous time formulation of FRP, rather than the Reactive Extensions / event-oriented variations that have recently laid claim to the term (including Elm), I’d love to hear them.
As for Elm-style FRP, in ClojureScript there’s Reagent and re-frame. There was also a book that came out recently about doing FRP in Clojure, and the corresponding discussion on the Clojure Google group might prove helpful: https://groups.google.com/forum/m/#!topic/clojure/X7T3QS3wpOI
This is one of the real reasons why I’m pretty disenchanted with mainstream tech. The preoccupation and network effects surrounding what are, at best, tools that promote easy over simple are really depressing. It’s like we don’t, collectively, understand the value of composition at all. We’d rather pore over half-baked docs of a Weird Framework With a God Complex than sit down and actually use the host language. Hype trumps substance, because hype looks like a startup with a clever domain name and marketing.
We call ourselves rational, but we’re just making easy choices to cover our own asses, and blending in with the crowd. We succumb to the same vapid marketing used in the commercial world. We continually defer to social proof over actual technical excellence, which we’re reluctant to assess. Frankly, we deserve whatever problems we fall into by these attitudes.
I’m sick of ridiculous groupthink labeled ‘best practices’. I’m sick of a complete lack of intellectual humility, and ignorance of history that came before. I’m sick of self-promotion for it’s own sake, and “GitHub is your resume” and a culture of entitlement that emerges from tons of people viewing open source as a bunch of free stuff.
P.S. this story has a happy ending: I’m a lot more careful about where & who I listen to now about tech. I prefer communities of people who aspire to simplicity & minimalism in their software over the mega bells and whistles-style of development. It makes a big difference.
If I’m interested in simplicity and minimalism, which resources could you recommend?
I’ve had minimalism as a goal in my recent projects (e.g. no ORM, simple APIs, avoiding frameworks where possible, preferring small semi-independent subsystems), but it mostly came out of my own experience and stumbling on interesting links on Lobste.rs.
It would be great to learn more about other people’s thinking, particularly in the area of JavaScript, Node.js and web apps more generally.
It’s not quite minimalist-oriented, but first thing that comes to mind is reading through Growing Object-Oriented Software Guided By Tests. I’m thinking specifically of working through what it takes to architect and design great software, which is a prereq for minimalism, as you don’t have the guard rails in place. Learning to build just enough structure (aka architecture) to grow your app is a very powerful idea.
I think I tend more towards simplicity than minimalism, mostly for ease maintaining said software. I extract a ton of benefit from using the ideas of the IO monad in imperative code; that is, isolating side effects (such as databases/UIs) into their own module, and only calling them from a certain place. Watch Gary Bernhardt’s Boundaries talk to get an example of this.
FP, to me, is very simple once you learn it. Understand why FP encourages pure code, and how it interoperates with impure code.
Thank you, I’ll check these out. I’m on board with FP (I’ve been experimenting with Haskell a bit), however, I haven’t worked out how to inject a substantial dose of FP into my JavaScript projects. Everything is geared towards OOP and mutable state so it’s an uphill struggle. Looks like the Boundaries talk may give me some pointers for that.
Brian Lonsdorf has some interesting suggestions for writing JS in a FP style. The talk “Hey Underscore, You’re Doing It Wrong” is a good starting place for his work. His other talks are also good, and I’ve been enjoying his new project Loop School.
And +1 for Boundaries, and the work of Gary Bernhardt in general. Destroy All Software did a wonderful job showing me a good way to write in a gradually-more-functional style in an imperative language.
Also, check out the suckless-project (http://suckless.org).
If you strive for the unix-philosophy, many things will just fall right into place, and in numerous cases, you end up more flexible and efficient than with the popular kitchen-sink solutions.
Cuba itself is extremely easy to work with because it barely does anything. You can read the entire source in 5 minutes and understand it completely. I’m confident future teams could pick it up.
Not sure that was a good choice of recommendation.
To each their own. I’m a big fan of (parts of) Tcl, so that detail is what piqued my interest.
Having just concluded a big upgrade to my company’s industrial learning site LunchBox Sessions, I get to flip back to the domain I enjoy most — interactive animations and the tools for building them. I spent a good portion of last summer squeezing every drop of perf out of SVG, and I’m excited to get back to it with the ideas I’ve accumulated in the time since: splitting static elements into separate GPU layers to avoid excessive painting, encoding lines separately so I can do dynamic LOD, adding null to the end of all my loops (sigh, CoffeeScript), and so forth. But, first on the table for this week: hammock time.
Edmonton, Canada.
Calgary, Canada
I’ve been trying to write some music this week. I’m between big projects at work, so I’m taking the time to set up all my instruments and put myself into a more relaxed / playful mindset, rather than my more normal “grind grind grind” programming mindset. I had a fun noise/drone jam earlier this evening, played a bit of french horn and bass clarinet, and got all my hand percussion and bowed instruments set up nicely. I have one new song written and ready to record and decorate with arrangements, so that’ll probably be my day tomorrow.
Honestly this sounds an awful lot like Clojure (mod various community issues on the Core maintainership side which are being addressed) or Haskell (mod the awfulness of Cabal). I suppose I’m surprised that the author has turned to Python as their go to language as I found both Haskell and Clojure to be huge steps up from Python at least in terms of being able to understand my own code if not also in library infrastructure.
To be clear, I’m not in any way saying that Python tops the list of programming languages in terms of their ability to implement the wish list. If anything it’s the opposite: The wish list has been informed by things that I’ve found painful in writing in languages like Python.
The only item on this list that Python is among the front-runners for is community. My choice of Python is a mix of community, convenience and, uh, contingent factors, rather than a suggestion for other people to do the same.
Agreed that this hews close to my sense of CLJ, and even more-so now that he added a section on REPLs.
Source / summary? I’m new to the community and curious.
IMHO you also have to do something about the Haskell community as well, because
I can neither confirm nor deny whether the Haskell community was near the top of the list of languages I had in mind when I wrote that sentence.
OK, I can confirm it. There are some absolutely lovely people in the Haskell community, many of whom I consider to be friends, but I also have very little desire to engage with the community as a whole due to an unfortunate prevalence of this sort of attitude.
If anyone here has any suggestions around Conal Elliott’s continuous time formulation of FRP, rather than the Reactive Extensions / event-oriented variations that have recently laid claim to the term (including Elm), I’d love to hear them.
As for Elm-style FRP, in ClojureScript there’s Reagent and re-frame. There was also a book that came out recently about doing FRP in Clojure, and the corresponding discussion on the Clojure Google group might prove helpful: https://groups.google.com/forum/m/#!topic/clojure/X7T3QS3wpOI
This is one of the real reasons why I’m pretty disenchanted with mainstream tech. The preoccupation and network effects surrounding what are, at best, tools that promote easy over simple are really depressing. It’s like we don’t, collectively, understand the value of composition at all. We’d rather pore over half-baked docs of a Weird Framework With a God Complex than sit down and actually use the host language. Hype trumps substance, because hype looks like a startup with a clever domain name and marketing.
We call ourselves rational, but we’re just making easy choices to cover our own asses, and blending in with the crowd. We succumb to the same vapid marketing used in the commercial world. We continually defer to social proof over actual technical excellence, which we’re reluctant to assess. Frankly, we deserve whatever problems we fall into by these attitudes.
I’m sick of ridiculous groupthink labeled ‘best practices’. I’m sick of a complete lack of intellectual humility, and ignorance of history that came before. I’m sick of self-promotion for it’s own sake, and “GitHub is your resume” and a culture of entitlement that emerges from tons of people viewing open source as a bunch of free stuff.
P.S. this story has a happy ending: I’m a lot more careful about where & who I listen to now about tech. I prefer communities of people who aspire to simplicity & minimalism in their software over the mega bells and whistles-style of development. It makes a big difference.
If I’m interested in simplicity and minimalism, which resources could you recommend?
I’ve had minimalism as a goal in my recent projects (e.g. no ORM, simple APIs, avoiding frameworks where possible, preferring small semi-independent subsystems), but it mostly came out of my own experience and stumbling on interesting links on Lobste.rs.
It would be great to learn more about other people’s thinking, particularly in the area of JavaScript, Node.js and web apps more generally.
It’s not quite minimalist-oriented, but first thing that comes to mind is reading through Growing Object-Oriented Software Guided By Tests. I’m thinking specifically of working through what it takes to architect and design great software, which is a prereq for minimalism, as you don’t have the guard rails in place. Learning to build just enough structure (aka architecture) to grow your app is a very powerful idea.
I think I tend more towards simplicity than minimalism, mostly for ease maintaining said software. I extract a ton of benefit from using the ideas of the IO monad in imperative code; that is, isolating side effects (such as databases/UIs) into their own module, and only calling them from a certain place. Watch Gary Bernhardt’s Boundaries talk to get an example of this.
FP, to me, is very simple once you learn it. Understand why FP encourages pure code, and how it interoperates with impure code.
Thank you, I’ll check these out. I’m on board with FP (I’ve been experimenting with Haskell a bit), however, I haven’t worked out how to inject a substantial dose of FP into my JavaScript projects. Everything is geared towards OOP and mutable state so it’s an uphill struggle. Looks like the Boundaries talk may give me some pointers for that.
Brian Lonsdorf has some interesting suggestions for writing JS in a FP style. The talk “Hey Underscore, You’re Doing It Wrong” is a good starting place for his work. His other talks are also good, and I’ve been enjoying his new project Loop School.
And +1 for Boundaries, and the work of Gary Bernhardt in general. Destroy All Software did a wonderful job showing me a good way to write in a gradually-more-functional style in an imperative language.
Great, this is exactly what I was looking for.
You could join the #lesscode channel @ freenode (the author of this article hangs out there, and people who share similar preferences too).
Edit: There is also a collection of links on the r/lesscode subreddit.
Also, check out the suckless-project (http://suckless.org). If you strive for the unix-philosophy, many things will just fall right into place, and in numerous cases, you end up more flexible and efficient than with the popular kitchen-sink solutions.
Quoting from the article,
This.