Blog

TermTalk. Talk to AI from Your Terminal.

Piotr

Nov 13, 2024

In a world where AI is accessible to more people than ever, many of us interact with GPT-4 through user-friendly web interfaces (like CharGPT). But what if you could bring that same powerful conversation engine directly to your terminal? That’s where TermTalk comes in, a new Linux-based tool that’s redefining how developers, command-line enthusiasts, and productivity powerhouses connect with AI.

What is TermTalk?

TermTalk is an open-source, command-line tool built in Python that gives you the power of OpenAI’s GPT-4 models straight from the console. Imagine having the capabilities of ChatGPT right in your terminal – whether you're working in an interactive mode or simply seeking a quick answer, TermTalk is designed to deliver AI responses as efficiently as possible. Although initially configured for Linux, TermTalk’s Python-based design makes it highly adaptable for other operating systems.

Key Features

Interactive Mode TermTalk’s interactive mode is like having a ChatGPT-like chat window in your terminal. You can ask follow-up questions, explore complex topics, and maintain a fluid conversation with AI, all without leaving the console.

Question-Answer Mode For times when you’re looking for straightforward, one-off answers, TermTalk’s question-answer mode is perfect. Just type a question (also about the system files), get your response, and move on. It’s quick, to the point, and ideal for developers who want answers without a lot of back-and-forth.

Local Conversation Storage TermTalk is also privacy-conscious, storing all your conversations in a local SQLite database. This means you have complete control over your data, with easy access to previous chats, making it simple to retrieve information when you need it.

What’s Next for TermTalk?

While TermTalk is already packed with features, this is just the beginning. Here’s a glimpse of what’s on the roadmap:

API Integration The upcoming TermTalk API will open the door for other applications to interact with TermTalk. This could pave the way for custom workflows, integration with development environments, and even mobile or desktop applications.

Web Client Imagine the ease of the ChatGPT-like website experience combined with the local storage and privacy of TermTalk. The future TermTalk web client will provide a more graphical, user-friendly interface, ideal for those who prefer a web-based interaction.

With TermTalk, you’re not just getting an AI-powered terminal tool; you’re stepping into a future where AI is embedded directly into your workflow, whether you’re scripting, troubleshooting, or simply brainstorming ideas.

TermTalk logo

⬇️ Download from GitHub: TermTalk 0.1-alpha (Release info)

🔗 Visit the main page for TermTalk: https://piotrkepka.com/termtalk.

💻 The code is hosted on GitHub.

📚 Documentation is available at https://termtalk.github.io.

😀 Stay updated and connect with the TermTalk community on LinkedIn.

I Got My A1/A3 Drone Pilot License in 4 Hours! And You Should Too

Piotr

Nov 5, 2024

Yep, you read that right! I went from zero to certified in just a few hours, and if you’re into drones - or even just curious - getting your A1/A3 Drone Pilot License is way easier than it sounds. Here’s how I did it and why it’s worth your time. 🕐

Why Get a Drone License? 🤔

Drones are popping up everywhere, from capturing stunning landscapes to inspecting rooftops or delivering packages. Even if you don’t have a drone now, having a basic license is like having a driving license - future-proofing your life! The A1/A3 license isn’t just about your manual flying skills; it’s also about understanding the safety rules, privacy considerations, and airspace regulations that keep our skies safe.

Besides, let’s be honest: calling yourself a “pilot” (okay, a drone pilot, but still!) is a fun achievement and will make you think a bit differently about the skies above. 🌤️

Who Oversees This? Meet EASA ✈️

All these rules and certifications fall under the European Union Aviation Safety Agency (EASA), which regulates drone operations across the EU to keep flying safe and consistent across all member states. The A1/A3 license is the most basic certification within the EU’s “Open Category” of drone operations, making it easy for beginners and hobbyists to get started. You can read more about EASA and drone licensing on their official website ⤴.

My 4-Hour Path to Certification 📝

  1. Registering as a Drone Operator: First, I registered as a drone operator online through my national aviation authority. This step is super easy and helps keep drone operations trackable and safe.

  2. Taking the Online Course: The course, available online, covers all the basics like safe distances, airspace restrictions, and privacy considerations. It’s a straightforward overview of what you need to know, broken down into bite-sized modules. 📚

  3. Passing the Test: The exam is a 40-question, single-choice test that you can take right after the course. Once you pass (and it’s not too hard if you study the material!), you’ll get your certificate instantly! 🎉 You’ll need a score of 75% to pass. But if it doesn’t go well the first time, no worries - you can retake the test as many times as needed.

What the A1/A3 License Covers 🛫

Here’s a quick look at what the A1/A3 license lets you do compared to other certifications:

License Type Permitted Drone Classes Flight Limitations Ideal For
No License Required Lightweight drones (<250g) without data collection (no camera, no sensors) No proximity restrictions to people, but safe flying practices encouraged Casual, toy-grade flyers
A1/A3 Light drones (<25kg) Open spaces, safe distance from people 👤 Beginners, hobbyists
A2 Mid-weight drones (<2kg) Closer to people (within limits) 🏢 Urban areas, advanced users
Specific Larger/advanced drones Special operations, high-risk zones Professionals (e.g., filming, rescue)

The A1/A3 license is perfect for anyone just getting started with drones. If you’re planning to fly closer to people or operate larger drones, you might eventually consider the A2 or Specific category licenses.

Where to Get Licensed in Your Country

Each EU country has its own aviation authority, where you’ll register, take the course, and pass the test. Here’s a list of some national aviation authority links to get you started:

Germany: Luftfahrt-Bundesamt (LBA) ⤴
France: Direction générale de l’aviation civile (DGAC) ⤴
Italy: Ente Nazionale per l’Aviazione Civile (ENAC) ⤴
Spain: Agencia Estatal de Seguridad AÊrea (AESA) ⤴
Poland: Urząd Lotnictwa Cywilnego ⤴
Switzerland: Bundesamt fßr Zivilluftfahrt BAZL ⤴

For other EU countries, check the full list of national contacts on the EASA website ⤴.

Visitors to the EU

If you’re visiting Europe and want to fly a drone, you’ll also need to follow these regulations. In many cases, you can register and take the A1/A3 test in the country where you’ll be flying, or even register online with EASA-approved courses before arriving. Just remember to carry your certificate with you in case it’s requested by local authorities!

Do you have questions?

Check the official FAQ ⤴.

Final Thoughts

The A1/A3 license is a quick and easy way to understand the rules, fly safely, and enjoy the skies responsibly. It’s a small achievement with big potential benefits, whether you’re flying for fun or exploring a new hobby. So if you’re on the fence, go for it - getting licensed is simpler than you think, and you might just love the view from above! 🚁

How a Ham Radio Conversation Really Sounds

Piotr

Oct 24, 2024

Ham radio operators use a unique set of codes and protocols to keep conversations short, clear, and efficient. In this post, we’ll walk through a typical ham radio conversation—also known as a QSO—from calling CQ to signing off with 73. You'll see how Q-codes and signal reports are used in a real-world exchange between two operators.

If you’re new to ham radio, you might have heard operators calling CQ or signing off with 73, but what does a typical conversation actually sound like? A ham radio exchange, or QSO, follows a simple structure, often including Q-codes, signal reports, and friendly chat about gear and location. Below, we break down a sample conversation to help you understand the flow, from the initial call to the final sign-off.

Let’s dive into what a QSO looks like between two stations, KE5ABC and N1ESC.

Station 1 (Operator A):

CQ CQ CQ, this is Kilo Echo 5 Alpha Bravo Charlie (KE5ABC), calling CQ and standing by.
(Operator A is calling for any station to respond, using "CQ" to indicate they're looking for contacts.)

Station 2 (Operator B):

KE5ABC, this is November 1 Echo Sierra Charlie (N1ESC), over.
(Operator B responds with their call sign.)

Station 1 (Operator A):

N1ESC, KE5ABC. Nice to hear you. You’re 5 by 9 (59) here in Texas. Name is Mike, QTH is Houston. How copy? Over.
(Operator A gives a signal report of 59, meaning strong signal and clear readability, and shares his name and location (QTH).)

Station 2 (Operator B):

KE5ABC, N1ESC. Hi Mike, you're 5 by 7 (57) in Boston. Name here is Sarah, QTH is Boston, Massachusetts. Thanks for the QSO! Over.
(Operator B gives a signal report of 57, shares her name and location.)

Station 1 (Operator A):

N1ESC, KE5ABC. Great to meet you, Sarah. Are you QRV for a quick chat? Over.
(Operator A asks if Station B is ready to continue the conversation.)

Station 2 (Operator B):

KE5ABC, N1ESC. Sure, I’m QRV. Just enjoying the good propagation today. Over.
(Operator B confirms they are ready to continue the conversation.)

Station 1 (Operator A):

N1ESC, KE5ABC. I agree, conditions are great today. What’s your rig? I’m running a Yaesu FT-891 at 100 watts, over.
(Operator A asks about Station B's radio setup and shares their own equipment.)

Station 2 (Operator B):

KE5ABC, N1ESC. I’m using an Icom IC-7300, about 50 watts into a dipole antenna. QSL?
(Operator B responds with their radio and asks for confirmation using QSL, meaning "did you receive this information?")

Station 1 (Operator A):

N1ESC, KE5ABC. QSL, I copy the Icom IC-7300 and dipole. Great setup! I’m getting a bit of QSB on your signal though. Over.
(Operator A confirms the message and mentions QSB, which means there’s some fading in the signal.)

Station 2 (Operator B):

KE5ABC, N1ESC. QSL on the QSB, I’m noticing it as well. The band is starting to change a bit. Over.
(Operator B acknowledges the signal fading.)

Station 1 (Operator A):

N1ESC, KE5ABC. Understood, Sarah. I’m going to QSY to another frequency soon. Thanks for the QSO! 73 and all the best. Over.
(Operator A indicates they will change frequencies soon and signs off with 73, meaning "best regards.")

Station 2 (Operator B):

KE5ABC, N1ESC. QSL, Mike. 73 and take care! This is N1ESC, clear and QRT.
(Operator B acknowledges the sign-off with 73 and indicates they are going off the air (QRT).)

Station 1 (Operator A):

N1ESC, KE5ABC. 73, and have a great day! KE5ABC clear.
(Operator A signs off and confirms they are clear of the frequency.)



Key Terms in the Conversation:

CQ: Calling for any station.
QTH: Location.
59, 57: Signal reports, where the first digit is signal strength and the second is readability.
QRV: Ready to communicate.
QSB: Signal fading.
QSL: Confirm receipt of information.
QSY: Change frequency.
73: Best regards.
QRT: Going off the air.

This is a simplified conversation, but it shows how hams use a mix of codes and casual language to keep communication efficient and clear.

👉 Check my projects, especially the Morse Code Translator

Decoding Ham Radio: The Meaning Behind Q-Codes and 73

Piotr

Oct 24, 2024

In the world of ham radio, operators use a special set of abbreviations known as Q-codes to streamline communication. Whether you're a seasoned ham radio enthusiast or just getting started, understanding these codes—and what it means to send "73" at the end of a conversation—can help you communicate more efficiently. In this guide, we’ll explore the most common Q-codes, their meanings, and how to use them in real-world ham radio exchanges.

If you're new to ham radio, you may have noticed operators using short codes like QTH for location, or ending their conversations with a simple "73." These abbreviations are called Q-codes—a system designed to make communication more efficient, especially when using Morse code (CW). But over time, these codes became widely adopted even in voice communication.

What Are Q-Codes?

Q-codes originated in the early 20th century as a shorthand for telegraph operators working under international telecommunication systems, primarily to make Morse code transmissions faster and clearer. Each Q-code represents a specific question or statement, often followed by a simple response. For example, "QRM" means interference from another station, while "QSL" means receipt acknowledgment.

Q-Code Meaning Example of Use
CQ Calling any station, seeking a contact "CQ CQ CQ, this is KE5ABC calling CQ."
QRM Interference from other stations "I’m getting QRM, another station is causing interference."
1-5 (1=low, 5=high) Refers to man-made interference from other stations on the same band.
QRN Static or natural noise interference "There is too much QRN, it’s hard to hear."
1-5 (1=low, 5=high) Refers to natural noise, such as thunderstorms or atmospheric noise.
QRO Increase power "I’m going to QRO to help you copy me better."
QRP Reduce power , Low power operation "I’m running QRP with 5 watts."
1-10 watts Refers to low-power operation, often less than 10 watts.
QRQ Send faster (in Morse code) "Could you QRQ? Your Morse code is a bit slow for me."
QRS Send more slowly (in Morse code) "QRS please, I’m having trouble copying your CW."
QRV Ready to copy "I’m QRV now, go ahead with your transmission."
QRX Stand by "I’ll be QRX for 5 minutes."
Time value (e.g., 5 minutes) Tells the other station to wait or stand by for a certain time.
QRZ Who is calling me? "QRZ? I hear a station calling but not sure who."
QSB Fading signal "Your signal has QSB, you’re fading in and out."
1-5 (1=low, 5=high) Refers to the signal fading or fluctuating in strength.
QSL Acknowledgment of receipt (or paper card) "QSL, I received your transmission."
QSO Conversation between stations "Thanks for the QSO, it was great talking to you."
QSY Change frequency "Let’s QSY to 7.200 MHz to continue our chat."
Frequency (e.g., 7.200 MHz) Used to indicate a change to a different frequency.
QTH Location "My QTH is New York City."
City/Location (e.g., New York) Refers to the operator’s location.
QRG What is my exact frequency? "Could you give me your QRG?"
Frequency (e.g., 14.250 MHz) Asking for or confirming exact operating frequency.
QTR What is the time? "What’s the QTR?"
Time (e.g., 15:30 UTC) Asking for the current time, often in UTC (Coordinated Universal Time).
QSL? Can you acknowledge receipt? "Did you receive my transmission? QSL?"
QSP Relaying a message "I’ll QSP your message to the net."
QRL Frequency in use "Is this frequency QRL? I want to make sure before transmitting."
QSY Change frequency "Let’s QSY to another frequency, there’s too much interference."
QRU Have you anything for me? "I’m QRU for now, nothing more to transmit."
QRK How well can you copy me? "What’s my QRK? Can you copy me well?"
1-5 (1=poor, 5=excellent) Asking for a readability report, typically for voice signals.
QSB Signal is fading "Your signal has a lot of QSB, it’s fading in and out."
1-5 (1=low, 5=high) Describes the fluctuation in signal strength.
QRP? Shall I reduce power? "QRP? Should I reduce my power for better communication?"

Though developed for commercial radio, Q-codes have since become a mainstay in amateur (ham) radio. Using Q-codes saves time and reduces confusion when signals are weak or conditions are noisy.

Why Say "73"?

The 73 code is among the most recognized in ham radio, meaning "best regards" or a friendly sign-off at the end of a conversation. It dates back to the 1850s when telegraph operators began using numbers as shorthand for common phrases. 73 has stuck around ever since, symbolizing goodwill and friendly communication between operators.

Code Meaning Example of Use
73 Best regards "Thanks for the QSO, 73!"
88 Love and kisses (often used in friendly QSOs) "Great to hear you on the air, 88!"
33 YL (Young Lady) best regards "Nice talking to you, 33 and see you soon!"
55 Good luck "Hope you have a great contest, 55!"
99 Go away (used when someone is being annoying) "This frequency is busy, 99!"
161 Best regards with 73 and 88 combined "161 to you and the family!"

Today, both Q-codes and codes like 73 are still used by ham radio enthusiasts across the globe, bridging the gap between languages and making radio communication quicker and easier.

👉 Check my projects, especially the Morse Code Translator

73!

CEPT T/R 61-01 and 61-02 agreements

Piotr

Oct 23, 2024

The CEPT T/R 61-01 and CEPT T/R 61-02 agreements are both related to amateur radio, but they serve different purposes and have distinct scopes. Here's a breakdown of the key differences between the two:

CEPT T/R 61-01 Agreement

Purpose: This agreement simplifies the ability of licensed amateur radio operators to operate their stations in other countries without obtaining an additional local license.

Scope: It allows radio amateurs holding a license in one CEPT country to operate in another CEPT member country temporarily, using their home country callsign with the appropriate local prefix (as discussed earlier).

Key Benefit: Amateurs do not need to apply for a new license when visiting another CEPT country; they can operate their equipment under the CEPT mutual recognition system.

Who it applies to: Applies to individuals who already hold a valid amateur radio license from a CEPT member country.

Example: A Polish amateur with the callsign SP1ABC can operate in Switzerland using the callsign HB9/SP1ABC without needing a Swiss license.

CEPT T/R 61-02 Agreement

Purpose: This agreement creates a harmonized examination certificate, known as the HAREC (Harmonised Amateur Radio Examination Certificate), which simplifies the process of obtaining an amateur radio license in another CEPT country.

Scope: It allows individuals who pass a standardized amateur radio examination in their home country to receive a HAREC certificate. This certificate can then be used to apply for an amateur radio license in any other CEPT country.

Key Benefit: Instead of retaking the examination in every country, the HAREC certificate is recognized across all CEPT countries, making it easier for an operator to get a permanent license abroad.

Who it applies to: Those who have passed the required examination in their home country and wish to obtain a permanent amateur radio license in another CEPT country.

Example: A person who passes the amateur radio exam in Germany and receives the HAREC certificate can use that certificate to apply for an amateur radio license in France without needing to retake the exam.

Aspect CEPT T/R 61-01 CEPT T/R 61-02
Purpose Allows temporary operation in other CEPT countries Harmonizes amateur radio examination standards
Scope Use home country callsign with local prefix in another country Recognizes HAREC certificate to obtain a new license abroad
Usage For temporary operations (e.g., travel) For applying for a new license after passing the exam
Key Document Amateur radio license HAREC (Harmonised Amateur Radio Examination Certificate)
Example A licensed operator using their callsign while traveling An operator moving to another country and applying for a local license using their HAREC certificate

In summary, CEPT T/R 61-01 is for temporary operation in other CEPT countries, while CEPT T/R 61-02 is for harmonizing exam standards and making it easier to get a permanent license abroad.

👉 Check my projects, especially the Morse Code Translator

Amateur Radio on the Go: CEPT Callsign Rules for Operating Abroad

Piotr

Oct 23, 2024

Amateur radio operators who wish to take their hobby abroad must follow international regulations to use their callsigns correctly. Whether you’re planning to operate from a mobile station or a fixed location, understanding the CEPT agreement and the specific callsign modifications required for each country is essential. This guide will walk you through how to properly use your callsign when transmitting in foreign countries, with Switzerland as a key example, and provide a list of common suffixes and country prefixes for European operators.

Amateur radio, also known as ham radio, is governed by international regulations, especially when you want to use your callsign abroad, such as from a mobile station. To correctly operate amateur radio outside your home country, you need to meet several conditions:

CEPT License (CEPT T/R 61-01 Agreement)

Most European countries, as well as a few others (e.g., Canada, the USA, Australia, New Zealand), are signatories to the CEPT T/R 61-01 agreement. This allows amateur radio license holders from one of these countries to operate in other countries covered by the agreement without needing an additional local license.

How to use your callsign abroad?

When using your callsign in another country, you need to modify it accordingly:

Switzerland as an example

When operating in Switzerland, you need to modify your callsign according to CEPT rules:

Add the country's prefix:

The prefix for Switzerland is HB9.

Your full callsign in Switzerland:

Your callsign will consist of the Swiss prefix "HB9", followed by a slash “/”, and your home country callsign. Example: If your callsign in Poland is SP1ABC, in Switzerland you will use HB9/SP1ABC.

Portable station:

For transmitting from a handheld device, you would typically use the suffix /P to indicate that you are operating from a portable station. This is because handheld radios are typically used when you're operating from a temporary or non-fixed location, which is the general definition of a portable station.

Example: If you are transmitting from a car in Switzerland, your callsign will be HB9/SP1ABC/P.

Mobile station:

If you are operating from a mobile station (e.g., a vehicle), you can add the suffix /M. Example: If you are transmitting from a car in Switzerland, your callsign will be HB9/SP1ABC/M.

NATO Phonetic Alphabet Example for Switzerland: Portable and Mobile Operation

For HB9/SP1ABC/P:

HB9: Hotel Bravo Nine
/: Slash
SP1ABC: Sierra Papa One Alpha Bravo Charlie
/P: Slash Papa

For HB9/SP1ABC/M:

  HB9: Hotel Bravo Nine
  /: Slash
  SP1ABC: Sierra Papa One Alpha Bravo Charlie
  /M: Slash Mike
Important notes

Frequency bands: Be sure to comply with local regulations regarding the frequency bands and transmitter power limits. Switzerland may have slightly different rules for various radio bands.

Carry your documents: Always have a copy of your amateur radio license and proof that your license complies with the CEPT T/R 61-01 agreement.

To summarize, when operating in Switzerland, use your callsign in the format HB9/Your callsign, and add the /M suffix for mobile stations.

List of European CEPT country prefixes

Here are the callsign prefixes for some European countries under the CEPT agreement:

Country Prefix
Austria OE
Belgium ON
Croatia 9A
Czech Republic OK
Denmark OZ
Finland OH
France F
Germany DL
Greece SV
Hungary HA
Iceland TF
Ireland EI
Italy I
Luxembourg LX
Netherlands PA
Norway LA
Poland SP
Portugal CT
Romania YO
Slovakia OM
Slovenia S5
Spain EA
Sweden SM
Switzerland HB9
United Kingdom G, M
Common suffixes and their meanings
Suffix Meaning
/M Mobile station (e.g., operating from a vehicle).
/P Portable station (e.g., operating from a temporary location or outdoors).
/A Operating from an alternative fixed location (different from home QTH).
/MM Maritime mobile (operating from a ship or boat in international waters).
/AM Aeronautical mobile (operating from an aircraft).

These suffixes are used to clarify the operating conditions of your station and are often required to provide context to other operators.

👉 Check my projects, especially the Morse Code Translator

NATO Phonetic Alphabet and Morse Code in Radio Communication

Piotr

Oct 23, 2024

In the world of aviation and radio communication, clear and precise transmission of information is crucial. To avoid misunderstandings, pilots, air traffic controllers, and radio operators use the NATO phonetic alphabet and Morse code. Both systems have become global standards, ensuring effective communication across language barriers and in challenging conditions.

NATO Phonetic Alphabet

The NATO phonetic alphabet is used to spell out letters and numbers over radio or phone communication. It helps prevent confusion between similar-sounding letters and numbers, especially when signal quality is poor or background noise is present. For instance, "B" and "D" may sound similar over a weak connection, but saying "Bravo" and "Delta" clarifies which letter is meant.

One notable difference in radio communication is the pronunciation of the number "9" as "Niner." This modification ensures it isn't confused with "five," which can sound similar under noisy conditions.

NATO Phonetic Alphabet Table

Letter/Number NATO Code (Phonetic Alphabet) Difference for "Niner"
A Alfa
B Bravo
C Charlie
D Delta
E Echo
F Foxtrot
G Golf
H Hotel
I India
J Juliett
K Kilo
L Lima
M Mike
N November
O Oscar
P Papa
Q Quebec
R Romeo
S Sierra
T Tango
U Uniform
V Victor
W Whiskey
X X-ray
Y Yankee
Z Zulu
0 Zero
1 One
2 Two
3 Three
4 Four
5 Five
6 Six
7 Seven
8 Eight
9 Niner "Niner" used to avoid confusion with "Five"
Morse Code

Morse code is another vital tool for radio communication, especially in situations where voice communication is not possible. Developed in the 1830s, Morse code uses a series of dots (short signals) and dashes (long signals) to represent each letter of the alphabet and numbers. Even though it's no longer as widely used as it once was, Morse code remains a fundamental skill for many radio operators and is still employed in certain emergency situations.

Morse Code Table

Letter/Number Morse Code
A .-
B -...
C -.-.
D -..
E .
F ..-.
G --.
H ....
I ..
J .---
K -.-
L .-..
M --
N -.
O ---
P .--.
Q --.-
R .-.
S ...
T -
U ..-
V ...-
W .--
X -..-
Y -.--
Z --..
0 -----
1 .----
2 ..---
3 ...--
4 ....-
5 .....
6 -....
7 --...
8 ---..
9 ----.

Both the NATO phonetic alphabet and Morse code are essential tools in ensuring clarity and precision in radio communication, whether it's for aviation, maritime operations, or amateur radio.

👉 Check my projects, especially the Morse Code Translator

Why You Need Your Own Domain: More Control, Privacy, and Professionalism

Piotr

Oct 15, 2024

Let’s be honest: Gmail is great. It’s free, and convenient, and pretty much everyone uses it. But what if I told you that owning your own domain—like yourname.com—could make your online life so much better? Think of it as leveling up from renting a tiny apartment (Gmail) to owning a cozy little home (your own domain). Ready to hear why you should bother getting your own domain? Let’s dive in, and I promise to make it fun!

Data Privacy: Your Emails Shouldn’t Be a Peep Show

Sure, Gmail gives you free email, but here’s the catch: they’re reading your emails. Yep, Google scans your messages to figure out which ads to show you. That’s like having a nosy neighbor who watches you through the blinds and then tells you which laundry detergent to buy. Creepy, right?

When you own your own domain, you’re the boss. No one’s snooping through your inbox to sell you stuff. You get total privacy and control, like the king or queen of your very own email kingdom. You can even set up encryption to keep your emails locked up tighter than a secret agent’s briefcase. Spy-proof and sleek.

Gmail Could Ghost You (And It’s Not as Fun as It Sounds)

Free services like Gmail have this sneaky little clause called “Terms of Service.” Basically, if you break the rules—or even look like you did—they can shut your account down faster than you can say, "What policy violation?" It’s like getting kicked out of a party for spilling your drink when it wasn’t even you!

What happens if you lose access to your Gmail? Your emails, your contacts, your calendar, poof—gone! With your own domain, nobody can shut you down. No surprise lockouts, no having to prove your innocence. It’s your space, and you’re in total control. No more being at the mercy of Big Tech’s whims.

Look Like a Pro (Even If You’re Just Figuring Things Out)

Let’s be real: when someone emails you from yourname@gmail.com, it’s fine—but when they hit you up from yourname@yourdomain.com, it’s a whole different vibe. You go from “just another email” to “wow, this person means business!” It’s like showing up to a meeting in a sharp suit instead of sweatpants.

For business owners, freelancers, IT pros, or anyone wanting to look legit, a custom domain gives you instant credibility. It shows you’ve got your act together, even if you’re still eating cereal for dinner. And for students, this is a total game-changer. You’ll impress your professors, future employers, and maybe even your friends who still think “.edu” is as fancy as it gets.

IT Geeks and Students: Flex Your Skills

If you’re in IT, development, or Ops, having your own domain is like having your own playground (but cooler). You can set up real systems, host projects, mess around with configurations, and show off your skills. It’s also a killer way to stand out in job applications or at the next tech meetup. Imagine saying, “Yeah, check out my project on myawesomedomain.com,” instead of sending someone a random link. Big flex.

Students, you’re not left out! Your own domain lets you practice, build portfolios, and create something memorable. Yourname@yourdomain.com > yourname12345@gmail.com every time. Trust me, it’ll make you stand out when you’re applying for internships or showing off to friends.

Service Shutdowns? Not on Your Watch!

Look, free services can disappear. Remember Google Plus? Yeah, me neither. Imagine one day you wake up and BAM, Gmail, or whatever free service you’re using decides to shut down. With your own domain, that’s never going to be a problem. You’re in charge, and your email isn’t going anywhere. No more worrying about losing access to all your important stuff.

Build Something Bigger

When you own a domain, you’re not just getting a shiny new email address—you’re investing in your future online empire. Today it might just be an email, but tomorrow you could build a website, host projects, or start a blog. Your domain is like a blank canvas, and you can paint whatever you want on it. (Bonus: it’s way more fun than adult coloring books.)

Conclusion: Why Be Basic When You Can Be Boss?

So, yeah, Gmail and other free services are cool, but having your own domain is like moving out of your parents’ house and getting a place of your own. You’ll have more control and more privacy, and you’ll look like a total pro. Plus, no one can shut you down or peek at your emails without your say-so.

Ready to stop being basic and start being the boss of your online life? Get your domain and start flexing your professional (or personal) muscle today.

How I Accidentally Went Viral on LinkedIn with the #Desperate Hashtag. And a Bear

Piotr

Oct 9, 2024

Picture this: you’re sitting at your computer, working late into the night on a quirky project you started on a whim. You finally wrap it up and, instead of posting immediately, you decide to sleep on it. Early the next morning, you hit "post" on LinkedIn and go about your day. By the time you check back, you’re semi-viral. That’s exactly what happened to me, turning the hashtag #desperate into a platform for creativity—and a surprising moment of social media fame.

The Desperate Badge and the Birth of My App

It all started with a LinkedIn post by Courtney Summer Myers 🇬🇧, where she introduced the #desperate badge as a cheeky overlay for job-seekers to show their determination. Like many, I’m currently navigating a tough job market. But rather than just using the badge, I had an idea: Why not create a tool that allows anyone to design their own custom banner?

Bear

So, late one afternoon, I took to coding. By 3 a.m., after combining my front-end skills with some basic graphic design, I had a working app that could apply personalized banners to LinkedIn profile pictures. And because Bern, Switzerland—where I live—was named after a bear, I threw in an Easter egg: a bear. To try the app, users could slap the #desperate banner (or any custom text) onto a bear picture, without needing to share any personal data. The app was designed to be secure and operate entirely within the user's browser. Otherwise, who would trust a random guy on the Internet with their picture?

But here's where things took a wild turn.

From Idea to 30,000+ Impressions in Days

I posted about my new tool on LinkedIn, fully expecting maybe a handful of views from friends. The next morning, I had almost 20,000 impressions, over 150 reactions, and nearly 20 comments. My phone wouldn’t stop buzzing. On October 1st, the post reached its peak, with thousands of people engaging. By October 5th, the post's virality slowed, but it had already hit over 30,000 impressions and 330 reactions in total.

Why Did It Go Viral?

The secret sauce? Timing. I launched my app right as the #desperate badge was gaining momentum on LinkedIn. The badge struck a chord with people worldwide, frustrated with their job search struggles. My app, which allowed users to easily create custom banners, offered a quick, fun way to join the trend—no graphic design skills needed, and it could all be done in under a minute.

What made it stand out even more was how simple and secure the app was. Users didn’t have to upload any personal data, everything worked directly in their browser. No graphic design skills were required. It was just me, my app, and a quirky bear.

What Came Next?

Besides a flood of LinkedIn notifications, I received about 40 networking opportunities. Some people offered to recommend me for jobs, and while I didn’t land any concrete offers from the viral post (yet), I’ve certainly expanded my network in ways I never expected. And let’s face it, in today’s job market, visibility is currency.

Reflections on Going Viral

Going viral is a strange, exhilarating, and overwhelming experience, especially for someone who had rarely posted on social media before this. In just a few days, I saw firsthand how quickly something can snowball online. What started as a fun side project transformed into a viral moment—and a personal lesson in seizing opportunities.

So what’s next? Well, I’m continuing to explore projects like this, sharpening my skills, and trying to stand out in a very competitive market. If nothing else, this experience has reinforced one thing: don’t wait for the perfect opportunity to showcase your skills. Sometimes, you just have to throw a bear into the mix and see what happens.

And if you want to check out my app or learn more about my projects, head over to piotrkepka.com/desperate.

Now, let’s see what I can cook up next. Hopefully, it doesn’t involve staying up until 3 a.m. again... but no promises.

Statistics

I believe in being transparent because it helps build trust and fosters stronger relationships.

Statistics

Create and Deploy a Website in Under 10 Minutes

Piotr

Sep 23, 2024

Deploying a website in just under 10 minutes is totally achievable. This guide will walk you through the process, step by step, using Hetzner as your cloud provider and Let’s Encrypt to set up a free SSL certificate.

Before we start, you’ll need to ensure a few prerequisites are in place.

Prerequisites
A Domain Name

Ensure you already own a domain or have an account with a domain provider (such as EuroDNS, GoDaddy, or Namecheap) where you can quickly purchase one.

An Account on Hetzner

Hetzner is our cloud provider for this tutorial. You'll need to sign up if you don’t have an account yet. Remember that creating an account might require a prepaid balance of €20, which can be paid via PayPal or credit card.

Once you’ve handled these prerequisites, you’re ready to move on.

🕛 The timer is running.

Step 1: Acquire a Domain Name

🕐 If you already own a domain, feel free to skip this step. If not, here’s what you need to do:

Sign in to your domain provider’s platform. Search for an available domain and complete the purchase. Once purchased, keep the DNS management tools handy—you’ll need them shortly.

Step 2: Generate an SSH Key (OpenSSH Certificate) (optional but recommended)

🕑 To securely connect to your server, you must generate an SSH key.

If you don't have any yet, here’s how:

Open a terminal on your local machine (Linux/macOS) or use an SSH tool (like PuTTY on Windows).

Run this command to generate an SSH key:

ssh-keygen -t rsa -b 4096

Save the key and copy your public key using:

cat ~/.ssh/id_rsa.pub

In the Hetzner Cloud control panel, add the public key to the SSH Keys section (within the Security menu). This will enable you to connect to your VM securely.

Step 3: Set Up Your Web Server on Hetzner

🕒 With a Hetzner Cloud account ready, it’s time to deploy a virtual machine (VM) where your website will be hosted:

Log in to your Hetzner Cloud account.

  • Go to the Cloud Console, create a "New Project," then select "Create Server."
  • Choose the Location closest to your target audience (Hetzner has multiple data centers worldwide).
  • Select the Image (I chose Debian 12)
  • Select the Type of your Server: Shared vCPU, x86 (Intel/AMD) and then CX22 (2vCPUs, 4 GB RAM, SSD 40 GB and the price at €0.006/h is an excellent choice to start with)
  • In the Networking section, ensure you enable IPv4 (alongside IPv6) because some domain providers require IPv4 to link domains. That will add an extra €0.00086/h to the bill but is rather necessary.
  • SSH keys: To increase the security of your server, you are recommended to use SSH keys. You can use a previously added SSH key or copy and paste a new public one into this field.
  • Deploy the server by clicking "Create & Buy now".

After your server is created, Hetzner will provide your server's public IP address.

Step 4: Connect to Your Server

🕓 Now that the SSH key is in place, connect to your Hetzner server using the following command:

ssh root@your-server-ip

Make sure to replace your-server-ip with the IP address Hetzner provided.

Step 5: Install Nginx

🕔 Once logged into your server, the next step is to install a web server. We’ll use Nginx, a widely used and reliable web server.

Update the package lists:

bash

sudo apt update
sudo apt upgrade

Install Nginx:

sudo apt install nginx

Start the Nginx service:

sudo systemctl start nginx

You can now navigate to your server’s IP address in a browser. You should see the default Nginx welcome page.

Step 6: Configure DNS to Point to Your Server

🕕 It’s time to connect your domain to your server by setting up DNS records:

Log in to your domain provider’s DNS management tool.

Add an A record pointing your domain to the IPv4 address of your Hetzner server:

A record: * points to your-server-ip
A record: www points to your-server-ip

The wildcard * record is for any subdomain (including a non-prefixed domain name without any subdomain).

Optionally, using @ instead of * will allow you to use your domain without any subdomain only.

A record: @ points to your-server-ip

Wait for the DNS propagation, which can take anywhere from a few minutes to an hour.

Step 7: Secure Your Website with SSL (Using Let’s Encrypt)

🕖 Your site is now online, but it’s not yet secure. Let’s use Let’s Encrypt to set up a free SSL certificate:

Install Certbot, the tool used for obtaining SSL certificates:

Install Python:

sudo apt install python3 python3-venv libaugeas0

Install Certbot Nginx Package:

sudo apt install python3-certbot-nginx

Set up a Python virtual environment:

sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip

Install Certbot:

sudo /opt/certbot/bin/pip install certbot

Prepare the Certbot command:

sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot

Run Certbot to generate and install the SSL certificate:

sudo certbot --nginx -d your-domain.com -d www.your-domain.com

Certbot will prompt you to enter an email address and agree to the terms of service. Once Certbot finishes, it will configure Nginx to redirect HTTP traffic to HTTPS automatically.

Or, just get a certificate:

If you want to change your Nginx configuration by hand, run this command.

sudo certbot certonly --nginx

Set up automatic renewal:

Let’s Encrypt SSL certificates are valid for 90 days and it is recommended to set up a cron job to automatically renew it for free before its expiration to avoid service interruption.

Run the following line, to add a cron job to the default crontab.

echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
Step 8: Verify HTTPS

🕗 You should now be able to visit your website using HTTPS. To verify everything is working, open your browser and navigate to https://your-domain.com.

To double-check your SSL configuration, you can use tools like SSL Labs to confirm that your SSL certificate is correctly installed and trusted.

Step 9: Deploy your website

🕘 The content you see visiting your website is the default Nginx welcome page. It lives in /var/www/html. To change it to your desired content, do the following:

cd your-website-directory
scp * root@your-server-ip:/var/www/html
Was it 10 minutes?

🕙 I don't know, but now that you know the steps, you can set the web server in less than that!




—
🕚 This clock does not show 10 minutes, true.
🕛 But it is still cool to see so many nice native Unicode characters available today.

My Thoughts on Local-First Software

Piotr

Sep 14, 2024

As a full-stack engineer with a strong background in cybersecurity, including certifications like CySA+ and Security+ from CompTIA, I’ve come to believe that local-first applications are the future of secure and reliable software. While not all of my apps currently follow this model, it’s something I’m increasingly focused on for the privacy, control, and resilience it offers.

As a full-stack engineer, I've always kept in mind the importance of building applications that offer users privacy, security, and control over their data. With my experience in software development and cybersecurity, I’ve gradually come to believe that local-first applications are a strong way to achieve these goals.

Local-first applications are built to store and process data primarily on the user’s device, rather than relying heavily on cloud servers. From a security standpoint, this offers some clear advantages. Storing data locally means it’s less exposed to potential breaches that could occur in the cloud. Users aren't constantly transmitting sensitive information to external servers, which reduces the risk of hackers intercepting or exploiting that data.

This ties directly into the privacy benefits of local-first apps. Because data is kept on the user’s device, they have far more control over who accesses it and when it’s shared. It’s a model that empowers the user, giving them the final say on when and how their data gets uploaded to the cloud. As someone with a cybersecurity background, including certifications like CySA+, I’ve seen how essential it is to minimize the points where data can be compromised. Local-first applications inherently do this by reducing cloud dependency.

There’s also the added advantage of offline functionality. Local-first apps don’t rely on an internet connection to work properly, which is a huge benefit, both from a user experience perspective and for reliability. Whether you're working in a remote location, traveling, or simply dealing with unstable Wi-Fi, local-first applications allow you to continue using them without interruption. This makes them not only more convenient but also more resilient than cloud-first alternatives.

While not all of my current applications are built with a local-first approach, it’s something I’m focusing on more. The principles of privacy, security, and user control are increasingly becoming central to how I approach new projects. Local-first architecture will play a big role in the apps I develop going forward because it aligns with the kind of reliable and secure software I believe people need today.

As I continue exploring this model, I’m confident that local-first applications are the future for those who want greater control over their data and peace of mind when it comes to privacy and security.

Rescued from e-waste: The Revived Android 4.4 KitKat Tablet

Piotr

Sep 10, 2024

In 2014, I bought a budget tablet on a whim—only to bury it in a drawer when it turned out to be painfully slow. Nine years later, I stumbled upon it again, lifeless and stuck on the boot screen. Rather than tossing it, I took on the challenge to bring it back to life. What followed was a journey through lost manuals, forgotten forums, and obsolete software—a surprising adventure in tech revival that reminded me of the joy in fixing, not just discarding.

2014

I stumbled upon a full-page ad for a 50% off electronics sale at a newly opened shopping mall. When I arrived, a crowd was already hunting for deals. Luckily, I managed to grab a brand-new budget tablet, the MSI Primo 81, originally marked at $100, for just half the price.

I went back to my place and, excited, unpacked and turned on my first tablet.

A simple but colorful animation with a pleasant sound invites me inside.

I played with it for a while, and then it struck me: this thing is slooow — too slow for me. What a pity.

As I could not find any good use for it, the tablet ended up at the bottom of the drawer and was forgotten...

2023

...till now. Actually, I was looking for something else, and I found it.

Looks brand new, even after those nine years. Completely discharged as expected.

Let's give it a chance! - I thought.

I charged the battery 100%, and... here comes the first disappointment/challenge: It does not boot! It stucks on the MSI logo and goes nowhere.

Make it alive or make it... electro trash?

Making electro trash from a barely used device is a bit sad.

So, I accepted the challenge about MSI Primo 81, an Android 4.4 KitKat tablet, assuming the fun should be good.

NOTICE / WARNING: I take NO RESPONSIBILITY for any steps to recover an Android device,
especially MSI Primo 81. If you have a similar problem, you can try taking them at
your OWN RISK. This is not a technical advice. Your case may be different than mine. 
Also, DO NOT TRUST any external source mentioned here, as there is no guarantee that
the software is free from viruses or malware or will not cause DAMAGE to your device.
Always check files downloaded from the internet with up-to-date AV software.
Loading firmware/software on your Android device from unknown and untrusted sources
introduces a high RISK.
Problem 1: What this thing is?

So, basically, at this point, I knew this was an MSI device only because it showed the logo.

I had no clue what that thing was. On the back side, the printing almost disappeared, and the letters were so small that they were hard to read even from the zoomed-in picture.

Finally, I got the name:

MS-N821

Indeed, this device by MSI existed.

Problem 2: How to boot this at all?

Searching for:

How to hard reset the MSI MS-N821 tablet

gave some clues, but none of the advice worked.

My first shot was this old Owner's Manual: https://manualzz.com/download/61899754, but there was nothing about hard reset.

The second shot:

MS-N821 MSI site:msi.com

gave a product list offered in Japan. In Japanese. This trace will be helpful later, though.

Then I found this thread: https://forum-en.msi.com/index.php?threads/please-help-how-to-hard-reset-msi-primo-81-or-recovery.255010/

That was gold:

On Apr 20, 2015, hchg wrote:

The reset of Primo 81 would be long pressing the power key for over 8 secs, but it won't enter the Android recovery mode.
The better way to solve your problem now is to re-flash the firmware.

FW Download Link: http://download.msi.com/archive/frm_exe/N821_v4.5rc5_v4.4_20140414.zip
Updaet Guide: http://www.msi.com/files/pdf/Primo73_75_81_91_93firmware_recovery_en_21.pdf

The better way is (...) to re-flash the firmware!

Maybe something happened to the flash memory after so many years without power? Let's try this!

Somehow, the "Update Guide" is still there: http://www.msi.com/files/pdf/Primo73_75_81_91_93firmware_recovery_en_21.pdf

And the firmware! http://download.msi.com/archive/frm_exe/N821_v4.5rc5_v4.4_20140414.zip

The Firmware Recovery process requires PhoenixSuite1.0.6.zip.

Let's go to the product page and download it, right?

Problem 3: Unsupported by MSI

I was late. Like two years only, but still.

The product page, linked in the Firmware Recovery Guide, was gone.

MSI dropped support for this and similar devices in 2021 (Primo 73, Primo 75, Primo 81, Primo 91, Primo 93).

Somehow, I also found the product page on MSI Japan, jp.msi.com, but it was already gone too.

So, I used the Wayback machine:

https://web.archive.org/web/20150720091448/http://jp.msi.com/product/windpad/Primo-81.html#hero-overview

...and the translator that is built into the Chrome browser.

Hint: Look at the URLs—even if the link is in Japanese, the URL can be in English.

This way I found again the manual, OS image and the USB driver for Windows (finally not needed).

But there was no PhoenixSuite anywhere!

Let's ask Google again:

msi phoenixsuit1.0.6.zip

Anyone?

I got several Chinese pages, some not very trustworthy looking, and this other one that seems to be a legit shop in Hungary:

https://www.alcordigital.hu/downloads.php?method=download&id=12

Install the software

I installed the PhoenixSuite, but it failed to install the "Google Inc Win USB" driver on Windows 10.

Here is how to fix that: https://www.youtube.com/watch?v=pKsuzITki3E

Search for: Recovery options

Settings > Recovery options > Advanced startup > Restart now
Troubleshoot > Advanced options > Startup settings > Restart

Choose: Disable driver signature enforcement (option no. 7 - use F7 to select)

(When got back to Windows, run the installer again and select the "Repair" option)

3, 2, 1... Flash it! But Cable ≠ Cable

So the procedure is exactly as described in the Firmware Recovery Guide (Primo73_75_81_91_93firmware_recovery_en_21.pdf):

1. Long press the power key at least 10 seconds to power off the device.
2. Release “power key” after the system shut down (For now, Do NOT connect to PC)
3. Press “Volume +” and do NOT release it.
4. Keep pressing “Volume +” button and connect to PC through USB2.0.
5. Keep pressing “Volume +” button and push 5 times on “power” key. ( Please make sure “Volume +” and “power” are pressed together when you push the fifth time on “power” key)
6. Release all key which are pressed and the device should start the auto upgrade process. (If the upgrading didn’t start, please repeate the steps 1~5)

It did not work for me initially because of the USB cable (maybe a data line was broken?). After I took a brand new one, it went smoothly.

The procedure takes about 5 minutes. Just stay still and do not touch anything.

Back to 2014

OK, I am in. Hurray!

Android has started, and... nothing is working!

No Google Play store, no YouTube. Retry. Still nothing.

But the browser still opens websites. That is a good sign.

The device has not been updated since I bought it. Nine years in IT is like a century. Everything has changed.

Let's start with some cleaning. Remember, this device is not a speed demon.

Just "Force stop" and "disable" all the applications you won't need. Do it slowly, one by one, so you know what has stopped working.

Let's update it

Because Google Play is not working, probably due to changes in the cloud API, we will need another way to bring newer applications.

At least at the beginning.

The plan is as follows:

  1. We need the newest versions of some basic software, but it must work on Android 4.4 KitKat.
  2. This software will not come from the official Google Play store, so we have to allow the installation of apps from Unknown sources.
Settings > Security > Device Administration > Unknown sources [X]

Now we are good to go.

To find all the applications, I searched for:

[application name] apk for android 4.4

like:

"vlc apk for android 4.4"

I downloaded all the apps from https://apkmirror.com. I am not related to this website. Feel free to use any source you want.

The applications I found and used are here:

name app version API version (API 19 - Android 4.4 Kitkat)
Google Chrome chrome 81.0.4044.138 minAPI19_maxAPI23
Google Play Services gms 23.30.13 minAPI19
Google Play Store vending 33.1.16 minAPI19_maxAPI24
VLC for Android vlc 3.1.2 minAPI17
Amazon Kindle kindle 8.5.0.77 minAPI19
Google Camera camera 2.7.010 minAPI19
Adobe Reader reader 16.4 minAPI16

What did not work:

name app version API version
YouTube youtube 14.43.55 minAPI19
Netflix netflix 4.16.7 minAPI19_maxAPI25

At this point, you should be able to Sign Into Google Play and download applications from there.

Disallow installation from unknown sources:

Unknown sources [ ]

Welcome to 2023, Primo 81!

And yes, you can still register your MSI Primo 81 for Warranty and Quicker Product Support:

https://account.msi.com/en/login

Level up: Root it (WARNING: Exploit included)
WARNING: If you follow my steps in this part, you are especially exposed to dealing
with viruses, malware, etc.
Yes, really.
You have been warned and hopefully discouraged.

Here is where things get murky:

I googled:

how to root android 4.4 msi

And the first result optimistically asks back:

root the Primo 81?

The link leads to the "MSI Forum (Micro-Star International)" and mentions the Root Onda package.

STOP Here! This package contains Exploit:AndroidOS/Lotoor.B!MTB

⚠️ DO NOT INSTALL IT! ⚠️

Even on the Russian forum, users complain that their devices behave weirdly after installing this package. If I only knew what could cause that. Hmmm? :)

To Root it or not to Root it?

I see this as an opportunity to learn something new.

How to root an Android device? Not how to follow the steps, but deeper inside.

What exactly makes the software from the .ru websites and instruction steps written in Cyrillic "magic"?

Root it! (but myself)

Afterword

I am glad I found this forgotten device.

Today, in 2023, buying things is easier than fixing them.

This little intellectual challenge, combined with a bit of luck and the goodwill of people keeping internet archives, gave me a lot of satisfaction.

It is great that this device has not been lost.

Why I Built Colorosaur.com?

Piotr

Sep 7, 2024

Sometimes, all it takes to move forward is a simple reason — even something as small as creating coloring pages.

In December 2023, I created a website called colorosaur.com, The Coloring Dinosaur, to offer free, family-friendly coloring pages for every occasion. At first glance, the website might seem simple or perhaps even unnecessary, but my intention was entirely different.

I hadn’t built a website or an application from scratch in quite some time. Although I had been involved in maintenance and working on other people’s projects, it had been a while since I’d embarked on a project of my own. I wanted to challenge myself with something new, so I began looking for an idea that would allow me to apply my skills in PHP while learning a new framework, Laravel.

I decided to create this website to provide a fun, creative outlet while also serving as a platform to refresh and expand my development skills. I designed, developed, and deployed everything entirely on my own — from the logo and website code to the domain registration, the SSL certificate, and the cloud hosting setup. The project was motivating and educational, and I built it from the ground up in just two weeks. This process included everything from brainstorming functionality to mastering the Laravel framework and launching a complete, fully functional product.

The website offers several key features. Users can choose from hundreds of carefully selected coloring pages, which can be printed individually or combined into a custom PDF collection for easy printing. Each PDF also includes a QR code that quickly directs users back to the website for more coloring pages.

While colorosaur.com, The Coloring Dinosaur may appear simple, but it represents a significant personal achievement. It merges creativity with technology and serves as a fun, accessible resource for families.

Happy coloring!

Colorosaur logo

How I Used AI to Fix a Laundry Room Problem

Whenever you need a new Waschplan fĂźr die WaschkĂźche (PDF), it is there waiting for you!

If you’ve ever dealt with a shared laundry room, you know the annoyance when the sign-up list (Waschplan) isn’t there. That’s what happened to me recently. I went downstairs to reserve a slot, but the list for the upcoming week was missing again—the Hauswart hadn't put it up yet. I saw the current week’s list, which was empty, but I needed to sign up for the following week. I knew we'd be stuck without a schedule until the Hauswart returned, which could take days.

So, I decided to get creative. I took a photo of this week's empty list and asked ChatGPT, with its new vision capabilities, to recreate it using PHP code.

the original photo sent to ChatGPT 4o

The original photo sent to GPT4o

Prompt:

Recreate this layout of page in PDF in PHP on A4 page.

If you ask me if the result was perfect — the simple answer is: No — the general layout was there, but the columns and sizing were off. However, it gave me a solid starting point.

I spent a few minutes adjusting the script, refining the layout, and then asked ChatGPT to generate the dates for six days, starting from the previous Monday or the next one if the PDF wasn’t created on a Monday. Within about 40 minutes, I had a working prototype—a quick, practical solution I hadn’t even considered before.

Whenever the Hauswart forgets the list (Waschplan fĂźr ein Mehrfamilienhaus (PDF)), I have a tool to generate a PDF instantly and keep everyone on schedule.

Problem solved!

You can also check my other projects and coding experiments.

Waschplan fĂźr die WaschkĂźche, Waschplan fĂźr ein Mehrfamilienhaus, Der Waschplan pdf, Waschplan Vorlage zum Ausdrucken

PHP/Laravel: kickstart the app

Piotr

Sep 5, 2024

Create Project

composer create-project laravel/laravel <project_name>
cd <project_name>

Application Encryption Key

php artisan key:generate

Set proper group and privileges for the web server (nginx)

sudo chgrp -R www-data .
sudo chmod -R 775 ./storage

Fix privileges on files and folders (optional)

find . -type f -exec chmod 644 {} +
find ./storage -type d -exec chmod 775 {} +