1. 1

    I found some errors in my openings, but sometimes I don’t agree with chesscoach. An example would be 1.c4 g6 2.g3 and now chesscoach tells me g3 is -1.4 points wrong while 2. g4 is the correct choice. I might want to play an english or english-like opening, and -1.4 seems too much.

    1. 1


      As a result of your feedback, we made some improvements to our website and released an update just now :)

      The new features are:

      • You can now analyze games with a specific time control class (for example: blitz games)
      • We’ve expanded our openings dataset so opening moves don’t get reported as mistakes
      • You can filter mistakes by the minimum number of games that you made them in
      • Added ability to report mistakes as not being mistakes

      Thanks again for your valuable feedback :)

      Cheers ! https://chesscoach.network/

    1. 5

      Are you planning to support lichess accounts? I’d love to try it 😊

      1. 12

        The truth is we already support lichess :) You only need to select it from the drop-down :)

        1. 1

          Cool! You might want to find a better title for your next posts then :-D

      1. 9

        I think it’s a waste of time and effort. I, personally do not appreciate this kind of troll, sarcasm bug report. It’s the same with people posting unrelated gifs in github issue and think it’s funny.

        1. 3

          I was being very obvious(through exaggeration), whereas a troll would hide it, I didn’t. The core idea is the sad state of ads that are making it more and more distracting and annoying to view online content.

          To see a search engine company, whose primary goal it was to make content easily found, now making it harder to actually consume and distract from the content, is disingenuous, and it conflicts with the essence of the product on a logical level. IOW “Hi, I’m G, I’ll let you find the content, but once found, I’ll make it hard for you to consume the content”.

          But it does indeed turn out to be a waste of time.

          1. 2

            a search engine company, whose primary goal it was to make content easily found […]

            Google isn’t a search company, it’s an ad broker and delivery company.

            it conflicts with the essence of the product on a logical level

            No it doesn’t, it makes advertisers and Google more money.

            1. 1

              No it doesn’t, it makes advertisers and Google more money.

              Well, for me the essence of their product is that I, as a user search for something, and then I read/watch the content uninterrupted. That would be ideal.

        1. 2

          This ranking is interesting, but since I’m not an expert in competitive programming, especially at such a high level, could someone please interpret the results of this year? How are they special compared to past years, etc? Anything remarkable? Anything that catches your eye and why?

          Thank you

          1. 1

            Administrative rules are here: https://ioi2019.az/en-content-14.html (with changes in red (eg strike through), compared to 2018) . Seem to be minor changes only.

            The problems (tasks), are here https://ioi2019.az/en-content-27.html

            In terms of anything special…

            Well.. The team from neighboring country Armenia, did not attend this year. I suspect this is because of not-very-good geo political relations between then host country and Armenia. They were in all the prior Olympiads.

            Gennady Korotkevich, from Belarus, is still #1 hall-of-famer https://stats.ioinformatics.org/people/804 He also, seem to be, still, the only one that solved all problems all correctly https://stats.ioinformatics.org/olympiads/2011 (I did just manual review though, I might be wrong).

            All problems seem to be in combinatorics, dynamic programming, graph theory. I think, partially, it is because solutions to those are easier to grade fairly.

            It would be very very interesting to see the actual coded solutions. But I have not found where they are.. yet.

          1. 2
            1. 1

              Yeah, but mostly for their core stuff.

              1. 1

                I missed that constant-time performance comment - which is very helpful, but wish it was called out a little more explicitly. I wish the memory/runtime complexity were called out as explicitly as the load factor that is liberally sprinkled throughout.

              1. 2

                I think the most underdocumented area in terms of computational complexity might actually be machine learning, deep learning and the like. I’ve never seen any talk about complexity there.

                1. 0

                  Great conclusion

                  1. 2

                    I work in my spare time.

                    1. 5

                      I would pick one from these two options for server-side pdf generation:

                      • using pdflatex (comes with the latex distribution called texlive in Ubuntu, in particular the texlive-base package)

                      • using pandoc to convert a markup document to pdf (I think this uses pdflatex as well)

                      If you go with the first option, you may need to have some templates ready and fill them with data.

                      The second option is more convenient since writing markup (for example markdown) is easier.

                      1. 4

                        ++ for pdflatex! Tex stuff isn’t the easiest to do initially (and some templating engines don’t work well with it), but the results are consistent and the layout options are vast!

                        1. 1

                          Yes, this is one of the ones I was really considering. It seems a reasonable effort, especially if starting from a dockerized texlive.. Since you mentioned it, what sort of issues you encountered with the templating engines ?

                          1. 2

                            It was with Jinja2, I was trying to ansible'ize some generating of invoices. Ansible was puking when processing the tex file.

                            Further in the past, I used perl to dynamically build the tex files (no templates).

                      1. 2

                        unless I’m missing something YaCy comes close to what you’re describing

                        1. 1

                          I looked into YaCy and Faroo before starting to think about this. Faroo is not even close. YaCy on the other hand is close enough but comes with a number drawback such as that it is very slow (due to fraud and spam protection) and does not rely on AI/ Learning but instead on conventional ranking methods. With that said it might be a good codebase or concept to start from.

                          YaCy also works conventionally by building an index and then traversing that index to respond to queries but what I have in mind (and have yet to start experimenting with) is No Index. Just a large scale global neural network that holds the information within that network. Now this comes with a million issues but on the other hand since you don’t fully understand the impact of your node on the search result (since is is part of the larger global network) you cannot in theory manipulate the search results..

                          1. 1

                            PeARS is also worth looking into (recently funded by Mozilla).

                            About the NN, I’m not sure what that would do..

                            since you don’t fully understand the impact of your node on the search result you cannot in theory manipulate the search results

                            Not sure about how that would translate into practice.

                            YaCy on the other hand is close enough but comes with a number drawback such as that it is very slow

                            Reaching feature-parity with YaCy would require a ton of effort. But, you can always fork YaCy and try out your ideas and see how it goes.

                        1. 1

                          Yes, org-mode comes with any Emacs install. Since it’s plain-text, it can be versioned with Git (or any other version control system). Org documents can be exported to a variety of other different formats including Word (via org->odt->doc/docx) and PDF (via org->tex->pdf).

                          Orgmode features code-blocks (the equivalent of reStructuredText’s code directives ). These are extremely useful since they can be run inside the document, and their result can be included in the document, either in the form of syntax highlighted source code or the results of that source code (data, images, or anything else that the code block generates) or both. For the code blocks, a wide variety of languages are supported (some of those languages are DSLs for drawing diagrams, sketches, for example you can design simple UI mockups via plantuml code blocks).

                          So you can include diagrams about systems, UML use-cases, it also has tables (fully equipped with excel-like formulas), you may also use state-diagrams to describe the test procedures you mentioned.

                          If you have larger documents to write, you may also benefit from #+INCLUDE directives that org-mode provides you with. This helps separate your document into sections/chapters.

                          Other use-cases include:

                          Having said this, Word and Excel remain the #1 word processor and spreadsheet programs out there. Orgmode, as complete as it may be, is tailored for technical people who can take advantage of its features.

                          1. 1

                            excellent article, I wish there were more of these articles around for different types of teams and the composition and interactions between roles

                            1. 4

                              because choosing your employees/teammates based on 20 lines of python is definitely a good idea.

                              1. 1

                                the blog post starts from a problem and describes a solution to that particular problem. sure, other people want to optimize for something else, everyone can, they are free to do that. if you believe a different problem should be solved, that’s interesting to me, and I look forward to reading your problem and your solution to it.

                                1. 3

                                  It is not much of an exaggeration to say that trying to find algorithmic or technical solutions to humane and social problems is one of the biggest risks to humanity’s mid-term future.

                                  Someone else said it better: ‘any sufficiently complicated technical problem is a political problem first’.

                                  This for sure is a nice exercise in algorithms for matching purposes and for automation, but dealing with humans with a blunt algorithm is a terrible mistake, you must approach human decisions with human sensitivities.

                              1. 6

                                One nice feature of FIFO’s is that if you write less than PIPE_BUF bytes, the write is atomic. This is not necessarily so useful in the 1 producer multiple consumer case, but in multiple producers one consumer case it means the file lock can be removed alltogether. Unfortunately, PIPE_BUF is small on OS’s like FreeBSD (512 bytes, I think), but Linux is around 8kb, I think.

                                The other thing to note is that the FIFO is not doing fan-out. Each consumer is destructive to the FIFO.

                                All-in-all, I think FIFOs are an underused tool in a lot of software. The kernel is pretty efficient at shuffling data around, the cost is a a syscall to read/write to a FIFO, but it’s a nice way to connect components and maintain process boundaries. Unless someone is doing really high throughput/low latency work where disrupting the CPU cache is a serious problem, using FIFOs to connect components will probably have no negative effect on performance.

                                1. 2

                                  Thank you for your comment. FIFOs can be a bit limited in terms of atomic writes, and in they are indeed not recommended for multiple consumers. I’ve extended the post to add more details about some of the limitations.

                                1. 1

                                  btw, FB has also announced a Parse-compatible API server based on nodejs and express (BSD license). It seems that users are happy with this one as well

                                  1. 3

                                    Going to spend some time looking at self hosted continuous integration solutions. I’m unhappy with jenkins and not very interested in moving to one of the hosted ones out there.

                                    1. 2

                                      I’ve set up and used buildbot, it was a smooth experience.

                                      1. 1

                                        I have the beginnings of a trivial CI server on github. The thing that annoys me with existing solutions is that configuration is usually outside your project.

                                        Cloud solutions (eg. Circle) usually require configuration inside your repo. That’s how it should be.

                                      1. 23

                                        This is an oath about things 99% of programmers have 0 control of.

                                        If this oath is meant to make us all feel bad about the current state of software “engineering”, it does a good job.

                                        1. 1

                                          That doesn’t seem true to me at all. These, especially, seem like things I’ve tried to stick to that others ignore:

                                          1 & 2 are simple: do no harm, insert no back doors.

                                          5 - Don’t take shortcuts that don’t agree with structure of existing systems.

                                          6 - Team productivity is more important than your personal productivity. It’s fine to just-get-shit-done, but not at the cost of other’s ability to do their work.

                                          8 - Others rely on your estimates. If you’re not sure how something will work, simply don’t make an estimate of how long it’ll take to code it up.

                                          1. 1

                                            Hmm, it’s the perceived compliance to the rules in the oath that the programmer has no control of. The actual compliance is always measured by a manager/teamlead via KPIs and rules he imposes.

                                          1. 1

                                            Maybe this oath was inspired by this article (the article briefly compares the construction industry with the software industry and how roles are viewed and the meaning of the term “engineer” in both of those industries) . This oath can cause some confusion. Maybe an analogy would help: a construction worker is a subordinate of a construction engineer the same way as a software engineer is the subordinate of a manager/teamlead. The programmer is at the bottom of the hierarchy just as a construction worker is at the bottom of the hierarchy. Isn’t subscribing to such an oath something that a manager should do and not a software engineer ?

                                            Also, pretty much every employment document out there would force you to comply to similar requirements as this oath. So.. it’s a bit confusing why a public oath like that is necessary, maybe just as template?

                                            But.. there’s a confusion even in the title of the oath. What is a programmer ? What is the difference between a software engineer, a programmer and a developer ? I’ve read various answers on the difference between those terms and there wasn’t any consistent definition.