Shared posts

10 Feb 17:50

Cabelo? Curto!

- Tô fazendo o texto de hoje sobre mulheres de cabelo curto. Desembucha!

-  Bem, você ouve homens dizendo que “você era tão linda de cabelo grande…” e mulheres dizendo “que coragem! acho lindo mas os homens preferem cabelão”.

A família põe a sua sexualidade em debate. Minha mãe fica todo tempo checando a roupa que vou sair para ver se estou “feminina” o suficiente.

Mas eu me sinto incrivelmente bem de cabelo curto. Sempre tive um cabelo no padrão por ser liso e tal. Por isso falam que é um desperdício usá-lo curto,

mas enfim, eu nunca o achei bonito o suficiente.

Quando eu tinha uns 10 anos comprei uma chapinha e minha mãe deixou!

Agora tô há quase 2 anos sem usar nadica de nada e nem dou escova.
Logo que cortei, as pessoas teciam comentários e tal. Eu demorava pra entender que era por causa do cabelo.

Essas frases acima são de uma amiga falando - rapidamente, diga-se - sobre como é quando você corta o seu cabelo curtinho, no estilo “Joãozinho”. Por que “Joãozinho”? Porque, obviamente, cabelo curto é coisa de homem.

Mulher tem que ter cabelo grande, lindos e sedosos. Ou não.

Uma das coisas que me incomoda quando se fala de cabelo curto é que “a maioria dos homens preferem cabelos compridos”.

E?

Aliás, o argumento é que “cabelo comprido é feminino”. É nessa horas que eu gosto de invocar a da Sisi (como eu chamo carinhosamente a Simone de Beauvoir) quando ela diz:

“Não acredito que existam qualidades, valores, modos de vida especificamente femininos: seria admitir a existência de uma natureza feminina, quer dizer, aderir a um mito inventado pelos homens para prender as mulheres na sua condição de oprimidas. 

Não se trata para a mulher de se afirmar como mulher, mas de tornarem-se seres humanos na sua integridade.”

Me pergunto o quão é frágil o conceito de masculinidade para precisar de um ícone de feminilidade, teoricamente oposto ao seu, para se manter bem com sua conduta de vida. Cabelo comprido não é mais feminino. É somente cabelo, que por acaso é comprido.

O mesmo vale para homens que usam cabelos compridos. Uma das minhas passagens preferidas do musical Hair é quando um dos hippies se recusa a cortar o cabelo e a psicóloga da prisão pergunta se ele é homossexual. Ele diz que não, que quer apenas usar o seu cabelo longo. Quer a liberdade para usar o cabelo como ele quiser.

“Ah, Diogo, mas hippie não conta. Eles eram sujos e desgrenhandos. Nem se depilavam.”

Olha só, você por aqui, meu comentarista reaça que vive na minha cabeça? Não sabia que você ainda lia meu blog.

Mas, pois bem, que tal então você poder na sua cabeça (sua cabeça que está dentro da minha cabeça… complexo isso, aliás) que tudo isso não passa de uma construção social?

Na década de 20, a moda era o corte Chanel.

No Egito antigo era mais legal ainda. As mulheres raspavam toda a cabeça.

Hoje, uma mulher que corta o cabelo curtinho é considerada “corajosa”, como disse minha amiga. Uma rebelde. Alguém que tem algo de diferente. E daí surgem os questionamentos de “por que ela fez aquilo?”.

“Você queria economizar xampú?”, “você virou bi?”, “ah, mas já já cresce de novo”, “você tá com câncer?”.

Fazendo a pesquisa para esse blog, encontrei um blog de uma mulher que dá dica para outras mulheres, em que ela diz que o “problema” do cabelo “joãozinho” é que aí você ter que estar sempre bem maqueada, porque a pele tem que estar boa, porque realça as espinhas. Oh, o horror.

Curioso quebrar um padrão social e se preocupar com outro, mas enfim.

A primeira grande supermodelo do mundo se chama Twiggy. Nos anos 60, ela surgia com seu visual andrógeno (não curto essa palavra, mas era assim que rotulavam seu visual).

Todo mundo aplaudiu, foi um corre-corre aos salões de beleza e esse corte está aí até hoje (mas pergunte a qualquer cabeleireiro e ele vai comentar sobre diversas garotas que pediram esse corte e choraram depois que viram seus cabelos curtos).

A docinho de magia Emma Watson era proibida de cortar o cabelo enquanto estivesse fazendo parte do elenco de Harry Potter. Depois do último filme ela não só cortou como ficou tchutchuquinha para estrelar o maravilhoso As Vantages de Ser Invisível.

Outro dia, ouvi (ou li) alguém, que eu não lembro agora quem era, fez uma reflexão a esse fato. Por ela ser um ícone para as adolescentes e garotas da atualidade e por ter cortado o cabelo assim, quantas garotas ela não libertou da chapinha, por copiarem esse penteado?

Mas a pergunta que eu deixo aqui é: a quem afeta o fato de uma mulher querer usar o cabelo curto, se não somente a ela? Digo, qual o maior problema? Por que se incomodar por isso?

Você não acha bonito cabelo curto? Ou black power? ou cacheados? ou crespos? ou pelos pelo corpo?

Bem, sabe de quem é o problema com isso? Seu, unicamente seu. Quem está incomodado aqui é você.

Então, talvez - só talvez - o problema não esteja realmente na cabeça das mulheres, não é?

 

 

—————————————————————————

Toda terça e sexta escrevo sobre o que aprendi com as mulheres da minha vida. Não esqueçam de curtir também a page do facebook. Vai ter bastante conteúdo por lá :)  - Só clicar aqui!

28 Jan 15:44

Monogamia, liberdade e feminismo.

                                         

Faz tempo que não falo aqui no blog sobre essa vida louca de amores livres. Talvez quem entrou recentemente por aqui não saiba da minha posição sobre os relacionamentos pelo mundo. Mas vou aproveitar então para falar de como o fato de eu ser um não-monogâmico me ajudou (e ajuda) a entender melhor o feminismo e a qualidade das pessoas enquanto livres.

A começar, existem muitas definições de não-monogamia: relacionamento aberto, poliamor, relações livres, enfim… cada um tem uma característica específica que os diferencia. Na internet dá para achar muito material sobre o tema.

A questão é que a relação com a “família” é um grande delimitador da nossa sociedade em relação aos papeis bem definidos que ela criou para nós.

O que se espera de uma pessoa?

Que cresça, se forme, arrume um emprego, seja bem sucedida, arrume outra pessoa, se case com essa pessoa, tenha filhos com ela e vivam juntos felizes para sempre.

Mas por que que a gente tem que fazer isso mesmo?

Digo, qual benefício maior que isso vai trazer para o mundo de uma forma que se eu, por exemplo, que não sou formado, nunca casei, não tenho filhos e sou solteiro não posso trazer?

Ou melhor, que benefício é esse que não pode ser conseguido se eu me relacionar com duas, três ou quatro pessoas ao mesmo tempo?

image

 

Até que a vontade nos separe.

Por que eu deveria sair da minha vida tranquila estando sozinho para ter como objetivo buscar alguém com quem vou discutir “se o papel higiênico deve ser posto se desenrolando para baixou ou para cima” pro resto da vida?

A resposta para essa pergunta é simples: porque eu quero.

Calma. Não é uma pegadinha. Eu não tenho nada contra casamentos. Só não quero um pra mim por enquanto. E quando eu quiser, poder ser que eu não queira com uma pessoa só.

Quando começamos a entender que as pessoas são indivíduos com vontades próprias, a gente para de se preocupar com o que ela faz com a sua vida ou deixa de fazer.

Dentro de uma relação não-monogâmica há um entendimento da igual liberdade que a outra pessoa tem e a irrelevância da condição de gênero. Deu pra notar a semelhança com o feminismo?

Uma relação 100% livre não há tabus heteronormativos ou de gênero. Não pode haver. É intersecional. Abraça a mulher trans, a negra, não há problema com homossexualidade e afins. Tudo depende da vontade da outra pessoa por quem ela pode se sentir atraída ou não. 

image

A questão é como isso é conversado. Hoje, por exemplo, é mais comum você encontrar uma discussão sobre o casamento entre um casal monogâmico do mesmo sexo que questionamentos sobre a validade de um casamento entre três ou mais pessoas.

O mundo é construído para a monogamia. Até nos aspectos mais simples. Tente dormir confortavelmente com mais de uma pessoa em uma cama de casal e você vai entender do que estou falando (e descobrirá porque o nome da cama é “de casal”).

Você não pode por mais de um conjuge no seu plano de saúde, porque a sociedade não nos dá essa possibilidade. A não-monogamia é vista na sociedade como um fetiche. Não como estilo de vida ou necessidades básicas.

A não-monogamia é também um questionamento quanto aos nossos padrões.

Tem um casal que eu acho bem tchutchuquinho que eu vejo como um belo exemplo dessa relação sobre liberdade x feminismo: Beauvoir e Sartre.

É o que explica esse texto do Marco Rodrigues:

“(…) Sartre e Beauvoir, ao invés de casar, propõem um pacto: ficariam juntos, mas em sua relação não existiria a monogamia e a mentira. Eles acreditavam que precisavam conhecer a fundo a alma da humanidade e que isso requer liberdade e verdade.

Aos 23 anos, Simone de Beauvoir é nomeada professora em Marseille e Sartre é nomeado para o Havre. O casal teria de se separar. Por conta disso, Sartre propõe o casamento para Simone, que recusa, e alega não querer viver sob os ditames hipócritas da sociedade burguesa.

Em 1932, Simone se apaixona por uma de suas alunas, Olga Kosakiewicz, apelidada pelo casal de “a pequena russa”. Sartre volta a viver com Simone, agora com Olga, e passam a ser um triângulo amoro, que logo se tornaria um quarteto com a chegada de um aluno de Sartre: Jacques-Laurent Bost.

Esta não seria a última vez que Sartre e Simone vivenciariam a experiência em triângulos e quartetos bissexuais, tanto é que em muitos lugares eles eram proibidos de entrar, visto que à época eram considerados imorais.(…)

Não é só nessa época, Simone. Hoje, há ainda um total estranhamento com relação a pessoas não monogâmicas em público. Experimente estar em um restaurante onde dois casais se beijam entre si e aguarde para ver o resultado da sua conta chegando na mesa sem você pedir.

image

 

Amar, amar… e não amar ninguém.

Curiosamente, quando falo de relações livres, as pessoas imaginam que eu deva viver um mundo de swing e bacanais. "Você tem medo de compromisso”, dizem.

Mas olha, se ter uma relação monogâmica já é difícil, imagine se relacionar com mais de uma pessoa. Isso sim que é compromisso. Eu poderia muito bem dizer que medo de compromisso tem que fica com uma pessoa só. Poderia, não poderia? Mas não digo.

Mas o que não se entende é que relação livre, é exatamente isso: livre. Pode-se amar uma pessoa, várias ou ninguém.

Por isso alguém que a pratica não é coerente se for “anti-monogamia”. Se eu sentir vontade de estar apenas com uma pessoas e essa vontade permanecer até o fim da vida, eu terei sido monogâmico sem ser. Mas a minha vontade era essa.

A questão é que não se cria a expectativa de que seja para toda a vida.

 Assim como o feminismo, as relações livres questionam os privilégios. A heteronormatividade, a transfobia, a sensação de posse…

Além disso, é também rever constantemente seus privilégios que você não sabia que tinha (como de se beijar em um restaurante, por exemplo).

Outro dia, conversando sobre o tema com amigos, um deles colocou:

Eu participo dos grupos de amor livre e relações livres desde o final do ano passado. Como já ouvi da administradora de um dos grupos, não é possível ser a favor do amor livre sem ser a favor do feminismo.

Não é possível discutir não-monogamia ética e esquecer que nossa sociedade tem papéis de gênero muito fortemente estabelecidos para as relações. Não é possível falar em ética em relacionamentos e ignorar que mulheres são rotineiramente coagidas, ameaçadas e abusadas por seus parceiros. Não é possível falar em amor livre se eu liberto só a mim e não luto para que as outras pessoas sejam livres também

image

No texto da Tabata Gomes, Por Que a Luta Feminista Deve Ser Contra a Família Monogâmica, ela diz que “Ao referenciar o poder do homem, e a separação dos espaços públicos X privados, a família monogâmica passa a moldar o que é ser homem e o que é ser mulher (constituindo os gêneros masculino e feminino) em nossa sociedade”.

Ao que Engels, em A Origem da Família, da Propriedade Privada e do Estado, completa:

“(…) Tão falsa é a ideia de que a monogamia é a relação sexual com apenas uma pessoa que desde sua origem é permitido ao homem o rompimento deste “contrato”. O chamado “heterismo”, aceitação social de que apenas os homens mantenham relações extraconjugais, traz historicamente a reboque as relações de prostituição em que a existência de jovens e belas cativas que pertencem (mesmo que por um período determinado), de corpo e alma, ao homem, é o que imprime desde a origem um caráter específico à monogamia que é monogamia só para a mulher, e não para o homem. E, na atualidade, conserva-se esse caráter.”

Quando no feminismo a mulher diz “Meu corpo, minhas regras”, ela está se empoderando e sendo completamente coerente com se deve ser o ideal da vida de uma pessoa. Pelo menos para quem acredita que elas são livres.

A liberdade sexual e amorosa é completamente incondicional. Não é apenas um estilo de vida pessoal. Eu sempre noto que há uma confusão quando eu digo que sou não-monogâmico. “Quer pagar de pegador”, dizem.

Ora pois, qual a diferença que faria na minha vida eu pagar de “pegador” se eu não acredito nessa construção social que “alguém deve ser pêgo”?

É uma questão de luta pela liberdade das pessoas. Contra a mononormatividade ou qualquer tipo de normatividade. Onde a liberdade é para todas as pessoas, homens, mulheres, cis, trans, etc…

Entender que a vontade própria das pessoas está lá para ser preservada. Todas as pessoas tem a liberdade de dizer “sim” e, principalmente, todas tem a liberdade de dizer “não”.

É ser coerente com o Roberto Freire, quando ele diz:

“Porque te amo, tu não precisas de mim. Porque tu amas, eu não preciso de ti. No amor, jamais nos deixamos completar. Somos, um para o outro, deliciosamente desnecessários.”

A Monogamia não é uma questão pessoal. É estrutural.

E renunciar a ela é, além de tudo, um trabalho diário de empatia.

image

 

—————————————————————————

Toda terça e sexta escrevo sobre o que aprendi com as mulheres da minha vida. Não esqueçam de curtir também a page do facebook. Vai ter bastante conteúdo por lá :)  - Só clicar aqui!

27 Jan 20:24

Digitalizar

by André Farias

Vida de Suporte

Essa história do documento anexado no email para ser digitalizado, foi enviada por Lucas Cordeiro.



Digitalizar é um post do blog Vida de Suporte.
27 Jan 20:06

The unavoidable aftermath of a rushed release

by sharhalakis

by uaiHebert

22 Jan 21:31

Dependência de drogas: o problema é a gaiola

by Caue Seigne Ameni

2013-05-pt-br-Rat-Park-cover

Em quadrinhos, o experimento científico que derrubou o mito segundo a qual substâncias psicoativas são por natureza nocivas e viciantes

Por Cauê Seignermartin Ameni

Ao estampar em sua capa, na última quinta-feira (16/1), a imagem de uma paciente do novo programa para usuários de drogas de S.Paulo fumando crack após o trabalho, a Folha de S.Paulo praticou um atentado à privacidade da pessoa em tratamento médico, desencadeando crise de choro e revolta. E foi além. Na tentativa de “demonstrar” uma tese conservadora (a de que as terapias humanizadas são ineficazes para dependentes de drogas), ele ignorou um experimento científico realizado há mais de trinta anos. Já no final da década de 1970, o psicólogo canadense Bruce Alexander demonstrou que a socialização é, claramente, o melhor caminho (se não o único) para enfrentar a dependência química. Sua pesquisa, que passou a influenciar profissionais de saúde em todo o mundo, está descrita até em formato de quadrinhos – inclusive traduzidos para o português (veja-os ao fim deste post). O fato de prevalecer até hoje, entre os velhos jornais brasileiros, a velha crença em métodos de punição e encarceramento só demonstra o atraso destas publicações.

Alexander, que trabalhava na Universidade Simon Fraser, questionou o pensamento predominante em sua época, segundo o qual as substâncias psicoativas produziam dependência, por sua natureza – e por isso deveriam ser proibidas. Para tanto, precisou enfrentar um problema. Em favor da crença comumente aceita, havia dezenas de experimentos “científicos”, geralmente realizados com ratos, e sempre com resultados semelhantes. “Demonstravam” que, uma vez em contato com drogas, os animais tornavam-se incapazes de viver sem elas.

O psicólogo canadense observou, porém, que talvez a causa destes resultados recorrentes não estivesse na correção da hipótese que eles supostamente “comprovavam” — mas num erro metodológico comum a todos os experimentos. Em todo os casos, os ratos testados eram confinados em gaiolas. Tinham um canudo implantado cirurgicamente no sistema circulatório. Eram treinados a movimentar uma alavanca e receber, diretamente no sangue, doses de morfina, heroína ou cocaína. Ao final de algum tempo, preferiam a droga aos alimentos ou à própria água, sendo levados à morte. “Concluía-se cientificamente” que as substâncias eram nocivas e altamente perigosas, e deveriam ser proibidas para humanos. As pesquisas foram um poderoso reforço ao proibicionismo e, mais tarde, à chamada “Guerra contra drogas”, em curso até hoje.

Bruce Alexander resolveu testar outra hipótese. Ao invés confinar os ratos em gaiolas minúsculas e solitárias, construiu para eles um parque 200 vezes maior com túneis, perfumes, cores. Mais importante, colocou outros ratos para interação. A experiência ficara conhecida como Rat Park – algo como Ratolândia em português. Para completar a “festa”, os roedores tinham acesso a duas fontes jorrando, incessantemente, água e morfina. Nestas novas condições, que reproduzem muito melhor a vida real, os resultados foram impressionantes. Percebeu-se, entre outros fatos, que os ratos livres consumiam 19 vezes menos psicoativos que seus iguais enjaulados.

Hoje, com avanço da ciência, há um maior entendimento sobre o funcionamento químico cerebral. O jornalista Denis Russo Burgierman, autor do livro O Fim da Guerra, explica como se dá essa relação: ”O centro da questão é um químico chamado dopamina, o principal neurotransmissor do nosso sistema de recompensa. Quando animais sociais ficam isolados e sem estímulos, seus cérebros secam de dopamina. Resultado: um apetite enorme e insaciável pela substância. Drogas – todas elas – têm o poder de aumentar os níveis de dopamina no cérebro, aliviando essa fissura. O nome disso é dependência. Ou seja, não é a droga que causa dependência – é a combinação da droga com uma predisposição. E o único jeito de curar dependência é curar essa predisposição: dando a esse sujeito uma vida melhor, como Bruce Alexander fez com os ratinhos do Rat Park.”

O paralelo com a situação brasileira é evidente. As políticas tradicionais tratam o usuário de drogas como pária a ser afastado do convívio social. Esta posição é radicalizada por autoridades e profissionais de saúde mais conservadores — para quem é preciso internar de forma compulsória os dependentes. Em contrapartida, a nova atitude adotada em São Paulo oferece a eles alojamento digno e ocupação e volta ao convívio social.

Por que são tão fortes e persistentes as teorias retrógradas, mesmo quando descoladas totalmente da realidade? O neurocientista Carl Hart, professor neurocientista da Columbia University, entrevistado recentemente pela New York Times respondeu a essa questão: “Oitenta a 90 por cento das pessoas não são afetadas negativamente pelo uso de drogas, mas, na literatura científica, quase 100 por cento dos relatórios são negativos. Há um foco distorcido em patologia. Nós, os cientistas, sabemos que teremos mais dinheiro, se continuarmos dizendo ao governo que vamos resolver este terrível problema. Temos um papel desonroso na guerra contra as drogas”. Bruce Alexnder e Carl Hart são duas incômodas exceções. Enquanto ao resto, a industria farmacêutica e bélica agradecem o proibicionismo.

Ratolândia (Rat Park)

Ratolândia (Rat Park)

Ratolândia (Rat Park)

Ratolândia (Rat Park)

Ratolândia (Rat Park)

Ratolândia (Rat Park)

Ratolândia (Rat Park)

Ratolândia (Rat Park)

Ratolândia (Rat Park)

Ratolândia (Rat Park)

Ratolândia (Rat Park)

Ratolândia (Rat Park)

Ratolândia (Rat Park)

PARA VER O RESTO DA EXPERIÊNCIA E SEU SURPREENDENTE RESULTADO CLIQUE AQUI

PARA VER OUTROS QUADRINHOS ESPETACULARES DO AUTOR STUART MCMILLEN, CLIQUE AQUI

 

21 Jan 19:31

More Bugs: Pathfinding Problems

by Dukus

A while back, I wrote about pathfinding and how the townsfolk in Banished figure out how to get from one place to another. I’ll quote myself here. Pathfinding is the one system in the game that I am constantly fixing and making better. I’ll think I’ve gotten it right, and two months later…

While the problem of getting of the AI from point A to point B solved, I’ve lately been hearing feedback about where the townsfolk decide to go. This is even more true since I adding the pathing tool and you can easily see where people are relative to their workplace.

The problem is that when townsfolk decide where to go, they pick the closest accessible location and use it. While using closest linear distance works, the closest location isn’t always the best. Sometimes walking distance far exceeds linear distance. While this isn’t technically a bug, it certainly causes issues in large sprawling towns and requires a little attention.

Here’s an simple example of a bad decision. The workers in the house below used linear distance to determine where to work.

LongPath

When they actually go to work, they find a long path there – all the way down to the bridge and back. This is fine and the simulation works – but it could be more optimal. This isn’t just for workplace either. It’s for deciding where to pickup food and firewood, which school to use, what market to use, where to find resource to make tools, etc

I could just let players deal with the issue or build more bridges, but I decided to take a day (or two) and see if I could come up with a fast way of quickly determining walking distance without resorting to doing full path finding.

Finding walking distance using the current path finding system is really slow. To use the current path finding system to make AI decisions would be so slow that the game would run at single digit frame rates. The AI considers a potentially large set of locations when deciding where to go. It’s just too many paths to examine.

I first thought about caching paths from critical interact points, but this soon became unwieldy. There’s really not a good way to know when a cached path becomes invalid or gets worse or better due to players adding and removing objects. And once the cache is filled with ten thousands, or a hundred thousand paths, storage and memory becomes a big issue. So forget caching these.

After a lot of thought, and talking the problem over with some other programmers, I came up with a solution to try out, and it ended up working very well.

The reason path finding is slow is simply the size of the data set – A large map has about 250,000 nodes and searching it takes time. The data is fine grained and looks like this.

FineGrainedPath

What I wanted to do is reduce this data set into something simpler that still mimics the basic paths people will take.

So the map is now broken into larger chunks defined by where characters are allowed to walk. The problem arises where a chunk has disconnected parts. For example one chunk could have river running through it that cuts it in half – that chunk has to be broken into multiple pieces so that there is a distinction between one side of the river and the other.

After breaking into blocks and resolving any disconnected regions, I arrive at the simplified pathing data set. The colors just represent distinct areas.

PathIslands

One nice feature of this data set is that it can be updated quickly. If a new building is added, or a building is removed, only the chunks that intersect the new building need to be recomputed – and this process is really fast.

The next step is to connect each distinct region to the others and maintain connectivity information. Again updating this is fast as when a region changes, only it and its neighbors need to recompute connections. Once the connections are built I end up with a graph that represents a general but simplified map of how and where people in the game can move.

MacroPathing

Using A* on this graph computes paths and distances at anywhere from 60 to 100 times faster than the more complex and fine grained path finder. This is used in place of all previous checks for linear distance. While the distances are coarse estimates, what results is that people find a decent idea of walking distance rather than looking at pure linear distance. The people then decide to move into the more logical homes.

FixedPath

While the distance estimates are fast to compute, they aren’t instantaneous. But because the data set is simple and fairly small, caching the distance between to areas actually works for them. The paths are cached for only a short time. The hit rate on the cache is very high, and makes the slight delay of the cache worth the time savings.

Once in a while people do check to see if there is a better way to get to a workplace, and they’ll move. Here I’ve built an additional bridge, and as the new estimate distance is shorter, the workers move to the closest home after a few months.

BestPath

Somewhat related, because this path finding method is so much faster, I’ve got a note to make regular path finding use it. The basic idea would be do perform the coarse path find, and then when computing a path on the fine grid, only areas touched by the coarse grid would be available for A* to consider – instead of considering the entire map. From a code design and performance standpoint, this is a fairly elegant solution and I can make it generic and reusable for any set of nodes – not just a grid.

But that’s a task for another day, another game.

This was a great two days of problem solving and it fixed a major AI issue, but this wasn’t a change I really want to make this late in development. I’m starting to get a little nervous about making big changes to existing systems – and really examining what changes I make and how they are made. I considered reverting my changes several times, because I really don’t want to add new bugs at this point.

But it makes the AI so much smarter looking and optimizes worker time so well that in the end it’s worth it and makes sprawling towns work better.

The game is definitely shaping up. I currently don’t have any crash bugs to track down, and most of the current issues I have open are simple AI and user interface issues. Getting there!

21 Jan 19:25

Adventures in Debugging

by Dukus

I’ve just fixed one of the worst bugs that has been plaguing Banished. It’s potentially the cause of nearly all my pending crash to desktop bugs. It took me so long to track down that I thought I’d share the debugging process. Normally fixing a bug is an hour task. Reproduce the issue, find a solution, implement the fix, and then test the fix. Other times debugging is an all day and all night process, or worse.

The most important thing is to be able to reproduce the issue. If a developer can’t make a bug happen reliably, there is little chance it can be fixed. And finding reproduction steps can be hard.

So more than a few months ago I’d noticed an issue when I’d build test cities by cheating. I’d pause the passage of time in game, turn on debug mode so I could place buildings for free, and place a whole lot of buildings – basically lay out an entire town. This let me test features and the simulation of large towns, without spending hours to make it properly. Once in a while, when the passage of time was resumed, the game would immediately crash.

Large towns run much better when the game isn’t built for debugging, so I’d often be in release mode for a high framerate, and be unable to properly use the debugger to see why the game crashed. Even worse, the autosave feature was properly saving towns. If the crash occurred and the save was reloaded, the game could be unpaused without issue!

Because the save game was intact, I usually lost less than a minute of work due to the autosave process. And since the bug was so infrequent and it occured while I was cheating, I half assumed I had something wrong with the code that let me build buildings for free. So I ignored the issue for a while.

But lately I’ve had testers having this exact situation occur, but without cheating. They lay out where buildings should go with the passage of time paused, and on resume it crashes. Testers have also been having other random crashes that I can’t quite figure out, and no one can reproduce them or give any hint as to what they were doing when the game crashed. Save games always seem to be intact and reload without issue or crashing… Hmm…

About a month ago I added functionality to output core dumps and call stacks from crashes and asserts in game so I’d at least have an idea of where in the code the game was crashing for testers. A core dump gives me the state of the program when the crash or assert occurs, and a call stack is just the list of function calls that were made up to the current point of execution.

While the core dump isn’t as useful as live debugging, it gives me ideas about where to start looking and how I might reproduce the bug. A save game, core dump, and call stack usually make fixing bugs easy. But not today.

Looking at a single core dump didn’t give me much idea about what was going on. I knew memory was either being accessed incorrectly, or it was being overwritten, but that was it. But looking at over 20 dumps with similar call stacks got me to thinking. While the call stacks all had crashes in different locations, they all came from a root function called ComponentEntity::Update(). A small percentage of them even occurred directly in that function.

This is the lower part of the call stack of the crashes:

... lots of junk here....
void Game::ComponentEntity::Update(System::Time* dT)  

Again, this didn't give me much - a ComponentEntity is a generic object in the game. It could be a tree, a person, a deer, a pile of rocks, or a building. About the only thing in the game not using ComponentEntity is the terrain. A large map can have over 30,000 ComponentEntity objects, so it really could be anything making the game crash.

I started trying to reproduce this issue manually. I was successful only once in maybe 75 tries and only in a non-debug build. Not being able to reproduce the issue in debug mode was a hint too. It told me that uninitialized or overwritten memory was being used. In debug, the engines memory allocator clears memory to known patterns on allocation and deletion. This practice is good in many ways, but can hide other issues. I started thinking this was one of those issues.

Having reproduced the crash once is an annoying thing - I knew I could do it, but I didn't know how I had done it that one time. And when testers are reporting crashes daily, it's got to be fairly common. What was I missing? I tried over and over to get it to happen again, but I always failed.

I gave up trying to reproduce the bug, and instead gave over to trying to look for ways that an invalid entity could be in use. I was basically looking for logic errors in the code regarding the handling of objects memory and pointers to them. This is where despair sets in with the knowledge that I'm probably not going to be able to find this issue. As the saying goes, it's like looking for a needle in a haystack.

But because this crash seemed to deal with invalid memory, I was pretty sure the bug could only happen if the player placed an object and then removed it with the game paused. On a whim, I placed a breakpoint in the function that destroys a ComponentEntity. (A breakpoint just stops execution of the game at some particular line of code.)

I assumed I'd go through the objects I removed when the game was unpaused and see if I could see any pitfalls that might be causing the issue. When a player removes an object in game, say a building, it's scheduled for removal at a later time. All deletes are deferred until the end of an game update, and with time paused, final ComponentEntity removal and deletion doesn't actually happen.

To my surprise, the breakpoint was hit with the time paused! The callstack now looked this.

void Game::EntityList::DestroyEntity(Object::InternalPtr entity)
void Game::EntityList::Persist(IO::Stream* stream)
void Game::Game::Persist(IO::Stream* stream)
void Game::Game::SaveRestore(bool save, Save::SavedState* gameState)
void Save::SaveLoad::UpdateSave()
void Save::SaveLoad::Update(System::Time* dt)
bool Game::Game::Update(System::Time* dT)
bool Engine::MainLoop::Update(System::Time* dT)
bool Engine::MainLoop::Frame(bool disableUpdate)
void Engine::MainLoop::Run(Engine::UpdateLoop* _firstLoop)
int RunGame(void* systemData, char* commandLine)
int WinMain(HINSTANCE__* instance, HINSTANCE__* __formal, char* commandLine, int __formal)

The important thing to notice here is the mysterious execution path through

Save::SaveLoad::UpdateSave()        

My thought process went like something this. "What's this? How I'm deleting objects while saving?!?!? Wait, wait, why am I saving the game? Oooohhh. Autosave went off. Why in the world is saving the game calling DestroyEntity! It's supposed to save! Oh yeah, it's an object scheduled for deletion. No need to save it. How long ago did I write that code? I wonder if that's part of the issue..."

And then a light bulb went on in my head, and it led me down the right path.

Not only do objects get scheduled for deletion, they are scheduled for addition to a list of objects needing updates. When the game is paused, if a player creates and then removes a building, it's scheduled for both addition and removal.

In the normal path of removing an object, if something is both being added and removed in the same update it's fine. The code handles this gracefully. But in the case of a save game, it directly deletes the object and it remains scheduled for addition!! The object would be deleted, but a reference to it would remain in the update list. (And this is why lots of programmers like garbage collection...)

Now I had proper reproduction steps. Pause time, place a building, delete the building, wait for autosave or save manually, place another building that will be allocated in the same memory as the previous building, then unpause time. Observe the crash. I could see the code path that would cause the issue and groaned audibly when I realized my mistake.

It was here I realized that when I was trying to reproduce the bug, I couldn't do it because I was generally moving to fast and autosave never occurred.

This is certainly one of the most convoluted bug reproduction steps I've seen in a while. But this is also a very common operation in game. As a player adds a new section of town, they pause the game so they don't have to manage the town while deciding on layout. They might mis-click, or decide on a better layout, remove some things they just placed, and place new buildings instead.

Knowing all this, I still couldn't reproduce the crash reliably. Using invalid memory does strange things. When the scheduled addition was made to the list of entities, if the memory pointed to by the now invalid pointer at a certain offset had a certain bit set, that object wouldn't be added to the list. However if it wasn't set the now deleted and invalid entity was added to the list, and the game would crash at some unknown time in the future, depending on the contents of that memory.

It always amazes me when really long debugging sessions result in a single line fix to the code. One extra function call properly cleaned up the list of scheduled additions when the save game came along to do it's thing, and a ton of random crash bugs just went away.

Phew. It's nap time.

21 Jan 19:19

The trials of using C++

by Dukus
Renato Cerqueira

Bizarrices de C++. :P

I’ve been using C++ for a long time now. It’s been my programming language of choice since about 1998. Before that I used C and Assembly, and before that I used Pascal and BASIC. Even though I’ve been programming a long time and I’m reasonably familiar with the features of C++, sometimes it still causes me headaches. Here’s an example.

Maps in the game are randomly generated – but the generation is deterministic. This means that given the same starting conditions, such as a seed value, map size, and terrain type, the same terrain can be generated over and over. I use this functionality for the tutorial map. There’s no reason to store the terrain when it can be generated and the outcome is known.

However the other day I found that in only the 32-bit release build of the game, the terrain was coming out differently compared to the other compilations. The tutorial then wanted the player to place a building in the middle of a lake…

This is a hard thing to debug, as when switching back to any debug mode, or release 64-bit, the game worked correctly. I spent a few hours working on the worst kinda of debugging. This consists of logging the state of variables as they undergo thousands of state changes and looking for differences between the correct and incorrect versions. I ensured that the random number generator was always generating the same values, and then after several hours I found this line of code. It looks fairly innocent, but it contains is a non-obvious but critical mistake.

position = Vector3(rng.RandFloat(), rng.RandFloat(), 0.0f);

rng.RandFloat() just generates a random number between 0.0 and 1.0. So what’s wrong here? When the code was first executed, the majority of compilations resulted in Vector3(0.241534, 0.645345, 0.0), but in this case of 32-bit release mode, it was generating Vector3(0.645345, 0.241534, 0.0).

There is no sequence point here. In C++ the order of evaluating parameters to a function call is up to the compiler. So while the random number generator picks the same two random numbers as it’s called, the order that the parameters are evaluated in can be different, and this changes the outcome.

Changing it to the following code fixes the problem because the order of operations is explicit.

float randomY = rng.RandFloat();
float randomX = rng.RandFloat();
position = Vector3(randomX, randomY, 0.0f);

This made me feel like a newb. While I was vaguely aware of this type of issue, I expected the compiler to choose left to right or right to left evaluation and stick with it, and not change order due to optimizations. At least now if I ever implement support for more platforms, I can be sure the terrain generation will come out the same on all systems…

21 Jan 18:12

o papel dos homens no feminismo

by alexcastro

para um homem, articular o discurso feminista é razoavelmente fácil: difícil é agir de acordo.

talvez uma das maiores contribuições dos homens para o feminismo seja simplesmente se posicionar no mundo de forma feminista.

o valente não é violento.

quais são as coisas que nós homens FAZEMOS que silenciosamente confirmam, aos olhos das crianças e do mundo, a desigualdade de gênero, o machismo, a transfobia, o sexismo?

nenhuma pessoa — e com certeza nenhum homem, mesmo o mais pró-feminista leitor de simone de bouvoir — está acima de fazer comentários machistas ou de ter atitudes transfóbicas. é preciso analisar todo dia nossas ações & nossas palavras. é preciso muita autocrítica. é preciso sempre saber ouvir.

falar o feminismo é a parte fácil. agir o feminismo, todos os dias, é que são elas.

* * *

esse texto é parte da blogagem coletiva “o valente não é violento”, promovida pela ONU mulheres, para lutar pelo fim da violência contra a mulher. leia o texto completo aqui: o poder do exemplo: sobre homens no feminismo.

21 Jan 03:09

Café com sorvete e pé de moleque

by Mexido

Café com sorvete e pé de moleque por Mexido de Ideias

O ano de 2014 começou fervendo! Pelo menos em São Paulo que, com recorrentes trinta e tantos graus, encenou nos feriados uma pacata cidade subpovoada. Ruas vazias, ar mais limpo e um silêncio impertinente para essa nossa metrópole cansada da muvuca nossa de cada dia. Foi por aqui que fiquei, na quietude que só era interrompida pelas páginas do jornal, mostrando praias entupidas e terras estrangeiras cobertas de neve.

Cafe com sorvete e pe de moleque   Café com sorvete e pé de molequeComo é bom pensar na diversidade da vida e das estações, como tudo pode se transmutar a cada passo, trazendo novas combinações. Pensei em meus Réveillons passados com o pé na areia ou na neve. Em lugares misteriosos, como o arquipélago dos Açores, familiares com meus avós em Campinas, e confortantes, como na fazenda de Araras com meus filhos ainda pequenos e pessoas que já não estão mais por aqui.

Quando esse texto for publicado, São Paulo já estará de volta ao seu normal, com sua fumaça e barulho que compõe a cenografia da cidade.  E aí vai minha receita. Muita mistura, muitos sabores, muitas texturas. Como de colher. Costumo começar pelo crocante pé de moleque, depois vou adentrando o líquido, misturando a maciez do doce de leite com o sabor do café. O sorvete não só abranda a mescla, como confere um geladinho acariciante.

Experimentem o regalo. Desejo que possam viver este ano com o encantamento da diversidade de cores, luzes e sons.

Receitas de café com sorvete e pé de moleque

Rendimento: 1 porção
Tempo de preparo: 4 minutos

Ingredientes

Cafe com sorvete e pe de moleque2   Café com sorvete e pé de moleque

½ xícara de Café 3 Corações gelado

1 bola de sorvete de creme

1 colher (sobremesa) de doce de leite

Pé de moleque a gosto


Modo de Preparo

Cafe com sorvete e pe de moleque3   Café com sorvete e pé de moleque

Coloque o doce de leite em uma xícara ou copo alto.


Cafe com sorvete e pe de moleque41   Café com sorvete e pé de moleque

Despeje o café e coloque a bola de sorvete.

 

Cubra com pé de moleque.


Café com sorvete e pé de moleque por Mexido de Ideias

21 Jan 03:09

Vídeo: Espresso em câmera lenta

by Mexido de Ideias

Vídeo: Espresso em câmera lenta por Mexido de Ideias

Quem gosta de sentar no balcão das padarias ou cafeterias sabe: a extração de um espresso pode ser considerada uma arte, de tão bonito que o processo pode ser! Foi pensando nisso que os baristas do café Spyhouse Coffee, localizado em Minneapolis, nos Estados Unidos, resolveram não só filmar o ato, mas também reproduzi-lo em câmera lenta. O resultado é genial!

Video Espresso em camera lenta   Vídeo: Espresso em câmera lentaOs baristas utilizaram uma máquina de espressos Marzocco e reduziram a velocidade do vídeo para 120 frames por segundo – quase cinco vezes mais devagar que um vídeo convencional. Com essas configurações, você pode ver o café saindo da base de extração como se fosse uma calda cremosa (e, pelo visto, deliciosa, já que ficamos com água na boca).

O Spyhouse indica a reprodução do vídeo acompanhada de uma música, que também colocamos abaixo. Para sincronizar, basta dar play em ambos os vídeos e apreciar. Se quiser, você pode procurar outra trilha para o espresso em câmera lenta:

Agora estamos de saída: vamos tomar um espresso, já que o vídeo aguçou nosso paladar!

Por: Lucas Tavares

Vídeo: Espresso em câmera lenta por Mexido de Ideias

21 Jan 01:17

142. TIMOTHY FERRISS: Someday

by Gav

142. TIMOTHY FERRISS: Someday

Timothy Ferriss is an author, entrepreneur, blogger and television host. He’s best known as the 4-Hour guru who helped pioneer the ‘lifestyle design’ movement. This quote is taken from Ferriss’ first book, The 4-Hour Workweek, which I read when I was in the middle of my career change and helped motivate me to eventually start this website. The book teaches people to rethink the outdated idea of working a 9-5 job and to use today’s technology to find the perfect work/life balance.

Ferriss recently debuted his new TV show, The Tim Ferriss Experiment, where he applies his life-hacking rules to a number of different disciplines.

I was fortunate enough to meet Tim and contribute some illustrations to his latest book, The 4-Hour Chef. Here’s a blog post I wrote about it with some behind-the-scenes sketches.

RELATED COMICS Chris Guillebeau: 11 Ways to be Average. Terence McKenna: Nature Loves Courage.

- Zen Pencils was named one of PCMag’s top 100 websites of 2013!
- Yay, it’s finally the first comic of 2014. It’s taken me longer than I had planned to update the site again, but I’m happy to say my holiday really energised me for the year to come and I’ve already got a couple months worth of ideas for comics that I can’t wait to start drawing. Thanks for your patience.

21 Jan 00:37

Automation

'Automating' comes from the roots 'auto-' meaning 'self-', and 'mating', meaning 'screwing'.
13 Jan 18:57

Realizing I ran the command on the wrong server

by sharhalakis

by Gal

13 Jan 18:57

Another massive flawless patching. Noone shares the excitement.

by sharhalakis

by @juan_domenech

09 Jan 01:10

Alguma coisa errada

by André Farias

Vida de Suporte



Alguma coisa errada é um post do blog Vida de Suporte.
08 Jan 11:31

Photos

I hate when people take photos of their meal instead of eating it, because there's nothing I love more than the sound of other people chewing.
03 Jan 01:27

Having to use windows

by sharhalakis

by @juan_domenech

03 Jan 01:26

Product manager explains cool new features to developer

by sharhalakis

by Ivan

07 Dec 21:38

Facebook, aplicativos e a privacidade

by Lond

Começo esse post com uma afirmação sem medo de estar errado: privacidade e facebook não andam juntos. Não se pode ter um com o outro. E a cada dia que passa, isso é mais verdade.

Recentemente o Lulu foi o assunto mais falado de toda a internet. Vários textos foram escritos sobre o app e eu não vou aqui falar sobre o aplicativo em si, mas se você quer ler mais sobre ele, aqui vão ótimos textos pra você:

“Lulu”, machismo invertido? por Marília Moschklovich
Clube da Lulu e a objetificação masculina por Olga

Mas o meu ponto mesmo é sobre privacidade, e aí a gente entra em outro rabbit hole.

Toda vez que converso com pessoas que não tem um background de computação, elas parecem não fazer idéia quanto privacidade é cada vez menos o conceito que se imagina. A privacidade, como as pessoas entendiam há alguns anos atrás, existe menos a cada dia. Cada vez que você escreve um novo post no seu facebook, ou faz uma nova pesquisa no google, mesmo que não esteja realmente associado a você, esses dados criam uma identidade virtual que já tem todas as informações relevantes. Por isso “anúncios relevantes”, por isso quando você busca por um produto que te interessa o facebook mostra sobre aquilo na sua timeline, o google mostra aquilo nos ads que aparecem pra você nas páginas.

A Target, loja americana de varejo, tem um cartão fidelidade que dá diversos descontos. A partir dos dados desse cartão de fidelidade, ela consegue prever quando as suas clientes estão grávidas e quanto tempo aproximadamente falta para elas terem o bebê e com essas informações oferecem cupons de desconto direcionados. [1]

Em outro artigo, entrevistaram especialistas em segurança sobre o que deveria ser feito para ficar anônimo no mundo moderno e as respostas são assustadoras[2]. Dentre elas, um cara descobriu que o dispositivo que ele usa pra passar em pedágios sem pagar (como aqueles usados por aqui na Linha Amarela e em shoppings) também era usado pra rastrear por onde o carro dele passava. Supostamente essa informação é usada para obter informações sobre como está o trânsito na cidade, a partir da massa de dados dos diversos carros que usam o dispositivo. Mas qualquer um que tenha acesso a essa banco de dados também pode saber por onde você anda e quando.

Quando entramos na discussão sobre Facebook, Google Plus, Twitter e diversas outras redes sociais, batemos em vários problemas. Dentre eles, a “censura” de conteúdo. Embora o conteúdo na maioria das redes sociais não seja de fato censurado, o Facebook muda o modo como você se relaciona com as coisas compartilhadas pelos seus amigos escondendo os posts que seus algoritmos julgam apropriados. É fácil de notar isso: escolha um amigo da sua timeline com quem você tenha pouco contato (aquele seu amigo de colégio que você adicionou mas nunca trocou uma mensagem) e você vai ver que nem todos os posts dele apareceram pra você. E mesmo os que aparecem, aparecem numa ordem escolhida pelos algoritmos do Facebook, baseado no que ele acha que é o mais relevante para você. Isso é especialmente notável no caso das páginas que podem ser criados para negócios, pessoas públicas, bandas e etc. Nesse caso, os algoritmos dão ainda mais prioridades para posts pagos, e os que não são pagos muitas vezes não são entregues pra boa parte da audiência. Há diversos posts apontando sobre como possívelmente posts não pagos perdem audiência para posts pagos. [4]

O Google Reader, extinto pelo Google recentemente, usava o protocolo de RSS e Atom, que são dois protocolos abertos de divulgação de conteúdo. Nesse tipo de serviço (hoje em dia disponível através do The Old Reader, Feedly, Digg Reader, etc) TODO o conteúdo compartilhado por um feed que o usuário siga é entregue para o usuário e essa seleção é feita pelo receptor, não pelo serviço que entrega os feeds. Assim, um blog, como este, pode entregar todo o seu conteúdo e o filtro é o próprio usuário e não algoritmos especializados.

Ainda sobre as redes sociais, temos os seus termos de uso e privacidade sempre complicados e com vários poréns. No caso do Lulu (e qualquer outro aplicativo do facebook, na verdade), o catch é que segundo o facebook, sua foto de perfil e seu nome são informações públicas [3], ou seja, quando um amigo seu se inscreve um aplicativo e entrega as informações sobre a rede de amigos que ele possui, a sua foto e o seu nome vão para esse aplicativo, sem a sua permissão, porque você já deu permissão para que isso acontecesse quando criou a sua conta.

O problema é enorme, e há ramificações para todo lado. Um bom ponto de partida sobre o assunto é ler sobre Neutralidade da Rede [5]. Outro ponto de partida é ler sobre como o facebook trata os seus dados, mesmo quando deletados [6]. Por fim, há um artigo sobre vigilância e controle de conteúdo no Capitalismo em Desencanto que fala sobre esses e outros pontos, com ótimos links[7].

Da próxima vez que for compartilhar um dado no facebook, pense duas vezes se aquele dado realmente é público. Porque mesmo quando você não compartilhar ele com o mundo, alguém que você não conhece pode estar vendo ele do outro lado.

[1] – How Target Figured Out A Teen Girl Was Pregnant Before Her Father Did (artigo em inglês)
[2] – Think You Can Live Offline Without Being Tracked? Here’s What It Takes (artigo em inglês)
[3] – Política de uso de dados do Facebook
[4] – Disruptions: As User Interaction on Facebook Drops, Sharing Comes at a Cost (artigo em inglês)
[5] – Neutralidade da Rede
[
6] – Think Your Deleted Facebook Posts Are Really Deleted? Guess Again (artigo em inglês)
[7] – Vigilância e controle de conteúdo na internet

25 Nov 12:08

Simply Explained

by Oliver Widder
git-blame2.jpg

Update: Thanks to all. You're right! I fixed it.

25 Nov 00:24

10 Really Bizarre Google Search Suggestions Get Illustrated [Pic]

by Geeks are Sexy

google-illus

[Via TechEblog]

23 Nov 18:14

Beautiful Space Invaders Ceramics [Pics]

by Geeks are Sexy

space-invaders-ceramics-1

Etsy seller Keith Phillips (Mudstuffing) has, among plenty of other things, a series of absolutely beautiful Space Invaders-themed pottery available for sale at his shop, and I have to say, I’d love to have a set of these at home!

These cups were made from a white stoneware clay on the wheel. Embellished with toner and silkscreen designs and refired to make them permanent. Electric fired.

space-invaders-ceramics-2

[Mudstuffing | Via Walyou]

23 Nov 17:41

RSS and the Open Web

image

This post is not about the day to day operations of The Old Reader or anything of that nature.  It’s about how our team came to get involved with RSS and how we see the future of this application and technology that we value so highly.

As a long time user of RSS and Google Reader, I’ve long appreciated the benefits of the technology.  Like many people, my use of Google Reader faded a bit as social media platforms took hold.  But, I’d always go back to Google Reader when I wanted to cut through the noise of social networks and focus on things I’m really passionate about.  Google Reader wasn’t my “second screen” application where I’d go to take a break from work.  It filled a much more essential need for me by providing these three features:

1.  Unread items are kept in a queue.  I don’t miss things.  No algorithm chooses what to show me or not show me.

2.  It’s an archive of blogs that I value and posts that I’ve read.

3.  I can follow whatever I want from anywhere on the web.  It embodies the open web.

For my professional career in web research and development, I can’t really live without these features.  I can follow twitter feeds or like Facebook pages, but I’m certain to miss important content from people who I highly value.  I need those items queued, archived, and I need to be able to subscribe to anybody on the entire open web.  I can’t be limited to those authors who choose to enter into private social networks and I don’t want to have to constantly check my accounts for updates.

So this leads me to how we got involved in The Old Reader.  When Google Reader shut it’s doors, my business partner Jim did some research and tried several services and suggested I’d like The Old Reader the best.  So we both moved on over.  I read some articles trying to understand why Google Reader would shut down and one really stuck with me.  It hypothesized that Google had been following the lead of companies like Facebook and Twitter by turning their backs on the open web and trying to build their own private/closed social networks.  It’s frankly hard to argue against this theory.

However, we see this trend of migrating from the open web to private networks as cyclical.  How long will it be before your Facebook stream is so full of promoted content, bizarre algorithmic decisions, and tracking cookie based shopping cart reminders that you won’t be getting any valuable information?  For as little as $60, a business can promote a page to Facebook users.  It won’t be long before your news feed is worthless.  So we jumped at the opportunity to get involved with developing and managing The Old Reader.  We believe in it.

As we’ve been looking to grow our engineering team at Levee Labs and The Old Reader we’ve met with a number of bright young people that are surprisingly unaware of RSS.  They say “I recognize the RSS icon, but haven’t really ever used it.”  Is it possible that there is a lost generation of internet users that are completely unfamiliar with RSS?  Are they unfamiliar with the idea of the open web too?  We believe that’s the case and we’ve been working hard to come up with ideas that’ll expose that generation to RSS, The Old Reader, and the open web.  It’s what made the internet great to begin with and it’s coming back.

Thanks for using The Old Reader!

20 Nov 02:39

Port knocking

by sharhalakis

by seqizz

20 Nov 01:51

Anésia # 137


- "...pipoca aos macaaacos..."
18 Nov 20:01

What Has Been Seen Can Never Be Unseen [Pic]

by Geeks are Sexy

unseen

Presented without comment.

[Via Reddit]

18 Nov 20:00

A Simple Way to Teach Fractions Using LEGO [Pic]

by Geeks are Sexy

fractions

[Source: Scholastic | Via Reddit]

13 Nov 02:25

How to Throw a Party for Geeks and Nerds [Pic]

by Geeks are Sexy
Renato Cerqueira

DO WANT!

party

[Via NA | Cheezburger]

13 Nov 02:18

Technical interview of a 20 year old hardcore hacker for a sysadmin role

by sharhalakis

image by Stefan