1. 2

    I wouldn’t think of making a statement my ad-free blog is ad-free, because I never even considered putting ads on my blog.

    Do people put ads on their blogs? Even if they’re not on a blogging platform like worpress.org, blogger, medium, etc.?

    1. 1

      Well, there are different kinds of blogs. My blog, for example, is just a personal site where I write crap for fun. Other people are Professional Bloggers with ads, sponsors, affiliate links, SEO, social media sharing widgets, paid content, etc. I guess if you can make yourself popular enough you can make a decent living at it but it always seemed like a lot of work to me.

      1. 1

        Are there any realistic estimates of how exactly popular one must be to make anything on that kind of stuff? With typical ad revenue per click, my feeling is that it’s more trouble than it’s worth unless you are really very, very big.

    1. 4

      I’m Eric and I write about things like obfuscated C code or reversing the Quake cracking program QCrack.

      http://faehnri.ch/

      1. 7

        spending quality time with the girlfriend, bake a sour-dough bread, some nice big cycling tour and setting up unbound on my vpn raspberry pi.

        1. 2

          Unbound? VPN Raspberry Pi?

          1. 2

            I run an openvpn on a raspberry pi at home. I currently have a dnsmasq based DNS setup on it (a bit like pi-hole, but self made). I want to replace it with unbound since that is a better caching resolver than dnsmasq.

            1. 1

              sounds like a neat project. What’s vpn all do, just let you act like you’re on your home network from outside? What do you need to know your home IP to connect?

              1. 2

                I have a Synology NAS that stores all our photos and I use the notes app as well. I travel a lot, so it is nice to have a vpn when I am using a public wifi. The girlfriend uses it for the same purposes.

                For connection I have a bit of a strange setup: my provider is dual stack, but the IPv4 is carrier grade NAT or something, so unreachable from the outside. IPv6 can be routed though. So my trick is that I run socat on a cheap/dumb scaleway instance that forwards IPv6 and IPv4 to my pi on IPv6. That way I can reach it from everywhere and only the scaleway box can talk to it.

        1. 6

          Might build a game with C and SDL. Was thinking of building Asteroids, without using any sprites.

          1. 2

            Sounds cool, so just drawing lines right to a buffer yourself? I got a project in mind to draw right to the buffer as well, but not even using SDL, we’ll see how that goes.

            1. 1

              Yeah. I contemplated also just using OpenGL. Would you use a graphics library, or would you skip even that?

              1. 3

                No library, just writing to whatever buffer the system lets me (using Handmade Hero for some inspiration/reference just to see if I can and to keep it simple.) But may go to OpenGL when I get other things working so I could use graphics hardware if I can.

                1. 3

                  Honestly when it comes to C I think going with a library is your best bet. Even SDL can be a bit bulky when it comes to game development. I’ve found that Allegro works great for game dev in C.

                  1. 1

                    I would say don’t use hardware acceleration, use only software rendering. First, you are doing asteroids, so, it’s 2D, it and can be made with small resolution, so rendering will be fast enough. Second, you can create many weird effects with software rendering, that would be a bit harder using hardware acceleration. And finally, software rendering is fun.

                1. 3

                  That looks neat, bookmarking for later, thanks.

                  1. 1

                    Bookmarking that one as well, looks well worth going through!

                  1. 7

                    I may get around to biking to locations around me I’ve been meaning to find, like a lighthouse, some parks, and this hidden farm in the middle of downtown that restaurants supposedly use produce from that includes an apiary.

                    1. 1

                      Apiaries++! I have a hive in my yard, but there’s no queen. Local honey would be a great part of the weekend.

                    1. 4

                      Picking up my static site generator project after nearly a six month hiatus paused half way through refactoring.

                      Currently planning on writing in file dependency resolution so it only compiles files that have changed and their dependants. Should cut recompile time down by 90%.

                      1. 3

                        Nice, I’ve been meaning to clean up my static site generator (I use Jekyll, I want to make my own templates.)

                      1. 8

                        Speaking as a C programmer, this is a great tour of all the worst parts of C. No destructors, no generics, the preprocessor, conditional compilation, check, check, check. It just needs a section on autoconf to round things out.

                        It is often easier, and even more correct, to just create a macro which repeats the code for you.

                        A macro can be more correct?! This is new to me.

                        Perhaps the overhead of the abstract structure is also unacceptable..

                        Number of times this is likely to happen to you: exactly zero.

                        C function signatures are simple and easy to understand.

                        It once took me 3 months of noodling on a simple http server to realize that bind() saves the pointer you pass into it, so makes certain lifetime expectations on it. Not one single piece of documentation I’ve seen in the last 5 years mentions this fact.

                        1. 4

                          It once took me 3 months of noodling on a simple http server to realize that bind() saves the pointer you pass into it

                          Which system? I’m pretty sure OpenBSD doesn’t.

                          https://github.com/openbsd/src/blob/4a4dc3ea4c4158dccd297c17b5ac5a6ff2af5515/sys/kern/uipc_syscalls.c#L200

                          https://github.com/openbsd/src/blob/4a4dc3ea4c4158dccd297c17b5ac5a6ff2af5515/sys/kern/uipc_syscalls.c#L1156

                          1. 2

                            Linux (that’s the manpage I linked to above). This was before I discovered OpenBSD.

                            Edit: I may be misremembering and maybe it was connect() that was the problem. It too seems fine on OpenBSD. Here’s my original eureka moment from 2011: https://github.com/akkartik/wart/commit/43366d75fbfe1. I know it’s not specific to that project because @smalina and I tried it again with a simple C program in 2016. Again on Linux.

                              1. 1

                                Notice that I didn’t implicate the kernel in my original comment, I responded to a statement about C signatures. We’d need to dig into libc for this, I think.

                                I’ll dig up a simple test program later today.

                                1. 2

                                  Notice that I didn’t implicate the kernel in my original comment, I responded to a statement about C signatures. We’d need to dig into libc for this, I think.

                                  bind and connect are syscalls, libc would only have a stub doing the syscall if anything at all since they are not part of the standard library.

                          2. 2

                            Perhaps the overhead of the abstract structure is also unacceptable..

                            Number of times this is likely to happen to you: exactly zero.

                            I have to worry about my embedded C code being too big for the stack as it is.

                            1. 1

                              Certainly. But is the author concerned with embedded programming? He seems to be speaking of “systems programming” in general.

                              Also, I interpreted that section as being about time overhead (since he’s talking about the optimizer eliminating it). Even in embedded situations, have you lately found the time overheads concerning?

                              1. 5

                                I work with 8-bit AVR MCUs. I often found myself having to cut corners and avoid certain abstractions, because that would have resulted either in larger or slower binaries, or would have used significantly more RAM. On an Atmega32U4, resources are very limited.

                            2. 1

                              Perhaps the overhead of the abstract structure is also unacceptable..

                              Number of times this is likely to happen to you: exactly zero.

                              Many times, actually. I see FSM_TIME. Hmm … seconds? Milliseconds? No indication of the unit. And what is FSM_TIME? Oh … it’s SYS_TIME. How cute. How is that defined? Oh, it depends upon operating system and the program being compiled. Lovely abstraction there. And I’m still trying to figure out the whole FSM abstraction (which stands for “Finite State Machine”). It’s bad enough to see a function written as:

                              static FSM_STATE(state_foobar)
                              {
                              ...
                              }
                              

                              and then wondering where the hell the variable context is defined! (a clue—it’s in the FSM_STATE() macro).

                              And that bind() issue is really puzzling, since that haven’t been my experience at all, and I work with Linux, Solaris, and Mac OS-X currently.

                              1. 1

                                I agree that excessive abstractions can hinder understanding. I’ve said this before myself: https://news.ycombinator.com/item?id=13570092. But OP is talking about performance overhead.

                                I’m still trying to reproduce the bind() issue. Of course when I want it to fail it doesn’t.

                            1. 1

                              Here’s my issue with this article. The author posits that most podcatchers will remove the ability to subscribe via a URL.

                              This makes no sense to me at all. There are many cases where people might want to listen to podcasts not offered through GOOG or APPL.

                              Every podcatcher I have access to still supports and explicitly provides options for this.

                              1. 5

                                Op here,

                                I’m saying “I won’t be surprised if these apps gradually and silently remove this feature”. Of course, I can’t know this, but this is what I’m afraid of. And I don’t think it’s that crazy to imagine.

                                1. 1

                                  It’s a valid concern. I guess I feel like as long as there’s any kind of application ecosystem on a given device, there will always be a podcatcher that allows subscriptions via bog standard RSS URL.

                                2. 4

                                  I subscribe to a lot of RSS feeds, including podcasts and there’s been a worrying trend over the last year or two where new podcasts don’t even provide a direct RSS/Atom feed.

                                  You have to visit their site to download the mp3 manually like some kind of animal. Or worse still, they make some stupid javascript widget or expect you to use a 3rd party app, or they proudly say it’s on itunes - which doesn’t expose the RSS feed - I had to write a scraper to get the RSS feed from the itunes page myself.

                                  Same with blogs too. So many blogs now don’t have a feed. You’re expected to go to the site to check for new content.

                                  The slow demise of RSS/Atom is a really worrying situation fo me and very few people seem to care.

                                  1. 1

                                    That is disappointing, and surprising given that there are companies like Feedly and Flipboard among others whose sole business relies on consuming RSS-ish feeds.

                                  2. 1

                                    How was the author saying that? Sounded like they were saying the other way around, if a podcaster posts just over RSS on their site then users on just Apple won’t see it on Apple by default.

                                    1. 2

                                      I think you’re conflating two things.

                                      There are two problems here:

                                      1. Unless you take explicit steps, merely publishing an RSS URL will not get your podcast into iTunes/Google Play
                                      2. The author is worried that podcatchers (which now all provide this feature, if perhaps in an undocumented way for some) will remove the capability of subscribing to podcast RSS feeds via URL.
                                      1. 2

                                        Oh you said podcatcher. I read that as podcaster because I never heard of it called a podcatcher but that makes sense now.

                                    1. 4

                                      Ahh! I’ve been waiting for him to finish that book. Thank you for reminding me.

                                      Have you read Ellen Wood’s book “The Origins of Capitalism”? I found it to be adjacently interesting.

                                      1. 3

                                        Haven’t heard of that one, sounds interesting.

                                      2. 1

                                        I really liked this book, but only to a certain extent, after which it became a bit repetitive at times. But overall very fun read with incredible stories from the folks who work in bullshit jobs themselves.

                                        1. 1

                                          Good to hear you liked it, I look forward to reading it.

                                      1. 6

                                        To make it more complicated, the author is assuming a byte is 8 bits. I do some work on a TI C2000 where a “byte” (or really the addressable unit) is 16 bits.

                                        1. 4

                                          Do not conflate addressable unit with byte.

                                        1. 8

                                          I did a full write-up of my reversing of a Quake cracking program, and thought that’s right up the alley of PoC||GTFO so submitted it there.

                                          With a break from that, probably gonna do some sewing, then get started on learning to write a Nintendo NES game is assembly.

                                          1. 4

                                            I finished up my reverse engineering of QCRACK, the old Quake cracking program. I’ll be doing a full writeup to submit for something about how this was my first reverse engineering project.

                                            1. 6

                                              Continuing my work on reversing the old Quake cracking program QCRACK. I have a way forward to completion, basically reversed, just writing my own version in code so I can show that instead of assembly (and to verify to my self that I do understand it right.)

                                              You can see my previous work on it on my site.

                                              1. 5

                                                This reminded me of the curl is C blogpost, in which the author makes similar arguments around compatibility and low-dependency.

                                                1. 3

                                                  Read the title of that “CURL IS C” like “THIS IS SPARTA”.

                                                1. 3

                                                  new Raspberry Pi on pi day, took me a while to get that

                                                  1. 13

                                                    aw man I thought this was for the protocol

                                                    1. 2

                                                      ^^;

                                                      1. 2

                                                        likewise

                                                    1. 1

                                                      Whoever built this why did you start with a blaring trumpet? Immediately closed the window, never opening it again.

                                                      1. 1

                                                        Windows 3.1 (well, Windows for a long time) started with a sound played on the speaker. Modern OSes don’t do that anymore, I think.

                                                        1. 1

                                                          Did not notice the sound, probably would have done the same.

                                                        1. 1

                                                          You want indices in C starting at 1?

                                                          #include <stdio.h>
                                                          
                                                          void main(void) {
                                                              char a[] = {1, 2, 3};
                                                              char *b = a-1;
                                                              printf("%d\n", b[1]);
                                                          }
                                                          

                                                          I love the reason they give here for zero-based is a CEO wants to race yachts.

                                                          1. 1

                                                            That’s undefined behavior.

                                                          1. 5

                                                            The claim that C++ is a superset of C is a marketing statements from the 1990s designed to attract the many C developers to C++.

                                                            Lots of of gory details about C/C++ differences and similarities

                                                            1. 9

                                                              During that period, when I found myself writing a C program, I would occasionally name a variable ‘this’ so any future C++ compile would complain.

                                                              1. 1

                                                                Nice, never seen that C book.