Smash Company Splash Image

LATEST ENTRIES

July 28th, 2015

In Technology

No Comments

When to use repeating tasks inside of an app?

I would guess the best thing about cronj is its focus on thread management. And yet, I am in favor of very small apps, which may only have a single task that repeats. But this raises problems for the JVM. If I bundle all tasks into a single JVM process, then the highly optimized JVM engine can take full advantage of the careful thread management of cronj. If I have separate apps, then they compete for resources (though the newest ...

Read More Source

July 28th, 2015

In Technology

No Comments

Why Docker failed

Interesting:

Building container images for large applications is still a challenge. If we are to rely on container images for testing, CI, and emergency deploys, we need to have an image ready in less than a minute. Dockerfiles make this almost impossible for large applications. While easy to use, they sit at an abstraction layer too high to enable complex use-cases:

Out-of-band caching for particularly heavy-weight and application-specific dependencies

Accessing secrets at build time without committing them to the image

Full control over ...

Read More Source

July 28th, 2015

In Technology

No Comments

Trying to convince devs of the merits of Clojure

Interesting:

Leon Grapenthin:

I have tried various different approaches from convincing of Clojure advantages in the Java devs concrete domain, showing off incredibly awesome toy projects, larger projects, not tryng to sell, trying to sell, sending ClojureTV videos and what not approach you can think of. I have not managed to introduce one Java dev to Clojure in a way that he picked it up and had no interest before. I have spent many hours thinking about how I could ...

Read More Source

July 28th, 2015

In Technology

No Comments

The limits of RESTful interfaces

Interesting:

The chart leaves most of the rows blank for the year 1995, but of course, all of the necessary technologies existed in 1995, and in 1989. The focus of the article is on HTTP, but the article might be stronger if it confronted why HTTP was successful, when it lacked important abilities such as Authentication. There were other technologies that offered Business Logic and Logging and Realtime, back in 1989, so why weren’t they more successful?

It’s also curious ...

Read More Source

July 28th, 2015

In Technology

No Comments

Mutable arrays in Clojure

Chris Zheng has done some impressive work with mutable arrays:

Predicates as Datastructure I’m quite proud of the expressiveness of the ova syntax. We can see below the number of possible ways that we can select elements out of the array. Here is just a sample of what can be done using the select function.

(def ov (ova [{:val 1} {:val 2} {:val 3} {:val 4} {:val 5} {:val 6} ...
Read More Source

July 27th, 2015

In Technology

No Comments

When should Clojure imitate Object Oriented Programming?

Chris Zheng writes:

Servers that are running on a particular port can be tracked and stopped. I have to say, this was the feature that I wanted the most, which motivated the framework’s design. The annoying thing about development in emacs is that I have to be careful of not losing the reference to the server. Since there was no way of stopping it unless the repl is restarted. I wanted to implement a registery for references to running servers ...

Read More Source

July 26th, 2015

In Technology

No Comments

The maybe monad represents computations whose result is maybe a valid value, but maybe nil

Here is a sentence I have read a dozen times without understanding it:

The maybe monad represents computations whose result is maybe a valid value, but maybe nil.

This seems like a good way to think about the Any type, when dealing with things such as Typed Clojure.

Source

July 26th, 2015

In Technology

No Comments

The sins of Adam Bard

This last year I find that everything Adam Bard writes is worth reading. I have not been checking his blog very often but I should. I just saw this post from a year ago, which is really fantastic:

Any time you put a let in a let or an if in an if, that’s a strong code smell. It means you’re still writing code in a way that requires you to short-circuit your functions with returns.

There is a fascinating debate ...

Read More Source

July 25th, 2015

In Technology

No Comments

Scheduling libraries in Clojure

Chris Zheng has some interesting arguments for his particular take on these issues:

There are now many more scheduling libraries in the clojure world:

at-at chime clj-cronlike cron4j monotony quartzite schejulure

With so many options, and so many different ways to define task schedules, why choose cronj? I have listed a number of design decisions that make it beneficial. However, for those that are impatient, cut to the chase, by skipping to the simulations section.

…In reviewing other scheduling libraries, it was found that fully-featured thread management capabilities were ...

Read More Source

July 25th, 2015

In Technology

No Comments

Will I regret Functional programming?

I’ve spent the last year writing negative things about Object Oriented Programming, and I’ve been among the many people arguing that Functional Programming is the future. And I’ve talked about the political forces that drove the adoption of Object Oriented Programming. But that does raise the issue, what political forces are driving the adoption of Functional Programming? One possible answer is “None” and that would explain why Functional Programming remains a small niche compared to Object Oriented Programming. Another is ...

Read More Source

July 24th, 2015

In Technology

No Comments

Why Python 3.x went off course

A fascinating post from 2005, which is when Python began to veer off course. Python 2x had some beautiful features that could have been further developed, but instead, with 3.0, Python went down the classic Object Oriented road. In this post, Guido van van Rossum explicitly rejects much of the Functional paradigm that Python had picked up from Lisp.

So now reduce(). This is actually the one I’ve always hated most, because, apart from a few examples involving + or *, ...

Read More Source

July 24th, 2015

In Technology

No Comments

They cost of using Hystrix

Ouch!

We cannot use Clojure’s concurrency primitives (futures/promises/agents).

That is fascinating to think that at some point Clojure’s concurrency primitives are not enough, and so we need to give up on them and move to a Java library. I am aware that Netflix is dealing with unusual scale, but what is the point of Clojure if it doesn’t automate exactly these issues?

The comments are interesting:

Marc: When using Aleph, the choice for lamina would seem a sure thing. What made you turn ...

Read More Source

July 24th, 2015

In Technology

No Comments

The simplest step toward circuit breakers in Clojure

I think I missed the importance of this the first time I read it:

Consider you have this line within a service response:

{:body @(future (client/get “http://soundcloud.com/blah/wah”)) :status 200}

Now http://soundcloud.com/blah/wah goes down and those client requests start getting blocked on the request. In Clojure all future calls acquire a thread from the same thread pool. In our example the service is blocked up, is pilling new requests onto the blocked pool and we are in trouble.

My first solution to this problem ...

Read More Source

July 24th, 2015

In Technology

No Comments

Chris Zheng is consolidating his libraries into Hara

I have some questions for Chris Zheng. I admire Ribol very much, though I was not aware of some of the other repos. I am curious why you are moving forward with an integration of these libraries? The Clojure community has so far avoided frameworks and even large libraries have met with rejection. What do you hope to gain by consolidating these projects?

The projects:

iroh has been moved to hara.reflect

ova has been moved to hara.concurrent.ova

cronj has been superceded by ...

Read More Source

July 24th, 2015

In Philosophy

No Comments

Advice columns still survive in newspapers

I am surprised that advice columns are still surviving in newspapers. Of course, I’m also surprised that newspapers still exist. Carolyn Hax offers relationship advice at the Washington Post:

You probably don’t want to hear it, and I certainly don’t like saying it to someone who is engaged, but you don’t sound terribly well suited to each other. All relationships involve some accommodation, but not so much that you feel like you have to draw and hold awkward lines just because ...

Read More Source

July 24th, 2015

In Technology

No Comments

Property based testing in the Functional Paradigm

Interesting:

Which brings me to another killer feature of many functional languages: property-based testing (PBT). While PBT is by no means an exclusive domain of functional languages, it does have deep roots in Haskell in the form of QuickCheck. What sets PBT apart from its traditional unit and integration brethren is its emphasis on defining a set of properties that describe a function and ability to generate a lot of random test cases to attempt to falsify these specifications. This ...

Read More Source

July 24th, 2015

In Technology

No Comments

Functional programming is not the same as static typing

I like this article, but it does confuse Functional Programming with static data types. Consider this example of evil Ruby code:

Take for instance the following Ruby code that uses Virtus.

class Events < Array def Source

July 24th, 2015

In Technology

No Comments

Dealing with mutation is hard

Obviously, I agree with this:

Dealing with mutation is hard. When I constantly grappled with these issues early on in my career, I thought I had serious issues. Perhaps I wasn’t cut out to be a developer. Maybe I should seriously consider a different career. It didn’t help that other developers breezed through similar assignments as if mutation and them were one (don’t get any ideas). But then I started reading about functional programming and how everyone was endlessly whining about ...

Read More Source

July 24th, 2015

In Business

No Comments

Women still get fired for being pregnant

I find it sad that in the year 2015, women still get fired for being pregnant:

Juarez’s complaint also claimed that the company has a “glass ceiling” that keeps women from getting promoted. Just 10 of the 98 stores in the San Diego area where she worked had female managers. And at trial, a former district manager testified that a vice president reprimanded him for having so many women in management positions, telling him, “What are we running here, a boutique? ...

Read More Source

July 23rd, 2015

In Business

No Comments

Robyn Exton keeps moving forward

I’ve been surprised that so many dating sites were started by men, and so few by women, so this is an interesting story:

Her, the queer dating app for women, has today announced that it will be available nationwide.

Her is a dating app that puts a strong focus on content, specifically curated for and dedicated to queer women, whether they’re bi-curious or as gay as a rainbow.

Her was previously available in seven cities across the country, only activating those ...

Read More Source

July 21st, 2015

In Business

No Comments

Hollywood sexism

Interesting:

The actress told Radio Times:

“I think it’s still completely shit actually. I don’t think there’s any appreciable improvement and I think that for women, the question of how they are supposed to look is worse than it was even when I was young. So, no, I am not impressed at all.”

Thompson was much more optimistic about the movie business way back when, she says:

“When I was younger, I really did think we were on our way to a better world ...

Read More Source

July 21st, 2015

In Philosophy

No Comments

Men who lose at video games are the most likely to harass women

Interesting:

That should sound a whole lot like a lot of other, frequently sexist online spaces: Think Twitter. Or Reddit. Or 4chan.

In each of these environments, Kasumovic suggests, a recent influx of female participants has disrupted a pre-existing social hierarchy. That’s okay for the guys at the top — but for the guys at the bottom, who stand to lose more status, that’s very threatening. (It’s also in keeping with the evolutionary framework on anti-lady hostility, which suggests sexism is ...

Read More Source

July 21st, 2015

In Business

No Comments

The rebirth of urbanism

Interesting:

Multi-unit buildings are making a comeback. Construction is now at the best level in 30 years. It’ll be curious how far this trend goes.

And this about the death of the office park:

The American ghost town has assumed different forms: the abandoned gold-rush towns out West, the silent Floridian subdivisions of underwater McMansions. Now, we have fiefdoms of mid-Atlantic office space, on streets named Research Boulevard and Professional Drive, thinning out in the sprawl. They are hobbled by changing work ...

Read More Source

July 19th, 2015

In Philosophy

No Comments

When is it ethical to out someone?

Interesting:

Everyone’s feeling very proud of themselves today for being grossed out by a Gawker post containing the text and email exchanges between a male escort and a well-connected, married executive who was trying to procure said escort’s services. The issue at hand, according to everyone who’s outraged, is that this is the outing of a gay man who would otherwise have been living a closeted life with his wife and three kids, harming no one. Because he is not ...

Read More Source

July 16th, 2015

In Technology

No Comments

The worsening web

The comments here are great:

Let’s dive deeper into the CNN article. Among the 200+ HTTP requests the page makes are calls to 25 different domains.

Yes you read that correctly. TWENTY…FIVE. Among them are a few that are clearly ad related (ex. ad.doubleclick.net, pixel.moatads.com), a few that serve some analytics function, and many whose names are intentionally obfuscated to confuse us.

Jeff Edsell:

The part of web cruft I hate most:

“Why does our page load so slow? Should you compress the images ...

Read More Source

July 16th, 2015

In Technology

No Comments

Greg Hendershott looks at Racket Macros

I wanted to ask Greg Hendershott for permission to copy his code in Clojure, but I could not find an email address for him. My own email is lawrence@krubner.com. I love this epilogue from Greg Hendershott:

"Before I had studied Chan (Zen) for thirty years, I saw mountains as mountains, and rivers as rivers. When I arrived at a more intimate knowledge, I came to the point where I saw that mountains are not mountains, and rivers are not rivers. But ...
Read More Source

July 15th, 2015

In Technology

No Comments

Vim has a function with 400 lines of code

When I worked at Category4, they had a homegrown HTML library. The method that generated HTML tables was over 1,100 lines of code (not a typo). So I’ve seen some fairly large functions. Dealing with them is why I now prefer 5 line functions written in a clean language like Clojure.

This is interesting:

This function is over 400 lines and contains over 40 #ifdefs. Its job? To wait for keyboard input. Several factors caused this code to be so ...

Read More Source

July 15th, 2015

In Philosophy

No Comments

Sydney Leroux’s fake eyelashes

Interesting:

Everywhere I go, people are talking trash about Sydney Leroux’s fake eyelashes. To be fair, I’ve been in Canada, where she’s particularly reviled. I get it, she turned her back on you, Canada. You’re hurt. But through the pain, I beg you, do not bring her eyelashes into this. Because let’s be real: those eyelashes are amazing.

Female soccer players have long balanced their athleticism and femininity. And at least in the United States, they’ve long balanced it the same way, ...

Read More Source

July 15th, 2015

In Business

No Comments

Debt relief and devaluation as wild-eyed radical ideas?

I notice this too. Ideas that were once the bedrock upon which Conservatives organized their economic thinking are now regarded as left wing:

I continue to be amazed by how many people regard debt relief and devaluation as wild-eyed radical ideas; of course, it matters most that so many influential people in Europe share this ignorance. Anyway, for the record (and for my own future reference) I thought it would be helpful to post what Milton Friedman and Irving Fisher ...

Read More Source

July 15th, 2015

In Technology

No Comments

What does the word “Cancel” mean?

Some of the worst User Interface Design I’ve seen in awhile. The Amtrak website uses “Cancel” as the text on the button that cancels your reservation. Almost everywhere in the world, if you see a button that says “Cancel,” it means you do not want to do something. But Amtrak uses it here, so if you do want to cancel your reservation, you have to hit the Cancel button.

Source

June 23rd, 2015

In Business

No Comments

David Tuite offers bad interview advice

David Tuite writes:

Expressing confusion in an interview doesn’t make you appear dumb. In reality it’s quite the opposite.

This is terrible advice. The advice is common, but it is wrong. Multiple studies show that your questions can have a subconscious effect on the person interviewing you. Even if they say “Please feel free to ask questions” if you phrase the question the wrong way, or ask a question outside the bounds of what they were expecting, it becomes a ...

Read More Source

June 21st, 2015

In Business

No Comments

CRM for startups

SalesForce and SAP rule the world when it comes to enterprise CRM. Both are abominations. Bridget of TheyCay.com recently told me about 2 that are aimed at startups. I know nothing about these, so I’m just posting links for now, I hope to come back and investigate these more later.

Pipedrive:

Streak:

Source

June 21st, 2015

In Technology

No Comments

Image recognition: we can not get there from here with what we’ve got

Interesting:

Leopards (or jaguars) are complex 3-dimensional shapes with quite a lot of degrees of freedom (considering all the body parts that can move independently). These shapes can produce a lot of different 2d contours projected on the camera sensor: sometimes you can see a distinct silhouette featuring a face and full set of paws, and sometimes it’s just a back and a curled tail. Such complex objects can be handled by a CNN very efficiently by using a simple rule: ...

Read More Source

June 21st, 2015

In Technology

No Comments

Where does image recognition fail?

Photo shows image recognition has a long way to go.

Source

June 20th, 2015

In Business

No Comments

Sex, Google, and how sex writers adapt

I hope Violet Blue writes more about this:

I had to sideline valuable freelance gigs to get this move done, and it had to be done ASAP, because Google’s algo changes were (are) really hurting me.

In the bad old days of print publishing, there was a lot of evil censorship, but at least it was easy to spot. There are, after all, all the famous cases against various novels: Allen Ginsburg’s “Howl”, novels like “Naked Lunch”, etc.

Nowadays the forces ...

Read More Source

June 20th, 2015

In Technology

No Comments

How NodeJs fails to deal with backpressure

Interesting:

The Node concurrency model is kind of like a credit card for computing work. Credit cards free you from the hassle and risks of carrying cash, and they are completely great in almost every way, unless you spend more than you make. It’s hard to even know you have spent more than you make until the next bill comes. Similarly, node lets you do more work, and it’ll call you back when it’s done, whenever that is. You might not ...

Read More Source

June 19th, 2015

In Technology

No Comments

Git history should show you reality, not a cleaned up version of reality

Well said:

The obsession of git users with rewriting history has always puzzled me. I like that the feature exists, because it is very occasionally useful, but it’s one of those things you should almost never use.

The whole point of history is to have a record of what happened. If you’re going around and changing it, then you no longer have a record of what happened, but a record of what you kind of wish had actually happened.

How are you ...

Read More Source

June 15th, 2015

In Technology

No Comments

The New Netflix

Netflix upgrades its website.

I have my doubts about the heavy use of Javascript that’s become normal over the last 5 years.

I got my current MacBook Pro in 2011 and for awhile it seemed like a fast computer. Nowadays, however, if I launch Chrome, and I have 6 or 7 pages open, the computer is under stress. If I open the terminal and run “top” I see that the load varies between 1 and 3. It never goes below ...

Read More Source

June 10th, 2015

In Business

No Comments

Krugman’s 10 years on the recession

Krugman’s first essay about the end of the housing bubble came out just about 10 years ago.

Nobody would pay San Diego prices without believing that prices will continue to rise. Rents rose much more slowly than prices: the Bureau of Labor Statistics index of “owners’ equivalent rent” rose only 27 percent from late 1999 to late 2004. Business Week reports that by 2004 the cost of renting a house in San Diego was only 40 percent of the cost ...

Read More Source

June 10th, 2015

In Technology

No Comments

The new RESTful style

Apparently this style is now popular with some developers:

Source

June 9th, 2015

In Technology

No Comments

Strange problems with Rackspace cloud machine

What to make of this?

root@cloud-server-01:~# emacs The program ‘emacs’ can be found in the following packages: * emacs24 * emacs24-nox * e3 * emacs24-lucid * jove Try: apt-get install root@cloud-server-01:~# apt-get install emacs24 Reading package lists… Done Building dependency tree Reading state information… Done emacs24 is already the newest version. emacs24 set to manually installed. 0 upgraded, 0 newly installed, 0 to remove and 21 not upgraded. 134 not fully installed or removed. After this operation, 0 B of additional disk space will be used. Do you want to continue? [Y/n] ...

Read More Source

June 9th, 2015

In Technology

No Comments

Avoid RejectedExecutionException in lein :(

I am curious what Dave Ray wrote here in his Seesaw repo.

(defn -main [& args] (when-not (first args) (println "Usage: gaidica ") (System/exit 1)) (reset! api-key (first args)) (invoke-later (-> (make-frame) add-behaviors show!)) ; Avoid RejectedExecutionException in lein :( @(promise))

Does anyone know what this about? What causes RejectedExecutionException in lein?

Source

June 2nd, 2015

In Technology

No Comments

When to use Patch

Interesting:

When should we use the PATCH HTTP method?

The HTTP methods PATCH can be used to update partial resources. For instance, when you only need to update one field of the resource, PUTting a complete resource representation might be cumbersome and utilizes more bandwidth

Also, the PUT method is idempotent. PUTting the same data multiple times to the same resource, should not result in different resources, while POSTing to the same resource can result in the creation of multiple resources.

See also RFC 5789 ...

Read More Source

June 2nd, 2015

In Technology

No Comments

Working with monoids

Interesting:

Simply put, Monoids describe types containing a binary function and an identity value.

When applied to the identity value and a random value x, said function leaves its argument x untouched, returning it as a result. This short description should be enough to get the conversation started.

Here’s how Haskell defines a Monoid:

class Monoid m where mempty :: m mappend :: m -> m -> m mconcat :: [m] -> m ...

Read More Source

June 2nd, 2015

In Technology

No Comments

A pipeline of agents creates a fully asynchronous programming model

I recall reading this code in 2010 or 2011, when I was first learning Clojure, and at the time there was a great deal about it that I did not understand, so I missed the point:

(def logger (agent (list))) (defn log [msg] (send logger #(cons %2 %1) msg)) (defn create-relay [n] (letfn [(next-agent [previous _] (agent previous))] (reduce next-agent nil (range 0 n)))) (defn relay [relay msg] (letfn [(relay-msg [next-actor hop msg] ...
Read More Source

June 1st, 2015

In Technology

No Comments

Using reducers on the bytes in a memory mapped file

This could be a powerful technique, especially when speed and parallelization are important:

First, we’ll have a couple of parameters: the character set for the input and a hint for the size of chunk to break the file into. (def ^:dynamic *charset* (Charset/forName "UTF-8")) (def ^:dynamic *chunk-size* (* 10 1024 1024)) With those, we’ll break the file into chunks by skipping through it and reading ahead until we get to the end of a line. Later, when we actually read the file, this ...
Read More Source

June 1st, 2015

In Technology

No Comments

Higher order functions in Clojure support chaining

Interesting:

One easy-to-miss strength of this approach is that it supports chaining. In a few places in our application, we wanted to send a computation to an agent and observe the state of the computation (e.g. to show and hide a spinner). We didn’t want to have to wire observation hooks or callbacks directly into the process, so we created a contextual function (defn with-process-callbacks [fire fun & args]). with-process-callbacks returns a function which calls fun with args, but calls fire ...

Read More Source

June 1st, 2015

In Technology

No Comments

Stuart Sierra says avoid Dynamic Scope

Dynamic scope will ruin your life. In a different presentation he says that dynamic scope is okay so long as the var is really private, and marked as private.

The problem with this pattern, especially in libraries, is the constraints it imposes on any code that wants to use the library. The with-resource macro severely constrains what you can do in the body:

You can’t dispatch to another thread. Say goodbye to Agents, Futures, thread pools, non-blocking I/O, or any other ...

Read More Source

June 1st, 2015

In Technology

No Comments

Mark Seemann feels that mutating state is intuitive

This is a case of someone trying to be open-minded, but still being biased because of their years spent getting comfortable with a very particular form of programming that allows a very particular form of mutable state:

In FP they’ve come up with this clever concept of monads to ‘work around’ the problem of mutating state. Yes, monads are very clever, but if they feel foreign in OOD it’s because they’re not required. Mutation is an inherent part of the ...

Read More Source

May 28th, 2015

In Technology

No Comments

Simple Design

Interesting:

Yagni is a way to refer to the XP practice of Simple Design (from the first edition of The White Book, the second edition refers to the related notion of “incremental design”). [1] Like many elements of XP, it’s a sharp contrast to elements of the widely held principles of software engineering in the late 90s. At that time there was a big push for careful up-front planning of software development.

Let’s imagine I’m working with a startup in Minas ...

Read More Source

May 28th, 2015

In Business

No Comments

Women in tech in India

My mom took several computer programming classes in the 1970s. Women earning advanced degrees in computer science peaked in the 1980s. Women focusing on tech, at the undergraduate level, also peaked in the 1980s. At the time, being a computer programmer meant getting a comfortable job at IBM or AT&T or General Motors — some big company that would offer a big salary and decent perks for a relaxed 40 hour work week. There was no brogrammer culture, no insane ...

Read More Source

May 28th, 2015

In Philosophy

No Comments

Natasha Vargas-Cooper and Kelly Faircloth on romance novels

Natasha Vargas-Cooper and Kelly Faircloth are talking about the use of the word “alpha” as it relates to men and as the concept is used in romance novels. :

I here quote some of Faircloth’s remarks, but the whole thing is interesting.

KF: So, alphadom in romance is, in my opinion, often fundamentally about taking care of the heroine and nurturing her. It’s about all that confidence and capability being focused on the heroine and working on her behalf. Now, it ...

Read More Source

May 27th, 2015

In Philosophy

No Comments

Niki Tisza writes about burnout

Interesting:

I read a lot and I found lots of interesting articles. Reading more and more it became clear to me I was experiencing a job burnout. I got nearly all the symptoms, even I wasn’t even 30 at that time. These were my warning signs:

Fatigue Frustration or decreased level of patience Stress Lack of motivation Feeling of being overwhelmed, trapped, helplessness Losing sleep Getting sick from all the sudden Going to your previously beloved workplace because you have to, not because you want to After spending a ...

Read More Source

May 26th, 2015

In Technology

No Comments

Why Appsflyer gave up on Python and switched to Clojure

Interesting:

At AppsFlyer we actually started our code base in Python. Two years later this wasn’t enough to handle the growing number of users and requests. We started to encounter issues like one of the critical Python processes taking too long to digest the incoming messages, caused mainly by string manipulations and Python’s own memory management system. Even partitioning the messages amongst several processes and servers could not overcome this. This eventually killed the process and caused data loss – ...

Read More Source

May 26th, 2015

In Philosophy

No Comments

We get trapped by our virtues more than our vices

I like this:

Qualities That Keep You in a Sick System

Loyalty Patience A strong work ethic Optimism Self-sacrifice A need to be useful to others Forgiveness Farsightedness Trust Hope

You don’t need to lose these qualities to get out. But if you’re stuck and trying to figure out what’s keeping you in, remember that people rarely get stuck because of their vices. They’re usually caught by their virtues.

Source

May 24th, 2015

In Philosophy

No Comments

The effect of blind auditions on orchestras

Interesting:

But there are many different moments when I look back and think, gosh, how could I have been so optimistic? For example, Cecilia Rouse and I decided that we would study the effect of orchestras switching to blind auditions. [In a 2000 paper in the American Economic Review, Goldin and Rouse found that the practice of having musicians audition behind a screen significantly increased the proportion of women in symphony orchestras.] Many orchestras did not know they had records on ...

Read More Source

May 24th, 2015

In Business

No Comments

Forces that drive women’s labor force participation rates

Interesting:

Goldin: The quiet revolution is a change in how young women perceive the courses their lives are going to take. One of the places we see this is the National Longitudinal Survey, which began in 1968 with women who were between 14 and 24 years old. One of the questions the survey asked was, “What do you think you’re going be doing when you’re 35 years old?” In 1968, young women essentially answered this question as if they were ...

Read More Source

May 23rd, 2015

In Business

No Comments

Sick systems

Interesting:

Things will be better when… I get a new job. I’m mean to you now because I’m so stressed, but I’m sure that will go away when I’m not working at this awful place.

The production schedule is crazy because the client is nuts. We just need to get through this cycle, then we’ll have a new client, and they’ll be much better.

She has a bad temper because she just started with a new therapist. She’ll be better when she settles ...

Read More Source

May 23rd, 2015

In Technology

No Comments

Concurrency in Ruby

Celluloid is interesting:

Celluloid provides a simple and natural way to build fault-tolerant concurrent programs in Ruby. With Celluloid, you can build systems out of concurrent objects just as easily as you build sequential programs out of regular objects. Recommended for any developer, including novices, Celluloid should help ease your worries about building multithreaded Ruby programs.

Much of the difficulty with building concurrent programs in Ruby arises because the object-oriented mechanisms for structuring code, such as classes and inheritance, are separate ...

Read More Source

May 21st, 2015

In Technology

No Comments

Sandi Metz tries to solve Object Oriented problems with composition

Kind of sad:

She says “We love dependency injection”.

First she acknowledges that the “proper” Object Oriented approach leads to more code for the same behavior:

but then she says the solution is to use composition, which offers all kinds of flexibility:

She says it is wonderful because in the end we get “pluggable behavior”.

But if it is a good idea to pull certain methods out of an object, and make them independent, in an object that can then be injected ...

Read More Source

May 21st, 2015

In Technology

No Comments

Sandi Metz on hidden assumptions

Interesting:

Our code is full of hidden assumptions, things that seem like nothing, secrets that we did not name and thus cannot see. These secrets represent missing concepts and this talk shows you how to expose those concepts with code that is easy to understand, change and extend. Being explicit about hidden ideas makes your code simpler, your apps clearer and your life better. Even very small ideas matter. Everything, even nothing, is something.

Source

May 19th, 2015

In Technology

No Comments

Predator-Prey modeling in Clojure

Interesting:

Introduction to Predator-Prey Systems In this edition of the blog, I’ll discuss how you can use Clojure to solve a system of nonlinear differential equations. The particular system I’ll be solving is the Predator-Prey or Lotka-Volterra Model, which you can read all about right here. The basic concept is that you are modeling a population of predators and prey (e.g. Foxes and Rabbits, which we’ll use here). How the two populations change over time can be modeled like so:

dR/dt=αR−βRF dF/dt=−γF+δRF

These are differential ...

Read More Source

May 18th, 2015

In Philosophy

No Comments

The life of single moms

Interesting:

In our culture, we want mothers to be everything: good wives, strong role models, educators, friends, and empathetic listeners. We want mothers to shed their former selves in order to carry on the role of inspiring their children to be something. We want mothers to be intelligent but compassionate; generous but self-aware; at work but at home, all at once. That responsibility is difficult enough to bear when there is another warm body willing to step into a parental role ...

Read More Source

May 18th, 2015

In Philosophy

No Comments

GamerGate losers continue the argument on Wikipedia

Very, very pathetic, but the argument over GamerGate continues on the Wikipedia talk page.

Chrisrus continues to raise legalistic objections to those editors who are trying to be reasonable:

@Gamaliel: What new accounts? What does your closing and hiding of this thread have to do with new accounts editing the article? The thread had nothing to do with new accounts editing the article or not editing it. We were talking about how people respond to reader feedback on the talk ...

Read More Source

May 18th, 2015

In Philosophy

No Comments

Starve yourself

Interesting:

It’s calorie intake that is really fueling the obesity epidemic. But it’s not just the number of calories we’re eating as how we’re getting them. The sugar calories are particularly bad. Stanford University researcher Sanjay Basu recently led an analysis of 175 countries that evaluated the amount of sugar in each nation’s food supply. As sugar availability increased by 150 calories per person per day (the equivalent of a can of cola), there was a 1.1 percent rise in the ...

Read More Source

May 10th, 2015

In Technology

No Comments

addShutdownHook(), to stop your app in a reasonable way

Interesting and important:

Problem:

A program may require to execute some pieces of instructions when application goes down. An application may go down because of several reasons:

Because all of its threads have completed execution

Because of call to System.exit()

Because user hit CNTRL-C

System level shutdown or User Log-Off

Concept at Abstract level: Write all the instructions(java code) in a thread’s run method and call java.lang.Runtime.addShutdownHook(Thread t). This method will then register this thread with JVM’s shutdown hook. At the time of shutting down, JVM will run ...

Read More Source

May 10th, 2015

In Philosophy

No Comments

“Habits” by To Love

A friend of mine in Stockholm sent me this link about Swedish singer To Love, who I had never heard of, but now I’ve spent an hour watching her videos on YouTube and I like her.

Source

May 10th, 2015

In Technology

No Comments

Test all your code in production using “feature flags”

I was talking to someone at Viacom, and he told me they were doing something very clever: they use feature flags to limit who can see new features, and in fact, all new features are at first limited to the QA team. Because of this, they have no development servers — everything is tested in production. This allows the testing to be much more realistic.

Feature flag libraries in Ruby and Clojure:

Ruby: rollout

Clojure: shoutout

Source

May 8th, 2015

In Philosophy

No Comments

Can you defend your relationship?

This is a cute list:

No relationship comes without its obvious detractions: the counterargument against your imaginary defense. If you’re old enough to have had a relationship, you’re old enough to have had a nagging thought about it. One of my first boyfriends was great and everything—if it weren’t for the fact that he always smelled like hot dogs. Another one seemed really into me, but he was also really into “doing donuts” in his Camaro. Here are some other assorted ...

Read More Source

May 8th, 2015

In Philosophy

No Comments

The public no longer thinks of GLBT celebrities as being scandalous

Once upon a time, not that long ago, this would have been a big story:

Miley Cyrus… revealed to the AP that “not all her past relationships were ‘straight, heterosexual’ ones.” The piece continues, “She did not elaborate.”

Miley says she already spent a lot of time struggling with traditional gender expectations—and being resentful that she was a girl. “I didn’t want to be a boy,” she clarifies. “I kind of wanted to be nothing. I don’t relate to what people ...

Read More Source

May 8th, 2015

In Business

No Comments

What smart people miss

Even when you have the right theory, you can still miss the pattern of accumulating facts:

And so I anticipated and predicted the actual crisis of 2008, right? Wrong. I had all the intellectual tools I needed, I even diagnosed a housing bubble, but I somehow failed to put the pieces together. Maybe I wasn’t as completely surprised as people who believed in the inherent stability of modern economies, and I caught on fast once the thing happened, but no, ...

Read More Source

May 6th, 2015

In Technology

No Comments

Anyone can contribute to clojure-doc.org

Clojure-doc.org is the place for people to contribute. This is the important bit:

Contributor-friendly This material is not covered by the Clojure Contributor Agreement and is developed using pull-requests on GitHub.

This is discussed in an interesting thread on the Clojure Google Group:

Assertion: “There are only a handful of people in the world with authorization to edit pages on clojure.org. ”

Fact: 14

Assertion: “Far more have authorization to edit the wiki pages on dev.clojure.org — hundreds, I think. A subset of those who ...

Read More Source

May 6th, 2015

In Technology

No Comments

The changelog for the clojure.org wiki

This is not linked anywhere, but it is good to know about:

Source

May 6th, 2015

In Technology

No Comments

The contents were now a boilerplate AT&T copyright notice claiming intellectual ownership of the otherwise still empty file

If the law allows a company to copyright an empty file, then the law should be changed:

In a 1984 version of Unix, things started heating up, and true grew to 276 bytes. The contents were now a boilerplate AT&T copyright notice claiming intellectual ownership of the otherwise still empty file.

Source

May 5th, 2015

In Technology

No Comments

Caribou as the ultimate Clojure web framework?

Kyle Dawkins writes:

Justin Smith speaks the truth about Caribou. I’m also one of the team members, and although we did lose our funding, we’re all still around and there are a number of active Caribou projects alive and well. It does have everything Justin says, and yes, it’s imperfect, but it’s also very easy to get a site up and running quickly. But you don’t lose the modularity that we all love in the Clojure world. ...

Read More Source

May 4th, 2015

In Philosophy

No Comments

“My daughter came home one day crying and said, ‘Mommy, somebody told me you made a lot of money …’ “

Interesting:

WITHERSPOON: My daughter came home one day crying and said, “Mommy, somebody told me you made a lot of money …” and I was like, “Why are you crying? … I worked hard for that. You should never feel embarrassed about a woman doing well in this world.”

Source

May 4th, 2015

In Technology

No Comments

If a language does not guarantee order in a hashmap can the hashmap be referentially transparent?

It’s an interesting question. Clojure says it is referentially transparent, meaning you can remove any function and replace it with its return value, with no effect on the program, but can Clojure be referentially transparent if it does not guarantee the order of its hashmaps (especially since hashmaps are also functions in Clojure)?

Note that this issue is similar to ensuring that a hash function is consistent with equals in a language, i.e. if two values x and y are ...

Read More Source

May 3rd, 2015

In Technology

No Comments

ExecutorService makes exceptions disappear in a bad way

I have been bitten by this many times, mostly in Clojure libraries that use ExecutorService under the hood:

What will be the result of the following snippet?

executorService.submit(() -> { System.out.println(1 / 0); }); I got bitten by that too many times: it won’t print anything. No sign of java.lang.ArithmeticException: / by zero, nothing. Thread pool just swallows this exception, as if it never happened. If it was a good’ol java.lang.Thread created from scratch, UncaughtExceptionHandler could work. But with thread pools ...

Read More Source

May 3rd, 2015

In Technology

No Comments

JVM advice: name your thread pools

Tomasz Nurkiewicz offers this bit of advice, which sounds like it would also be useful in Clojure:

Name pool threads

I can’t emphasize this. When dumping threads of a running JVM or during debugging, default thread pool naming scheme is pool-N-thread-M, where N stands for pool sequence number (every time you create a new thread pool, global N counter is incremented) and M is a thread sequence number within a pool. For example pool-2-thread-3 means third thread in second pool ...

Read More Source

May 3rd, 2015

In Philosophy

No Comments

Poland is the most Slavic nation in the world?

I did not know this, but this map shows Poland as having the highest percentage of Slavic heritage:

Source

May 3rd, 2015

In Technology

No Comments

Clojure does not need job queues, because it has Storm, Onyx, Quasar, Pulsar

I find it interesting to consider the question that maybe Clojure has so many great systems for distributed processing that it does not need the classic job queue.

It’s worth considering that if you don’t need something very robust (and depending on your situation), you could just use Redis + Carmine directly to pass messages around (possibly representing jobs), and have workers pull from the message queue. There is nothing else you really need for this; it’s quite straight forward. ...

Read More Source

May 2nd, 2015

In Technology

No Comments

Aaron Bedra: web apps in Clojure have some of the worst security

Aaron Bedra – clojure.web/with-security

Breda says the Clojure community needs to have a talk, because of some bad things that happened recently. The rate of people getting hacked is going up. He says:

“Clojure web apps are some of the worst I have seen in terms of security. We are talking about PHP-without-a-framework levels of insecurity.”

“We have bricks with no mortar.”

“If I missed your library, it’s because it doesn’t exist. I could not find it on the first page of Google, ...

Read More Source

May 1st, 2015

In Technology

1 Comment

Embarrassing code I wrote under stress at a job interview

(Note: this post was, in part, inspired by John Lawrence Aspden’s post about FizzBuzz.)

I write terrible code when I go to a job interview. That’s mostly because, when they ask me to solve a coding question, I get nervous. I thought it might be entertaining if I wrote about one such encounter.

Yesterday I went to a job interview, at a company in New York that had once built their stack (for managing online advertising) in Ruby but who are now ...

Read More Source

April 29th, 2015

In Business

No Comments

Startups behaving after Demo Day like someone going off a strict diet

Interesting:

Don’t go through the motions.

At Y Combinator, we sometimes see startups behaving after Demo Day like someone going off a strict diet. During YC they’re virtuous: they work hard on their product, focus on users, and avoid distractions. They’re also checking in with us regularly. But after they raise money, some founders go on a sort of bender. They rent a fancy office, hire too many people, spend too long shipping the next version, waste lots of time schmoozing ...

Read More Source

April 28th, 2015

In Technology

No Comments

Jim Starkey says “Well, duh”

This doesn’t rise to the level of “Zed Shaw rant” style of meltdown, but Jim Starkey has decided the play the role of “famous old codger who did great work once but now seems completely out of touch“:

Any discussion of the CAP “theorem” revolves around the A – exactly what does availability mean?

The narrow sense is that availability means that all surviving nodes in all partitions continue to process work. This reduces the CAP idea to nothing more than ...

Read More Source

April 28th, 2015

In Technology

No Comments

Kyle Kingsbury’s Jespen series is CAP enlightenment

So, again, I am late to the party. Yesterday, by accident, I discovered Kyle Kingsbury “Jespen” series. I stayed up till 4 AM reading through it. Every article is completely amazing. I wish he could do an article on every NoSQL database, but I read somewhere that each article cost him months of effort, so it is impossible to expect more from him. I recommend every single one of these articles:

Source

April 27th, 2015

In Technology

No Comments

Redis losing 56% of writes during a partition

Kyle Kingsbury (the same guy who does cool Clojure stuff like Reimann and teasers) has an epic writeup on Redis:

“In this post, we demonstrate Redis losing 56% of writes during a partition.”

I have trouble finding the pithy excerpt here, because it is all good. I guess I’ll just quote the opening where Kingsbury sets up the argument, and then you can read the rest for the way things fall apart:

Redis offers asynchronous primary->secondary replication. A single server is ...

Read More Source

April 27th, 2015

In Technology

No Comments

Can MongoDB keep its promises?

See “Stale reads with WriteConcern Majority and ReadPreference Primary”

Kyle Kingsbury starts the fight without meaning to:

In this test, MongoDB returns the value “0″ for the document, even though the only possible values for the document at that time were 1, 2, 3, or 4. The value 0 was the proper state at some time close to the partition’s beginning, but successful reads just after the partition was fully established indicated that at least one of the indeterminate (:info) CaS ...

Read More Source

April 27th, 2015

In Technology

No Comments

Parallelism versus concurrency

Someone posted this on Hacker News, and it is very good. Parallelism sends equal work to every processor, concurrency is the messy chaos of sending work to whatever processor is free, or bundling up many threads on one processor.

Source

April 27th, 2015

In Technology

No Comments

Disque is a distributed and fault tolerant message broker, so it works as middle layer among processes that want to exchange messages

The people who gave us Redis announced a new project today:

Disque is a distributed and fault tolerant message broker, so it works as middle layer among processes that want to exchange messages.

Producers add messages that are served to consumers. Since message queues are often used in order to process delayed jobs, Disque often uses the term “job” in the API and in the documentation, however jobs are actually just messages in the form of strings, so Disque can be ...

Read More Source

April 26th, 2015

In Technology

No Comments

A very long Java method

A common rule in programming is to keep methods as small as possible, so I am surprised to see this method in a seemingly well-run project such as ZooKeeper:

private void processEvent(Object event) { try { if (event instanceof WatcherSetEventPair) { ...
Read More Source

April 26th, 2015

In Technology

No Comments

Java performance

I like Tomasz Nurkiewicz’s summary of this book:

JIT (just-in-time) compiler turns out to be one of the most important tools bringing performance to the JVM. First “real” chapter goes into great details of how JIT works in different modes, how to monitor and tune it. I learnt a lot already, but the best is yet to come. Obviously garbage collection is a major concern, thus Oaks devotes two full chapters to explain all popular GC algorithms. Besides pure description, expect ...

Read More Source

April 26th, 2015

In Technology

No Comments

Your data is the API

Interesting:

The first time I realized that “Data as an API” was in fact a very good idea was at Kevin Lynagh’s presetation at Öredev. However, if you want something more like a struct Clojure provides something called a record. If you know Scala this is very similar to case classes. A record can be defined like this:

(defrecord Person [firstName lastName])

This creates an actual normal Java class Person with two immutable fields and implements hashCode and equals. A record also ...

Read More Source

April 26th, 2015

In Technology

No Comments

The farce known as “object oriented programming”

Jayway has a nice critique of how much real-life object oriented programming departs from the beautiful theory:

One thing I have realized is that in Java we use classes for many purposes. In a typical web application written in Java using something like Spring framework you will often find:

Data transfer objects (DTO:s)

Services (REST API, controllers, DAO:s)

Rich objects (if you’re lucky!)

A DTO is just a struct and contains no behavior. To minimize the boilerplate in Java I tend to implement DTO:s using ...

Read More Source

April 26th, 2015

In Technology

No Comments

New data structures in Clojure 1.8

Apparently there are a lot of new data structures which may arrive in Clojure 1.8, thanks to Zach Tellman:

So, at the end of this exercise we have more than 5000 lines of Java, and we want to add them to the core implementation of Clojure. Ideally, we won’t introduce any bugs in the process. But the same unrolling that makes the code faster makes it significantly harder to simply read the code and verify it’s “correct”. The Clojure code which ...

Read More Source

April 26th, 2015

In Technology

No Comments

Design patterns have social value

An interesting bit from Adam Petersen:

Patterns have social value too. The format arose to enable collaborative construction using a shared vocabulary. In Patterns in C I write on the groundbreaking work of architect Christopher Alexander:

The patterns found in Alexander’s books are simple and elegant formulations on how to solve recurring problems in different contexts. [...] His work is a praise of collaborative construction guided by a shared language – a pattern language. To Alexander, such a language is a generative, ...

Read More Source

April 26th, 2015

In Technology

No Comments

Automat for easy finite-state-machines in Clojure

Another interesting library from Zach Tellman allows for finite state machines:

For a more real-world use case, consider tracking browsing behavior on an online store. We want to see when the customer visits the cart, begins to checkout, but then returns back to the cart without having completed the checkout. Seeing this indecisive behavior, we can make a special offer.

Source

April 26th, 2015

In Technology

No Comments

Using abstract classes to hide boilerplate code

I personally never do the kind of work where I need to implement abstract classes. I was asked in a job interview why I would use an abstract class, and I came up with some nonsense answer about having a default implementation for situations where my code expected a given situation 90% of the time, and edge cases only 10% of the time. But here is an interesting example in Clojure, where it interoperates with Java, using an abstract class ...

Read More Source

April 26th, 2015

In Technology

No Comments

Zach Tellman on specialized tuples for Clojure

Other than Rich Hickey, I think I learn the most from Tellman, regarding how to do things and why they work the way they do:

Most data structures are designed to hold arbitrary amounts of data. When we talk about their complexity in time and space, we use big O notation, which is only concerned with performance characteristics as n grows arbitrarily large. Understanding how to cast an O(n) problem as O(log n) or even O(1) is certainly valuable, and ...

Read More Source

April 26th, 2015

In Technology

No Comments

When to use reify in Clojure

This is a nice explantation. If you have a protocol, then you can instantiate with a record, like this:

(defprotocol Foo (bar [this]) (baz [this st]) (quux [this x y])) (defrecord FooRecord Foo (bar [this] (println this)) (baz [this st] (str this st)) (quux [this x y] (str this (* x y))))

But if only need to instantiate the protocol one ...

Read More Source

April 25th, 2015

In Technology

No Comments

ExecutorCompletionService

How very much easier it is to use core.async in Clojure! My one concern is that core.async has a thread pool that is set to the number of CPUs + 2, so the thread pool is small and rigid.

Each call to contentFuture.get() waits until downloading given web site (remember that each Future represent one site) is finished. This works, but has a major bottleneck. Imagine you have as many threads in a pool as tasks (20 sites in that ...

Read More Source

April 25th, 2015

In Technology

No Comments

Limit new features to a subset of your users

Inspired by the Ruby gem “Rollout”, Shoutout offers user buckets on which you can test new features:

Storage

Unlike rollout, shoutout is completely storage agnostic. You’ll have to implement your own storage backend, which implements ShoutoutStorage. The storage protocol has two functions, read-from-storage, and write-to-storage, both of which should be simple enough to implement. Both deal purely with serialized strings, and string keys, shoutout does the serialization logic itself.

The library provides an in memory store (used for testing) that you could ...

Read More Source

April 24th, 2015

In Technology

No Comments

A Redis queue

There is a reason why so many message systems are using Redis as their backend:

Source

April 24th, 2015

In Technology

No Comments

Redis: I am late to the party

The strangest thing about the human mind is the degree to which context shades our memories. So now that I’m using Redis I realize that I’ve been reading about it for years without realizing how diverse its uses are. I just now decided to re-read the Github post from 2009 “Introducing Rescue” and I only now realize that it mentions both Redis and Kestrel, 2 things I had not heard of then, mere names that I read and forgot because ...

Read More Source

April 22nd, 2015

In Technology

No Comments

Design patterns are failures

I love this:

Design Patterns was especially well-timed because it offered a ray of hope for people who were mired in the Woes of the New OO Programmer. You see, the OO camp was saying: “EVERYTHING IS AN OBJECT! YOU WILL THINK OF EVERYTHING AS OBJECTS FROM NOW ON! THE OO PROGRAMMING PARADIGM IS: CREATE YOUR CLASSES, ADD OPERATIONS TO THEM, AND LAUNCH THE DAMN THING!”

The last sentence (forgive the caps, sorry) is a pretty reasonable paraphrase of Stroustroup in his ...

Read More Source

April 22nd, 2015

In Technology

No Comments

Singletons are evil

This is great:

Everyone Loves Singleton

Why is the Singleton so attractive? I’ll be the first to admit: I liked it too. No, scratch that – I loved the Singleton. It felt like an old friend from the moment I laid eyes on it. It was simple and beautiful.

I’ll tell you why: it’s because the Singleton pattern is a throwback to non-OO programming. It’s a lifeline for people who didn’t understand a single word that the Gang of Four were trying ...

Read More Source

April 21st, 2015

In Philosophy

No Comments

What happened to Ani DiFranco?

What happened to Ani DiFranco? In 1993 I dated a woman who introduced me to Ani DiFranco. For the next 12 years, a lot of my female friends were in love with Ani DiFranco. She was a huge icon to a particular demographic. danah boyd maintained a page of Ani DiFranco lyrics. (I also liked DiFranco very much.)

Over the last 10 years, DiFranco has vanished. I am not aware of any of my female friends who still follow her. ...

Read More Source

April 20th, 2015

In Technology

No Comments

Steve Yegge’s contribution to the revolt against Object Oriented Programming

Somehow I waited till today to read Steve Yegge’s 2006 rant “Execution in the Kingdom of Nouns”. I’ve seen it recommended many times, but I only now read it. I wish I had read it in 2006. I am not sure I would have understood it, but in retrospect it clearly marks the end of the mania that for Object Oriented Programming that Paul Graham had noted in 2001 (Paul Graham wrote: “There is a kind of mania for object-oriented ...

Read More Source

April 20th, 2015

In Technology

No Comments

Encapsulation of information is folly

This is strongly stated, and surprising:

Datatypes and protocols are opinionated

While datatypes and protocols have well-defined relationships with host constructs, and make for a great way to expose Clojure functionality to Java programs, they are not primarily interop constructs. That is, they make no effort to completely mimic or adapt to all of the OO mechanisms of the host. In particular, they reflect the following opinions:

Concrete derivation is bad: you cannot derive datatypes from concrete classes, only interfaces

You should always program to ...

Read More Source

April 20th, 2015

In Technology

No Comments

Why have both deftype and defrecord?

This is good:

It ends up that classes in most OO programs fall into two distinct categories: those classes that are artifacts of the implementation/programming domain, e.g. String or collection classes, or Clojure’s reference types; and classes that represent application domain information, e.g. Employee, PurchaseOrder etc. It has always been an unfortunate characteristic of using classes for application domain information that it resulted in information being hidden behind class-specific micro-languages, e.g. even the seemingly harmless employee.getName() is a custom interface to ...

Read More Source

April 12th, 2015

In Philosophy

No Comments

Evening, by Susan Minot

In the early 1990s Susan Minot published some articles in Esquire magazine and I liked her stuff so I’ve been meaning to read some of her books. I was busy for the last 25 years, but I just finally got to reading her novel Evening.

Her focus is with the white upper-middle class of New England in the mid to late 20th Century, so she is covering ground also covered by writers such as John Updike and James Salter.

The ...

Read More Source

April 11th, 2015

In Business

No Comments

China became powerful for all the wrong reasons

Interesting:

Suppose you’re in a setting where the rule of law and contract enforcement are really weak. And you realize that they don’t change overnight. Are you better off promoting the set of policies that presume that rule of law and contract enforcement will take care of themselves, or are you better off recommending a strategy that optimizes against the background of a weak rule of law? And I say that the evidence is that you do ...

Read More Source

April 11th, 2015

In Business

No Comments

Print journalism is dying and there is no way to save it

Clay Shirky is always interesting:

A year or so ago, I was a guest lecturer in NYU’s Intro to Journalism class, 200 or so sophomores interested in adding journalism as a second major. (We don’t allow students to major in journalism alone, for the obvious reason.) One of the students had been dispatched to interview me in front of the class, and two or three questions in, she asked “So how do we save print?”

I was speechless for a moment, then ...

Read More Source

April 10th, 2015

In Philosophy

No Comments

Zed Shaw’s legacy

I love this:

Once again, Zed Shaw preaches the truth.

The worst thing about the era of the Internet is how often I (and I think all of us) read something that effects my thinking forever, and then that thing vanishes, and no one can ever read it, and no one can ever hope to understand what shaped my thinking on a particular subject. 100 years ago, if I read a good book, there was a good chance some copy of ...

Read More Source

April 7th, 2015

In Technology

No Comments

Ruby closures borderline macro syntax

A good reminder of how much block syntax gives you:

if user.save # publish event 'user.created', with payload {user: user} Publisher.broadcast_event('user.created', user: user) end def create_user(params) user = User.new(params) # publish event 'user.created', with payload {user: user}, using block syntax # now the event will ...
Read More Source

April 6th, 2015

In Technology

No Comments

If the only thing you care about is behavior then ruby suggests to implement it as a module

Interesting:

Lets look at this ruby code. class Util def self.double(i) i*2 end end Util.double(4) #=> 8 Here we have a Util class. But notice that all the methods on this class are class methods. This class does not have any instance variables. Usually a class is used to carry both data and behavior and ,in this case, the Util class has only behavior and no data. Similar utility tools in ruby Now to get some perspective on this discussion lets look ...
Read More Source

April 6th, 2015

In Technology

No Comments

Ruby On Rails as the frontend for polyglot programming

True:

Rails is a good framework for proof-of-concept and small applications, it promotes conventions over configuration. As the application grows it becomes difficult to maintain. This is primarily because rails promotes coupeled architecture with fat model, skinny controller approach. Developers need to adopt to new patterns and create new conventions to keep projects moving on pace and in shape. PUBSUB can help us resolve some of the problems we face often.

And the subscribers can be written in any language, allowing for ...

Read More Source

April 6th, 2015

In Business

No Comments

The evil of granting companies property rights to IP numbers

Awful:

EthanHeilman

I wrote a blog entry about some of these issues. http://ethanheilman.tumblr.com/post/104839763080/are-ip-address-allocations-property

IANA specifically states that a free-market of IP addresses would be harmful, instead they argue that IP allocation should be based on need and not treated as property. >ISPs are required to utilize address space in an efficient manner. To this end, ISPs should have documented justification available for each assignment. The regional registry may, at any time, ask for this information. If the information is not available, future allocations may ...

Read More Source

April 6th, 2015

In Technology

No Comments

What Ruby sees when you monkeypatch

Interesting:

That is, the code:

module Foo puts Foo.object_id end

is functionally equivalent to:

# Create a new Module instance and assign it to the Foo constant Foo = Module.new

# Reopen the Module instance assigned to the constant Foo for modification module Foo # Do stuff in here to add functionality to the Foo module # Since Foo is already defined, we can get its object_id. puts Foo.object_id end

This certainly doesn’t make sense coming from a compiled language standpoint (after ...

Read More Source

April 6th, 2015

In Technology

No Comments

Shocking fact: using Spring used to mean giving up all compile time checks in Java

I have been reading Java Programming Interviews Exposed.

I never understood these “job interview” books before. Who can get ready for a job interview by reading a book? Surely that’s just cheap marketing by the publishers, who prey on developers insecurities?

However, I’ve decided I like this book. Not for job interviews — it sucks for that. But as a broad overview of the Java eco-system, it is perfect. It’s got a little about serialization, a little about dependency injection, a ...

Read More Source

April 5th, 2015

In Technology

No Comments

Why does Google point to 5 year old articles about Railties?

Sometimes Google disappoints. If you search for “gem plugins railtie” the first link is to an article that is 5 years old. Is there truly no better information? That article says:

Railtie plugins are easy to turn into gem plugins for Rails. This makes them easy to distribute, manage, and upgrade. The first thing you need is a gem. If you don’t have a gem yet, you can create a new gem easily using Bundler. Just run bundle gem my_new_gem ...

Read More Source

April 5th, 2015

In Technology

No Comments

Why (right side) cast a variable in Java

Interesting:

The question:

Is there some general rule about when a variable needs to be cast (on the right side)? Why is it that HttpURLConnection is cast on the right side here:

final HttpURLConnection connection = (HttpURLConnection) url.openConnection();

but responseInputStream does not need to be cast on the right side here:

final InputStream responseInputStream = connection.getInputStream();

How does a Java programmer know when to do this kind of casting, and when not to?

The answer:

In this program, you cast ...

Read More Source

April 3rd, 2015

In Technology

No Comments

ActionDispatch and middleware

Interesting:

When you start using ruby on rails, its ease of use makes it great to get you started. Everything works out of the box. You may be using Devise for authentication, Cancan for authorization and every time you need something that you believe Rails do not provide, you search google for a gem doing what you seek.

And joy is everywhere, your app works fine, you didn’t even need to write that much code to get where you are!

It’s awesome. Until ...

Read More Source

April 2nd, 2015

In Technology

No Comments

ActiveJob offers a uniform queue interface for Rails

I love that Rails 4.2 offers a unified interface for working with queues. This is obviously important for Ruby, since Ruby sucks at concurrency, and needs to rely on a lot of queue technology to facilitate most forms of async (some people then jump in: “blah, blah, blah, Fiber, etc, etc.” I get that, but still, the reality is, using Fiber does not magically give you Clojure, or Elixir).

Why do I need Background Jobs?

One common situation for needing background ...

Read More Source

March 31st, 2015

In Technology

No Comments

The folklore that allows technology to work

They make this sound negative, but every branch of engineering is built up on folklore, some of which stretches back for thousands of years. On a practical level, few us ever need to go back to first principles. It is faster and more efficient to work from rough rules of thumb that work most of the time.

In practice, very few people study the primary sources (or even authoritative secondary sources) when they’re programming and then work forward from first ...

Read More Source

March 31st, 2015

In Technology

No Comments

Why is Clojure leaner than Object Oriented Programming?

Interesting:

The person opposite will be wondering why is Clojure so lean and effective? You may think it’s unsporting and a bit negative to shoot fish in a barrel, but here I like to attack OO a bit. You can’t avoid this anyway as OO is the elephant in the room being the mainstream status quo. I’ve have found however that this can be a light and fun conversation, as people generally enjoy trading war stories and rallying against established orthodoxy.

We ...

Read More Source

March 31st, 2015

In Technology

No Comments

Types of functions: where Functional Programming meets Object Oriented Programming

Interesting:

Over the past year I have used Prismatic Schema extensively on a large Clojure project. We really like the aid that if offers in understanding, debugging, and using our code. However, we regularly feel a bit of a let down when an argument to a function is another function. Prismatic Schema doesn’t allow you to say much in these cases beyond: this arg is a function.

To address this we extended Prismatic Schema to allow us to add type annotations ...

Read More Source

March 31st, 2015

In Philosophy

No Comments

Jodhaa Akbar

I recently watched the movie Jodhaa Akbar. Watching it I realized how strange it was that Richard Attenborough’s version of Ghandi was so entirely secular. Jodhaa Akbar shows Akbar experiencing the mystical wonders of Allah and Jodhaa experiencing the mystical wonders of Krishna. But Gandhi is not shown experiencing any mystical wonders, even though he was a great spiritual leader. Attenborough’s version of Gandhi is very Western and secular.

Source

March 30th, 2015

In Technology

No Comments

Mistake: At least make your fancy app act like a web page

A lot of people now say stupid things like this:

To add insult to injury, web development has become more and more dominated by rich client side work over the last 5 years. Javascript used to be a tool that you used as sparingly as possible, sprinkling in just the barest hint of dynamic behavior where it was absolutely necessary. Now it’s common to start a new project and assume that 50% or more of the code will be Javascript. At ...

Read More Source

March 23rd, 2015

In Philosophy

No Comments

The most important election in the history of Israel

Interesting:

I’m not interested in debating the normative side of the election, or various peace plans, right now. What I find striking is how unready many critics are to confront what has happened, not just in the “Plan B” sense but also rhetorically. The possibility that civil rights progress, peace progress, and self-governance and democratic progress simply have stopped, and won’t be back any time soon, is before us. If anything, matters might become worse yet, especially once ...

Read More Source

March 23rd, 2015

In Technology

No Comments

Does not globally pollute Array, Hash, Object or AR::Base.

Kaminari is Clean. That is listed as its top feature. What does “clean” mean?

“Does not globally pollute Array, Hash, Object or AR::Base.”

Sure this is an argument against Object Oriented Programming? Doesn’t this make plain data structures seem wonderful?

Oh but wait, it fails the “clean” test in one big way:

Modern

The pagination helper outputs the HTML5 tag by default. Plus, the helper supports Rails 3 unobtrusive Ajax.

Embededed HTML! Fun times! Let’s party like its 1999!

Source

March 23rd, 2015

In Technology

No Comments

ActiveRecord scopes

I knew this once, but forgot during the time I have not worked with Rails:

scope(name, body, &block) Link

Adds a class method for retrieving and querying objects. A scope represents a narrowing of a database query, such as where(color: :red).select(‘shirts.*’).includes(:washing_instructions).

class Shirt < ActiveRecord::Base scope :red, -> { where(color: ‘red’) } scope :dry_clean_only, -> { joins(:washing_instructions).where(‘washing_instructions.dry_clean_only = ?’, true) } end

The above calls to scope define class methods Shirt.red and Shirt.dry_clean_only. Shirt.red, in effect, represents the query Shirt.where(color: ‘red’).

You should ...

Read More Source

March 23rd, 2015

In Technology

No Comments

Constraints on routes in Rails

I did not know this:

4.2 Specifying Constraints

You can use the :constraints option to specify a required format on the implicit id. For example: resources :photos, constraints: { id: /[A-Z][A-Z][0-9]+/ }

This declaration constrains the :id parameter to match the supplied regular expression. So, in this case, the router would no longer match /photos/1 to this route. Instead, /photos/RR27 would match.

You can specify a single constraint to apply to a number of routes by using the block form:

constraints(id: /[A-Z][A-Z][0-9]+/) do resources ...

Read More Source

March 23rd, 2015

In Philosophy

No Comments

You can’t take my pretty adjectives, damn you

In Strunk and White’s book Elements Of Style we are told that adjectives are bad. But here’s a book that says they are all liars:

http://languagelog.ldc.upenn.edu/nll/?p=18345

They also say that we should not start sentences with “but”. But I look them straight in the eye and say “Make me.”

Source

March 22nd, 2015

In Technology

No Comments

I hate dependencies

As an example, I’ll talk about Nokogiri. For years now, every time I have to setup up a Rails project on a new machine, I struggle with the installation of Nokogiri. I usually only do this once or twice a year, which is just enough time for me to forget the details, so I have to go through all the pain again.

Error installing nokogiri Failed to build gem native extension. mkmf.rb can’t find header files ...

Read More Source

March 18th, 2015

In Technology

No Comments

Ruby mixins are powerful

A reminder of Ruby’s mixins powers:

I loosely modeled the BigInteger and Number classes after the Java versions. The BigInteger class defines one constructor and directly inherits one method from the Number base class. To mix in the methods implemented in the Stringify and Math modules with the BigInteger class you will note the usage of the include and extend methods, respectively.

# Create a new object bigint1 = BigInteger.new(10) # Call a method inherited from the base class puts bigint1.intValue # ...

Read More Source

March 16th, 2015

In Philosophy

No Comments

The cost of failure

I was sick from 1994 to 2000, so I can relate to this:

Back when I made comics, I lived in a forest. I was poor. I had few options in life. I avoided the topic of college because I didn’t know what I wanted to “do with the rest of my life,” and I didn’t have the money to pay for it. It was much easier to tell myself I wanted to “do what I love, make comics for ...

Read More Source

March 16th, 2015

In Technology

No Comments

When strongly stated opinions bring out defensive anger in computer programmers

This reminds me of the reactions I got when I wrote my essay “Object Oriented Programming is an expensive disaster which must end”.

Then he started by banging on everything that didn’t conform to His Way of Doing Things: his process, his tools. Everything else was “stupid,” “dumb,” “moronic.”

I got the impression he was hiding his own fear of inadequacy behind a wall of disapproval and smack talk. I know this method. I used to use it myself, when I ...

Read More Source

March 16th, 2015

In Technology

No Comments

PHP is adding types without breaking backwards compatibility

This remark is very true:

If I were a Python developer (of the language itself), I would be paying very close attention to how PHP has handled deprecation and breaking changes.

and:

There’s been an effort with PHP 7 to try and avoid a Python 2/3-style situation. The PHP 5 to 7 jump should be much smaller than from 4 to 5.

and this about PHP:

I think of it as the English language of programming. Picking and choosing all of the best ...

Read More Source

March 16th, 2015

In Technology

No Comments

CSS media rules for iPads and iPhones

Interesting rules for screening for iPads and iPhones:

/* default styles here for older browsers. I tend to go for a 600px – 960px width max but using percentages */ @media only screen and (min-width:960px){ /* styles for browsers larger than 960px; */ } @media only screen and (min-width:1440px){ ...

Read More Source

March 16th, 2015

In Technology

No Comments

What Rails asset pipeline looks like

It’s interesting to actually look at the paths being managed.

Rails.application.config.assets.paths => [ "/Users/lkrubner/projects/pasha/magstore/app/assets/images",

"/Users/lkrubner/projects/pasha/magstore/app/assets/javascripts",

"/Users/lkrubner/projects/pasha/magstore/app/assets/stylesheets",

"/Users/lkrubner/projects/pasha/magstore/vendor/assets/javascripts",

"/Users/lkrubner/projects/pasha/magstore/vendor/assets/stylesheets",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/app/assets/images",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/app/assets/javascripts",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/app/assets/stylesheets",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/vendor/assets/javascripts",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/gems/refinerycms-wymeditor-1.0.6/app/assets/images",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/gems/refinerycms-wymeditor-1.0.6/app/assets/javascripts",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/gems/refinerycms-wymeditor-1.0.6/app/assets/stylesheets",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/gems/jquery-ui-rails-5.0.3/app/assets/images",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/gems/jquery-ui-rails-5.0.3/app/assets/javascripts",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/gems/jquery-ui-rails-5.0.3/app/assets/stylesheets",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/core/app/assets/images",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/core/app/assets/javascripts",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/core/app/assets/stylesheets",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/core/vendor/assets/javascripts",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/gems/refinerycms-i18n-3.0.0/app/assets/images",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/gems/turbolinks-2.5.3/lib/assets/javascripts",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/gems/jquery-rails-3.1.2/vendor/assets/javascripts",

"/Users/lkrubner/projects/pasha/magstore/vendor/bundle/ruby/2.1.0/gems/coffee-rails-4.0.1/lib/assets/javascripts" ]

Source

March 16th, 2015

In Technology

No Comments

Functional design patterns

Interesting:

A good talk (~45 min) on this topic by Stuart Sierra:

http://www.infoq.com/presentations/Clojure-Design-Patterns

Not necessarily binding and authoritative, but I recognized a number of his examples from my own experience using FP for data analysis.

Examples written in Clojure, but likely applicable to any FP language. The names he gives to the patterns he covers are:

State/Event Consequences Accumulator Reduce/Combine Recursive Expansion Pipeline ...

Read More Source

March 16th, 2015

In Technology

No Comments

The tech industry reaction against cloud computing

Interesting:

When Matt and Quin founded Swiftype in 2012, they chose to build the company’s infrastructure using Amazon Web Services. The cloud seemed like the best fit because it was easy to add new servers without managing hardware and there were no upfront costs.

Unfortunately, while some of the services (like Route53 and S3) ended up being really useful and incredibly stable for us, the decision to use EC2 created several major problems that plagued the team during our first year.

Swiftype’s ...

Read More Source

March 16th, 2015

In Technology

No Comments

Now when confirmation validations fail, the error will be attached to :#{attribute}_confirmation instead of attribute.

Upgrading to Rails 4. I am not sure what this means, so I will leave this note to myself, and come back and read more later.

5.6 Active Model

Rails 4.0 has changed how errors attach with the ActiveModel::Validations::ConfirmationValidator. Now when confirmation validations fail, the error will be attached to :#{attribute}_confirmation instead of attribute.

Rails 4.0 has changed ActiveModel::Serializers::JSON.include_root_in_json default value to false. Now, Active Model Serializers and Active Record objects have the same ...

Read More Source

March 16th, 2015

In Technology

No Comments

Rails adds a lot to the $LOAD_PATH

I guess I knew this but I was still surprised to look and see how many paths there are in one small Rails project.

bundle exec rails c

Loading development environment (Rails 4.1.8)

irb(main):001:0> puts $LOAD_PATH

/Users/lkrubner/projects/pasha/fiit/lib

/Users/lkrubner/projects/pasha/fiit/vendor

/Users/lkrubner/projects/pasha/fiit/app/assets

/Users/lkrubner/projects/pasha/fiit/app/controllers

/Users/lkrubner/projects/pasha/fiit/app/decorators

/Users/lkrubner/projects/pasha/fiit/app/helpers

/Users/lkrubner/projects/pasha/fiit/app/mailers

/Users/lkrubner/projects/pasha/fiit/app/models

/Users/lkrubner/projects/pasha/fiit/app/controllers/concerns

/Users/lkrubner/projects/pasha/fiit/app/models/concerns

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/vendor

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/app/assets

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/app/controllers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/app/decorators

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/app/helpers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/app/mailers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms_membership-cd49cac06a43/app/models

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-settings-3.0.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-settings-3.0.0/app/controllers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-settings-3.0.0/app/helpers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-settings-3.0.0/app/models

/Users/lkrubner/projects/pasha/fiit/vendor/extensions/videos/lib

/Users/lkrubner/projects/pasha/fiit/vendor/extensions/videos/app/controllers

/Users/lkrubner/projects/pasha/fiit/vendor/extensions/videos/app/models

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-wymeditor-1.0.6/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-wymeditor-1.0.6/app/assets

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-wymeditor-1.0.6/app/controllers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-wymeditor-1.0.6/app/decorators

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-acts-as-indexed-2.0.1/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-acts-as-indexed-2.0.1/app/decorators

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/quiet_assets-1.1.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/seo_meta-2.0.0.rc.1/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/seo_meta-2.0.0.rc.1/app/models

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/pages/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/pages/app/controllers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/pages/app/helpers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/pages/app/models

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/pages/app/presenters

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/resources/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/resources/app/controllers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/resources/app/models

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/images/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/images/app/controllers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/images/app/helpers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/images/app/models

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/authentication/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/authentication/app/controllers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/authentication/app/mailers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/authentication/app/models

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/devise-3.4.1/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/devise-3.4.1/app/controllers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/devise-3.4.1/app/helpers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/devise-3.4.1/app/mailers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/jquery-ui-rails-5.0.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/jquery-ui-rails-5.0.3/app/assets

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/core/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/core/vendor

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/core/app/assets

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/core/app/controllers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/core/app/helpers

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/core/app/models

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/core/app/presenters

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-i18n-3.0.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/refinerycms-i18n-3.0.0/app/assets

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/turbolinks-2.5.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/jquery-rails-3.1.2/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/jquery-rails-3.1.2/vendor

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/coffee-rails-4.0.1/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.8/lib/action_view/vendor/html-scanner

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/extensions/x86_64-darwin-11/2.1.0/unicorn-4.8.3

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/unicorn-4.8.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/uglifier-2.7.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/extensions/x86_64-darwin-11/2.1.0/therubyracer-0.12.1

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/therubyracer-0.12.1/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/therubyracer-0.12.1/ext

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/extensions/x86_64-darwin-11/2.1.0/sqlite3-1.3.10

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/sqlite3-1.3.10/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/spring-1.3.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/sdoc-0.4.1/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/webrat-0.7.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/bundler/gems/refinerycms-11f8d1eeb45e/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/will_paginate-3.0.7/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/truncate_html-0.9.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/sass-rails-4.0.5/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/sass-3.2.19/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/routing-filter-0.4.0.pre/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/ref-1.0.5/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/rdoc-4.2.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/extensions/x86_64-darwin-11/2.1.0/raindrops-0.13.0

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/raindrops-0.13.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/rails-i18n-4.0.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/rails-4.1.8/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/sprockets-rails-2.2.4/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/sprockets-2.12.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/tilt-1.4.1/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/protected_attributes-1.0.8/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/extensions/x86_64-darwin-11/2.1.0/nokogiri-1.5.11

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/nokogiri-1.5.11/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/extensions/x86_64-darwin-11/2.1.0/libv8-3.16.14.7

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/libv8-3.16.14.7/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/libv8-3.16.14.7/ext

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/extensions/x86_64-darwin-11/2.1.0/kgio-2.9.3

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/kgio-2.9.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/jbuilder-2.2.6/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/hike-1.2.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/globalize-4.0.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/friendly_id-5.0.5/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/dragonfly-1.0.7/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/multi_json-1.10.1/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/warden-1.2.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/responders-1.1.2/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/orm_adapter-0.5.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/decorators-2.0.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/railties-4.1.8/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/thor-0.19.1/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/coffee-script-2.3.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/execjs-2.3.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/coffee-script-source-1.9.0/lib

/usr/local/lib/ruby/gems/2.1.0/gems/bundler-1.8.5/lib/gems/bundler-1.8.5/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/extensions/x86_64-darwin-11/2.1.0/bcrypt-3.1.10

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/bcrypt-3.1.10/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/babosa-1.0.2/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/awesome_nested_set-3.0.2/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/addressable-2.3.7/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/acts_as_indexed-0.8.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.8/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/arel-5.0.1.20140414130214/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/activemodel-4.1.8/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/actionmailer-4.1.8/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/mail-2.6.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/mime-types-2.4.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.8/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/rack-test-0.6.3/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/actionview-4.1.8/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/erubis-2.7.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/builder-3.2.2/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.8/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/tzinfo-1.2.2/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/thread_safe-0.3.4/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/minitest-5.5.1/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/extensions/x86_64-darwin-11/2.1.0/json-1.8.2

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/json-1.8.2/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/i18n-0.7.0/lib

/Users/lkrubner/projects/pasha/fiit/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib

/usr/local/lib/ruby/gems/2.1.0/gems/bundler-1.8.5/lib

/usr/local/lib/ruby/site_ruby/2.1.0

/usr/local/lib/ruby/site_ruby/2.1.0/x86_64-darwin11.0

/usr/local/lib/ruby/site_ruby

/usr/local/lib/ruby/vendor_ruby/2.1.0

/usr/local/lib/ruby/vendor_ruby/2.1.0/x86_64-darwin11.0

/usr/local/lib/ruby/vendor_ruby

/usr/local/Cellar/ruby/2.1.5/lib/ruby/2.1.0

/usr/local/Cellar/ruby/2.1.5/lib/ruby/2.1.0/x86_64-darwin11.0

Source

March 16th, 2015

In Technology

No Comments

A shell script which turns your OS X laptop into an awesome web development machine

Interesting:

What it sets up

Bundler for managing Ruby libraries Exuberant Ctags for indexing files for vim tab completion Foreman for managing web processes gh for interacting with the GitHub API Heroku Toolbelt for interacting with the Heroku API Homebrew for managing operating system libraries ImageMagick for cropping and resizing images Node.js and NPM, for running ...

Read More Source

March 14th, 2015

In Technology

No Comments

Redis for microservices with Clojure

This is a very good explanation of a microservices system with Clojure and Redis:

I drew a picture of how I wanted to break apart a monolithic application and instead run different parts of the application in separate processes / separate JVMs. The idea was to have a single client for the connection to the Twitter Streaming API and the persistence of the received Tweets in ElasticSearch, plus multiple machines to serve WebSocket connections to the client. For the communication ...

Read More Source

March 14th, 2015

In Technology

No Comments

Rubinius X as the future of Ruby

Interesting:

The internet has caused a fundamental change in general computing, yet many programming languages are solidly centered in the Windows 3.0 era, providing their equivalent to the Windows for Workgroups add-on to enable networking. Unfortunately, Ruby is one of those languages.

To be relevant today, a programming language must provide simple yet powerful facilities for composition and collaboration. A language does not need general immutable state, purely pure functions, or complex type systems, no matter how inferred.

Rubinius X is an ...

Read More Source

March 14th, 2015

In Technology

No Comments

Ruby reinvented to look like Clojure

To be clear, I like everything about Thomas Reynolds “Weird Ruby”:

# The standard "record" that contains information about a file on disk. SourceFile = Struct.new :relative_path, :full_path, :directory, :types # Find a file given a type and path. # # @param [Symbol] type The file "type". # @param [String] path The file path. # @param [Boolean] glob If the path contains wildcard ...
Read More Source

March 14th, 2015

In Technology

No Comments

Ruby concurrency needs microservices but not Elixir

I was initially confused by this essay because of its emphasis on Elixir. The writers just happen to like Elixir, which is fine. I have previously said that Erlang is a work of genius, and the Erlang VM is a work of genius. Building a dynamic language on top of that VM is a great idea, and I would like to work with Elixir in the future.

However, you don’t need Elixir to add concurrency to Ruby. Any concurrency oriented ...

Read More Source

March 14th, 2015

In Philosophy

No Comments

Teaching yourself computer programming is morally correct

Interesting:

I have come to learning Haskell in an unusual way. I have a master’s degree in linguistics and some background in logic (due to a BA in philosophy). I have no background in either math or computer programming. At all. I was persuaded, somehow, to learn Haskell by a friend with a notable fervor for Haskell advocacy, and because he got me sort of excited about natural language processing, I decided to give it a whirl. He is a person ...

Read More Source

March 14th, 2015

In Technology

No Comments

What to use for Ruby background tasks?

Interesting:

Essentially all three perform the same task, executing background jobs, but go about it differently:

delayed_job uses your SQL database for storage and processes jobs in a single-threaded process. It’s simple to set up but the performance and scalability aren’t great. I would not use delayed_job for systems processing 100,000s of jobs/day.

resque uses redis for storage and processes messages in a single-threaded process. The redis requirement makes it a little more difficult ...

Read More Source

March 13th, 2015

In Philosophy

No Comments

Kate Heddleston on argument culture

Interesting:

In a perfect world, people win arguments through the use of logic, facts, and better information. In reality, most people are pretty terrible at using logic, facts, and information. People make decisions from a place of emotion. We know this because if the emotional centers of a person’s brain are damaged, they become incapable of making even the most basic decisions [4]. Arguments are inherently emotional interactions where the goal is winning, and if we have learned anything from ...

Read More Source

March 13th, 2015

In Philosophy

No Comments

Tardigrades can not be destroyed

Interesting:

If you go into outer space without protection, you’ll die.

The lack of pressure would force the air in your lungs to rush out. Gases dissolved in your body fluids would expand, pushing the skin apart and forcing it to inflate like a balloon. Your eardrums and capillaries would rupture, and your blood would start to bubble and boil. Even if you survived all that, ionising radiation would rip apart the DNA in your cells. Mercifully, you would be unconscious in ...

Read More Source

March 12th, 2015

In Technology

No Comments

Relentless sexual assault in tech

I wish I could say this surprised me, but my own female friends have told me stories like this:

Here’s a non-comprehensive litmus test for if your workplace equality efforts are working or not: do they try to give the impression that workplace inequality is “under control?” Everything I have read and seen says sexism is not under control in tech, and that it is in fact wildly out of control. Sexism in tech is not a thing to be kept ...

Read More Source

March 12th, 2015

In Technology

No Comments

Netflix monitors its micro-services

Interesting:

The ability to decompose where time is spent both within and across the fleet of microservices can be a challenge given the number of dependencies. Such information can be leveraged to identify the root cause of performance degradation or identify areas ripe for optimization within a given microservice. Our Mogul utility consumes data from Netflix’s recently open-sourced Atlas monitoring framework, applies correlation between metrics, and selects those most likely to be responsible for changes in demand ...

Read More Source

March 12th, 2015

In Technology

No Comments

Mike MacHenry: Object-oriented programming has one major flaw which is that no one agrees what it really is

Mike MacHenry sums up the problems of OOP. Interesting:

Object-oriented programming has one major flaw which is that no one agrees what it really is. Everyone’s definition seems to be a collection of completely orthogonal ideas, most of which belong equally to some other, non-OOP paradigm. It makes it impossible to to get a clear answer to questions about the topic. To the best of my knowledge, through extensive reading, the best answer I can come up with for what object-oriented ...

Read More Source

March 12th, 2015

In Business

No Comments

Just 18 elite universities produce half of all computer science professors

Interesting:

The evidence is not only anecdotal. A recent study by Aaron Clauset, Samuel Arbesman, and Daniel B. Larremore shows that “a quarter of all universities account for 71 to 86 percent of all tenure-track faculty in the U.S. and Canada in these three fields. Just 18 elite universities produce half of all computer science professors, 16 schools produce half of all business professors, and eight schools account for half of all history professors.” This study follows the discovery ...

Read More Source

March 12th, 2015

In Philosophy

No Comments

Women’s drinking peaks at age 40

Basically, women drink more and more every year until the worries about age-related health begin to influence their behavior. Interesting:

Source

March 12th, 2015

In Technology

No Comments

Contracts in Ruby are part of the new style

Much more than PHP or Python, the Ruby community is constantly pulling in new ideas from other programming language, and we see the emergence of new Ruby styles:

# The standard “record” that contains information about a file on disk. SourceFile = Struct.new :relative_path, :full_path, :directory, :types

# Find a file given a type and path. # # @param [Symbol] type ...

Read More Source

March 12th, 2015

In Philosophy

No Comments

Bad female boss suddenly understand mothers now that she has a kid

Interesting:

I secretly rolled my eyes at a mother who couldn’t make it to last minute drinks with me and my team. I questioned her “commitment” even though she arrived two hours earlier to work than me and my hungover colleagues the next day.

I didn’t disagree when another female editor said we should hurry up and fire another woman before she “got pregnant.”

...

Read More Source

March 12th, 2015

In Technology

No Comments

Object-oriented Programming cannot save us anymore

Obviously, I agree with this. See what I wrote earlier todayIs Erlang an Object Oriented Language?.

That promised time when we’d have applications running distributed and concurrently finally has come. Unfortunately, we are not ready: our “current” (i.e., most used) model for concurrency and parallelism, even though might solve the problem, it adds a lot of complexity.

For a better applications, we need a simple and reliable manner to do it. Do you remember above-mentioned features of FP? Pure Functions and ...

Read More Source

March 12th, 2015

In Technology

No Comments

Oracle is completely incompetent

True:

From the release notes: “The old syntax was meant to be only deprecated, but it was accidentally completely removed.”

How could Oracle have possibly “accidentally completely removed” the old syntax for setting a password even though it “was meant to be only deprecated”, without being completely incompetent?

I can not in my wildest imagination come up with a scenario in which a competent developer could possibly “accidentally remove” something like that. If they made such a huge “accident” with that security feature, ...

Read More Source

March 12th, 2015

In Technology

No Comments

Let’s disagree with Micro-Services

I like this:

Anybody who tried to get a number of teams in a large organization to agree on a common technology can sympathize with this. We are all human, and tend to have passionate and strong opinions on technologies we like and hate. Put enough of these strong opinions together, and they tend to cancel each other out, leaving no common ground. This is bad news for the poor architect that needs to pick an approach for a large ...

Read More Source

March 12th, 2015

In Technology

No Comments

9 different package managers

Interesting:

About Leiningen:

Pros

The artifacts are signed!

It simplifies the dependency definition of maven.

It’s easy to publish new artifacts.

It’s easy to learn how it works.

It allows to reuse Java artifacts from other maven repositories.

Cons

It violates the “Single Responsibility” pattern. Same as Maven.

Licenses are not mandatory.

No Mirrors.

I’ve wasted countless hours dealing with version conflicts and dependencies. I want a package manager to get things working, and I don’t care about what that requires. The semantic versioning, in terms of developing a lock ...

Read More Source

March 12th, 2015

In Technology

No Comments

At a certain scale you have to give up on the single, normalized, canonical database

I am surprised this article by Yorick Peterse, attacking MongoDB, got so much attention. The company used to use MySQL and MongoDB, but now they just use PostGres for everything. PostGres is a great technology, and I would always prefer to MySQL. I question the intelligence of a company that uses MySQL, when PostGres is such a good choice. But if a writer tries to compare PostGres and MongoDB, then I have to question their intelligence, since the 2 technologies ...

Read More Source

March 12th, 2015

In Technology

No Comments

Is Erlang an Object Oriented language?

A lot of people have read my essay from October 7th, 2014, “Object Oriented Programming is an expensive disaster which must end“. Many people like the essay, and many people hate the essay. The people who hate the essay often raise the possibility that I am a troll. They also feel that the whole essay should be dismissed based on its mistakes.

I have been meaning to write a second version that fixes all the mistakes of the first. The ...

Read More Source

March 12th, 2015

In Technology

No Comments

Are you sure objects are an improvement of procedural programming?

Interesting:

This question is an endless source of flame wars. Ruby is better than Java because it has dynamic typing, which in turn allows for short, concise source code. Yeah, right, the Java guys say, your programs read fine, but they crash at your customer’s because type checking is left to the runtime. You’ve got it all wrong, the followers of LISP and Clojure say. Object Oriented Programming is an expensive disaster which must end. Don’t you see it’s all about ...

Read More Source

March 9th, 2015

In Philosophy

No Comments

If you measure something intermediate, be sure it also contributes to your end goals

Interesting:

In 1962, what’s now known as the Perry Preschool Study started in Ypsplanti, a blue-collar town near Detroit. It was a randomized trial, resulting in students getting either no preschool or two years of free preschool. After two years, students in the preschool group showed a 15 point bump in IQ scores; other early education studies showed similar results.

In the 60s, these promising early results spurred the creation of Head Start, a large scale preschool program designed to help economically ...

Read More Source

March 8th, 2015

In Business

No Comments

Financial speculation in games teaches us about financial speculation in real life

Interesting:

There I managed to buy the factories in a key star hub and set up shop. I produced the first Mammoths (a massive transport ship critical to trade) in the game, and also the first Minmatar battleships. I would have loved to expand my production but within days of the retail launch all factories had been bought up and idled by speculators who were charging $300 to $400 per factory, without any way of knowing if they really owned the ...

Read More Source

March 6th, 2015

In Business

No Comments

The company transition from one big group to many groups

Interesting:

Everyone doesn’t know what’s going on anymore.

When you all fit around a single table (or a single Google Hangout) it’s easy for everyone to feel like they know what’s going on. Most people were probably wearing multiple hats and in constant communication as you focused on a single, core thing your business tries to do well.

But now things, have changed. Not only do people wear fewer hats, you probably even have multiple people to do many of the jobs.

Gone are ...

Read More Source

March 6th, 2015

In Business

No Comments

Job interviews for computer programmers are full of bias

Interesting:

Confidence bias selects for candidates who are good at interviewing.

There are people who have the social skills to actively listen to someone else’s technical points, to guide a discussion with questions of their own, or to spot opportunities to redirect a tough question back to familiar territory. Those people build impressive resumes. They effortlessly pass “culture fit” tests. And a lot of them can’t code.

Confidence bias excludes candidates who don’t interview well.

For every genuinely competent and effective developer who ...

Read More Source

March 6th, 2015

In Business

No Comments

Customization killed MySpace

From GeoCities to MySpace to Facebook the trend has been to less customization. Perhaps this is specialization: if you want a website, then go get a website, but if you want social, then let’s stick with a standard UI so that folks can focus on the social bits.

Could they have avoided losing out to Facebook? I think if they created MySpace 2.0 without all the crap (essentially what Facebook did) and made it easy to migrate your accounts and ...

Read More Source

March 6th, 2015

In Business

No Comments

The end of the globalization consensus

After 1945, the USA lead the effort to establish a liberal zone of less restricted trade, an effort to step away from the protectionism of 1914-1945. And for awhile the leadership of the USA was unified on the need for this effort. But consensus is dying:

Summers’s ascendance is a reflection of the abandonment by much of the party establishment of neo-liberal thinking, premised on the belief that unregulated markets and global trade would produce growth beneficial to worker and C.E.O. ...

Read More Source

March 6th, 2015

In Philosophy

No Comments

Women stealing happiness from women

Interesting:

“You know Weil hired Lauren? She just got her letter yesterday.”

It was Emma, smiling at me as though there was no one else she’d rather see.

“I guess they’re less fixated on first-year grades than they pretend,” she said, “because Lauren’s first year grades were”–here she made a soft clicking noise that made me want to strangle her.

“Incoming,” hissed Emma’s best friend, another girl who was notable mostly because her parents owned one of New York’s most expensive restaurants. And ...

Read More Source

March 6th, 2015

In Philosophy

No Comments

The professionalization of childhood sports is child abuse

Interesting:

“It’s definitely child abuse,” Dohrmann said in an interview with ThinkProgress.

Dohrmann said that LeBron James Jr. might be an example of a rare kid with the support system that will allow him to survive the maw of youth basketball. He has a father who understands the system, is used to the attention and doesn’t need the money. He’s likely to get a coach who understands the game and even if he doesn’t he has his dad, one of the greatest ...

Read More Source

March 6th, 2015

In Business

No Comments

The countryside is out of fashion

The reasons why the college failed:

Sweet Briar officials cited overarching challenges that the college has been unable to handle: the lack of interest from female high school students in attending a women’s college like Sweet Briar, declining interest in liberal arts colleges generally and declining interest in attending colleges in rural areas. Sweet Briar is in the foothills of the Blue Ridge Mountains in Virginia. “We are 30 minutes from a Starbucks,” said James F. Jones Jr., president of ...

Read More Source

March 3rd, 2015

In Technology

No Comments

What is the right way to use micro-services?

Interesting:

What I find over and over again is that micro-services appeal to leadership more than the developers. This is a somewhat confusing revelation considering micro-services are considered an architectural approach, and project managers are not supposed to fall in love with an architecture (at best, they are weary of it because ‘architecture’ is typically a code word for more boxes and increased cost and time to delivery). And yet.

…Beyond solving the sheer size problem, micro-services promise to solve the ‘different ...

Read More Source

March 3rd, 2015

In Philosophy

No Comments

I don’t get the zombie craze

All the zombie movies — I am not clear why this genre is so popular now. Typically when Sci-Fi has some popular breakthrough its because of events happening elsewhere in society. Invasion of the Body Snatchers was a hit when Anti-Communist hysteria was at its peak. Star Trek was a hit when the USA government was actually trying to get to the moon. Planet Of The Apes was a hit when white America no longer felt free to speak openly ...

Read More Source

March 3rd, 2015

In Business

No Comments

If mid-level managers are useless, then why do they exist?

At this point I think I can reasonably say that I’ve read thousands of stories about the stupid incompetence of mid-level managers. And I’m beginning to wonder if this genre of story is teaching us an important truth. I used to think the answer was “yes” but now I’m wondering, why do companies continue to have mid-level managers, given the endless number of these stories that have been brought up, at least since the 1960s, if not earlier?

A company ...

Read More Source

March 3rd, 2015

In Philosophy

No Comments

Europe has seen a surge in voluntary childlessness

Interesting:

Europe has also seen a surge in “child-free” adults—voluntary childlessness. The proportion of childless 40-something women is one in five for Sweden and Switzerland, and one in four for Italy. In Berlin and in the German city-state of Hamburg, it’s nearly one in three, and rising swiftly. Europe’s most rapidly growing family type is the one-person household: the home not only child-free, but partner- and relative-free as well. In Western Europe, nearly one home in three (32%) is already a ...

Read More Source

March 2nd, 2015

In Business

No Comments

Men ask Sarah Lacy to think of the children

This is awesome:

One of the highest profile positive symbols of the new generation of empowered women is Lena Dunham. I am avowedly not a fan of the TV show “Girls,” which I thought meant I wasn’t a fan of its creator. But my respect for Dunham just keeps growing with every interview with her I’ve read.

Last month, in the airport on the way to Nashville, I picked up a copy of Elle magazine which had Dunham on the cover. It ...

Read More Source

March 1st, 2015

In Technology

No Comments

The problem with the ActiveRecord, as a pattern

Interesting:

The pattern (or one might say the way it is implemented) has several issues:

It (seriously) violates SRP. In a typical implementation of the pattern you will have the following set of methods and properties in every class: Getting the data from database. Instantiating a new instance in memory for inserting it into the database. Saving changes to the database. Loading related entities. Validation. Usually loads of methods (inherited from the base framework class) to deal with all the complexity involved with the above-mentioned methods. Column related ...

Read More Source

March 1st, 2015

In Technology

No Comments

PostgreSQL is great and ORMs suck

Over the last 10 years I think I’ve heard all the arguments for Database Abstractions Layers (DBAL) and I’ve come to hate them. I’ve twice seen data moved from one database to another (from Oracle to MySQL and from MySql to PostGres) but in all cases I was able to write the import/export script in a day or two, so DBAL was never needed. More so, DBAL means giving up on what makes a database unique, and so you throw ...

Read More Source

March 1st, 2015

In Business

No Comments

Anita Sarkeesian hopes to see game culture change

Interesting:

The metal detectors, and the overall heightened security presence at Sarkeesian’s talk, were impossible not to notice. I heard a few attendees mutter about this being necessary or finding it absurd that a talk about women in gaming, of all things, required this kind of presence. An NYU rep told me they hadn’t set up metal detectors for any Game Center talks before. The people who make Dragon Age didn’t get this kind of security.

Sarkeesian never acknowledged the security, and ...

Read More Source

March 1st, 2015

In Technology

No Comments

The good and the bad of data-types

Interestingly honest to hear someone admit that types are important but not a cure all — this is my few as well:

Not distinguishing abstraction from checking

This is my number-one beef. Almost all languages offer data abstraction. Some languages proceed to build a static checking system on top of this. But please, please, don’t confuse the two.

We see this equivocation used time and time again to make an entirely specious justification of one language or other. We see it used to ...

Read More Source

March 1st, 2015

In Technology

No Comments

How does ActiveRecord work?

Interesting:

Because find(id) is such a common query, the ActiveRecord developers have special-cased it to bypass a lot of the work that would have to be done if you were chaining together conditions or doing more elaborate queries. You can see at line 147 that this simple query is actually cached, and that this cache is checked to see if the query has been executed before.

If not, the query construction begins at line 149, with the chaining of a where clause ...

Read More Source

March 1st, 2015

In Technology

No Comments

What is object oriented programming?

Interesting:

Here is an a la carte menu of features or properties that are related to these terms; I have heard OO defined to be many different subsets of this list.

Encapsulation – the ability to syntactically hide the implementation of a type. E.g. in C or Pascal you always know whether something is a struct or an array, but in CLU and Java you can hide the difference.

Protection – the inability of the client of a type to detect its implementation. ...

Read More Source

March 1st, 2015

In Technology

No Comments

Message passing in computers is flawed because messages can not be trusted

Interesting:

First of all, if you call a random object to ask it a question of any kind, you can get a denial of service in the form of nontermination. This can be mitigated by using an asychronous send or resource limitation, in which case you may get no information about the object.

But it’s worse than this. Even if you ignore DOS and timeout, you might think you could do challenge/response for authentication = “type check” or brand predication. Let’s ...

Read More Source

March 1st, 2015

In Technology

No Comments

The weaker reasons for hating object oriented programming

Interesting:

I didn’t think you were such an OO partisan. If you are, then you will probably find my reasons for despising it (other than the above) to be very touchy-feely, and they are. I think comprehensive OO (occasional OO is fine) is a very poor metaphor for the world, a poor tool for problem solving, and an unnatural way to think. Here are some particulars off the top of my head:

- It accounts poorly for symmetric interaction, such as chemical reactions ...

Read More Source

March 1st, 2015

In Technology

No Comments

Object Oriented Programming is a moving target

OOP zealots are liars. This is the point I made in “Object Oriented Programming is an expensive disaster that must end“:

Because OO is a moving target, OO zealots will choose some subset of this menu by whim and then use it to try to convince you that you are a loser.

Source

March 1st, 2015

In Technology

No Comments

You can call yield in Ruby without an explicit block declared

Very interesting:

Given this:

def a(&block) yield end

def b yield end

Running `a {1+1}` is 4x slower than running `b {1+1}`. I didn’t even know you could yield in a method without an explicit &block parameter. I’ll guess I’ll change my ways then, although I like having the block declared in the method signature so I know ...

Read More Source

March 1st, 2015

In Technology

No Comments

The mania for object oriented programming

Paul Graham says there are 5 reasons why people like object oriented programming, and 3 and half of them are wrong:

I think there are five reasons people like object-oriented programming, and three and a half of them are bad:

Object-oriented programming is exciting if you have a statically-typed language without lexical closures or macros. To some degree, it offers a way around these limitations. (See Greenspun’s Tenth Rule.)

Object-oriented programming is popular in big companies, because it suits the way they ...

Read More Source

March 1st, 2015

In Technology

No Comments

Is static type checking important in software for a bank?

Interesting.

One attitude:

I always thought critical applications like banking needed compile time type checking. Clojure is neat and all, but it’s dynamic.

The counter-argument:

They need quality, trustworthy software. Compile time type checking is a tool that can be used to help get there (but how useful it is in getting there depends on how robust the type system is, and Java’s is not particularly robust).

Clear and concise code that is readily understood, avoids visual noise so that the programmer can focus on ...

Read More Source

March 1st, 2015

In Business

No Comments

Physical presence is important for freelance

I like this:

When I quit my job to pursue my startup, I moved into a co-working space in Brooklyn and sat across a real estate broker. One day, he told me he wanted to have a website that his clients could log into and view available properties to rent over a map based layout. He talked to some development shops and got quoted for $X. $X turned out to be significantly greater than his budget and twice as much ...

Read More Source

March 1st, 2015

In Technology

No Comments

When will WordPress die?

It seems to keep going, but I find it difficult to accept any explanation of why it keeps going:

It won’t happen overnight, but WP-API will dramatically reduce the amount of active PHP code in WordPress, starting with the admin back-end. It will become a JavaScript app that talks to the WP-API sooner than anyone suspects.

Front-end (read: theme) development will change at a slower pace, because rendering HTML on the server side is still the right thing to do for ...

Read More Source

March 1st, 2015

In Philosophy

No Comments

What makes Buzzfeed good?

Interesting:

Where the Buzzfeed crew distinguish themselves from older media organizations, and even many of their contemporary online competitors, is in their lack of quality control, which borders on an actual rejection of the notion that “quality” ought to be an important factor in determining whether or not to publish something.

That’s Buzzfeed’s crucial differentiating factor. Combine it with their killer CMS (which encourages the rapid creation of exactly the sort of content we imagine when we think of lazy Buzzfeed ...

Read More Source

March 1st, 2015

In Philosophy

No Comments

The short version of Kino Haruki Murakama

I think this story has too many words. This is my version, with less words:

Kino remembered the first time the man had come to his bar. His appearance had immediately caught Kino’s eye—the bluish shaved head, the thin build yet broad shoulders, the keen glint in his eye, the prominent cheekbones and wide forehead. He looked to be in his early thirties, and he wore a long gray raincoat, though it wasn’t raining.

The man sat in the back ...

Read More Source

March 1st, 2015

In Philosophy

No Comments

Lying is good for you

Lying is an important social skill:

The ability to lie is adaptive. When kids start lying when they’re younger, they’re essentially supposed to. It’s a good developmental sign their brain is working correctly when they become aware both that you actually can’t see everything they do and also that you can’t read their minds. Sure, they may not be that good at lying yet by our standards—my 4 year old recently insisted she was turning flips right in front of ...

Read More Source

March 1st, 2015

In Philosophy

No Comments

How can anyone remember where they saw a movie 25 years ago?

I am confused how anyone can remember these details:

My first time with James Cameron’s sci-fi war movie was a great filmgoing experience. I saw “Aliens” at the NorthPark 1 and 2 theater at NorthPark Mall in my hometown of Dallas, with a high school classmate who was, at that time, my regular action movie-watching buddy: Gabe Michaels. We drove to NorthPark to catch the 11 a.m. show on opening day and got in line a couple of hours early. ...

Read More Source

February 26th, 2015

In Philosophy

No Comments

Dating someone wealthier

Interesting:

I dated a guy once whose father was quite wealthy and worked in finance. He often told me things straight-faced that, I—someone who had grown up on food stamps—found preposterous. He’d say that the couple grand he received as allowance each month was not very much money, and that his family was extremely careful not to show off their wealth too much, which he told me while we sipped booze on his dad’s $80,000 speedboat.

We went to restaurants where a ...

Read More Source

February 25th, 2015

In Philosophy

No Comments

Fashion freedom in Britain

I agree, famous women in Britain seem to me to be under less pressure to minimize fashion risks, and therefore can dress in more interesting ways:

I am constantly hammering this point because it’s true: British fashion right now is, on the whole, so much more creative and interesting than American fashion. That’s certainly true on the runway, but it’s also true on the red carpet, even moreso with musicians, because on the whole British women aren’t as bananas about ...

Read More Source

February 25th, 2015

In Technology

No Comments

Does the visitor design pattern need to exist?

What does this sound like to you?

The pattern should be used when you have distinct and unrelated operations to perform across a structure of objects.

Wait a minute, isn’t that… a function? In a language where functions can take functions, I would simply send in a function, right? Maybe a multimethod. I wouldn’t need an interface for the “visitor”, except maybe the interface of the multimethod, right?

The fact that these metaphors are so tortured is certainly a bad sign: ...

Read More Source

February 25th, 2015

In Technology

No Comments

The angry argument against design patterns

The rant:

I tend to come across a lot of code written by people who read up on design patterns and than think they should use them all over the place and the result is the actual code gets buried under tons of interfaces, wrappers and layers and pretty hard to read. That’s a wrong approach to design patterns.

Design patterns exist so that you have a repertoire of useful idioms handy when you come across a problem. But you should ...

Read More Source

February 25th, 2015

In Technology

No Comments

The best argument for design patterns

I do like this:

Given the few items we can hold in working memory simultaneously, it’s no wonder that programming is hard; any interesting programming problem has a multitude of fine-grained parameters and possible alternatives. One way around this limitation is a process known as chunking. Chunking is an encoding strategy where individual elements are grouped into higher-level groups, chunks. While the limit on the number of units still apply, each unit now holds more information.

Patterns are a sophisticated form of ...

Read More Source

February 25th, 2015

In Technology

No Comments

The Leiningen eco-system

This is a nice write up of some of the plugins one can use with Leiningen

Cljfmt At long last, Clojure finally has its own gofmt-like tool, thanks to the ever-industrious @weavejester. Cljfmt both checks (lein cljfmt check) and formats (lein cljfmt fix) your code nicely in adherence to the generally accepted Clojure style rules, and has options for configuration in case you have your own feelings on the subject.

Eastwood Eastwood is a Clojure linter, invoked with lein eastwood. As a general request, ...

Read More Source

February 25th, 2015

In Technology

No Comments

Computers, patterns, humbleness

The most obvious case for patterns:

One such strategy is to share knowledge and base our solutions on what has been known to work well in the past. Since few designs are really novel we often find that previous solutions, at least on a conceptual level, apply to our new problem too…

Patterns incorporate both of these strategies. As software developer and author of a technical book on patterns I obviously find value in the pattern format. And as a psychologist I ...

Read More Source

February 25th, 2015

In Technology

No Comments

What do standard OOP patterns look like in Haskell?

Interesting:

Most software developers are familiar with the OOP motto “everything is an object.” People accustomed to C++ classes often find the Haskell concept of type classes difficult to grasp. Why is it so different?

C++ classes pack functions together with data, which makes it convenient to represent and consume data. Use of interfaces (abstract classes) allow classes to interact by contract, instead of directly manipulating the data in the other class. There exist alternative ways in C++ to accomplish such ...

Read More Source

February 25th, 2015

In Philosophy

No Comments

What is the difference between depression and procrastination?

This sounds like depression:

You are too old to learn, they said. At your age it is impossible to change behavioral patterns, they concluded. “They” being these voices I have been hearing in my head lately — a side-effect of the isolation that comes with being a slave to/freelancer on the Internet.

A couple of days ago I would have agreed. Honestly, I would have agreed to anything. I felt done. Depressed. If somebody would have told me that I would never ...

Read More Source

February 25th, 2015

In Technology

No Comments

Best practice is a misnomer

Interesting:

As one data point on the curve, at any rate, if you were to compete with ITA and chose to write your software in C, they would be able to develop software twenty times faster than you. If you spent a year on a new feature, they’d be able to duplicate it in less than three weeks. Whereas if they spent just three months developing something new, it would be five years before you had it too.

And you know what? ...

Read More Source

February 25th, 2015

In Philosophy

No Comments

We lack a good theory for depression

Interesting:

The problem is that we’ve never had an adequate theory of what depression is, and the evidence seems to be that it is far more complex and situational than any one-pill-fixes-all approach could ever attack. The author is correct, but hardly novel or prescient, in noting that there are serious issues with the long-term efficacy of SSRIs and SNRIs (and most other classes of psychoactive drugs). The problems of discontinuation of drug therapy, especially for long-term users, and that the ...

Read More Source

February 25th, 2015

In Uncategorized

No Comments

What is the argument for design patterns?

Interesting:

Paul Graham’s essay Revenge of the Nerds is a nearly pornographic love letter to Lisp. If you can manage to read all the way to the end, there’s an interesting footnote buried at the bottom:

Peter Norvig found that 16 of the 23 patterns in Design Patterns were “invisible or simpler” in Lisp.

He should have opened the essay with that evidence, because it strengthens his conclusion considerably:

In the OO world you hear a good deal about “patterns”. When I see patterns ...

Read More Source

February 25th, 2015

In Philosophy

No Comments

How much of Gamergate is simply mental illness

Hitler believed that the Jews controlled the world and were working to destroy Germany. Racism that extreme is an obvious sign of mental illness. And likewise with misogyny. Where exactly is the line that divides banal everyday misogyny from mental illness? And how do we limit the damage that the mentally ill can do, while getting them the help they need? Several of the more extreme Gamergate men seem to be suffering from mental illness, Jace Connors being the obvious ...

Read More Source

February 25th, 2015

In Philosophy

No Comments

The most popular resist-sexual-assault training manual is out of date

Interesting:

Universities across the country have been eating this program up since 1989, and no wonder: R.A.D. is a perfect slice of patriarchal fear-cake, studded with nuggets of bad advice and thickly frosted with condescension.

Take, for example, these “Risk Reduction Strategies”:

HOME: Try “casing” your own home, at night and/or during the day. Attempt to gain access when locked and “secure.” If possible, invite a security survey from your local Police Department.

Drapes and Shades: Draw the drapes and pull the shades. ...

Read More Source

February 25th, 2015

In Technology

No Comments

Pair programming is exhausting

This is true. When I work with another programmer, I suddenly have to focus 100%, and interact with someone too, straining the limits of both my technical abilities and my social skills. I can do this for 30 minutes, but if I had to do it all day, everyday, I would be utterly exhausted.

What about the downsides? It’s not all peaches and cream of course – pairing all the time does have some downsides.

Tiring

Pairing can be exhausting. Not everybody thinks ...

Read More Source

February 25th, 2015

In Philosophy

No Comments

The hollowness of the neutral meditation promoted by business

This is very good:

When I read about the general spread of mindfulness, I’m gladdened and encouraged. It is a simple thing, available as freely as breath to practically every human, that can steady our faltering steps on the path of life. I would not begrudge anyone their mindfulness practice, no matter what form it takes.

When I read about mindfulness in the business world, though, I’m left with uneasy questions. Apparently, I’m not the only one. In their review of ...

Read More Source

February 25th, 2015

In Philosophy

No Comments

Are polyhedra of equal volume equidecomposable?

Interesting:

Just as any pair of polygons of equal area can be decomposed and reassembled into the same square, can any pair of polyhedra of equal volume be decomposed and reassembled into the same cube? Are polyhedra of equal volume equidecomposable? Are they equicomplementable?

By the end of the nineteenth century there were several examples of equalvolume polyhedra that were both equidecomposable and equicomplementable, but there was no general solution. One simple example is prisms with the same height and equal area ...

Read More Source

February 22nd, 2015

In Philosophy

No Comments

Online bullying intensifies the attacks against women

Interesting:

It’s a point that I’ve been making for much of the last year about women in tech and Silicon Valley. We are in a strange place where there is both more opportunity for women than ever before, but also more disgusting and overt hate, whether it’s from anonymous trolls or senior executives and founders of the largest most powerful companies in the Valley. Worse are the excuses the industry makes for those in power, whether they’re justifications that being ...

Read More Source

February 21st, 2015

In Philosophy

No Comments

Communism and corporatism are the same

This is interesting:

Following publication of the Short Course, which gave the author as “A commission of the ACP(b) Central Committee,” Stalin explained: “We were presented with … a draft text and we fundamentally revised it.” The Soviet leader’s deployment of the “royal we” suggests that he suffered from what Koestler called the “shamefacedness about the first person singular which the Party had inculcated in its disciples.” (Once a young department head—and Stalin’s future son-in-law—dared to speak for the party ...

Read More Source

February 20th, 2015

In Technology

No Comments

Strings in Python have the wrong number of bytes

It’s an interesting dive into bytes and strings:

The width of a Unicode string differs from the number of characters in it. Fortunately, we can use the POSIX standard function wcswidth to calculate the display width of a Unicode string. We can use this function to rebuild our basic formatting functionality.

Source

February 18th, 2015

In Business

No Comments

8,000 computer programmers at General Motors?

They make it sound like they need 8,000 programmers to run a website. Even Google doesn’t have that many engineers. I sure hope that the reporter got the story wrong. Otherwise this sounds like waste on a staggering scale.

Two years ago, Chief Information Officer Randy Mott ended GM’s $3 billion a year outsourcing deal with Hewlett-Packard Co. , replacing it and others with about 8,000 GM software engineers, up from 1,400 previously. “Because we brought the [information technology] work ...

Read More Source

February 18th, 2015

In Technology

No Comments

If we sample from a population using a sufficiently large sample size, the mean of the samples will be normally distributed

Interesting:

Suppose that we are interested in estimating the average height among all people. Collecting data for every person in the world is impractical, bordering on impossible. While we can’t obtain a height measurement from everyone in the population, we can still sample some people. The question now becomes, what can we say about the average height of the entire population given a single sample.

The Central Limit Theorem addresses this question exactly. Formally, it states that if we sample from ...

Read More Source

February 18th, 2015

In Technology

No Comments

All GUI toolkits are old

Interesting:

Cocoa is from the 1980s. Qt is from 1991. MFC is from 1992, building upon older technology. AWT is from 1995. Swing is from 1996. GTK+ is from 1997. SWT and wxWidgets just build upon these old toolkits. Windows Forms is maybe the newest, from the early 2000s.

There hasn’t been a widely used UI toolkit created in the past decade, if not longer. The best we’ve seen since then are half-assed UIs built using HTML/CSS/JS, and limited mobile UIs ...

Read More Source

February 18th, 2015

In Technology

No Comments

How to pull in patches from foreign repos

Interesting:

GitHub provides a special pulls remote “namespace” on the upstream repo, so you can add it as a fetch pattern to your .git/config like so:

[remote "upstream"] url = https://github.com/neovim/neovim.git fetch = +refs/heads/*:refs/remotes/upstream/* fetch = +refs/pull/*/head:refs/pull/upstream/*

Then when you `git fetch –all`, you will have ALL pull requests available in your local repo in the local pull/ namespace. To check out PR ...

Read More Source

February 17th, 2015

In Philosophy

No Comments

Odious behavior from George Washington

Gross and disgusting behavior from the First President. Maybe he wasn’t the rapist that Jefferson was, but Washington was still gross.

The act began dismantling slavery, eventually releasing people from bondage after their 28th birthdays. Under the law, any slave who entered Pennsylvania with an owner and lived in the state for longer than six months would be set free automatically. This presented a problem for the new president.

Washington developed a canny strategy that would protect his property and allow ...

Read More Source

February 16th, 2015

In Business

No Comments

A very bad awful way to ask for help with your startup

Because I have posted my cell phone number on my website, random strangers often reach out to me for advice about their startup ideas. 99% of the time they are very innocent and inexperienced, so I have no desire to work with them, but I am usually happy to give advice. Some of them seem reasonably smart, and others seem utterly clueless.

Last night at 2:30 AM someone started text me. This was our conversation:

THEM: Hi there. I found your ...

Read More Source

February 15th, 2015

In Philosophy

No Comments

Sleep paralysis is heredity?

I sometimes get sleep paralysis, so I find this surprising. Neither of my parents had sleep paralysis, so I wonder how far back it goes?

Sleep paralysis often occurs during the rapid eye movement (REM) stage of sleep, when people are usually dreaming. In REM, the muscles are nearly paralyzed — possibly to prevent people from acting out their dreams, scientists say. Some people who suffer from sleep paralysis experience hallucinations of a terrifying figure pressing down on them and ...

Read More Source

February 14th, 2015

In Business

No Comments

Being extorted by a non-profit

I think the word “negging” came from the world of pickup artists (PUAs) but now is just a general tactic for being awful to people:

So I just got a call from a guy claiming to be the director of Software in the Public Interest. Which I guess is a non-profit organization. But it felt like a really aggressive sales call. He started off with some very heavy negging and I was just trying to get him to explain what ...

Read More Source

February 14th, 2015

In Business

No Comments

Premature deindustrialisation in the developing world

Interesting:

As developed economies have substituted away from manufacturing towards services, so too have developing countries – to an even greater extent. Such sectoral change may be premature for economies that never fully industrialised in the first place. This column presents evidence that countries with smaller manufacturing sectors substitute away from manufacturing to a larger extent, suggesting a trade channel through which falling international relative prices of manufacturing lead price-taking developing economies to substitute accordingly.

Mention ‘deindustrialisation’ and the image comes to ...

Read More Source

February 14th, 2015

In Business

No Comments

A successful movie

Apparently the movie 50 Shades Of Grey is a huge success on its opening weekend. That must be because of reviews like this:

A movie based on one of the worst books in the history of the English language ought to change a hell of a lot if it wants any hope of being a movie that doesn’t top next year’s Razzie Award list. If the film’s directors and editors and producers hadn’t omitted certain scenes, the film would play like ...

Read More Source

February 13th, 2015

In Philosophy

No Comments

革命的非モテ同盟

Kind of sort of hilarious, but sort of sad:

On February 14th, Kakumei-teki himote doumei (革命的非モテ同盟) — literally, “Revolutionary Alliance of Men That Woman Are Not Attracted To”– will gather in Shibuya, an area of Tokyo popular with young couples, to protest Valentine’s Day and its roots in what they call “romantic capitalist oppression.”

Source

February 12th, 2015

In Business

No Comments

Why self publish?

Interesting:

In terms of why I self-published, there are a handful of reasons, but the two main ones were this:

1) I wanted more creative control over the entire process: what I was writing, how it was presented to the market, and so forth.

2) I wanted a greater royalty share.

In terms of how it’s going, it’s going way better than my wildest predictions. I’m a spreadsheet kind of girl, so I can actually look at my wildest predictions, and yes, they were ...

Read More Source

February 12th, 2015

In Technology

No Comments

Women learning Python

Interesting. Poland is on the list more than any other country. Why is that?

Source

February 12th, 2015

In Business

No Comments

A family’s story of life in the video game industry

This is emotionally intense:

My husband has worked in the video game industry for just about 14 years. It was always his dream to make video games, and it was a goal he’s worked towards since he began learning to program at 12 years old. One day on a whim, he applied to a major console game developer, and three weeks later our family of five was moving to California.

The company my husband was working for was really great. The benefits ...

Read More Source

February 12th, 2015

In Business

No Comments

When Paul Krugman stepped outside this morning

This is good:

There are actually multiple revelations in that article. For one thing, it attacks not just QE2, which was about to commence, but QE1 — the Fed’s intervention during the chaotic post-Lehman period — which is generally considered to have been quite effective. Their evidence to the contrary? “QE1 failed to strengthen the economy, which has remained in a high-unemployment, low-growth slump.” Also, when I stepped outside this morning, it was cold, so I put on a coat — ...

Read More Source

February 11th, 2015

In Philosophy

No Comments

Drinking water in the Middle Ages

Interesting:

People in the time certainly knew the difference between bad and good water. Pliny, in discussing drinking water, says: “It is a fault also in water, not only to have a bad smell, but to have any flavour at all, even though it be a flavour pleasant and agreeable in itself…. Speaking in general terms, water, to be wholesome, should have neither taste nor smell.”. Centuries later, Paulus Aeginata (seventh c.) wrote: “of all things water is of most ...

Read More Source

February 11th, 2015

In Philosophy

No Comments

The growing importance of doulas during birth

Interesting:

Doulas are a growing force in the ever-changing culture of maternity, at once a manifestation of the growing demand for personal service (the doorman, the yoga teacher, Amazon Prime) and a backlash against the perceived overmedicalization of birth, with its high rates of cesarean sections.

But because of resistance from the medical profession and lack of insurance reimbursement, they are still a small part of the system. A recent report estimated that there are as many as 400 doulas working ...

Read More Source

February 10th, 2015

In Philosophy

No Comments

How to think about your exercise regime

Interesting:

Let’s clarify something: When I say lazy, I’m not talking about physical laziness. In fact, I encourage trainees to do the minimum amount required for results. This might mean taking the elevator if you hate stairs.

When I say failure, I am not talking about setbacks. On your fitness journey, you will have continuous setbacks, like an accidental binge or feeling too unmotivated to go to the gym. That’s okay. By “failure,” I mean it in the sense of throwing in ...

Read More Source

February 10th, 2015

In Philosophy

No Comments

The Compulsory Vaccination Act of 1853

Interesting:

At the time, there existed no obligation to vaccinate in England. Physicians and health reformers encouraged vaccination and, in 1840, successfully convinced Parliament to make the shot free of charge. But the public continued to spin fears about the vaccine’s effects, and in doing so, continued to catch smallpox. It became increasingly clear that simply suggesting vaccination to the public was not enough.

In 1853, those same reformers convinced lawmakers that “smallpox posed a serious danger to the national community,” and ...

Read More Source

February 9th, 2015

In Technology

No Comments

Is this dependency injection?

Interesting. Assume a Python system that works like this:

###################################################################### ## ## DEMO ## ######################################################################

# ——————————————————————————— # Some python module defines a Bar component and states the dependencies # We will assume that # – Console denotes an object with a method WriteLine(string) # – AppTitle denotes a string that represents the current application name # – CurrentUser denotes a string that represents the current user name #

class Bar(Component): con = RequiredFeature(‘Console’, HasMethods(‘WriteLine’)) title = RequiredFeature(‘AppTitle’, IsInstanceOf(str)) user = RequiredFeature(‘CurrentUser’, IsInstanceOf(str)) ...

Read More Source

February 9th, 2015

In Technology

No Comments

How should we separate HTML from its content?

Interesting:

The framework of the future should make us think only about the data and only about the markup. Nothing in between. We don’t want to deal with loading HTML strings or passing data to special functions. We want to apply values to variables and get the DOM updated. The popular two-way data binding should not be a feature, but a must-have core functionality.

In fact, AngularJS is close to the desired behavior. It reads the template from the provided page’s ...

Read More Source

February 9th, 2015

In Technology

No Comments

Managing dependencies in Javascript

All this work just to avoid calling “new”? This should be read as a criticism of the object oriented paradigm. Interesting:

AngularJS goes a little bit further by giving us something called factory. We register our dependencies there, and they are magically available in our controllers. For example:

myModule.factory(‘greeter’, function($window) { return { ‘greet’: function(text) { alert(text); } }; }); function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet(‘Hello World’); }; } In general, this approach simplifies our job. We don’t have to use a function like require to fetch the dependency. All we ...

Read More Source

February 9th, 2015

In Philosophy

No Comments

Um

Interesting:

Liberman has been studying these so-called “filled pauses” for almost a decade, and he has made a rather curious discovery.

“As Americans get older, they use ‘uh’ more,” he says. “And at every age, men use ‘uh’ more than women.”

If you look at “um”, exactly the opposite is true. Younger people say “um” more often than older people. And no matter the age, women say “um” more than men. Nobody, not even the linguists, were expecting this result; until they studied ...

Read More Source

February 9th, 2015

In Technology

No Comments

How to maintain software?

Karolina Szczur writes about frontend systems we can maintain:

Practices are often built without targeting the crucial aspect of collaboration—the human factor.

The secret lies in understanding of good patterns and mindfully applying them (and we’ve elaborated on that a little bit here).

A starting point for building up effective collaboration is to create resources than can serve as learning and reference materials. One of the ways to do so is to have a style guide (see Github, MailChimp, The Guardian and A ...

Read More Source

February 9th, 2015

In Technology

No Comments

This is not fun anymore

I have had 2 good friends of mine, both working as frontenders for many years, tell me that the work is not as fun as it used to be. 10 years ago, or even 5 years ago, working on the frontend meant doing creative worked that intermingled artistic design concerns and some technical cleverness for making the design real. But over the last 3 or 4 years, with the rise of the pure Javascript frontends, being a frontender has increasingly ...

Read More Source

February 9th, 2015

In Technology

No Comments

Possible new Javascripts

Such a wealth of options indicates the industry is feeling real pain, and no one knows what the solution is:

* SoundScript (Google) * SaneScript (Google) * TypeScript (Microsoft) * ECMAScript 4 (Dead) * AtScript (Google) * Flow (Facebook) * Closure Compiler Strict Mode (Google) * Asm.js (Mozilla) * Dart (Google) * ...

Read More Source

February 9th, 2015

In Technology

No Comments

Goals of Kythe

Interesting. How to get different tools to work together, via some common specification? This sounds a bit like a new approach to the problems that the industry failed to solve 10 years ago with the insane WebServices approach.

The best way to view Kythe is as a “hub” for connecting tools for various languages, clients and build systems. By defining language-agnostic protocols and data formats for representing, accessing and querying source code information as data, Kythe allows language analysis and ...

Read More Source

February 9th, 2015

In Technology

No Comments

Gradual typing for Javascript

Here is an interesting proposal that goes beyond what TypeScript does for Javascript:

Source

February 9th, 2015

In Technology

No Comments

A standardized ontology of Javascript types?

Interesting. This reminds me of the effort 10 years ago to develop standardizes ontologies for XML or RDF.

interface VimeoParams { name:string; value:any; } interface VimeoPlayerAPI { (method: string): any; (method: string, callback: (value: any, player_id: any) =>void ): any; (method: string, value: any): any; (method: string, value: VimeoParams[]): any; } interface VimeoPlayer { api: VimeoPlayerAPI; addEvent(eventName: string, callback: (e: any) =>void ): any; removeEvent(eventName: string): void; postMessage(method: string, params:VimeoParams[], ...

Read More Source

February 9th, 2015

In Technology

No Comments

The spread of gradual/optional typing

Typesafe brings gradual/optional typing to Javascript:

Type annotations in TypeScript are lightweight ways to record the intended contract of the function or variable. In this case, we intend the greeter function to be called with a single string parameter. We can try changing the call greeter to pass an array instead:

function greeter(person: string) { return “Hello, ” + person; }

var user = [0, 1, 2];

document.body.innerHTML = greeter(user);

Open in Playground Re-compiling, you’ll now see an error:

greeter.ts(7,26): Supplied parameters do not ...

Read More Source

February 9th, 2015

In Technology

No Comments

400,000 lines of CSS at Etsy

Wow:

When Etsy announces their switch to SCSS to make their styles more maintainable the finding should not be “SASS beats CSS”, but it would be interesting to learn what lead to over 400,000 lines of CSS in over 2000 files for an actually not that complex site in the first place. The article is very interesting and shows some great differences in people dealing with code:

CSS enthusiasts love the fact that CSS doesn’t stop executing when it encounters errors — it ...

Read More Source

February 9th, 2015

In Business

No Comments

Most USA companies have too many meetings

Every company I have worked at has had too many meetings, with too many people in the meetings. You can tell too many people are in the meetings because if you look around the room you can see that most people are bored, most have started to daydream, some are texting on their phones. As I see it, if you are manager, all your interactions are of 1 of 2 types:

1.) You need to talk to a human being, either ...

Read More Source

February 9th, 2015

In Technology

No Comments

Javascript should not be used for everything

Interesting:

One of the great things about JavaScript is that you can do everything with it: you can do computations, you can create HTML, you can dynamically style elements, you can manipulate images, play and create music, video, and nowadays do all the HTTP work of an app, too. JavaScript is not only the leatherman of the client-side web any longer, it now took over the server, too.

That is also one of the terrible things about JavaScript. Just because you can ...

Read More Source

February 9th, 2015

In Business

No Comments

What left parties mean for Europe

Interesting:

I’ve long believed that Matthew Yglesias hit on something really important when he noted that small-country politicians generally have personal incentives to go along with troika demands even if they are against their nation’s interests:

Normally you would think that a national prime minister’s best option is to try to do the stuff that’s likely to get him re-elected. No matter how bleak the outlook, this is your dominant strategy. But in the era of globalization and EU-ification, I think ...

Read More Source

February 9th, 2015

In Philosophy

No Comments

The assumption that programmers are men

Julia Evans calls out some comments on her blog that assume she is a man:

When this happens, when people implicitly assume that a Technical Thing On The Internet must be written by a man, I find it confusing. I didn’t grow up with the idea that I was worse at math or programming than the men around me (because, well, I wasn’t!) And I didn’t grow up with the idea that it was weird for me to write programs ...

Read More Source

February 9th, 2015

In Technology

No Comments

The 4 levels of bugs

Interesting:

So it seems like there are a few different levels of bug difficulty:

It’s immediately obvious to you what’s wrong

You Google the exception, read some documentation or Stack Overflow, and then it’s immediately obvious what’s wrong

You don’t know what’s wrong, but you know more or less where in the (open source) library code you’re using to look, and you can read the code to figure it out

You’re missing some bigger-picture of knowledge about the code you’re running that you need ...

Read More Source

February 8th, 2015

In Technology

No Comments

ElasticSearch is amazing

We are suddenly drowning in a wealth of options when it comes to document stores. 5 years ago the default choice would have been MongoDB. But Riak is amazing, and ElasticSearch is amazing. Honestly, I don’t know how I’ll make a choice between these 3 in the future.

For making dashboards, the ELK stack is a powerful option:

We have followed the evolution of Elasticsearch from a search-specific platform to one whose power can also be leveraged for analytics. The ...

Read More Source

February 8th, 2015

In Technology

No Comments

The benefits of testosterone

Interesting:

So he went to Cenegenics, a medical start-up that trains physicians to run their own “age management” practices. They updated his diet, put him on a new workout regimen, and started giving him testosterone. Within six months, his body fat was down to nine percent. “That’s pretty hard to maintain—I’m closer to 12 percent now,” he humblebrags. After his personal success, Cenegenics asked if he’d like to take their training course, so he did, and quickly, he found himself ...

Read More Source

February 8th, 2015

In Technology

No Comments

Does denormalization make a linked list better?

Obviously you wouldn’t typically use the word “denormalize” when you are talking about a linked list. “Denormalize” means you are allowing a database table to accumulate redundant data. The best reason to denormalize a database is that it speeds up your software. If you embed all the records you want in one database table, then you can all the info you need with 1 query. It’s like doing a JOIN statement, but instead of doing the JOIN at the time ...

Read More Source

February 8th, 2015

In Philosophy

No Comments

Problems with the schools in the USA

There is this:

My Son just recently graduated High School and now is in his first year of college for dual major in Aviation Science (to be an air traffic controller) and Business. His high school (Valhalla High School in El Cajon California) gave him a test to determine his aptitude that said he should go into “building maintenance” (being a Janitor more or less) and wouldn’t move up his classes to more difficult ones so he was in classes with ...

Read More Source

February 8th, 2015

In Business

No Comments

How not to do a BSDM movie

The press tour for 50 Shades Of Grey is a disaster:

Because 50 Shades of Grey is a sex movie, Dakota Johnson and Jamie Dornan have routinely been asked about sex. Because Dakota Johnson and Jamie Dornan seem to dislike at least this specific sort of sex (fake sex, with a person they hate, in a movie they made for a job they regret), they routinely display discomfort (ranging from wide-eyed confusion to intense aversion) when talking about sex, in ...

Read More Source

February 8th, 2015

In Philosophy

No Comments

Good British manners at a brothel

A British woman, with good manners, goes to a brothel in Nevada to get a naked massage. This bit of dialogue is priceless:

“Now. Would you like a little tongue action on those nipples?” she asked.

“If it’s no bother,” started my very English reply, “yes please.”

From Vice.

Source

February 8th, 2015

In Technology

No Comments

Azithromycin and mitochondrial biogenisis

Interesting:

The effects of a variety of oxazolidinones, with different antibacterial potencies, including linezolid, on mitochondrial protein synthesis were determined in intact mitochondria isolated from rat heart and liver and rabbit heart and bone marrow. The results demonstrate that a general feature of the oxazolidinone class of antibiotics is the inhibition of mammalian mitochondrial protein synthesis. Inhibition was similar in mitochondria from all tissues studied. Further, oxazolidinones that were very potent as antibiotics were uniformly potent in inhibiting mitochondrial protein ...

Read More Source

February 8th, 2015

In Technology

No Comments

Can antibiotics kill cancer?

Interesting:

Here, we propose a new strategy for the treatment of early cancerous lesions and advanced metastatic disease, via the selective targeting of cancer stem cells (CSCs), a.k.a., tumor-initiating cells (TICs). We searched for a global phenotypic characteristic that was highly conserved among cancer stem cells, across multiple tumor types, to provide a mutation-independent approach to cancer therapy. This would allow us to target cancer stem cells, effectively treating cancer as a single disease of “stemness”, independently of the tumor tissue ...

Read More Source

February 7th, 2015

In Technology

No Comments

The perfect Javascript framework

Interesting:

We all like simple tools. Complexity kills. It makes our work difficult and gives us much steeper learning curve. Programmers need to know how things work. Otherwise, they feel insecure. If we work with a complex system, then we have a big gap between “I am using it” and “I know how it works”. For example, code like this hides complexity:

var page = Framework.createPage({ ‘type’: ‘home’, ‘visible’: true });

Let’s say that this is a real framework. Behind the scenes, createPage generates a ...

Read More Source

February 7th, 2015

In Business

No Comments

The problems in Europe

This is very good:

“Third, it makes no sense to blame the recipients of the capital inflows for causing the crisis. If enough money is sloshing around willing to invest in any stupid idea, you shouldn’t be too surprised that a lot of stupid ideas get funded. When, for example, Wolfgang Schaeuble, Germany’s finance minister, says: “The reasons for Greece’s problems can be attributable only to Greece and not to actors outside the country, and certainly not in Germany.” As he ...

Read More Source

January 30th, 2015

In Philosophy

No Comments

Do you think mothers play an important role during birth?

If I asked you “Do you think mothers are important to birth?” you would probably regard that as a stupid question, and you would regard it as a stupid question because the answer seems so blindingly obvious. And, indeed, you would probably agree that mothers play an important role during birth, unless you happen to be in charge of the USA medical system, in which case mothers are the last thing that you ever worry about. This says it well: ...

Read More Source

January 29th, 2015

In Technology

No Comments

Using gulp-diff to discover which of your Javascript won’t minify

I am astounded that the tech industry thinks this is a problem worth having. Do we really need any more evidence that HTTP and HTML and Javascript have failed and should be replaced with a new protocol?

Unfortunately, this is a generic problem with minifying code in JavaScript. Because JavaScript is untyped, it is easy to introduce errors in minification like this when variable names are counted on not changing. I personally think programming like this is an ...

Read More Source

January 29th, 2015

In Technology

No Comments

When is dependency injection a bad thing?

Interesting:

Basically, dependency injection makes some (usually but not always valid) assumptions about the nature of your objects. If those are wrong, DI may not be the best solution:

First, most basically, DI assumes that tight coupling of object implementations is ALWAYS bad. This is the essence of the Dependency Inversion Principle: “a dependency should never be made upon a concretion; only upon an abstraction”.

This closes the dependent object to change based on a change to the concrete implementation; a class depending ...

Read More Source

January 28th, 2015

In Technology

No Comments

Immutability changes everything, part CXXVIII

Interesting:

If I had to give a single reason to use Clojure, it would be this: immutability is awesome. It protects you from yourself in ways that aren’t immediately obvious at first, but become more apparent over time.

The argument that follows is particularly catered to the world of web development, but remains applicable in other contexts as well.

In short: application state is a source of complexity, and unwarranted complexity is a developer’s worst enemy. This is true on the basic level ...

Read More Source

January 26th, 2015

In Philosophy

No Comments

Groupon is not a joke

I went to lunch today with some folks who work at Second Life. It was kind of amazing to remember that Second Life still exists, and people still log in there. (And likewise, MySpace still exists.) Alot of forgotten companies keep going, and apparently Groupon is doing fairly well:

But it didn’t take long for the wheels to fall off: By June 2012, the company was valued below Google’s proposed acquisition price. The following March, founding CEO Andrew Mason was ...

Read More Source

January 26th, 2015

In Philosophy

No Comments

Depression and sex

Interesting:

You’re probably not a doctor. Even if you are, you are not your reader’s doctor. You should at no point be doling out medical advice. You should not be offering diagnoses and the phrase “talk to your doctor” should come into play. And please, for the love of god, do not tell people which medications they should or should not be taking. I keep hearing “why don’t you just take______?” in relation to Orgasm Quest and, it’s incredibly inappropriate ...

Read More Source

January 26th, 2015

In Philosophy

No Comments

A girl gets propositioned

Interesting story over at Vice:

So after dinner, he drove me home, and then just handed me £500 in cash. I clearly looked very confused, and insulted, and he just said, “Oooh, you haven’t done this kind of thing before?” Of course, I jumped to conclusions and was like, “I’m not going to have sex with you!” And I actually gave the cash back to him. But he just said, “Look, I’m not delusional—you’re a smart, pretty, young girl. ...

Read More Source

January 22nd, 2015

In Technology

No Comments

How do you enforce the integrity of your system?

I had a long conversation today with a very smart engineer. We have different views about things such as types and immutable data. It occurred to me that, in some sense, we both want the same thing: some sort of integrity check for our systems. And yet, we prefer to put these constraints in different places. His preferences:

1.) the dependency injector loads things in an order that ensures correctness

2.) the database does some (but not all) integrity checks (they ...

Read More Source

January 19th, 2015

In Technology

No Comments

The unnecessary complexity of Ruby

Interesting:

Some imported code could be modifying methods on built-in classes. You can never be sure exactly what will happen when this Ruby code executes.

He’s right about that. “Readable” isn’t the word I’d use though: Ruby isn’t “reason-aboutable.” You can’t be completely sure what it’s going to do without running it. (No wonder Rubyists are such good testers.)

Tom agreed that Ruby could be good at expressing the intent of the programmer. This is a different goal from knowing exactly how it ...

Read More Source

January 19th, 2015

In Technology

No Comments

The flexibility (and ease of debugging) of optional types in Clojure

Jessica Kerr has a post about optional typing in Clojure. This is related to my post How ignorant am I, and how do I formally specify that in my code? Obviously I agree with this:

It’s hard to find the difference because the difference isn’t content: it’s type. I expected a vector of a map, and got a list of a vector of a map. Joy.

I went back and added a few schemas to my functions, and the error changed to

...

Read More Source

January 19th, 2015

In Philosophy

No Comments

How much should gender figure in a story about women fighting in Afghanistan?

Interesting:

Percy sets the stage with what might be called “disarming candor.” A mere three weeks after arriving in Afghanistan, she hears about this woman who runs a militia, sees a photo of her, and boom, we’re off to see the warlord–in Percy’s foggy notion, Mistuh Kurtz in a chador:

“I’d been living in Afghanistan three weeks when my guide…showed me a photograph of the country’s only known female warlord, Bibi Ayisha, nom de guerre Commander Pigeon…In the photograph, she looked ...

Read More Source

January 18th, 2015

In Philosophy

No Comments

Stuff I do when I am burned out

I’ve noticed these are the things I do when I am depressed and burned out:

1.) read newspapers

2.) watch television

3.) watch movies on/from Netflix

4.) read weblogs

5.) read novels or history books

6.) sleep

If I am very depressed and burned out:

7.) post comments on websites, in response to things I’ve read

When I had my own business, 2002-2008, I was so excited about my work that I rarely did any of the above. I recall, at one point, I went 6 months without ...

Read More Source

January 18th, 2015

In Business

No Comments

Jimmy Carter deregulated venture capital

Interesting:

Money had been pouring into venture capital since a 1978 change in regulations allowed pension funds to consider it a “prudent” investment. The $2.5 billion managed by venture capital firms in 1977 quintupled by 1983 to $12 billion2. New money committed per year rose 16x over five years, from $218 million in 1978 to $3.6 billion in 19833. The number of venture funds grew from 47 in 1980, to 71 in 1982, to 113 in 1983. The number of investment ...

Read More Source

January 18th, 2015

In Philosophy

No Comments

Why men love war

Interesting:

War is an escape from the everyday into a special world where the bonds that hold us to our duties in daily life–the bonds of family, community, work, disappear. In war, all bets are off. It’s the frontier beyond the last settlement, it’s Las Vegas. The men who do well in peace do not necessarily do well at war, while those who were misfits and failures may find themselves touched with fire. U. S. Grant, selling firewood on the streets ...

Read More Source

January 18th, 2015

In Business

No Comments

Constraining competition

Interesting:

Yet another threat to start-ups comes from state legislatures, in the form of increasingly cumbersome employment regulations. Historically, technical workers such as mechanics and engineers moved freely from job to job, spreading new technologies across the industry. Today, however, a variety of regulations limit that mobility. Some states—Florida and Massachusetts, for instance—have made it easy for employers to enforce noncompete agreements, which prohibit employees from leaving one company to join or start another in the same industry. According to research ...

Read More Source

January 18th, 2015

In Philosophy

No Comments

The heyday of the Romans ended with a crash

The Classical World hit its peak fairly early. For Greek science, the peak was from 300 BC to 150 BC, mostly in Alexandria. The system was in trouble from 88 BC on, with occasional revivals. Somehow the system in the West lasted until 415 BC. It was very long collapse, from a good era much earlier:

Dr Philip Kay of Wolfson College Oxford has produced the most detailed analysis of Rome’s economic development in the late Republic period and this ...

Read More Source

January 18th, 2015

In Philosophy

No Comments

The unique suffering of being rich

This:

Michael M. Thomas, a former investment banker and a novelist of Wall Street manners, said that if he were ever to write a book about his own privileged upbringing, he would title it “Orphans With Parents.” Meaning that despite the private clubs, the best schools and all the many things that money can buy, there has always been for those born into this world a sense of acute loneliness that can strain ties with parents and mark a child forever.

is ...

Read More Source

January 18th, 2015

In Business

No Comments

The Hemingway Law of Motion: Gradually, then Suddenly

Perhaps because I read Hemingway long before I heard of Dornbusch, I have often thought of the Hemmingway quote, every time I hear of the Dornbusch quote.

Ernest Hemingway’s 1926 novel The Sun Also Rises, which is available various places around the web like here, includes the following snippet of dialogue:

“How did you go bankrupt?” Bill asked.

“Two ways,” Mike said. “Gradually and then suddenly.”

Many economists will recognize this as a version of an apercu offered a number of times over ...

Read More Source

January 16th, 2015

In Technology

No Comments

Use an obvious alias to teach newcomers about a language

I like this comment very much, as this is something that I remember struggling with:

The examples are fairly easy to follow. Many of the examples use `require` to alias dependent namespaces. I think this is key when presenting Clojure examples. Having to prefix calls to library functions causes them to stand out from uses of core Clojure functions. It also lets readers know from which library each function comes from. I would have liked to see all of the examples ...

Read More Source

January 15th, 2015

In Technology

No Comments

Why I love immutability

I love Clojure. I love immutability. Why? Maybe I lack self-discipline, or maybe my co-workers lack self-discipline (not my current co-workers, who are very talented, but people I’ve worked with in the past). I am tired of dealing with mutable variables in loops, which allow us to many easy mistakes like this:

howMuchPrizeMoney = 0; arrayOfMoneyPerCategory =[]; for (i=0; i < users.length; i++) { u = users[i]; howMuchPrizeMoney += u.prize_money; } for (i=0; i < contests.length; i++) { ...
Read More Source

January 14th, 2015

In Technology

No Comments

Basecamp caches HTML to go fast

Interesting:

Stacker can only make things appear so fast. If actions still take 500ms to render, it’s not going to have that ultra snappy feel that Basecamp Next does. To get that sensation, your requests need to take less than 100ms. Once our caches are warm, many of our requests take less than 50ms and some even less than 20ms.

The only way we can get complex pages to take less than 50ms is to make liberal use of caching. We ...

Read More Source

January 14th, 2015

In Technology

No Comments

Async difference between blocking and parking

Interesting:

There are two varieties of waiting: parking and blocking. Blocking is the kind of waiting you’re familiar with: a thread stops execution until a task is complete. Usually this happens when you’re performing some kind of I/O. This kind of waiting keeps the thread alive, doing no work, so that if you want your program to continue doing work you have to create a new thread. In the last chapter, you learned how to do this with future.

Parking moves the ...

Read More Source

January 14th, 2015

In Technology

No Comments

A Pythonista reacts to Clojure’s immutability

Interesting:

Although the functional language purists will have other criteria (functions as first class values (python is already fine on this count)) the functional programming ethos is what is of interest to me: the idea of describing data transformations and piping the data through these transformations. Thats the essential, practical take-home message of functional programming and reproducibility. In pursuing these goals, we see the incorporation of some great libraries for R that allow piping and laziness, facilitating the easy composition of ...

Read More Source

January 14th, 2015

In Technology

No Comments

Maintain acceptance test suites

Very interesting notes from Jakub Holý

How to Create Maintainable Acc. T. Suites

Good acceptance criteria (“INVEST” – especially valuable to users, testable) Layered implementation: Acceptance criteria (Given/When/Then) – as xUnit tests or with Concordion/FitNesse/… Test implementation – it’s crucial that they use a (business) domain-specific language (DSL), no direct relation to UI/API, which would make it brittle Application driver layer – translates the DSL to interactions with the API/UI, extracts and returns results Take care to keep test implementation efficient and well factored, especially wrt. ...

Read More Source

January 14th, 2015

In Technology

No Comments

How to set up project.clj for a Clojure project

This looks great:

Some development tools, such as lein-test-refresh, are useful to have across most of your Clojure projects. Rather nicely, Leiningen supports adding global profiles to ~/.lein/profiles.clj. These profiles are available in all your projects.

{:user {:plugin-repositories [["private-plugins" {:url "private repo url"}]] :dependencies [[pjstadig/humane-test-output "0.6.0"]] :injections [(require 'pjstadig.humane-test-output) ...
Read More Source

January 14th, 2015

In Technology

No Comments

Assertions in dynamic languages give you the benefits of static type safety, with less code and ceremony

Interesting:

Well engineered non-trivial systems written in dynamic languages embrace runtime assertions especially near public interfaces. For example here’s a snippet of code from React.js that does exactly that:

_renderValidatedComponent: function() { /* ... */ invariant( renderedComponent === null || renderedComponent === false || ReactElement.isValidElement(renderedComponent), '%s.render(): A valid ReactComponent must be returned. You may have ' + ...
Read More Source

January 13th, 2015

In Technology

No Comments

The Internet Protocol is out of date, can RINA save us?

Interesting:

There is, of course, one clear layer violation that NAT has to deal with, but that’s not NAT’s fault either. Some application protocols put an IP address inside the application layer header. These have to be modified by NAT, so a NAT has to understand the syntax of all of these layer violating applications that it supports. The original application that did this was FTP, going back to the very early ARPANET days. FTP did this because – remember, this was a ...

Read More Source

January 11th, 2015

In Technology

No Comments

Dependency Injection in Python and Javascript

To start with, consider this quote from Martin Fowler writing about Rake:

This is a somewhat skewed story. I’m not trying to write a tutorial on Rake – I’m going to concentrate on things I find interesting rather than give a complete coverage. I’m not going to assume you know Ruby, Rake, or indeed any other build language. I’ll explain relevant bits of Ruby as I go along. Hopefully if you’ve done any messing with these, or are just interested in ...

Read More Source

January 11th, 2015

In Philosophy

No Comments

Encouraging new developers

Interesting:

Let me give an example — say a new coder had somehow, impossibly, in their first month of coding, created an app that would save the planet, plunging us into a permanent state of world peace and 100% clean energy. What’s the first thing that you as a senior developer would say to that person before seeing or testing their project? Let me guess — you’re thinking, “Is it responsive?”

To put this in perspective, someone who knew ...

Read More Source

January 11th, 2015

In Philosophy

No Comments

How should a programmer grow?

Interesting:

Software wants to be a meritocracy, but the sad reality is that effectiveness of an individual programmer depends on the environment. Drop a 1.8+ engineer into a Visitor-infested Java codebase and he turns into a bumbling idiot, in the same way that an incompetent player at a poker table can fluster experts (who may not be familiar with that particular flavor of incompetence). The result of this is that detecting who the good programmers are, especially for a non-programmer ...

Read More Source

January 11th, 2015

In Technology

No Comments

Clojure tessers

Interesting:

Tesser.core looks a lot like the Clojure seq API, and many of its functions have similar names. Their semantics differ, however: Tesser folds do not preserve the order of inputs, and when executed, they run in parallel.

Applying a fold using tesser.core/tesser uses mutiple threads proportional to processor cores. Unlike reducers, we don’t use the Java forkjoin pool, just plain old threads. I’ve seen too many weird performance issues compared to regular threads.

(require '[tesser.core :as t]) (t/tesser [[1 2 3] [4 5 ...
Read More Source

January 9th, 2015

In Technology

No Comments

The dictatorship of the GIL keeps you safe and makes you slow

But in jRuby there is no GIL, so you can go fast, and you can also hurt yourself:

Source

January 8th, 2015

In Philosophy

No Comments

Women in economics

Interesting:

Today, women in economics face a Catch-22, where speaking up can easily make them look like a shrew, while not speaking up robs them of legitimate power. There may be some loopholes in this Catch-22, but women starting out in economics need to be shown the ropes. And with so few senior female professors in economics, who can show a female graduate student how to promote herself gracefully, and break into predominantly male conversations without raising hackles? Somehow, that question ...

Read More Source

January 7th, 2015

In Philosophy

No Comments

The Tracy-Widom distribution

Apparently phase shifts follow a unique distribution:

The Tracy-Widom distribution is an asymmetrical statistical bump, steeper on the left side than the right. Suitably scaled, its summit sits at a telltale value: √2N, the square root of twice the number of variables in the systems that give rise to it and the exact transition point between stability and instability that May calculated for his model ecosystem.

The transition point corresponded to a property of his matrix model called the “largest eigenvalue”: ...

Read More Source