Yegor Bugayenko's Blog, page 5
August 23, 2022
Research Paper Simple Template
My first academic paperwas accepted and published in 1998. My most recent one was rejected by SPLASH just a week ago.I���m writing two papers right now and co-authoring about ten others.So far, my results are very poor: way more rejections than I expected.The key lesson I���ve learned so far: the reason most papers get rejectedis not because they are essentially wrong. Instead, reviewers reject thembecause they have no enthusiasm for decrypting a poorly structured text,even though it may ...
August 9, 2022
Declarative and Immutable Pipeline of Transformations
A few months ago I made a small Java library,which is worth explaining sincethe design of its classes and interfaces is pretty unusual. It���s very muchobject-oriented for a pretty imperative task: building a pipeline ofdocument transformations. The goal was to do this in a declarative andimmutable way, and in Java. Well, as much as it���s possible.
[image error]Barfuss (2005) by Til SchweigerLet���s say you have a document, and you have a collection of transformations,each of which will do someth...
August 3, 2022
The Code and Its Tests in Different Pull Requests
I suggested this idea a few weeks agoon Twitterand got mostly negative reactions. That���s why I wrote this blog post, to elaborate on thesubject in an attempt to convince you. Here is the rule I���m suggesting:always submit changes to the code separately from the changes toits unit tests. Simply put, in one pull request you modify the tests, maybemarking some of them as ���disabled.��� You merge this pull request and thenmake the second one, modifying the code and most probablyremoving ...
July 19, 2022
Command Line Default Options in Linearized Plain Text
A few years agoI created xcop,a simple command line tool thatcan check the style of an XML file. It���s similar toCheckstyle (for Java) andPep8 (for Python),but for XML. It���s pretty easy to use xcop: just run it with a few commandline arguments and it returns the list of errors found in your XML file, if there are any. However,some of the arguments may be convenient to have as defaults and instead ofpassing them through the command line on every execution, we could store them in som...
July 4, 2022
Automated Tests Are the Safety Net that Saves You
Automated tests are the ones that are usually called unit tests or integration tests,or just any tests that are being executed automatically. That���s the differencebetween them and manual tests. What is the purpose of automated tests?First and foremost, they reduce the amount of routine work: we don���tneed to remember how to test a module, the tests remember. We just clicka button and a suite of tests, which may consist of hundreds or thousands,runs and reports errors, if any are found. ...
June 13, 2022
The Principle of One
When I make a slide deck for a new presentation, invent a new domain name, think abouta name for a new Java class, itemize bullet points in an academic paper, evenwrite an email���I try to follow a simple principle which helps me makemy content more solid. Well, at least I believe it does. Maybe it will help you as well.The principle is simple: at all costs, try to squeeze the content intoone word, one sentence, one paragraph, or one page.
[image error]True Story (2021) by Eric NewmanA more formal ...
June 4, 2022
Reflection Means Hidden Coupling
Reflective programming (or reflection) happenswhen your code changes itself on the fly. For example, a method of a class, when we call it,among other things adds a new method to the class(also known as monkey patching). Java, Python, PHP, JavaScript, you name it���theyall have this ���powerful��� feature. What���s wrong with it? Well, it���s slow, dangerous,and hard to read and debug.But all that is nothing compared with the coupling it introduces to the code.
[image error]Wheelman (2017) by Je...March 28, 2022
Bugs Occam���s Razor
For each accepted explanation of a phenomenon, there may be an extremely large, perhaps even incomprehensible, number of possible and more complex alternatives. The principle of parsimony, also knownas Occam���s razor, suggests we prefer the simplest one. For example, ���I can���t open the door and can���t attend the meeting��� is a descriptionof a problem, which could be reduced to ���I can���t open the door���without losing any information, which might be important for thosewho are wai...
February 15, 2022
Fallacies of AI Driven Coding
A few days ago, DeepMind (acquired by Google in 2014) releasedAlphaCode and self-publishedapaperexplaining how their artificial intelligence (AI) can ���understand���a programming contest task written in English and then write a Python, Java or C++ program, whichwould work in about 30% of cases.Earlier last year OpenAI ($1B-funded by Microsoft in 2019)released Codexand published a paper, claimingthat their AI can also solve around 30% of the programming tasks it wastested with.Wire...
November 30, 2021
Academic Teaching is Hard
A few months ago I got an opportunity to teach a single course for3rd-year BSc students at Innopolis University (Russia). The title was ���System Software Design.��� The size of the group was about 150 people and the duration was8 weeks. I was supposed to give them sixteen lectures, two lectures per week. And I was asked to examine their knowledgeby the end of the course. Pretty much a normal job for a universityteacher. And you know, in my opinion, I failed most parts of it. Here is wha...