Trending Today - Facebook Paper, another app to read about things that are Trending Today

Intrapraneurs from Facebook have released a new mobile app called Paper - an application for browsing through news items that are trending today. The news that Facebook released this app is itself currently trending.

Most of the talk is about the interface, gestures, explanation videos, blah blah blah, Flipboard. The company 53 who make the iOS app also called Paper are understandably pissed off. Facebook got some additional press for releasing “a Photoshop for application design” that turns out to be just a Quartz Composer macro.

But these tidbits are all important fodder to get talked about, and then other people will want to talk about what is being talked about.

Raised by machines

Journalists follow trends and write about them and cause those trends to trend even more. Our new Trend Detecting Machines exacerbate these hype cycles even more.

On the content production side there is a whole industry to track, quantize, re-energize and temporily elongate news items in the trendosphere.

One day a news item will be trending even though no one has ever observed it. Which happens all the time the financial markets - the machines simulate greed and fear in their little skulls and then have epic little robot battles on the trading floor.

But “trending” is only the first trench in the war for Narrative Control and the eventual establishment of Public Consensus. Which you are going to need if you expect everybody to use your trendy trend app.

It also depends which trench you are in. While some people moan that their Facebook feed is filled with either babies or self-rightous preaching to the nearest nodes in their political choir, elsewhere somebody is ranting about why everybody won’t shut up about Clojure all the time.

I’ve simplified this discussion to the buzzword “trending”, but your feeds (from various providers) are personalized and multi-variate. We live in a world of competing and inter-dependant algorithms.

"the suspicion arises that technical innovations only refer and answer to each other, and the end result of this proprietry development, which progresses completely independant of individual or even collective bodies of people, is an overwhelming impact on senses and organs in general" - Friedrich Kittler, Optical Media

We need to examine carefully the goal definitions and performance measures for the agents we build. Because we are what we consume, so by extension we are building ourselves. Then, as Kittler says, what we built impacts us. Or deeper yet, we are not really in absolute control of this building process, we are just following the inevitable paths of technlogy.

tachikoma

It has an impact not on just what ends up in our minds, but in how we train our bodies and senses for further interaction with the (non-internet) world.

  • Are we optimizing for clicks ?
  • Ad delivery ?
  • Trend surfing ?
  • Does a temporary rush of views indicate that the content has value or merely that it satisfies a temporary urge ?
  • Which strata and timeframe of your thinking are we satisfying ?
  • Which timeframe of human evolution are we optimizing for ?

Optimizing for clicks ? Maybe the subject has just entered a vacant click trance and is just trying to get their fix with little info-dopamine drips. So your increased clicks don’t mean what you think they mean.

Should we hook up the bio-sensors ? (God please no) Subject has x% normal activity in right supramarginal gyrus indicating increased empathy Great, now we can optimize for empathy.

An Introduction to Friedrich Kittler

Marshall McLuhan said that our technlogies extend our senses. Friedrich Kittler says that the technologies shape our senses and change us.

“Media determine our situation.” Technology extends into us, technology determines our social history.

What is the experience of browsing ?

I’ve discussed how the feeds are constructed. But the experience of browsing and using the app is of equal importance. That is the reality we live in, and it shapes how we react to the messages (content) we are receiving.

What is the experience we have while consuming these articles and pretty images ?

What needs are we satisfying ?

Is the beauty of the interface overwhelming the experience of reading ? (Paging through a well designed glossy magazine is a very pleasureable experience and we are searching for new visceral design experiences with our new media. Beauty of design is genuinely valuable.)

Have you ever been lulled into an information overload trance and then saw an article about some atrocity or famine … and you totally did not react ? Because your senses were overloaded.

The way we consume media affects how we internalize the information it carries.

Further Reading

“Optical Media”:

and the splendid “Gramophone, Film, Typewriter”:


The Yoga of doing the impossible

One thing I’ve learned through doing Yoga is how to do the impossible.

Bend that arm back around there and loop it through your knee and grab your chin, stand up on your other leg, bend backwards until your forehead is resting on the ground. Now breath deeply.

yoga1

Your body can’t even twist to get into the starting position. Can anybody balance on their knees ? What do you mean levitate to the side ?

You can sit there and get frustrated and look around the room and try to solve it with your brain, but eventually you have to learn that your brain is the first problem.

  • Attachment to comfort,
  • aversion to discomfort,
  • attachment to your personal achievement,
  • aversion to (or in some cases attachment to) failure.

At some point you release your mental construct (“it doesn’t bend that way”) and curiously you find that it does indeed bend that way.

Physical Yoga (Asanas) can be said to be a system to confront these mental constructs through physical activity. But the point isn’t really to touch your toes - its to try to do difficult things and purify your mind of obstructing attachments and aversions. Its an exercise.

The same of course goes for the rest of your life.

Recently I learned first-order predicate calculus. The symbols were all a meaningless blur, my brain read the text but didn’t want to step through the hard work, but now it seems at least knowable, and I know the basics. I’ve got a grasp.

Balances and inversions (standing on your head etc.) are quite interesting. If you think about what YOU are doing (“I’m going to fall over !” or “I’m so great at this !” ) then you will fall over. So as you practice headstands (Shirshasana) you should work to reduce mental chatter and self judgement.

How to Do the Impossible - a step by step guide

  • When you first attempt to do something that seems impossible, start by removing or relaxing the mental state that declares it as impossible. In Yoga you don’t say “I can do it!”, you just do it.
  • Reach in the direction of your goal. Just reach in that direction - even though you cannot actually even touch your goal. Do that every time you practice.
  • Eventually you will touch the edge of your goal, just for a moment. Do that each time.
  • Then you can grab onto your goal for a longer moment.
  • In further practice you come to be more and more familiar with that goal with each breif visit.
  • Its like a moon that you clumsily crash on; you have a brief chance to gasp at the surroundings and then you bounce off. You might notice a crevice that you can grab onto next time.
  • Gradually you know the terrain, you are a regular. You have new habits.
  • Then you get a good grasp, then stability, then it becomes your new ground.

So, you can touch your toes now. What next ? Choose a more difficult stretch ? The point of Yoga is not to try more and more difficult poses. Its not stretching. As you advance you find that the work is within the pose, in the subtleties within the distance of the stretch. Eventually you no longer think of Yoga as stretching or even exertion. Its balance, unification of thought and body.

Meanwhile, I’ve learned first-order predicate calculus. Which was only because its chapter 9 in Artificial Intelligence: A Modern Approach (3rd Edition) and I want to get to chapter 14 (Probablistic Reasoning and Bayesian Networks). Soon I will have stretched my mind enough and can get to the work of actually doing something meaningful and subtle with it. I’m probably guilty of learning too much.


Learning a language is like brain damage

As of late I’ve been learning Clojure. Its a joy to use—the brevity and power of encapsulating is splendid—but the shape and flow of Lisp forms takes some getting used to. “Reading Lisp forms” is a practice that needs to be practiced.

So first my brain needs to be loaded up with all these common constructs and patterns of usage. Alien things that need to be consumed till they are taken for granted. In a way this is brain damage — your habit mind knows one pathway, and you are asking it to behave in an alien fashion.

Asking yourself to change is always a form of self-abnegation. You are often telling yourself that you are wrong, that you don’t get it, that “you” are somehow deficient. This is a fallacy based on self-identifying with your knowledge and your habits. You are not your habits. You are not your memories. You are not your fucking Khakis etc. All these things are mutable — unlike Clojure data structures.

Of course its not actually brain damage. In fact learning (natural) languages has been shown to increase the size of the hippocamus, increase synapse connections leading to a “bigger brain” (will I need to purchase a new casing soon?)

The stress of writing new pathways just feels like brain damange. I can even feel the physical sensation as my brain squirms around trying to put (+ 2 2) together. Possibly its also the challenge to your self esteem. “You” don’t know this, “you” are deficient.

I’ve found that in periods in my life where I had a very quiet non-invasive ego that I learned much faster. I felt more intelligent and I solved problems easier. Being hung up on the personal cartoon character is like having a rogue process. You need to shut it down or quiet it down, and then the system runs much smoother. Being self-judgemental is useless.

Keep the level of challenge high, keep out of overload. Don’t gorge on information (I do that a lot), keep calm, keep in the REPL, keep writing, screwing up, scraping your knee; keep encountering things you don’t know and working them until they feel familiar.

A few weeks ago when I first started out, this involved thinking in order to read it:

;; count the number of occurences of each letter
(def text "aabbckckekfijsleijflijseflijfzzaa")

;; my first version
(defn counter [map val]
  (println val map)
  (if-let [c (get map val)]
    (assoc map val (inc c))
    (assoc map val 1)))

(reduce counter {} text)
;; =>  {a 2,b 2, c 2, e 3, f 4, i 4, j 4, k 3, l 3, s 2, z 1}

Now it looks self-explanatory to me.

Which means roughly:

reduce the array “text” using the function counter and initial value empty dict {}

You’ll need to know basics like if-let assoc get reduce.

if-let means let c = maybe something
   and do this it is something
   and if it ain't then do this

Then I learn some tricks:

;; simpler version
;; note the use of get with a default value like python
(reduce #(assoc %1 %2 (inc (get %1 %2 0))) {} text)

Then I see somebody else solving it this way:

;; merge maps using +
;; fn [val-in-result val-in-latter]
(apply merge-with + (map (fn [c] {c 1}) text))
;; this can work for streams too

This is a very clojuresque way of doing it. For this you need to know about using apply and merge-with.

The next stage is knowing the core library enough that in the real world you would just use that:

;; clojure/core function
(frequencies text)

These examples are from this post. Note that he got all embarassed when others pointed out better ways of doing it. But the post was useful, the learning process was useful and the discussion was very useful.

Shame is a rogue process. Relax and consume the alien.


Learn by writing in the REPL

Writing code is a much more effective way to learn than just reading it. I tend to gorge myself on information and reading. Then I go to write or start a project and I realize I don’t know some basic syntax form.

1 hour in the REPL is worth (some made up number) reading blogs.

In the last years I’ve been doing a lot of Python, JavaScript and some SuperCollider. Clojure is a Lisp, and it uses a lot of functional programming idioms. Merely reading code examples doesn’t really get them into the brain enough.

Common and good advice: when you are reading tutorials or example problems, start that REPL up and jack in. Try not to copy and paste, but read and retype and think about what you are typing.

Notice things like “the arguments are supplied as a vector” or “its a :keyword not a #’sharpquote or a string”

Starting a REPL in Emacs is option-x nrepl-jack-in:

nrepl-jack-in

This opens a terminal style call-and-response REPL, but once you have the REPL started then you can also execute forms directly off any .clj source code file.

Tip: C-x <- (control x, then backwards arrow key) will return you to the previous page you were editing. Because nrepl-jack-in just forwarded you to the call-and-response REPL. Pretty essential basic Emacs navigation skill.

Type your code out, place the cursor anywhere inside the ( ) form and control-option-x (aka M-C-x):

nrepl-execute

It flashes soothing deep violet and posts the results in the status area.

Writing unit tests is another great way to learn. You pose your problem, set up your test and fiddle about with your solution. The teacher grades you in milliseconds. This is using the Expectations library and Emacs expectations-mode:

(defn testme [x y]
  (+ y x))

Failing tests are shown highlighted on the page in firetruck red, so you know which ones you still have to fix.

expectations-fail

You can also run lein auto-expect which will re-run the tests whenever you save the source file. Continuous testing is a true joy.

expectations-console-failure

Emacs

Just a few starter notes about the setup I’ve started with.

After years of refusing to learn anything more about VIM other than :q! I did the unthinkable and switched to VIM. I got pretty good at it too. Now … I’ve switched to Emacs. I still hit control-c a lot. They are both great environments in different ways. Using both at the same time is like soy sauce in milk.

On OS X configure your option key in Terminal/iTerm so that it sends Meta and then M-x means typing option-x. C-M-x is then control-option-x

I had been using http://vim.spf13.com/ as a starter pack for VIM.

I’m now using the Emacs starter pack from:

Emacs Live

This is from the Overtone folks, so there are some music related things in there like supercollider syntax modes which you might not want, but it will get you all configured for general Clojure development.

This gives the colorschemes, paredit, clojure mode, and the latest trendy auto completes and whatnot.

These things are great to start with. You will run into annoyances. You will have unexplainable behavior. I’m still not sure who is flashing that pink thing at me right now or how to toggle it.

pink thing

But its often right, so I put up with the flashing. Gradually I will take more command of my Emacs environment.

Light Table

Light Table is another great way to learn Clojure. Its still in its early alpha days and has some bugs, but you could download it and start up a Clojure insta-REPL and be productive in minutes. Development is moving along quickly and will support plugins and I would hope a lot of innovative ways to change what an IDE can do.

The killer feature for the learning phase is that you can see the results of your functions as you type and fiddle. This virtually eliminates the code -> test -> debug cycle. Its now one single activity, not a cycle. So experimentation results in a higher density of A-ha moments per session, and that’s what learning is all about.

lightable

Light Table

But for real work its near impossible to beat a well set up Emacs environment.