balefrost
Joined 11 years ago
Joined 11 years ago
But not all businesses pay close attention to open-source licenses.
I have to assume that scale has something to do with it. Huge companies usually take that pretty seriously. Tiny companies... eh, they might not even be aware.
The 5200 joystick didn't self-center, though. The only centering force was from the rubber boot. This ended up being advantageous in a game like missile command, but is widely seen as the Achilles heel of the controller.
I'm not sure what the impetus was for the Steam Deck. I could see it as a hedge against anticipated future, dwindling laptop sales. I could also see it as an attempt to expand into the same space that the Switch occupies. After all, with the exodus of Sony from portable gaming, Nintendo's only competition is cell phones.
On the other hand, I know that a bunch of people are unhappy that the Steam Controller has been discontinued. Secondhand prices are through the roof.
For example, here's Clojure's implementation of `map`[1]. It internally uses `cons` to build a cell[2] and `map` to recursively walk the collection (but all wrapped up in `lazy-seq` to delay evaluation).
Transducers[3] do help with this if you are applying a stack of collection transformations. But, and this is just my opinion as a very occasional Clojure user, transducers are harder for me to grok and so I generally avoid using them. If I was doing performance critical work, I might try to build up a better mental model.
My biggest complaint about the Java streams API is that it makes it hard to write your own stream transformation functions. Or rather, you can, but then calling them is awkward. You generally transform a Stream by calling instance methods - e.g. `myStream.map(::f)`. But since Java doesn't have extension functions, there's no way for you to make a custom function callable in the same way as the built-in functions. I ended up writing a small shim to build a stream pipeline without using member functions. You would use it something like this:
newPipeline(stream)
.then(map(::mapFn))
.then(filter(::filterFn))
.then(customTransform())
.collect(Collectors.toList());
Contrast that to Clojure, where everything's a function: (into []
(customTransform
(filter filterFn
(map mapFn collection))))
Or (using the threading macro, I think this is right) (->> collection
(map mapFn)
(filter filterFn)
(customTransform)
(into []))
Or (using transducers, I'm really not sure if this is right) (into []
(comp
(map mapFn)
(filter filterFn)
(customTransducer))
collection)
[1] https://github.com/clojure/clojure/blob/2b3ba822815981e7f769...[2] https://github.com/clojure/clojure/blob/2b3ba822815981e7f769...
I've been using it for a couple of years, and I have never had this issue. I can switch between my built-in soundcard and my USB headset without any problems. On Windows FWIW.
There was another, much smaller one that was closer to home - Roadside America [2] - but it sadly closed permanently during the pandemic. I remember going there several times as a child and really enjoying every trip.