← Înapoi la Urmăritori

Cel mai recent articol

Ultima verificare

Urmăritori 0 urmăritori
Articole: 199
  1. To vectorize or not to vectorize...

    If you ever looked at optimized code generated by Clang, you might have noticed it loves vectorizing.

  2. Chasing a hitch

    (I had a more catchy post title, but it’d spoil a surprise).

  3. Compilers are (too) smart

    Last week I noticed some unexpected assembly code in a function calling std::unordered_map::find (yes, I know, friends don’t let friends use STL, but that is a topic for another discussion).

  4. Streaky locks

    I have been comparing how locks (critical sections) behave on different platforms recently and noticed Windows seemed to be quite different than others.

  5. Know your assembly (part N+1)

    Recently we have updated some of our compilers (Clang) and started running into mysterious problems, mostly in the physics code.

  6. Not all dot products are equal

    I had another interesting debugging session recently with quite an unexpected conclusion.

  7. operator[] considered harmful

    I’ve always felt conflicted about the subscription operator[] in standard containers.

  8. Know your assembly (part 5)

    The other day I was looking at a crash dump for a friend.

  9. Simple multithreading tricks

    Today I’d like to share a simple multithreading trick you can use to minimize “bubbles” in your pipeline.

  10. Zig pathtracer

    If you’ve been reading this blog for a bit, you might know that when I experiment with new programming languages, I like to write a simple pathtracer, to get a better “feel”.

  11. A debugger barrier

    I’ve recently been asked by a friend for a little help with debugging a problem he was running into.

  12. Grafana for dummies

    Grafana is a very popular “analytics platform” or in more professional terms - a system to create pretty graphs.

  13. Microcorruption writeup

    Microcorruption is my ongoing “distraction” – it’s an online CTF.

  14. API granularity

    I’d be the first to admit I don’t have much experience designing public APIs.

  15. Ranged based "for" story

    Consider the following, seemingly innocent (and completely made up) fragment of code: typedef std::map<int, std::string> MyMap; void foo(const MyMap& m) { for(const std::pair<int, std::string>& i : m) { if(i.first) { printf("%s\n", i.second.c_str()); } } }

  16. Two Stage Push & Pop

    I probably mentioned this before, but SPSC (single producer, single consumer) queue is one of my favorite structures.

  17. Circular buffers (to the rescue)

    Circular buffers are one (if not the) of my favorite data structures for some quick&dirty debugging.

  18. Vanishing warning

    Yet another MSVC story.

  19. Compilers are smart

    I recently transitioned to Visual Studio 2017 and while it went relatively painless, the new and improved optimizer uncovered some subtle issues lurking in the code (to be fair, Clang/GCC has been behaving same way for a long time now).

  20. Yellowknife

    Ever since I was a kid I was always fascinated by the northern lights and hoped to see them in person one day.

  21. Neural networks and the stock market

    Machine learning and neural networks seem to be all the rage recently.

  22. Who ate my stack

    The Old New Thing is one of my favorite blogs.

  23. Cache effects, illustrated

    Few years ago I published an article about love and care for your cache.

  24. A Halloween Story - get_temporary_buffer

    A little bit late, as Halloween was yesterday, but I think std::get_temporary_buffer is scary enough to qualify.

  25. Digital Dragons 2017

    I’ve just returned from the Digital Dragons 2017 conference.

  26. Who crashed?

    Last week I was investigating a crash originating somewhere in a code that looked like this (GPF in this C++ line): obj->GetFoo()->GetBar().Call(player->GetCat(), this, &MyType::SomeFunc, moreArgs We could discuss the number of indirections or the fact th…

  27. My check-in procedure

    A few weeks ago we had a discussion a forum discussion.

  28. Choices and consequences (part 2)

    I’ve been doing some minor refactoring recently and - once again - it got my thinking how seemingly tiny C++ changes can affect generated assembly code (and performance).

  29. Dynamic initializers strike back

    Back in the day I wrote about the ‘dynamic initializers’ problem.

  30. Wordpress to Hugo

    I’ve been planning on converting my blog to some static site generator for a while now, but the (perceived) amount of work involved seemed scary, so I kept coming up with reasons not to do it.

  31. Elo vs Glicko

    If you’ve ever done any matchmaking coding (…or played chess) you’re most likely familiar with the Elo rating system (PSA: it’s Elo, not ELO, it’s not an acronym, it’s named after a person - Arpad Elo).

  32. DD2016 - video

    A video from my DD2016 talk has been uploaded and can be viewed here:

  33. Digital Dragons 2016

    A few days ago I came back from the Digital Dragons 2016 conference.

  34. Elixir diaries

    You have probably heard about an AI algorithm defeating a human professional in a game of Go.

  35. Archeology

    Recently, we’ve been collectively complaining on Twitter about going crazy in C++ (as we do every few weeks).

  36. Fantasy football and statistics

    I’m playing in a fantasy football league with some coworkers this year.

  37. Whac-A-Mole

    I’ve been debugging a rare memory corruption bug recently and - as usual - it turned out to be an exercise in frustration.

  38. Know your assembly (part N)

    An entertaining head-scratcher from today.

  39. C++ 11 final

    I’ve been doing some micro-optimizations recently.

  40. Instrumenting crash dumps

    I’ve been planning to write a post about debugging multiplayer games (post-mortem) for a while now, but it keeps getting bigger and bigger, so instead of waiting until I can get enough time to finish it, I thought it’d be easier to share some quick’n’easy…

  41. NaN memories

    A nice thing about Twitter is that single tweet can bring so many memories.

  42. MESIng with cache

    (Please excuse the terrible pun, couldn’t help myself).

  43. Rust pathtracer

    Last year I briefly described my adventure with writing apathtracer in the Go language.

  44. Hidden danger of the BSF instruction

    Had a very interesting debugging session recently.

  45. Z-Machine interpreter in Go

    Recently, I had an inspiring discussion with fellow programmers, we were talking about interesting side projects/programs to quickly “try out” new programming language/job interview tasks.

  46. A Byte Too Far

    A short cautionary tale from today.

  47. Going deeper - addendum

    There’s been some comments to my previous post wondering about C++ compilers and their capabilities.

  48. Going deeper

    Few weeks ago I encountered a discussion on a Polish gamedev forum – participants were wondering whether it’s faster to access stack or heap memory.

  49. Patching binaries

    There may come a time in game programmer’s life when he has to fix a bug in a library he doesn’t have the source code for.

  50. Smartness overload #2

    Today’s article is brought to you by a friend of mine.