Throughout my years at school, I've found that its biggest challenge is time. A lot of tasks are repetitive, they can be troublesome and they shorten the time you dedicated for something. As a student learning programming ― and also wanting to go in this field ― I wondered how I could help. It is possible to see your friends and have good grades, while still being a human; you don't need more time, you just need to use it efficiently.
Aren't you wasting time by inventing, coding, debugging and sharing your tool instead of just doing it?
When I tell someone about my projects, this is sometimes the reaction I have. Let's be honest, I'm using time by making all these tools. Another thing I've learned is that you have free time: the normal student would use it to go on social media, binge watch a TV show, play games or read a book ― yes, there are still people reading books for fun in 2020. It is not abnormal to have a day with almost nothing to do, and the next you'll need to work all day.
So did I waste time? Absolutely not! I've learned so much and had fun while making these tools. Productivity isn't maximizing all the time, it is maximizing it when you need it.
While I have made a few tools to boost my productivity, going from simple flashcards to a Telegram bot, the project I chose to write about is pyÉtude. I'm not good with names, and since it is made with
pythonand made for studying,
étude in French, my native language, I decided to call it that way.
This project really improved my coding skills: it started with almost no use of functions, to something using classes and libraries, and it is only the beginning. I plan on improving this tool as long as I'm using it. When I use it, I often write down some features I would like to have ― or polish ― and then add them on another day. Being able to be your own tester is one of the best feelings.
pyÉtude is a tool that I've made to create Microsoft Word
.docx documents. I use them extensively to study and rewrite my notes, write essays, outline a presentation and all the other things a student could do. To keep everything organized, I always use the same style for my notes (the fonts, colors, tables, headings are the same). Before pyÉtude, I had a template
.dotx, a solution that Microsoft believes solves this problem, but it was painful. Bugs everywhere, inconsistent style, problem while working on iPad ― main device when not at home.
I first thought that I should use a library to create my document, it would be quick and future proof ― and most importantly reinforcing the stereotype of importing things in
python. However, the current libraries weren't extensive enough to let me create styles with good formatting. I then decided to use another way: modify a current word document with values. This meant I had to have a general idea of how a Word document works ― how to unpack it, modify it and repack it.
I've tried to make pyÉtude as simple as possible, while still keeping all the features I wanted to have.
As for the document in itself, this is the template that I use the most.
As said before, I've made pyÉtude while using it. This means that during the multiple refactors I've made, I included some nice-to-have. Here are some of my favorites:
- Store your name and grade so you only need to write it the first time you use the software
- Create personalized classes with their own full name, short name and folder path
- Automatically create the file in the class folder and name it accordingly (if
ART-CHP1.docxalready exists, it suggest to use
- Use multiple file templates depending on your need (study notes, essay, oral presentation...)
- Cross platform support on desktop (Windows, Linux, macOS) ― with a web version in development
pyÉtude is one of my proudest project since I learned so much and when I learned a new thing elsewhere, I used it on pyÉtude.
pyÉtude started as a simple command line interface, it was ugly, and some of my favorites features weren't there, but it was still a huge time saver.
This was the first graphical interface I've seriously made. It was made with
tkinter and used some hacky ways to get features like placeholders in entries.
The current version of the software. It contains some nice extra features like tabs, calendar, easy file management and also a lot more eye appealing than the previous one.
I'm currently planning on making pyÉtude a small website (making it private however) so I can quickly make documents when I'm not in front of my computer. Meanwhile, I've created a
Jupyter notebook that I can access everywhere. It is rough and not as complete as the desktop version, but good enough.
- Visual Studio Code to write, modify and debug
- λ cmder Console Emulator as a terminal, but also to test snippets and ideas in REPL
- Microsoft Word 365 to create the templates included
- Python 3 to compile and run the software
- Git as a version control tool