Profile

Cover photo
Rafael Ferreira
Works at Nubank
Attended USP
Lives in São Paulo
307 followers|273,281 views
AboutPostsPhotosYouTube

Stream

Rafael Ferreira

Shared publicly  - 
 
1
Add a comment...

Rafael Ferreira

Shared publicly  - 
 
 
+Klaus Ostermann asked me what's so special about Chez Scheme, which I posted about yesterday (it's now open source). He's certainly not at all the only one to wonder. So let me try to dump my recollection. Others are welcome to pipe in.

Chez had a rare mix of blazing speed with rock-solid engineering, in the context of a language that was almost designed to make it hard to do either, much less both. (Scheme is über sane, and so are continuations in principle, but continuations touch on just about everything in the language and complicate them immensely; and you're working without types.)

Chez started quickly, ran quickly, and exited quickly. It has a minimalistic feel to it that was very consistent with the personality of its creators. Running Chez was like having a conversation with Kent, and Kent is one of the smartest people I've ever met. (I sometimes felt Kent was so understated because he didn't want to blow you away too much. A bit like Matthew Flatt.)

Also, Chez was not only a compiler + run-time system but also a REPL. The REPL is often an afterthought or a hack, but Chez also had a very carefully designed REPL. And the whole thing was devoid of lazy compromises: where other systems might say “Aw, if you want this go here, but if you want that go there”, Chez (rightly) felt was the responsibility of the system, so everything you wanted was available in one place. Why force you to call “the compiler” and generate a binary and what not? You should be able to just run the program from source and get every bit as good an experience, because your development flow is more important than the implementation team's convenience. It's hard to describe but a lot of it was about this “feel” that said, “no compromise!”.

Kent and his team are also fine language designers, and so Chez had some really lovely extensions to Scheme in there. Their design of syntax-case is still a case-study in language work for me. There were other things he and his students designed (multiple values, case-lambda, etc.) that were better than what the Scheme standardization effort came up with (and yet they rejected his designs for reasons I don't know). The team really knew how to balance expressiveness with performance, and managed to come up with solutions that had both.

Finally, for me it was heavily about continuations. In every other Scheme implementation, continuations were either slow, half-implemented (e.g., some cases—whether common or special—would not work by design because of a conscious implementation decision), or buggy, or two or even all three of the above. Kent was totally uncompromising about continuations, so he made sure none of the three occurred. When I decided I wanted to master continuations as a programmer, not just as a concept on paper, this was the only implementation I could truly trust. I pounded and pounded on it for months until I had achieved mastery, and it did not budge in the slightest.

(I actually discovered one or two bugs in Chez at the peak of my usage. It ought to be the top line in my resume. The thing is, when you discover a bug in Chez, you don't gloat; rather, that's how you realize just how hard it is to implement a programming language.)
1 comment on original post
1
Add a comment...

Rafael Ferreira

Shared publicly  - 
 
 
«“All you have to do to make military gobbledygook is to use academic gobbledygook and change the job titles—‘undergraduate’ to ‘lieutenant,’ ‘professor’ to ‘colonel,’ and ‘dean’ to ‘general,’” he explains. “Then throw in words like ‘parameters’ and ‘implement.’ Who can tell the difference? I sure didn’t, and the KGB even less so.”»
Clifford Stoll is currently the sole proprietor and sole employee of Acme Klein Bottles, a business he runs out of his home on Colby Street in North Oakland. One of the quirky company’s many mottoes is, “Where yesterday’s future is here today.”
1 comment on original post
1
Add a comment...

Rafael Ferreira

Shared publicly  - 
 
 
Many people think of religions primarily as systems of belief. I think this may be a skewed view because of the predominance of Christianity and Islam, both of which make creeds prominent. For example, although Judaism does have something like a creed, it tends to place more emphasis on practice than belief.

This reflects my view of mathematics. I think that for many, mathematics is a matter of belief. For them, mathematics is a way to find out what is and isn't true. I tend to see mathematics as a set of practices. As a result, I find myself bemused by debates over whether 2 really exists, or whether infinite sets exist, whether the continuum really is an infinite collection of points, whether infinitesimals exist, whether the axiom of choice is true, and so on. I find some ultrafinitists particularly confusing. They seem to believe themselves to be expressing skepticism of some sort, whereas to me, expressing skepticism about mathematical constructions is a category error. So to me, these ultrafinitists are surprising because of what they believe, not because of what they don't. This doesn't just apply to ultrafinitists. In an essay by Boolos [1], he seems confident in the self-evident truth of the existence of integers, say, but expresses more and more doubt as he considers larger and larger cardinals. Many mathematicians seem to have a scale of believability, and ultrafinitists just draw the scale differently.

Conversations between people who view mathematics (or religion) as being about beliefs, and people who view mathematics (or religion) as being about practices, can often be at cross purposes. And members of one group can often find themselves dragged into debates that they don't care for because of the framing of questions. (I don't want to debate the existence infinite sets, not because I can't justify my beliefs, but because I'm more interested in how to use such sets. I don't think belief is a precondition for use.)

Of course you can't completely separate belief and practice and I certainly do have some mathematical beliefs. For example I put a certain amount of trust in mathematics in my daily job because I believe certain practices will allow me to achieve certain goals.

[1] Must we believe in Set Theory? https://books.google.com/books/about/Logic_Logic_and_Logic.html?id=2BvlvetSrlgC (I hope I'm not mischaracterizing this essay, but even if I am, the point still stands.)
books.google.com - George Boolos was one of the most prominent and influential logician-philosophers of recent times. This collection, nearly all chosen by Boolos himself shor...
11 comments on original post
1
Add a comment...

Rafael Ferreira

Shared publicly  - 
 
 
For a while, TrendMicro Antivirus was running a server on every computer on which it was installed that allowed trivial remote shell execution as well as extraction of all passwords.
View original post
1
Add a comment...

Rafael Ferreira

Shared publicly  - 
 
 
But talented programmers DO exist!

Below is my reply to a reader of Leprechauns, who said they liked the book but thought I was in the wrong on "10x programmers" - they'd actually met one.

It would be silly to deny the existence of talent. And it would be just as silly to lump the world into such broad categories that we couldn't distinguish between concepts as widely separated as "talent" on the one hand, and "productivity" on the other.

Some people are talented. They approach their art with a style which is uniquely and recognizably theirs; part of the trace they leave upon the world is that their art is forever changed after them; everything that follows gets compared to what they did.

Some people are "productive", in the vulgar sense of there being many works attributed to them. (We may prefer the word "prolific" here.)

Some people are talented but not productive: Kubrick comes to mind. Some are productive, and can be called talented, but not everything they did shows the same talent: I'd put Woody Allen in that category. Few shine both long and bright.

There are programmers who are both talented in the above sense, and "productive" in the vulgar sense, that many works can be attributed to them. Fabien Bellard is one example. (Perhaps not all shine as bright as the talented people we can name in other arts, possibly because programming is yet only on its way to becoming a major art: few people study the works of Fabien Bellard in the same way that people study the works of Mozart. Few people, alas, study the work of any programmer - perhaps least of all programmers themselves.)

With all of the above I have no problem.

Where I start having a problem is when the above senses of "talented" or "productive" become lumped in with a second sense of "productive": the sense in which you can measure the productivity of industrial apparatus, or of industrial systems in whole or in part, as in the phrase "the productivity of a worker". We have to decide what we are talking about - industrial economics, or the works of creative individuals.

It would be silly to say that Kubrick is 10x or 2x or 0.5x the filmmaker that Allen is. This is not the sense of "productive" that lends itself to comparison on a numerical scale.

Every time someone points to a "study" supposedly supporting the concept of highly productive programmers, they turn out to be supporting a notion of measuring some equivalent of the number of lines of code written per unit time; that is, the narrowly economic sense of "productivity". This might be a valid construct, but it should not be lumped in together with the other sense in which some talented individuals are "productive" - that is, "prolific".

And lump them together is precisely what "10x programmer" discourse encourages doing. It presupposes that you can hire a talented programmer to work on what you want done, and they will turn out ten times the "amount of work" (fungible work, not individual works) than a run-of-the-mill programmer will.

This is silly, because these talented programmers, if you ask them to work on your thing, will tell you what Kubrick or Allen would have said if you'd asked them to produce a movie on commission. They would have told you, perhaps even politely, to stuff it.

Further, the "10x programmer" concept presupposes that the production of one can be compared to the production of another, on a single scale, in precisely the sense that Kubrick and Allen's works cannot be compared.

This is silly, because a program is not a bunch of lines of code cranked out, machine-like; it is a socio-technical object existing within a broader context. To be valuable it must be used, to be used it must be distributed, users somehow trained, and so on. You can no more numerically compare the contribution of different programmers to different programs that you can numerically compare Nicole Kidman's "productivity" in Eyes Wide Shut to Scarlett Johansson's in Scoop.

I hope this clarifies why I do not feel that acknowledging the existence of talented or prolific individuals is incompatible with my critique of the concept of "10x programmer", and the mythology that has grown around that concept.

I don't feel that dismantling that mythology belittles the work of talented programmers; my inclination would be to magnify that work - by highlighting their creative individuality.
View original post
1
Add a comment...
In his circles
1,283 people
Have him in circles
307 people
Sérgio Lopes's profile photo
Diego Feitosa's profile photo
Criativa Brasilia's profile photo
Elber Ribeiro's profile photo
Ojima Cwb's profile photo
Danny Farias's profile photo
André Gomes's profile photo
Rafael Carvalho's profile photo
Rhari Fritz's profile photo

Rafael Ferreira

Shared publicly  - 
 
 
Many scientific papers take the form:

1. Stuff X happened
2. If hypothesis Y is false then the chances of something as extreme as X (for some definition of extreme) happening is less than p.
3. p is small, therefore it is likely that Y is true.

I'm going to ignore the fact that this isn't a sound argument. (An example of a sound argument might be "if X happened then Y is true with probability p. X happened and p is large. Therefore Y is likely true.)

One problem with the argument in 1, 2 and 3 is that if you try many different things that result in many different Xs you expect to be able to eventually cherry pick a suitable X that can be used to justify Y even if it's unlikely.

Given how obvious this problem is, why has it been getting a lot of attention so recently? I remember talking about this with researchers 30 years ago and nobody seemed to care.
19 comments on original post
1
Add a comment...

Rafael Ferreira

Shared publicly  - 
 
 
I want to do this in a basement renovation SO BADLY.

http://imgur.com/a/vOnt5
View original post
1
Add a comment...

Rafael Ferreira

Shared publicly  - 
 
 
David Bowie, 1947-2016

Even after his death, we're still trying to catch up with his music. What is this strange, scary stuff?

Brian Eno said:

"I received an email from him seven days ago. It was as funny as always, and as surreal, looping through word games and allusions and all the usual stuff we did. It ended with this sentence: 'Thank you for our good times, Brian. they will never rot'. And it was signed 'Dawn'.

I realise now he was saying goodbye."

A fan on YouTube wrote:

You have liver cancer, 18 months left to live, and a net worth of $230 million. How do you spend your last moments? On drugs? Sex? Wild escapades across the world? Maybe you would. Bowie, however, got himself into the recording booth and lent his whole voice rehearsing and recording over and over--shooting scenes and retaking them for videos constantly, despite dying of a fatal and often painful disease. That's Bowie's way of doing it. Giving us--all of us--his last moments.

That is arguably the greatest gift anyone has ever given me.

View original post
1
Add a comment...

Rafael Ferreira

Shared publicly  - 
 
 
You might think that all eye colors are made in the same way – that people with brown, blue, or green eyes have brown, blue, or green pigments somewhere in their irises. But that isn't how it works at all. 

Eye color comes primarily from a layer of the iris called the stroma. It sits in front of the epithelium, a brown layer which reflects and scatters light back through the stroma a second time. In brown-eyed people, the stroma contains melanin and so colors the light brown as it passes through. In blue-eyed people, the stroma is completely transparent – but light gets scattered by tiny particles floating within the stroma, and it acquires a blue color via the Tyndall effect. (Hazel and green eyes sit between these extremes, combining the two colors)

The Tyndall effect is similar to the Rayleigh effect which makes the sky blue. Essentially, when light gets scattered off things, blue light is bent more sharply than red light. When sunlight is bounced off the atmosphere, only the light which was bent the most sharply reaches our eyes (except when you're staring almost directly at the Sun); that means that what we see in the sky is blue light, even though the sky itself is transparent. The Tyndall effect is the same sort of property, when instead of bouncing off the sky, you're bouncing off fine particles suspended in a liquid; it's what makes glass look blue from the side, or flour suspended in water seem blue. 

One interesting side effect of this: unlike the melanin which creates brown colors, the Tyndall effect is based on scattering the light which hits the eye, and so the color it produces depends a lot on the color of surrounding light. This is why lighter-colored eyes, in particular, tend to have hues which vary a lot from day to day, while brown colors remain more fixed.

Grey eyes come from a third phenomenon: some people have excess collagen in their stromata, which prevent the small particles needed to create the Tyndall Effect from floating around freely. Instead, all colors of light get scattered equally, and the resulting light is grey.

So to sum up, there are three mechanisms and two knobs which create eye color: the Tyndall effect makes your eyes blue (unless you have collagen, which replaces blue with grey), and melanin in your stroma adds a brown color on top of that.

h/t +Robby Flannery for the find.

If you want to see more about the Tyndall effect, start here: https://en.wikipedia.org/wiki/Tyndall_effect
Blue eyes don’t contain blue pigments
64 comments on original post
1
Add a comment...
People
In his circles
1,283 people
Have him in circles
307 people
Sérgio Lopes's profile photo
Diego Feitosa's profile photo
Criativa Brasilia's profile photo
Elber Ribeiro's profile photo
Ojima Cwb's profile photo
Danny Farias's profile photo
André Gomes's profile photo
Rafael Carvalho's profile photo
Rhari Fritz's profile photo
Work
Occupation
Programmer,
Employment
  • Nubank
    Senior Software Engineer, 2013 - present
    https://www.nubank.com.br
  • R7.com
    Systems Architect, 2011 - 2013
  • R7.com
    Specialist Software Engineer, 2010 - 2011
  • Caelum
    Programmer,, 2008 - 2010
  • Sun
    2006 - 2008
  • Twic
Places
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Currently
São Paulo
Previously
Curitiba
Links
Contributor to
Story
Tagline
http://rafaelferreira.net
Introduction
Programming language enthusiast and all-around loudmouth.
Education
  • USP
    2003
  • CEFET-PR
  • Jean Piaget
Basic Information
Gender
Male
Other names
Rafael de F. Ferreira, Rafael de França Ferreira