Wandoka's blog

By Wandoka, history, 6 days ago, In English

Recently I thought a lot about optimizing my setup. I don't think it is an important aspect of cp, as it barely affects the performance, but it is fun to think about nonetheless.

In this blog, you will be able to determine whether you have an optimal setup or not. I will list the criteria and points you get for satisfying each one of them. In the end, I do the breakdown for different point ranges.

I won't include things like having a monitor or having an internet connection, but I will be including basically everything else that comes to my mind. If you see something missing from the list, let me know in the comments, I will probably update my list then.

This blog is mainly made for laughs, but if you are new, you will probably learn something new, even though it won't help you to increase your rating.

You can compile and run your code.

  • $$$0$$$ points: I don't know how to run my code before submitting
  • $$$10$$$ points: I compile my code before submitting

I knew many school kids that never figured out how to run their code locally. I even saw some people like this in the university. Judging by 73 pages of Compilation Error submissions from the last Div 4 contest on problem A alone, I have seen nothing yet.

You have to be able to run your code locally. Even LGMs run their $$$A$$$ solutions on the sample tests.

Your text editor does not lag / crash

  • $$$0$$$ points: My editor is laggy and crashes all the time
  • $$$2$$$ points: My editor is a bit laggy and crushes sometimes
  • $$$4$$$ points: My editor runs perfectly

When I was writing local contests during my school years, I constantly dealt with lags and crashes. Probably I should not have used Visual Studio on a machine that could barely run it. So if you have the same issues, I think you understand why you lose points.

You can compile and run your code with no internet

  • $$$0$$$ points: I use an online editor and need internet access to run my code
  • $$$2$$$ points: I don't need internet access to compile my code

Some people you online editors like this one. I think not being able to compile without having internet it is a pretty big deal.

You can benefit from syntax highlighting and you use it.

  • $$$0$$$ points: I am not using syntax highlighting, but I would use it if I could
  • $$$2$$$ points: I use syntax highlighting
  • $$$2$$$ points: I don't use syntax highlighting because it is useless for me

If you are not colorblind, or you are not used to mono blue text on a blue screen like my dad, you will probably benefit from making you code more readable by automatically coloring it depending on the context.

You are able to see how many seconds your program took to run

  • $$$0$$$ points: When I run my code I don't see how much time has passed
  • $$$1$$$ point: When I run my code I see the number of seconds it took to run

Seeing the time your program took to run probably won't help you to $$$100$$$ % accurately predict whether you will get TLE or not. But being able to determine whether your solutions runs slower or faster on a max test after a fix is important.

You can see how much memory your program uses.

  • $$$0$$$ points: I cannot check the amount of memory my program used
  • $$$1$$$ points: I can check how many megabytes my program used

In certain implementations, it is hard to determine how many megabytes of memory your solution takes, so it is sometimes useful to see that info.

You can see syntax mistakes in your code without running it (in other words, you are using a Language Server)

  • $$$0$$$ points: I have to compile my code to see mistakes in the syntax.
  • $$$3$$$ points: When I make a typo, my editor tells me about it straight away

If you only can see that you have made a typo only after you compiled your code, then you have to fix the mistake and then compile the program again. It wastes time

You are using a programming language, that can solve all of the problems in the contest you attempt

  • $$$0$$$ points: I attempted a problem in the past and failed because of my choice of programming language
  • $$$3$$$ points: The programming language I use has never failed me.

Some tasks are impossible to solve using slower languages. Sometimes it is possible to solve a task, but you have to put in extra effort to do so. I am not an expert here, so I won't list "unviable languages". But if you run into this kind of issues, I think you also understand that what you are doing is suboptimal

You have a fast way to copy and paste algorithms/data structures

  • $$$0$$$ points: I never copypaste anything / Usually I copy algorithms from the internet
  • $$$2$$$ points: I have my own library of algorithms/data structures and when I need something, I search in it and copypaste to my code
  • $$$3$$$ points: I have my own library and I have hotkeys (snippets-like) to easily paste needed algorithms into my code without leaving my editor

If you are finding yourself implementing the same Add on a segment, sun on a segment Segment tree algorithm 3 times in a row, you are probably becoming faster and faster at implementing it. In a certain sense, it is optimal in terms of learning. But it always be slower than just copying and pasting it.

You don't have to copy and paste your tests every time you run your program.

  • $$$0$$$ points: When I run my program, I have to paste the text in the console every time I run the program
  • $$$2$$$ point: I am able to paste 1 test once and run it multiple times
  • $$$3$$$ points: I am able to paste several tests at once and run all of them with a push of 1 button

If you have to copy the same tests over and over again to test your solution, you are doing something very wrong: it wastes a lot of time. Also sometimes it is important to be able to input data line by line (when solving interactive problems for example), that is why there is a difference between $$$2$$$ and $$$3$$$ points

You have good warnings/error messages.

  • $$$0$$$ points: My warning/error messages are confusing and they don't help me at all
  • $$$1$$$ points: My warning/error messages are mostly useful, but sometimes I wish they were better
  • $$$2$$$ points: My warning/error messages are always telling me what is wrong with my program, and I don't see a way how to make it better

I use C++ and I have spent some time on adding compilation flags that enable some new warnings. I was not able to get all of the sanitizers working properly, but even the warning messages became a lot more useful. There is a cool blog on this topic.

Auto-parcing contests to copy tests.

  • $$$0$$$ points: I copy sample tests from the tasks manually
  • $$$1$$$ point: I use tools to automatically copy tests from problems

There are tools like this one that allow you to copy tests from the tasks.

Your code is readable and hackable.

  • $$$0$$$ points: I have a > 50 lines template that makes it harder to read my code
  • $$$1$$$ point: I don't use a template / my template is <= 50 lines of code / it is > 50 but I am sure it does not prevent anyone from easily understanding my code

Hacks exist, it is always better to get hacked (unless it is some anti-hash hack) than to FST

You can run a debugger (in a form that is easy to use).

  • $$$0$$$ points: I cannot run a debugger in a form that is easy to use for me
  • $$$1$$$ point: I can run a debugger in a form that is easy to use for me, but I prefer not to use it
  • $$$1$$$ point: I can run a debugger in a form that is easy to use for me and I use it

Even if you are not usually using a debugger, the option to be able to is definitely a plus. Printing is not always faster.

You have a good way to print() to debug

  • $$$0$$$ points: I use plain cout or print to debug.
  • $$$1$$$ points: I use advanced debug printing: like using macros to output the names of the variables with their values, being able to easily output the array.
  • $$$3$$$ points: I have a complete debugging library, that is able to output graphs/data structures in an easily readable form

You have a stress testing setup.

  • $$$0$$$ points: I don't use stress testing or I have no setup to use it.
  • $$$2$$$ points: I have a template that helps me to stress test my solutions
  • $$$4$$$ points: I have a script that is able to stress my solutions.

If you don't know about stress testing, you get 0 points and you should also check out this cool video that explains it.

You are using vim motions/ other advanced text editor key bindings.

  • $$$0$$$ points: I don't use vim motions or any other advanced text editor key bindings
  • $$$2$$$ points: I use vim motions or other advanced text editor key bindings.

Repeatedly grabbing your mouse to select text is definitely suboptimal. Using arrow keys to traverse through code is very slow. Using things like vim motions will speed things up a lot

WPM while typing.

  • $$$0$$$ points: I have < 30 WPM while typing
  • $$$1$$$ point: I have >= 30 WPM while typing
  • $$$2$$$ point: I have >= 100 WPM while typing

You can check your typing speed here. I know typing steep is not really a setup, but it is close enough to include in this blog.

I don't think it really matters, except for the edge cases. Being too slow can hurt your performance, and also being very fast can get you a lot of rating in a speedforces situation.

You can easily use multiple files to code

  • $$$0$$$ points: I use a single file to code, if I want to write something in parallel, I copy the old solution to the notepad
  • $$$1$$$ point: My setup allows me to code in several windows.

Sometimes you want to jump to another problem while not finishing the current one. If you have to copy your code somewhere before you start coding a new problem, it is some extra time spent on managing something that can be made easier.

You are using a class for modular operations

  • $$$0$$$ points: I don't use special classes for modular operations and my code looks like this d = ((a+b)%mod - c + mod)%mod * e % mod
  • $$$1$$$ point: I use a special class for modular operations and my code looks like this d = (a+b-c)*e

You have a diff tool to compare the results of the tests

  • $$$0$$$ points: When I run my tests, I manually check for the differences in the output
  • $$$1$$$ point: When I run my tests, my diff tool tells me whether the is a difference in the test outputs or not, so I don't have to check it manually

Sometimes the output of the test is huge, and it is a hustle to check it manually. Let the computer check it for you and don't play the game of "find 5 differences" every time the output is big.

Counting points

Now it is time to sum up all of your points! In the list below you can see what kind of coder you are.

  • 46-50) You are either $$$\color{orange}{2300}+$$$ and have a cool optimal setup, or you are ~ $$$\color{green}{1200}$$$ and wasting too much time on optimizing your setup instead of focusing on solving problems
  • 36-45) You have a pretty good setup, old ladies who have no clue about how computers work think that you are a "hacker"
  • 20-35) You are writing in a suboptimal environment, either because you are a bit too hardcore about "to be better at solving problems I have to solve problems", or because you are a punk $$$\color{black}{L}\color{red}{GM}$$$ that is too cool to care about what tools to use while destroying competitors.
  • 13-19) You are a math enthusiast that decided to join codeforces because online math olympiads are not that fun.
  • 0-12) You should be the happiest if you got this amount of points. It means you can improve your rating aside from just solving more problems, because it is almost like you are participating from your Nokia phone.

Also, I give online classes, $$${\$25}$$$ per hour for one on one lessons, $$${\$8}$$$ per hour for lessons in groups of 3, free trial lesson. Contact me on Codeforces if you are interested or for more info.

  • Vote: I like it
  • +154
  • Vote: I do not like it

»
39 hours ago, # |
Rev. 3   Vote: I like it 0 Vote: I do not like it

I have 36 points, I use the CP editor

»
39 hours ago, # |
  Vote: I like it +30 Vote: I do not like it

Got 39 pts using Neovim + LuaSnip + several LSP-related plugins. Vim motion is really useful (and cool), I highly recommend it if you have not tried it before!

»
38 hours ago, # |
  Vote: I like it +29 Vote: I do not like it

I got 37!

A lot of zero points are actually done intentionally, because I'm practicing for online OI contests, where you should code everything from scratch, so a lot of options like having ready libraries or class for modular operation are just 0 points.

»
37 hours ago, # |
  Vote: I like it +74 Vote: I do not like it

27 points....

»
37 hours ago, # |
  Vote: I like it +19 Vote: I do not like it

Clion solves all problems!

  • »
    »
    17 hours ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    how many points you get?

»
35 hours ago, # |
  Vote: I like it +19 Vote: I do not like it

32 points here

»
35 hours ago, # |
  Vote: I like it +32 Vote: I do not like it

I got 28 points.

»
35 hours ago, # |
  Vote: I like it +22 Vote: I do not like it

25 points using default codeblocks

»
34 hours ago, # |
  Vote: I like it +8 Vote: I do not like it

Got 32

»
34 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

I got 29

»
34 hours ago, # |
  Vote: I like it +91 Vote: I do not like it

31 points.

A lot of advice here is actually bad for people practicing for onsite competitions.

»
34 hours ago, # |
  Vote: I like it +12 Vote: I do not like it

You are able to see how many seconds your program took to run

This section probably has a mistake, since you get 1 point if you don't see how much time it took to run

  • »
    »
    34 hours ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Woops, thank you, fixed the mistake.

    I wonder if I should swap the like buttons. I am not sure which one of them people clicked, the indented one with wrong amount of points, or the wrong one with the correct amount of points)

  • »
    »
    24 hours ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    After the fix I personally got 45. Have room for improvement :)

»
34 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

i got 52 points

»
34 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

use CP Editor to get 19pts 🤣

»
33 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

38

»
32 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

I received 19 points! I think a better setup would not change much about my performance which is mostly bottlenecked by a problem solving speed/skill issue.

»
32 hours ago, # |
  Vote: I like it +13 Vote: I do not like it

33 points.

CPEditor + Almost no template + Bad debugging environment

Almost no template: I just remember a random problem(and its exact ID) then open the online judge for my code.

Bad debugging environment: in my opinion the common "print()" command is enough because what I want is just one or two critical value, it is easy to read the log without extra note.

»
32 hours ago, # |
Rev. 3   Vote: I like it +9 Vote: I do not like it

25 points

Distribution
»
31 hour(s) ago, # |
  Vote: I like it 0 Vote: I do not like it

40 points with vscode and cph :)

  • »
    »
    30 hours ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    what's cph?

    • »
      »
      »
      30 hours ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Competitive Programming Helper. A powerful extension for vscode. It can automatically download test cases and run and judge problems quickly. And you can even submit your code to codeforces just with one click on "submit" button(if codeforces server didn't crash)

»
30 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

28 points

»
30 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

25 points using an online compiler

»
28 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

27 points

»
28 hours ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

43 with nvim + Competitest.nvim + having my local library with oj-bundle instead of using snippets

»
26 hours ago, # |
  Vote: I like it -10 Vote: I do not like it

Using debugger 1 point!? It should be at least 5

  • »
    »
    26 hours ago, # ^ |
    Rev. 2   Vote: I like it +7 Vote: I do not like it

    print works very well :)

    • »
      »
      »
      25 hours ago, # ^ |
        Vote: I like it +22 Vote: I do not like it

      It absolutely doesn't compared to gdb, which literally tells you the line with the RTE, while with prints you can often not even have an idea what kind of error may be happening in your code.

      I remember I lost gold on IOI cause I wasn't able to debug my simple bruteforce solution within half an hour. After the competition my leader came to my workstation, ran the gdb and showed me the line with the error and that took like 15 seconds. Starting to use gdb might have been the single biggest improvement ever to my performances (ok, maybe the second one, beside #define int long long :))

      • »
        »
        »
        »
        22 hours ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        It absolutely doesn't compared to gdb, which literally tells you the line with the RTE

        python works very well

      • »
        »
        »
        »
        20 hours ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        For some RTE I prefer "-fsanitize=undefined"(linux only), which also tell you not only the line with RTE but also the type of error(out of bounds, null pointer, integer overflow).

        • »
          »
          »
          »
          »
          15 hours ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          Yes, it's great too! I always have it and -fsanitize=address and -DGLIBCXX_DEBUG (it whatever it's called xd) as well. But I think gdb still gives you more information and is still very useful

»
24 hours ago, # |
  Vote: I like it +11 Vote: I do not like it

I don't use a special class for modulo. My code looks like this: d = mul(sub(add(a,b), c), e)

»
24 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

44 using cpeditor

»
24 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

I got 28 with ideone.com. The main challenge is solving/debugging interactive problems without any local testing.

»
22 hours ago, # |
Rev. 2   Vote: I like it -16 Vote: I do not like it

How strange, right?

Whenever there be cheaters: kinds of this comment exist: "focus not on them yet persist and improve." And we do downvote those.

No we have this blog: stating: "you are a bit too hardcore about "to be better at solving problems I have to solve problems."" I did math. I calculated sum of points for the majority vote. It leads to 29 points. We notice it falls under this statement. And we do upvote this.

So why are we then saying: "merely you are functioning not optmially, you should try to improve:" however when it be cheaters (important issue in community), we downvote, when it be unhelpful survey (for just but entertainment purposes) we upvote?

  • »
    »
    111 minutes ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I'm not sure whether I understand what you're trying to say correctly, but I think the community is rather reasonable.

    As Mike said, entertaining content (like this one) can have a place on codeforces. I consider this one pretty interesting and helpful since it includes many tips regarding setup for beginners (although it might not be as good for onsite contests).

    On the other hand, some people who talk about cheaters tend to blame Mike and other admins for not doing anything, when it's just that the plagiarism check hadn't run for that round yet.

    If what you wanted to know is why those comments that tell one to focus on improving themselves rather than on cheating are downvoted, it's probably because these comments are considered more or less "inconsiderate" in the context. What's wrong with telling people they should practice more to obtain better results? The point is that these comments in cheating-related blogs make people feel what they mean is "it's your own skill issue, I don't care."

»
21 hour(s) ago, # |
Rev. 4   Vote: I like it +8 Vote: I do not like it

Nice post; there are a lot of things in here that I think are actually pretty valuable for beginners to fix. I'm somewhere around 44 points, +/- a bit depending on how generous you are. I'll share a few thoughts/suggestions for those working on their setups since I've enjoyed optimizing my setup over the years. If anyone wants to learn more about my setup, see here and here.

One big-picture note is that if you're on Windows, I think installing WSL is the easiest way to get a lot of these setup optimizations. In general, I find installing program tools much easier on the Linux terminal than on Windows; I'm a huge fan of the Windows/WSL setup because most of the programming tools I use for CP (e.g. Vim, g++, etc) feel jankier/more annoying to set up on Windows, while most other things I use feel jankier/more annoying to set up on Linux.

You can compile and run your code.

Agree with the OP that I've seen a lot of people not be able to do this. Seems pretty important...

If I were writing this survey, I would have added extra points for being able to compile quickly. There are some pitfalls that can cause compilation to be very slow (e.g. excessive debugging flags, iirc whether you use precompiled headers may contribute, etc).

Your text editor does not lag / crash

Editor latency is the primary reason I originally switched away from CLion. I'm pretty latency-sensitive and CLion felt unresponsive to me. Vim, Geany, and Sublime Text are all reasonable options I've tried that feel better in this respect.

You can compile and run your code with no internet

I think that using online compilers is a cause of a lot of the other issues discussed in this post, but not a symptom itself. I would be equally happy with my setup if I could only use it while connected to the internet; the problem is that most actual online compilers are far less smooth, easy to use, etc.

You can benefit from syntax highlighting and you use it.

Absolutely zero syntax highlighting feels a little crazy to me, but you do you.

You are able to see how many seconds your program took to run

I think most times, displaying time is a waste of interface space--I don't really care whether my code took 5ms or 10ms on sample test 1. I do think being able to time your code when you run it on large tests is important, and I use the built-in Linux time command for that.

You can see how much memory your program uses.

I gave myself -1 points here, I think there's a way to do this but I haven't learned it...

On a semi-related note, I do think there should be points for having a high/unlimited stack size limit. In most setups, the default behavior is for C++ to crash when you allocate a large data structure on the stack. This makes sense in real-world applications, but in competitive programming it's often useful to be able to define large variables globally (also, adjusting your overall memory limit is mandatory in Hacker Cup).

You can see syntax mistakes in your code without running it (in other words, you are using a Language Server)

-3 points here. I honestly don't think this is that important once you have some experience with your programming language; at most it would save me a little time parsing C++ error messages? Any of the language servers I've checked out seem like they'd be annoying to configure in order to avoid warning me about any style issues/things I generally don't care about.

You are using a programming language, that can solve all of the problems in the contest you attempt

Back in high school, I spent a lot of energy trying to convince people that using C++ wasn't actually that big of an advantage. I gave up in around 2018, but certain people are still making other languages work :)

You have a fast way to copy and paste algorithms/data structures

This is easy with Vim: I store my templates in a folder, I symlinked it to ~/cpl (CP library), and now I do :r ~/cpl/FILENAME.cpp to copy the file at my cursor. This is easy to remember and I don't have to set up snippets individually every time I add a template.

You don't have to copy and paste your tests every time you run your program.

I wrote a custom tool for this--there are a lot of similar things out there, but none that were organized exactly how I wanted. I haven't released it publicly since the code is poorly written and contains a lot of hacks that only work on my PC, but if you want to learn more see the second video I linked.

You have good warnings/error messages.

I gave myself -1 here; it's close, but there's some undefined behavior my compiler doesn't catch. I think it's worth it to speed up compilation by several seconds, though.

Auto-parcing contests to copy tests.

This is done by my CLI.

Your code is readable and hackable.

I'll give myself the point here; my template is a bit over fifty lines but I think the resulting code is readable.

While I agree that some templates can go overboard, I think at the very least for loop templates (i.e. FOR(i, a, b) instead of for (int i = a; i < b; i++)) are helpful. Before I had my template, I often wrote patterns like for (int i = a; i < b; i++) for (int j = c; j < d; i++), and the resulting errors were a huge pain to debug.

You can run a debugger (in a form that is easy to use).

-1 point here. I think the CLion debugger is generally helpful (sadly, the editor is otherwise missing a lot of features that are important to me), but gdb is a slog to use imo and printline debugging is almost always faster for competitive programming use cases.

You have a good way to print() to debug

Giving myself the three points here, though I don't think the way I output graphs is necessarily optimal (open to hearing others' suggestions on this!). My debugging setup does output STL data structures in a way that makes sense, though. It'd be interesting to try to add functionality to print out some of my library data structures (e.g. segtrees).

You have a stress testing setup.

I think that aside from being able to compile, stress testing is the single most important thing on this list, and I think anyone at an intermediate level (cyan/blue-ish) or above stands to gain tremendously from a good stress testing script. I estimate that my stress-testing setup is worth on the order of 200-300 rating for me, and it also makes CP much more fun not having to spend a huge amount of time staring at my code while debugging.

I like that you awarded extra points for using a stress testing command line script, as I think this is much faster in-contest than using a code template.

Stress testing is one of the main draws of WSL for me; my Linux stress testing script is on the order of 10x faster than my Windows stress testing script.

You are using vim motions/ other advanced text editor key bindings.

I use Vim, but I don't think not using it really slows you down that much.

WPM while typing.

160wpm on Monkeytype, probably more like 120-130 during everyday use.

You can easily use multiple files to code

This one is pretty important; with a lot of editors (mostly ones that try to organize your code into projects), the default setup is to code in one file and then you have to move all the code you aren't actively working on elsewhere. This is kind of a pain, and I think it's a good reason to prefer text editors over fancy IDEs (unless you've configured your fancy IDE to avoid these issues).

You are using a class for modular operations

This is more valuable than I expected it to be; it makes code a lot more readable and it's nice not having to worry about missing MODs when debugging.

You have a diff tool to compare the results of the tests

My CLI handles this. Linux diff is also helpful for really large cases.

»
21 hour(s) ago, # |
  Vote: I like it -12 Vote: I do not like it

Excuse me, I found this is offensive:

old ladies who have no clue about how computers work

»
19 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

The Hitchhiker's Guide to the Galaxy was correct. I got 42 points.

»
18 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

31 balls using cp editor with only language server

»
17 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

38 using CLion

»
16 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

34 points with Dev C++

»
16 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

44

»
16 hours ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

34 using sublime text

»
16 hours ago, # |
  Vote: I like it +14 Vote: I do not like it

24 using codeblocks

»
14 hours ago, # |
Rev. 3   Vote: I like it 0 Vote: I do not like it

"I compile my code before submitting"

Does compiling on cf custom invocation count?

For most of my time all I use is cf custom invocation and its own code editor. No VS code, nothing fancy... I don't think that's a very optimal setup...

[PS this scores 14, so if you score below that then perhaps you should just switch to cf invocation]

[PPS the description is quite accurate, look at my username :)]

»
14 hours ago, # |
  Vote: I like it 0 Vote: I do not like it

i have 30, i use vim with my own custom setup

»
3 hours ago, # |
  Vote: I like it +5 Vote: I do not like it

I am a punk master

Windows + MinGW + Far Manager without any configuration and prewritten code