There's a boiling water pot in Japan which will send an sms to you when it's used - since making tea / miso soup is so integral to the lives of especially the elderly here. The idea is if you don't get your morning SMS from gradma's pot something might be up.
Indeed. I have fun making little web apps which serve a small single purpose and can be run from a single script - templating using response/xexpr with paredit is.. well.. fun! Speed isn't a problem since I cache the result behind nginx - these aren't mission critical apps.
Maybe, but things progressed way further outside of CLJS space. If you told me this 2 years ago when I was in to it I would be jumping right on it - back when people were saying coffescript fixed JS problems :D
Right now JS has persistent datastructure libraries and TypeScript is a huge productivity boost - tooling is top notch - it makes JS manageable, once it gets async/await (which it should in the next couple of months) I'll be pretty happy with JS development story.
I'll miss some niceties like collection operations, homoiconicity and macros but on the other hand I have working optional type checking, excellent tooling and I don't have to code in AST serialization format with macros :D
Interesting. Do you have a link to a very basic "get-started" in this space? Right now, figwheel / om or figwheel / reframe are very quick to get started with (although familiarity definitely plays a part..). Last time I looked at js there were 5 or 6 or so flux implementations competing for mindshare and I had to stumble my way through setting up a project with webpack / babel..
Lived in Japan for 8 years and have worked part time in cafes .. The training I got was to leave the money in the tray until you confer the change to the customer. It prevents things like "hang on! I gave you 5000 not 1000!" - the money paid stays in plain sight until the transaction is complete. Shop staff almost never put the money away before you get your change.
I always assumed this was the main reason the trays are used. This, and the fact that either party can easily tip the tray into their hand to gather change, rather than picking up coins one by one or scooping them off the edge of the table.
Whenever Japan comes up people assume some matter of politeness is involved, but a lot of times the explanation is much simpler.
(define (ten digits)
(apply (compose string->number string-append)
(map number->string digits)))
(for* ([s (range 1 10)]
[e (remove s (range 0 10))]
[n (remove* (list s e) (range 0 10))]
[d (remove* (list s e n) (range 0 10))]
[m (remove* (list 0 s e n d) (range 0 10))]
[o (remove* (list s e n d m) (range 0 10))]
[r (remove* (list s e n d m o) (range 0 10))]
[y (remove* (list s e n d m o r) (range 0 10))]
#:when (= (+ (ten (list s e n d))
(ten (list m o r e)))
(ten (list m o n e y))))
" S E N D ~a ~a ~a ~a~n + M O R E + ~a ~a ~a ~a~n------------ ------------~n M O N E Y ~a ~a ~a ~a ~a"
s e n d m o r e m o n e y))))
Excuse the ugly format line :)
sendmore.rkt> (time (solve))
S E N D 9 5 6 7
+ M O R E + 1 0 8 5
M O N E Y 1 0 6 5 2
cpu time: 7124 real time: 7120 gc time: 80