Talent beats hard work (Naruto Season Two spoilers)

The prelim Chunin exam after the second exam show that hard work doesn’t beat talent. It pulls on your heart strings, getting you to root for the underdog who puts more effort than others, but I conclude that despite it’s honorable notion (i.e. something that should be done), it only ends one way. Neji nearly breaks Hinata’s heart through chakra attacks(?) (with the “Gentle Fist”). Rock Lee fights Gara in one of the final matches.

I want Brave Clojure meetups to cover a single idea instead of a single chapter

People feel overwhelmed with the meetup’s contents. Each chapter has a dozen-plus new ideas. I think focusing on a chapter gives a false set of cohesion, because there’s so much in the chapter. I think focusing on one idea in the chapter and zeroing in on that one idea for the meetup’d be huge. I.e. let people get the surface of Clojure for the Brave and True on their own time and then we’ll use the meetup to drill deeper into it, asking questions about it.

I want to narrow my focus

I want to drill deeper instead of drilling many shallow holes. With my personality (“enneagram seven”), I find this near impossible, as partway through drilling one hole, I see that another hole seems more promising. After all, how could I know everything about this hole before I started digging it? Now that I dug this hole several feet deep, I now know that a different hole seems more promising. But if the treasure’s always at ten feet or deeper, and I keep on changing holes three feet in, I will never get the treasure.

I should learn the principles of cooking

I’m trying to make individual meals instead of learning to cook in general. Not the best idea, for if I learn some principles, I can make many delicious meals instead of just the one. Whenever I do something, I should ask, “Why” and attempt to answer it. This why’ll let me reason at a deeper level, letting me cook more things in a better way. If I don’t have a great answer, I shouldn’t sweat it, but I should try to ask it so that I know my reasons for doing things.

My new job is to help people trade money for products (gas station clerk)

I got a job manning the gas station at midnight, usually from midnight to six. My job is to enable customers to switch items for money. The bottleneck to getting customers to exchange money for Meijer’s items is my ability to ring items up. Everything else will be more or less handled, because stocking requires physical effort and following a checklist. Not worried about that, because elbow grease and raw human suffering’ll make that work.

Sending the client's audio data to a server with HTTP

I have a personal development app idea (“the imagestreaming app”), where the server should accept, store, and organize the client’s audio data (their description of internal imagery). In this post, let’s forget the storage (do I store on a db or a filesystem?), and focus on getting the data from the user’s machine to the server. I believe this should be done with an HTTP POST request which a Ring or Compojure server should listen for.

Making twelve-plus PC components work together

I’m looking to build a PC, and I need to buy twenty or so components that work together to form a great PC. For example, CPUs have something called a chipset. AMD uses one chipset, Intel uses another. The motherboard supports one or the other, not both. Then there’s RAM, the GPU, the storage, power supply, cooling components, the case. I thought this’d be hard, but PC Part Picker’s making this easy.

I recorded my mic with ClojureScript

I learned how to work with the user’s microphone in ClojureScript. I coded 90% of this code using JavaScript interop. I learned to use JS classes in ClojureScript (prepend “js/” and append “."). To record from the microphone, I needed to understand the Navigator, MediaRecorder, Blob, and URL classes in JavaScript. I created two functions for two handlers: js/window's onload event to get the user media, and js/MediaRecorder's ondateavailable, so that I could work with the user’s audio after I stopped recording.

Using classes in ClojureScript

Whenever I see a class in js, just do (js/className. arg1 ... argN). Treat the dot at the end as the new keyword in js. Pass an audio/visual stream to a MediaRecorder with (js/MediaRecorder. %).

Getting microphone permission in JS

Use js/navigator (ClojureScript’s way of accessing JS’s Navigator) to pull the user’s microphone stream. I haven’t recorded the stream data yet, but I’ve finished the first step: Getting the user’s permission. You can’t ask for mic permission straight away; you need the JS tools need to load, which means creating an onload handler (function) for the js/window. In ClojureScript: (set! (.-onload js/window) (fn [] (js/navigator.getUserMedia #js {:audio true} #(println "Success: " %) #(println "Error message: " %)))) ;; #object[MediaStream [object MediaStream]] I tested switching between js/document and js/window.