loading...
Cover image for Saving Time as a Student: Create Custom Documents in 10 seconds

Saving Time as a Student: Create Custom Documents in 10 seconds

bourgonlaurent profile image Laurent Bourgon ・5 min read

How I used my free time to speed up my school tasks


🧐 Problem Statement

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.

💡 Why this project

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

GitHub logo BourgonLaurent / pyEtude

📝 Programme Python qui permet de créer des documents personalisés.

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.

How it works

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.

How it looks

I've tried to make pyÉtude as simple as possible, while still keeping all the features I wanted to have.

pyÉtude

As for the document in itself, this is the template that I use the most.

Example Document

Features

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.docx already exists, it suggest to use ART-CHP2.docx)
  • 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

🚀 Progress

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.

Command Line Interface

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.

CLI

First GUI

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.

tkinter

PyQt5

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.

Future

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.

jupyter

⛏️ Built With

  • 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
    • Qt Designer to create the software UI
    • PyQt5 to bind the UI with code, providing interaction
    • Pythonista as a full Python IDE on iOS, great when I wanted to make quick modifications while in transit
  • Git as a version control tool
    • GitHub to organize, publish and save this project
    • Working Copy to quickly push modifications and ideas to GitHub using my iPad when I was in transit
    • Termius as a great cross platform SSH terminal

GitHub logo BourgonLaurent / pyEtude

📝 Programme Python qui permet de créer des documents personalisés.

Discussion

markdown guide