Giter VIP home page Giter VIP logo

textutilsbot's Introduction

Hi there 👋

Let me introduce myself…

As a human

I'm a codeborn programmer in the 2nd generation* from North-West of Russia. My birth town is Severodvinsk. This is a city near Arkhangelsk, Russian Los-Angeles :)

I love Chineese tea (especially red varieties and GABA oolongs), milk coffee beverages, craft beer (especially stouts, IPAs and milkshakes) and smoking a hookah. I like comedies and cartoons, hiking, sightseeing and taking shots of interesting places. What about music? I like Russian rave (GSPD, CMH, Dead Blonde), rap (dom!No, playingtheangel, RAY-D, aikko), pop punk (ЗАВТРА БРОШУ, ONEDAY, Drug Твоей Тёлки).

I'm very inquisitive person since childhood and interested in computer science, physics, chemistry and biology. However, I don't like olympiads and contests.

Currently, I'm in a state of war with my own demons and anxiety-depressive disorder, trying to become a normal person, accepted by society.

* My father had been developing video games in Basic and assembler for ZX Spectrum in 1990s.

As a worker, software developer and engineer

My first computer program was a simple text quest written in Blitz Basic. Unfortunately, this project is lost now. However, I wrote another similar quest in Delphi later (it's in Russian). I still love Borland Delphi 7 for such great simplicity of creating forms (windows) and handlers. Thus, it's not surprising I wrote many programs in Visual C# during university studying.

Nevertheless, I'm always been fascinated by low levels of computer machinery. I tried to learn C++ (yeah, for 21 days, reading the famous book). Unsuccessfully, though (however, I wrote a firmware for Arduino in plain C later). I've learnt some basics of assembly language and OS architecture with an awesome series of articles written by Bitfry.

Later I knew about Python and I love its power and simplicity for writing scripts*, Telegram bots (e.g. @textUtilsBot and @kozRandBot) and even games!

* At this period, I was actively exploring and configuring Linux distros. Now I'm using Windows and MacOS and I hate 'perdoling' (this is a term in Russian, meaning the love of junior IT engineers to build a Linux system from scratch or modify a standard distribution completely).

Nonetheless, my official professional career, outside personal pet projects, is closely tight with Java and a whole ecosystem around its virtual machine. I was involved in a group of people dreaming about creation of a personal assistant app before it became possible nowadays due to the rapid evolvement of neural networks. We were working on the DeskChan project — a Java application suggesting a theoretically endless set of features by extending it with plugins written in any JVM compatible language like Kotlin, Groovy, Scala, Jython, Closure, etc.

The next stage in my life and career is relocation to Moscow and working for the largest bank of the country — from a junior software engineer to team lead. It took 3.5 years.

The last year I had decided to step away from virtual machines and interpreted languages and go deeper into system programming languages like Go 💔 and Rust ❤️. Also, I was getting in touch with PostgreSQL (my previous experience with RDBMS was with MySQL and Oracle), Prometheus, Loki, Grafana, protobuf, gRPC.

Shortly speaking, I would describe my preferences as:

❤️ I love:

  • strongly statically typed and functional languages like Rust, Kotlin, Java, and Python with type hints as an exception for prototypes and small programs;
  • Windows, MacOS, Linux on servers and IT infrastructure;
  • crypto and finances, blockchain and distributed systems in general;
  • scientists.

💔 I don't really like:

  • frontend,
  • Go,
  • Linux on desktops,
  • puzzlers on algorithms or bytefucking,
  • normies.

My currently active projects

Telegram bots:

  • ⭐️ @SadFavBot — favorites bot, written in Go;
  • 🗺 @LocPlaceBot — inline bot, written in Rust, that allows you to search for some place and send its coordinates as a location;
  • 🍆 @DickGrowerBot — game bot, written in Rust, to measure and compare your Big Ben with friends' ones;
  • 🔤 @textUtilsBot — simple bot, written in Python 3, that has some useful handlers of inline queries to make text conversions;
  • 🤖 @kozRandBot — randomizer bot, written in Python 3;

⏯ Telegram channel @kozaloru in Russian with notes about different aspects of IT, bypassing of prohibitions, investments, biohacking, etc. And a newly created English fork @kozalo_blog.

🕸 Old blog as a separate website — kozalo.blog — with old articles (in Russian, of course) and programs.

Some other old (legacy) projects:

What am I going to learn next and therefore what might interest me?

  • Scala
  • Solidity
  • Kafka

How to reach me

textutilsbot's People

Contributors

dependabot[bot] avatar kozalosev avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

blackhalf

textutilsbot's Issues

Improve help messages

Telegram user @gnupg has suggested for the bot to answer with help messages every time when someone sends a non-command message to the bot's private chat.

Even more, the help messages themselves must be more detailed and explanatory.

Some queries are `eval`uated to tuples

2023-06-07T07:30:27.413398660Z ERROR:aiohttp.server:Error handling request
2023-06-07T07:30:27.413457020Z Traceback (most recent call last):
2023-06-07T07:30:27.413460386Z   File "/usr/local/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 433, in _handle_request
2023-06-07T07:30:27.413463141Z     resp = await request_handler(request)
2023-06-07T07:30:27.413465486Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023-06-07T07:30:27.413467800Z   File "/usr/local/lib/python3.11/site-packages/aiohttp/web_app.py", line 504, in _handle
2023-06-07T07:30:27.413470085Z     resp = await handler(request)
2023-06-07T07:30:27.413472249Z            ^^^^^^^^^^^^^^^^^^^^^^
2023-06-07T07:30:27.413474433Z   File "/usr/local/lib/python3.11/site-packages/aiotg/bot.py", line 603, in webhook_handle
2023-06-07T07:30:27.413476667Z     self._process_update(update)
2023-06-07T07:30:27.413479051Z   File "/usr/local/lib/python3.11/site-packages/aiotg/bot.py", line 767, in _process_update
2023-06-07T07:30:27.413481195Z     coro = self._process_inline_query(update["inline_query"])
2023-06-07T07:30:27.413483330Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023-06-07T07:30:27.413485543Z   File "/usr/local/lib/python3.11/site-packages/aiotg/bot.py", line 714, in _process_inline_query
2023-06-07T07:30:27.413487698Z     return self._default_inline(iq)
2023-06-07T07:30:27.413489882Z            ^^^^^^^^^^^^^^^^^^^^^^^^
2023-06-07T07:30:27.413491995Z   File "/home/textUtilsBot/app/bot.py", line 91, in inline_request_handler
2023-06-07T07:30:27.413494119Z     transform_query(processor)
2023-06-07T07:30:27.413496303Z   File "/home/textUtilsBot/app/bot.py", line 74, in transform_query
2023-06-07T07:30:27.413498467Z     processed_str = transformer.process(request.query, lang_code)
2023-06-07T07:30:27.413500622Z                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023-06-07T07:30:27.413502746Z   File "/home/textUtilsBot/app/strconv/calc.py", line 38, in process
2023-06-07T07:30:27.413504870Z     return self.next_expr(query, lang_code, StringIO())
2023-06-07T07:30:27.413506994Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023-06-07T07:30:27.413509168Z   File "/home/textUtilsBot/app/strconv/calc.py", line 63, in next_expr
2023-06-07T07:30:27.413511302Z     sb.write(self._format_number(val))
2023-06-07T07:30:27.413513436Z              ^^^^^^^^^^^^^^^^^^^^^^^^
2023-06-07T07:30:27.413530247Z   File "/home/textUtilsBot/app/strconv/calc.py", line 75, in _format_number
2023-06-07T07:30:27.413532792Z     return f"{val:.2f}" if val % 1 != 0 else f"{val:.0f}"
2023-06-07T07:30:27.413535036Z                            ~~~~^~~
2023-06-07T07:30:27.413537271Z TypeError: unsupported operand type(s) for %: 'tuple' and 'int'

Use pagination with inline buttons to display help messages

This idea was suggested by @s-titov.

AS-IS

A bunch of messages (exactly 10 at this moment) is sent by the bot when a user /starts or asks for /help. This is kind of repulsive behavior.

TO-BE

Use inline buttons with names of all processors on them to display one help message at a time, allowing the user to switch between them.

Disable suggestion system

There were no useful suggestions sent via the system for the whole year. Weird people have been sending useless and bizarre messages. Thank you all but I'm tired of it. No more.

Embedded calculator

@textUtilsBot the final price is {{10*0.9 eur to usd}} dollarsthe final price is 9.57 dollars (at the current exchange rate)

Alternative syntax for currency conversion: it costs {{10€ > $}}it costs $9.57

Create notification system

Our users must be able to receive messages from us with important news sometimes.

This feature depends on #11 and will be able to be implemented when that one is done.

Rename the embedded calculator module

Встроенный калькулятор для текстов => Подстановочный калькулятор
Embedded calculator for texts => Substitutions calculator

Add a URLEncode/URLDecode text processor

The only useful suggestion has been sent via the suggestion system. However, I don't think that this feature should be implemented as a standard processor. Probably, it would be better to use some prefix system to separate different processors from each other.

So, the implementation must do the following transformation:

url:https://some-website.com/?param=some text value
⬇️
https://some-website.com/?param=some%20text%20value

or

url: россия.рф
⬇️ 
%D1%80%D0%BE%D1%81%D1%81%D0%B8%D1%8F.%D1%80%D1%84

Add support for Unix sockets

I'm going to replace the TCP socket, that is used now to proxy requests from nginx to the application server, by the Unix domain socket on my environment. This approach should be more effective.

However, this enhancement doesn't imply fully replacement, but just a new option. So, it won't break anything neither on Linux, nor Windows.

Collect statistics

I want to know how many users are getting help by the bot. And where are they from.

Besides, collecting user IDs I would be able to send informational messages. I promise that this functionality won't be used for selling users' personal data or sending any advertisement messages.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.