1. 1

    @ruki: I’ve noticed that with game engines that people make at home and try to promote. Usually if you write an engine, a library, etc. it’s nice to actually have a full use case / demo / application done with it. For example, Unreal Engine 4 has tons of tech demos, short films, etc. that are made with it. A game engine lives and dies by the projects it’s been used to create. In my opinion, the same applies for code libraries.

    1. 1

      Ok, Thank you for your advice.

      1. 4

        Thank you for the invite @emrox! Yes, and also added Perl during the lunch break :) Feel free to suggest other lists on GitHub: https://github.com/listcommunity/support

        1. 2

          Thank you @binarymax @nickpsecurity. I’ve been reading Lobsters for a while but it’s nice to be able to contribute :)

          1. 1

            This is really nice. Thank you for putting this together. And welcome to Lobsters :)

            1. 1

              Welcome to Lobsters! Good idea trying to integrate and organize the lists. :)

              1. 2

                the author of list.community contacted me on Twitter to let you know he added the C++ section to the page

                https://list.community/fffaraz/awesome-cpp

                1. 1

                  No Perl either!

                  1. 3

                    There’s Javascript and Golang, it’s okay!

                      1. 2

                        I stand corrected, thanks! I didn’t find it on the linked front page.

                        1. 3
                  1. 3

                    That would have helped me understand why SOM was taught in my CS course… We used it to match a grid to another grid which I found pointless…

                    1. 20

                      Chrome is worse than Internet Explorer 6, really. I don’t recall ever being concerned that IE6 itself was spying on me and phoning home to Microsoft, but I can’t say that about Chrome and Google. I think using Chromium mostly avoids that problem, at least.

                      However, I recently found Otter Browser which attempts to mimic the original Opera browser. I’ve been using it instead of Chromium when I can, and haven’t noticed any rendering problems or Javascript incompatibility, which should be expected since it’s WebKit based.

                      My biggest complaints so far are that the built in ad-block isn’t great compared to uBlock Origin, some videos don’t play due to Widevine problems, and it’s not very stable. The last problem may be my own fault, though, because I’m running the bleeding edge tip of their Git repo. It’s on my todo list to start debugging some of the problems and contributing code, but I say that about a lot of projects…

                      In any case, it’s being actively developed and I think it’s worth a look for anybody tired of being at the mercy of Google, Microsoft, Apple, and Mozilla.

                      1. 5

                        I’ve used SeaMonkey[1] for years now which mimics the original Firefox 2.0. Never found any compatibility issues as it’s still a recent Gecko, some WebGL or WebRTC stuff doesn’t always work but that’s fine.

                        [1] https://www.seamonkey-project.org/

                        1. 1

                          Otter just seems to be a UI wrapped around WebKit. Meh.

                          1. 1

                            I’m not using it for the rendering engine.

                            I’m not even sure why the underlying engine matters, really.

                        1. 1

                          GPU results are extremely hardware dependent[1] so be aware that it’s not deterministic and adapt your test cases accordingly.

                          [1] https://stackoverflow.com/questions/24977294/is-cuda-warp-scheduling-deterministic

                          1. 5

                            For me, it’s really annoying with things like Google News.

                            1. 3

                              My Google News has been stuck on news about Belgium for a while now although I wanted France… I couldn’t find a way to change it last time I checked…

                              1. 1

                                My Google News has been stuck on news about Belgium for a while now although I wanted France… I couldn’t find a way to change it last time I checked…

                                Go to news.google.fr .

                            1. 4

                              Have you tried Ada? I never looked at it myself, but that article[1] posted today looks very interesting. And there seems to be a well supported web server with WS support[2]

                              [1] http://blog.adacore.com/theres-a-mini-rtos-in-my-language [2] https://docs.adacore.com/aws-docs/aws/

                              1. 4

                                TBH I can’t believe Ada is still alive. I thought it is something that we did in Theory of Programming Languages course and called nothing other than obsolete systems use it. Would give it a shot for sure!

                                1. 4

                                  This article trying to use it for audio applications will give you a nice taste of the language:

                                  http://www.electronicdesign.com/embedded-revolution/assessing-ada-language-audio-applications

                                  This Barnes book shows how it’s systematically designed for safety at every level:

                                  https://www.adacore.com/books/safe-and-secure-software

                                  Note: The AdaCore website has a section called Gems that gives tips on a lot of useful ways to apply Ada.

                                  Finally, if you do Ada, you get the option of using Design-by-Contract (built-in to 2012) and/or SPARK language. One gives you clear specifications of program behavior that take you right to source of errors when fuzzing or something. The other is a smaller variant of Ada that integrates into automated, theorem provers to try to prove your code free of common errors in all cases versus just ones you think of like with testing. Those errors include things like integer overflow or divide by zero. Here’s some resources on those:

                                  http://www.eiffel.com/developers/design_by_contract_in_detail.html

                                  https://en.wikipedia.org/wiki/SPARK_(programming_language)

                                  https://www.amazon.com/Building-High-Integrity-Applications-SPARK/dp/1107040736

                                  The book and even language was designed for people without a background in formal methods. I’ve gotten positive feedback from a few people on it. Also, I encouraged some people to try SPARK for safer, native methods in languages such as Go. It’s kludgier than things like Rust designed for that in mind but still works.

                                  1. 2

                                    I’ve taken a look around Ada and got quite confused around the ecosystem and which versions of the language are available for free vs commercial. Are you able to give an overview as to the different dialects/Versions/recommended starting points?

                                    1. 4

                                      The main compiler vendor for Ada is AdaCore - that’s the commercial compiler. There is an open source version that AdaCore helps to developed called GNAT and it’s part of the GCC toolchain. It’s licensed with a special GMGPL license or GPLv3 with a runtime exception - meaning you can use both for closed source software development (as long as you don’t modify the compiler that is).

                                      There is also GNAT AUX which was developed by John Marino as part of a project I was part of in the past

                                      1. 1

                                        Thanks for clearing up the unusual license.

                                      2. 2

                                        I hear there is or was some weird stuff involved in the licensing. I’m not sure exactly what’s going on there. I just know they have a GPL version of GNAT that seemed like it can be used with GPL’d programs:

                                        https://www.adacore.com/community

                                        Here’s more on that:

                                        https://en.wikipedia.org/wiki/GNAT

                                1. 2

                                  Is this somebody ripping off emscripten? or did they write their own? Reading the docs it looks like buzzword crap. I’m going to guess it is emscripten.

                                  If it isn’t crap, then I think they need to redo some docs.

                                  edit: I’m pretty sure it is a scam, I don’t know who is upvoting this. edit edit: Wow. was posted on hacker news in 2014. Maybe it is just a site written by non native english speakers. I am super confused about reality right now.

                                  1. 1

                                    by non native english speakers

                                    Given the users of the tech are France based companies, it wouldn’t be surprising.

                                    Also, after a quick look at the getting started pages, it seems like a new target for the base clang++ CLI instead of an entirely new compiler like emcc.

                                  1. 1

                                    In the good old days there was source navigator. The last release was in 2014. Maybe it has some interesting successor you’d like to talk about?

                                    1. 1

                                      SourceTrail is pretty nice, but I’ve yet to use it at work: https://www.sourcetrail.com/

                                    1. 2

                                      For those wondering: [edited out some secrets I accidentally leaked here.]

                                      Was actually: I will certainly wear my temporary Firefox tattoos, inflate the Firefox balloons and put some stickers up. (Source: http://web.archive.org/web/20171109195042/https://daniel.haxx.se/blog/2017/11/08/firefox-quantum/)

                                      1. 1

                                        Unfortunately, the same will happen. His project or Wayland will end up being forked to support Nvidia…

                                        Also realised that it’s named “Sway” because the 1st letter is actually the 1st letter of his alias.

                                        1. 1

                                          Have you ever tried to convert a large CMake project to XMake? There’s a few around like UE4, LLVM, Urho3D which would be interesting cases.

                                          I’ve seen XMake make the rounds a little bit, but like CMake, I would not think about it unless it’s being used by a dependency I’m interested in. Then if it’s a dependency, how easy is it to integrate with my project?

                                          1. 1

                                            Sounds to me that it’s telling once how many of the next octets are urgent from that point, it doesn’t contain the urgent data as the author implies. The correction RFC seem to confirm that.

                                            1. 3

                                              Article is from 2010.

                                              Note that MISRA is updated with new standards. The version I have is for C99 for example. I’m sure there will or is already one for C11.

                                              1. 2

                                                You are right.
                                                A few of the guidelines with major criticism appear to be deleted from the subsequent MISRA-2004 guidelines.
                                                Subsequently MISRA-2012 is extended to cover C99 as well.

                                                There doesn’t appear to be one for C11 yet
                                                https://en.wikipedia.org/wiki/MISRA_C#MISRA_C:2012_Amendment_1

                                              1. 1

                                                Please add “(2009)”, even though the date isn’t in the article, the oldest version on archive.org is 26th December 2009.

                                                EDIT: actual date on page 4: “Patchou, December 15th, 2009 (updated March 3rd 2011)”

                                                1. 7

                                                  The related GitHub issue is quite interesting to follow : https://github.com/facebook/graphql/issues/351

                                                  1. 1

                                                    Whenever I’m looking for a wel designed audio API, I always look towards this high quality C++ library : https://www.music.mcgill.ca/~gary/rtaudio/

                                                    Hopefully, some spec can be done for “pull” style audio API for the web. The rest can clearly be done with the existing APIs.

                                                    1. 1

                                                      That API seemingly forces you to use threads. I don’t like it.

                                                      From glancing the docs, I don’t see how to calculate latency either. streamTime looks like a clue but the docs are vague about it: https://www.music.mcgill.ca/%7Egary/rtaudio/RtAudio_8h.html#a112c7b7e25a974977f6fc094cef1a31f

                                                    1. 1

                                                      Note that their previous implementation is the base of Unreal Engine 4’s atmosphere rendering:

                                                      https://github.com/EpicGames/UnrealEngine/blob/master/Engine/Shaders/Private/AtmospherePrecompute.usf

                                                      1. 7

                                                        Rolled a new release for my game. The most notable changes are:

                                                        • Player physics for walking around the terrain. You fall through the world when your FPS drops too low and I haven’t bothered debugging that yet.
                                                        • Extremely basic multiplayer (you can see each other walking around). It’s been in for quite a while but I haven’t enabled it in releases because my god the the BSD sockets API is a load of shit. It’s so hard writing socket code that works on Windows/OSX/Linux/OpenBSD because every platform is picky/lenient about different things and there’s no way to know without testing everything everywhere.
                                                        • Moderate renderer overhaul. I build lists of render passes and their draw calls so I can submit them all at once at the end of the frame, rather than submitting them immediately. The big advantage is that I can now map a single UBO at the start of the frame and copy everything into that, which entirely eliminates any uniforms related book keeping code (no need to store locations or allocate/delete individual UBOs). It also opens the door to draw call sorting optimisations and a multithreaded renderer, but those are less important IMO.
                                                        • New skybox shader. My old one was hacked together in an evening and not at all grounded in reality, so I got rid of it and did a Hosek-Wilkie sky like everyone else. It doesn’t seem to play nice close to or below the horizon but I haven’t investigated yet.
                                                        • Updater fixes. The game should finally be able to update itself to the next version without manual intervention. rename on Windows fails if the destination file already exists, so I had to replace that with MoveFileEx and MOVEFILE_REPLACE_EXISTING. Apparently RegSetValue is broken too so it wasn’t updating the installed size.

                                                        Next up is fixing all the bugs I didn’t fix so I could knock out a release and making the game work with UAC enabled. I’d also like to throw out my terrain tiling/streaming system and implement cdclipmaps from SIGGRAPH’s ocean rendering talk. My entire terrain easily fits into VRAM so clipmaps will be far simpler.

                                                        1. 3
                                                          • Re: player going through terrain: are you using fixed timesteps for your physics? That sounds like an issue I had a long time ago now
                                                          • Re: ocean rendering: have you considered the projected grid method? It’s been used in a few games and there’s some research around it as well. I think it was introduced by Hinsinger et al. in Interactive animation of ocean waves
                                                          1. 1

                                                            Not using fixed timesteps, good call!

                                                            I don’t actually have an ocean yet, I’m considering using clipmaps + their geomorphing for static terrain rendering because it seems simpler to implement than LOD selection logic.

                                                            (You should submit that paper as a story btw)

                                                          2. 2

                                                            I could be wrong, but my intuition on the player physics (especially if you rolled your own) is that between timesteps your collision object is “tunneling” to the other side of the plane for the terrain–the hint for me being that it only happens at low framerates.

                                                            Look into “swept volume” collision detection or GJK.

                                                            (there’s also a lot of good stuff here)

                                                            1. 2

                                                              I’m already doing continuous collision detection so it shouldn’t be a tunneling issue. My code for stepping a player forward in time is quite messy so I expect it’s just some typo, which is why I don’t want to debug it. It’s going to be a slog :<

                                                              1. 1

                                                                :(