Files.fileExists or file.exists?

  • 981 words
  • 5 minutes to read
  • comments

How would you design a class that abstracts, say, a file on a disk with certain properties? Let’s say you need to be able to check whether the file exists on the disk or has already been deleted. Would you create an object first and then call the exists() method on it, or would you call Disk.fileExists() first and only then, if TRUE is returned, make an instance of the File class and continue working with it? This may sound like a matter of taste, but it’s not that simple.

Win the Medals While Young

  • 519 words
  • 2 minutes to read
  • comments

One of the most frequently asked questions I hear from junior programmers (no matter their age) is: What should I focus on now to build the best career I can? There are multiple options, including creating a startup, getting a PhD, contributing to open source, working for Google, and many others. In my opinion, the most common mistake is trying to get rich fast. Obviously, money matters and is the ultimate metric of career success, but trying to get it too early is nothing more than gambling with your life at stake. Instead, I suggest focusing on winning some “medals,” which can later be converted to cash, not the other way around.

Patents and Their Claims

  • 1449 words
  • 8 minutes to read
  • comments

If you, like me, are not a patent attorney and don’t understand patent law, but your boss asks you to turn your recently written piece of code into a patent, read on. The boss most probably won’t ask you to write the entire patent. Instead, he will ask you to prepare a quick summary of the invention (usually, a few slides) and then a hired lawyer will turn it into a full-scale patent application. If you understand the purpose of patents, the mechanics of patent offices, and the format of a patent claim, you will do just fine.

Онлайн хулиганы

  • 722 words
  • 4 minutes to read
  • comments

А знаете, какое самое популярное по числу просмотров видео на YouTube? Вот это. 14 миллиардов просмотров за менее чем семь лет. И таких видео много. Задаюсь вопросом, о чем эта песня? Чему она учит? Какой вообще в ней смысл? С моей точки зрения, сформированной когда-то давно сказками Сергея Михалкова, Самуила Маршака и Агнии Барто, в этой песне смысла нет. Но ведь он должен быть, раз её посмотрели и оценили по достоинству сотни миллионов родителей и детей! Нет, не должен. Всё просто: что сейчас нравится миллионам, то и является эталоном качества. Но ведь так было не всегда.

Куликовы поля

  • 1468 words
  • 8 minutes to read
  • comments

Я не историк и даже в школе историю не любил. Не любил, но верил, что так все и было: и Французская революция, и восстание Спартака, и война Аттилы с Римом, и охоты на мамонтов с последующими иллюстрациями на стенах древних пещер. Все это было именно так, как рассказывали нам учителя истории (они в моем детстве почему-то часто менялись). Позже, когда появился Internet, я узнал о Новой Хронологии и стал скептиком — перестал верить на слово тому, что говорят историки. Стал в любом описании событий прошлого искать альтернативные версии. Еще позже я узнал, что это называется конспирологией и в порядочном обществе осуждается, Пелевин не даст соврать.

Ping Me, Please!

  • 334 words
  • 1 minutes to read
  • comments

There is a big difference between distributed and collocated teams: the communication in distributed teams is asynchronous, which essentially means that when you ask something, a response doesn’t arrive immediately. Moreover, it may never arrive. This can be very uncomfortable for those who are used to the office work setup, where most communications are synchronous: any question is answered immediately, one way or another. In open-source repositories, everything is asynchronous. Here is a simple rule that may help you decrease the level of frustration in GitHub projects: ping them every time you need an answer or attention to be paid to your code.

Research Flow

  • 548 words
  • 3 minutes to read
  • comments

Say, you are a student, and I’m your teacher. Your task is to conduct an experiment or a study and then write a research paper about it. You can do it on your own and then present me with the results in the end. Sometimes it may work, but most probably it won’t. I will have many comments, suggestions, and plain simple disagreements with your research questions, results, or conclusions. Just like in software engineering, the Waterfall approach is not an effective one. Instead, an incremental and iterative workflow may yield way better results: you take a small step forward, we discuss it, you rewrite, we agree, and you take the next step. The ultimate objective is to write a paper that will be published in a good journal or presented at a decent conference. Well, yes, a passing grade is also an objective.

I can't speak

  • 409 words
  • 2 minutes to read
  • comments

Уже несколько лет мы проводим в России научную конференцию, приглашая в ее программный комитет ученых со всего мира. Последние два года, по понятным причинам, отказов много, особенно от западноевропейских ученых. Однако, интересно вот что: если раньше отказы содержали субъективный негатив вроде “I don’t want to participate in a Russian conference” (я не хочу участвовать в российской конференции), то последнее время они все звучат примерно так: “I can’t speak at your event” (я не могу выступать у вас на мероприятии). При всем уважении к драматизму ситуации, мне все же интересно, понимают ли уважаемые ученые, что те свободы, которыми так гордится европейская цивилизация, несовместимы с выражением “I can’t speak”, особенно из уст людей науки?

Defend Me Against ChatGPT

  • 640 words
  • 3 minutes to read
  • comments

I do enjoy ChatGPT a lot. The blog post you’re reading now was written by me and then given to ChatGPT to fix its grammar and polish the writing style. Until recently, since 2014, when I wrote my first blog post, I used the service of a few proofreaders, who charged me $20-40 per hour to rewrite all of my 350+ texts. Now, I pay a few dollars a month to OpenAI. However, while the value of this generative AI is obvious, I also experience serious harm from ChatGPT, especially when reading papers written by my students with its help.

Review a Research Paper: Constructive Critique in Five Steps

  • 797 words
  • 4 minutes to read
  • comments

I’m helping organize the ICCQ conference this year for the fourth time, with the in-cooperation support of the IEEE Computer Society. Based on this short-term experience, I can assert that reviewing research papers is a skill that even some reputable and experienced academicians either don’t possess or are too lazy to apply. We often encounter sketchy, subjective, and disputable reviews that don’t assist authors but only frustrate and discourage them. In this short blog post, as an absolute amateur in the subject matter, I will try to summarize how to review an academic research paper (thus mostly helping other newbies).

Results and Discussion: Facts and Interpretation

  • 859 words
  • 4 minutes to read
  • comments

Almost every empirical research paper contains two essential sections: Results and Discussion. The former presents the facts collected through the research method, while the latter interprets them to answer the research questions. When interpreting the data, you must address the most obvious concerns that readers may have. For example, in the Results section, you might state: “85% of respondents refused to participate in our survey” (this is a fact). Then, in the Discussion section, you might say: “We believe that programmers are innately lazy and irresponsible” (this is an interpretation). You might also add, “Perhaps not all of them were lazy, but just busy.” While the Results section leaves no room for doubt, summarizing findings “as is,” the Discussion section engages in an open debate with an imaginative reader.

Be Indirect in Your Research Questionnaire to Gain More Honesty

  • 722 words
  • 4 minutes to read
  • comments

Let’s say you are conducting research to discover programmers’ opinions about their work environments: whether they appreciate their office spaces or not. Preparing a survey with a few questions is essential. Their responses will reveal their thoughts and feelings. After working with several student groups, I’ve noticed a common mistake in questionnaire design—they are too obvious with their questions, simply asking, “How do you feel about this?” There’s a more effective approach.

Avoid Soft Line Breaks Inside a Paragraph

  • 380 words
  • 2 minutes to read
  • comments

An email, a document, a research paper, a presentation, and even a JavaDoc code block consist of paragraphs, which are “self-contained units of discourse in writing dealing with a particular point or idea.” Visually, paragraphs are supposed to be separated by a vertical space that is a bit larger than a vertical spacing between lines. To achieve this, for example, in HTML, we wrap paragraphs in the <p> tag, while in LaTeX, we use \par or just an empty line between them. However, some people insert what are calledsoft line breaks” inside paragraphs—this is a bad practice that I suggest you stay away from.

The Method Section: A Recipe for Research

  • 710 words
  • 3 minutes to read
  • comments

Every empirical research paper must have a section titled “Method” (or “Methodology,” or “Study Design”). In this section, you describe what was done to obtain the data presented in the following “Results” section. You explain the recipe, which may be replicated later by another researcher, leading to the same (or very similar) results. You tell the reader what ingredients you used, how you mixed them, and—most importantly—why.

Не такой как все!

  • 719 words
  • 3 minutes to read
  • comments

Кому из нас не хочется быть яркой индивидуальностью? По крайней мере, считать себя таковой. Однако не каждому это под силу. Современное развитое общество победившей свободы совести поощряет стремление каждой личности к индивидуальности, доводя этих несчастных личностей до психологов, коучей, психиатров и антидепрессантов.

Related Work: A Critical Taxonomy of Prior Art

  • 741 words
  • 4 minutes to read
  • comments

In almost any research paper, it is mandatory to have a section titled “Related Work” (or “Related Works”), where you refer to the results previously obtained by other authors or yourself. By including this section in your paper, you are not only paying respect to those who laid the foundation for your results, but also motivating and guiding your readers. Most of them may not be aware of existing studies or the importance of the problem you are solving. You must put these guys into context.

sixnines availability badge   GitHub stars