In this post, I would like to explain a basic but confusing concept of CUDA programming: Thread Hierarchies. It will not be an exhaustive reference. We will not cover all aspects, but it could be a nice first step. If you are starting with CUDA and want to know how to setup your environment, using […]
Getting started with CUDA (using VS2017)
If you are interested in performance, you need to know more about CUDA. From the official website: CUDA® is a parallel computing platform and programming model developed by NVIDIA for general computing on graphical processing units (GPUs). With CUDA, developers are able to dramatically speed up computing applications by harnessing the power of GPUs. In […]
Cracking the Coding Interview
O livro “Cracking the Coding Interview” é uma referência espetacular e bem prática para todos aqueles que desejam desenvolver competência nos fundamentos de nossa profissão. Ele foi escrito por Gayle Laakmann McDowell e se concentra em mostrar questões propostas nas entrevistas para a vaga de programador em algumas das maiores empresas do mundo (incluindo Google, […]
Somos “amadores remunerados”? – Notas, Explicações e Ampliação
Outro dia, compartilhamos dois posts que geraram ótimas reações. Um voltado para o público técnico (Somos “Amadores Remunerados”?), outro voltado para o público de gestão (“Transformação digital fica bem mais difícil quando remuneramos o amadorismo“) Este post contem algumas notas, explicações e ampliações inspiradas nas reações que identificamos. Nossa disciplina tem um ABC Estamos realmente […]
Como a linguagem Rust garante que erros em tempo de execução sejam tratados
Rust adota uma abordagem extremamente elegante para garantir que erros em tempo de execução sejam tratados, impedindo, inclusive, que o um programa compile caso não se atenda as expectativas do compilador. Para demonstrar essa elegância, façamos um comparativo breve com uma linguagem bem conhecida: C#. Qual é o problema com a forma como C# lida […]
Sobre a importância de assumir, gerenciar e pagar dívidas técnicas
Uma das justificativas mais frequentes para os nossos “improvisos” do dia-a-dia, é a falta de tempo. “Nós”, de tecnologia, argumentamos que “eles”, do negócio, criam prazos impossíveis de cumprir. Pelo menos com a qualidade que sabemos e queremos entregar. É fato que “eles”, muitas vezes, assumem compromissos sem sentido e que agregam pouco ou nenhum […]
Are we “paid amateurs”?
Before reading this post, I ask you to ignore your ego, just for a few moments. This text was not easy to write, and I think it will not be easy to read either. Please keep in mind that I do not want to offend anyone. However, I think it’s about time to talk seriously […]
Somos “amadores remunerados”?
Antes de ler esse post, peço a você que ignore seu ego, apenas por alguns instantes. Esse texto não foi fácil de escrever e acho que também não será fácil de ler. Por favor, tenha em mente que não quero ofender a ninguém. Entretanto, acho que já passou hora de falarmos sério sobre nossa profissão. […]
Entendendo ponteiros e a heap (free store)
No post anterior, vimos o que é e para que serve a stack (e o que causa a StackOverflowException). Nesse post, vamos tratar de outros dois conceitos fundamentais: ponteiros e a heap. O que são ponteiros Ponteiros são variáveis que armazenam endereços de memória. Eles foram introduzidos, em linguagens de alto padrão, na antiga PL/I com […]
Entendendo a Stack (e a StackOverflowException)
Todas as linguagens modernas trabalham com duas regiões distintas de memória: Stack e Heap. Entretanto, temos percebido que poucas pessoas sabem apontar a distinição entre elas. Nesse post, explicaremos a Stack, de forma incremental, a partir de seu propósito em dois cenários. DISCLAIMER: Optamos por uma abordagem didática e, com certeza, omitimos muitos detalhes de […]