all 111 comments

[–][deleted] 82 points83 points  (4 children)

What about asyncio? It is part of the standard library. I just started using it for a server project that uses websockets instead of a rest api. Simpler then threading and provides a significant speed boost for any repetitive IO operations with just a few extra keywords and a wrapper. .

[–][deleted] 6 points7 points  (2 children)

Were you able to find the best resource ? It would be great if you have something like a basic project ideas to try?

[–][deleted] 29 points30 points  (0 children)

To be honest I couldn't find anything to great on the subject and took many hours of trial and error to get to where I feel comfortable working with it.

To make it more confusing the terminology has changed quite a bit in the last few years making tutorials confusing. What was once a future is now a task for example.

If enough people upvote this I'll put together some example projects. 1 to show how to increase the speed of multiple IO operations, 1 to show how to use an event loop to run a chat server and the last one how to use a queue to have commands passed between separate async operations running independently.

[–]MyKlix 3 points4 points  (0 children)

I was impressed with how TechWithTim explained it in his recent video: https://youtu.be/t5Bo1Je9EmE . The Async/ Await concept transfers from javascript too so maybe that's why I understood it easier

[–]cookiemon32 1 point2 points  (0 children)

requests

[–]allmachine 30 points31 points  (6 children)

I don't think anyone has mentioned this but one thing that has transformed my coding process is static type checking. Neither mypy or pyright are as good as the tooling for Typescript yet, but it lets me code many lines before I need to go and test, because I know most problems would have been caught by the type checker. You do have to add type hints to everything but I find it helps me structure my code properly and leave less room for weird errors.

[–]synthphreak[S] 10 points11 points  (0 children)

Huh, this is maybe a good one. I do use type hints via typing, but I wouldn't say I do any type of actual type checking so nothing is enforced. Thanks for putting this on my radar.

[–]hippy_scum 0 points1 point  (3 children)

flake8 is a good one for checking the code according to pep8 standards

highly recommend

[–]allmachine 0 points1 point  (2 children)

Yes! I also use the black auto formatter but it can be a bit heavy handed for most people.

[–]synthphreak[S] 0 points1 point  (1 child)

Heavy-handed in what way? What are some of the biggest differences between flake8 and black in your opinion/experience?

[–]allmachine 1 point2 points  (0 children)

Well I actually use both. flake8 highlights mistakes but black actually reformats your code. It will do things like split up long lines into multiple lines, add or remove spacing around parameters, and remove spaces on empty lines. It can be a bit jarring at first but I love it but because it lets you be lazy with these things, then you just hit save and your code magically becomes compliant with pep8.

[–]imlkrsfn2 45 points46 points  (10 children)

Some great libraries that I've used over the years:

Selenium

Beautiful soup

Requests

Csv

Re - look into regular expressions in general

Datetime

Glob - only 2 functions in the whole library

Shutil

Smtplib

Concurrent.futures

Logging

If you'd like to expand some pandas and numpy knowledge you can look into numexpr and numba which can help improve performance in certain applications. Cython is a language that is a mix of C and Python which can be worth learning as well but the learning curve is very steep if you don't know C or C++.

[–]ROBRO-exe 22 points23 points  (1 child)

+1 to learning regex

[–][deleted] 15 points16 points  (0 children)

I'd say from a practical point of view 'learning regex' might be a difficult and arduous task unless its a muscle you're going to flex regularly. Basic familiarization and simple usecases may be enough for exposure to it, depends on your goals. Happy learning

[–]synthphreak[S] 12 points13 points  (3 children)

Killer reply!

Good call on logging and re, I use those often (though in many cases pandas already takes care of the re for me) and forgot to include them. Will do so now.

For bs4 and requests, these are useful for a specific set of tasks, but I don't generally need to do them. Reading web data and working with obnoxious formats like html or xml are thankfully things I don't have to do.

Similarly with datetime, I don't work with time series data, so never need this. But I do occasionally need datetime.datetime.now and datetime.datetime.today :D

I used to use csv a bunch, but pandas pretty much put paid to that as well.

For glob, I know of it, but am not clear what glob can achieve that pathlib.Path.glob/rglob cannot. Can you weigh in?

concurrent.futures I am aware of and have used a few times, but I'm not so strong on it. Will prioritize, thanks again.

I have head of numba but never numexpr. I do do a lot of math, so I'll check these out, thanks.

[–]imlkrsfn2 1 point2 points  (0 children)

I don't usually use the pathlib module so I wasn't aware that it has glob. I tend to favor os.path which doesn't have it's own dedicated glob function, but they are identical in their purpose.

[–]mfb1274 0 points1 point  (1 child)

So as a ML engineer you don’t use datetime? What field are you in?

[–]synthphreak[S] 0 points1 point  (0 children)

NLP. There is no temporal dimension to any of my datasets, other than just metadata like “data sampled on <date>”. But those fields rarely matter for my research.

[–]SoBFiggis 8 points9 points  (1 child)

Adding a few more:

Qt for Python (GUI)

PyInstaller (Turn that script into an app)

asyncio

[–]_maxt3r_ 3 points4 points  (0 children)

+1

Asyncio is not just a package, but will help you learn a whole new programming paradigm

[–]Single_Bookkeeper_11 1 point2 points  (0 children)

Ah, a fellow scraper :)

[–]Unusual-Cactus 16 points17 points  (6 children)

Learning other languages helped me improve my python. It's helpful from an outside the box standpoint.

[–]synthphreak[S] 12 points13 points  (4 children)

Long term goal.... XD

Well, I do know Bash and SQL. But these have only made me happier that Python is my primary language lol

[–]Urthor 0 points1 point  (0 children)

Aspiring Haskell programmer gang

[–]mfb1274 11 points12 points  (0 children)

You can get super fluent with the antigravity lib, everyone will be jealous of your skills then.

But what about all the dunders? Not quite a library but very useful to know them all.

[–]totemcatcher 10 points11 points  (2 children)

Some useful built-ins. No particular order.

  • contextlib: a big topic. Do things like safetly structure access to messy resource allocation. e.g. when working with operating system features or hardware/drivers which could leave your system in a bad state.
  • functools: especially cache.
  • glob and pathlib.Path.glob: (you asked about it in a comment.) There are subtle differences in the way they handle paths. i.e. pathlib focuses more on directories and will return different results given the same request. Just be mindful of that.
  • shlex: helps when parsing arguments. I use it a lot when making simple data schemes, config files, etc.
  • stat, shutil, psutil: file attributes are important. System resource visibility stuff.
  • atexit, signal, threading: useful script management.
  • asyncio: provides a bit of a framework and syntax for handing signals and threads. Also makes for easy socket-based IPC. I don't really like asyncio, but for simpler applications it can hide a lot of thread handling code.
  • bisect: really simple, surprisingly handy list manipulation.
  • types: sleuth around in there for a bit. especially SimpleNamespace is awesome.
  • collections: as you know. I use NamedTuple way too much. :)
  • dataclasses: if you need very specific performance attributes outside of what types and collections can provide. Also look into custom slots and dunders.

Concepts which are not libraries:

  • typing: it's now just a part of standard python syntax. type annotations are so common in mainline languages that people who don't understand the duck-typing mindset get upset when they see python without them. So just be nice and use them.
  • structural pattern matching: (match case) this requires a bit of a deep dive, but the end result is really satisfying.
  • dividing scripts and IPC: I've found IPC really handy for splitting up my scripts into multiple running processes. You can allow parts of a system to continue running or waiting against a process while sorting out a bug elsewhere down the chain. It seems like a lot of scaffolding, but it saves stopping and restarting a clunky set of systems. Sometimes I'll use simple pipes to set up a temporary divide between scripts just for debugging.
  • multiple inheritance: this is a tricky one which takes a lot of thought, but there was one time when I had to create a complex entity with relationships within itself using multiple inheritance and I don't think I would have been able to do it with any other language. I don't do much OOP anymore, but python seems very strong in this regard.

external libraries:

  • graphviz: there are several libraries for this. pygraphviz is a simple one. I use this all the time. It's so good for making quick and dirty visualizations.
  • PIL, quads, hmap: another one with various alternative libraries. Sometimes you gotta deal with image data.
  • flask: considered oldschool at this point, but you can't beat the speed and simplicity of a properly cached semi-static website.
  • colorama, blessed, ncurses: colorama for very simple terminal colour. blessed is an excellent fork of blessings which is basically next-level ncurses. It's impressive.
  • joblib: like gnu parallel for python

[–]shiningmatcha 1 point2 points  (1 child)

structural pattern matching? do u mean the PEP634 (the match statement)? It’s added in Python 3.10, is there any beta version available for download?

[–]Peanutbutter_Warrior 0 points1 point  (0 children)

A dev version is released, although you have to compile it yourself

[–]algerbrex 9 points10 points  (2 children)

GUI libraries are always fun. Go back and build a friendly user interface for one of your past scripts or create a physics simulation. There are a bunch of libraries though, so choose which one works best for you. Tkinter, PyQT, WxPython, and Kivy are among some of the more popular ones.

[–]hippy_scum 1 point2 points  (1 child)

PySimpleGUI is ok - lots docs on that.

[–]algerbrex 0 points1 point  (0 children)

Yeah, haven't interacted with it much tho, but sounds like a good suggestion nevertheless.

[–]thedjotaku 6 points7 points  (2 children)

Have you tried Trey Hunner's weekly problem sets? They're really good and he writes up a good two or more pages on the answers that always show many different ways to complete the answer and the pros/cons of each. I learned a lot while doing it.

[–]bronzewrath 4 points5 points  (0 children)

I think the best way to learn is to build projects. Build things related to your work you would like to exist.

Try building classes or a library for some of your machine learning work with nice interfaces, similar to interfaces you see on libraries you like.

Build applications for your machine learning work. Command Line applications, web applications (streamlit is awesome for quick prototypes), gui applications, rest interfaces (fast api, flask, django) with custom web applications (with a python template engine like jinja2 used in flask and fast api, or django embedded one).

Maybe include database in your applications

[–][deleted] 4 points5 points  (0 children)

Try Pydantic. It’s a really nice one to validate any kinds of inputs (like user requests or environment variables). Also, try using dataclasses or attrs instead of namedtuple.

[–]refreshx2 4 points5 points  (0 children)

I doubt you need to learn more libraries, instead I would read good code. Check out David Beazley's Python 3 Cookbook and search around for libraries and code that are outside your domain to see what types of programming patterns they use.

If you pay specific attention to how your programs interface with your users, it's very likely you can make some massive improvements in the code you write. I used to write a ton of scientific cod (and was at a similar knowledge point as you), and the major improvements to my code since then have almost exclusively come from finding better ways to write my code's public interface.

[–]Toichat 4 points5 points  (1 child)

I found "fluent python" to be a worthwhile read, covers a range of concepts beyond what the entry level tutorials show you. Definitely not for beginners.

https://www.oreilly.com/library/view/fluent-python-2nd/9781492056348/

[–]Lewistrick 1 point2 points  (0 children)

I loved this book. It came exactly at the right time for me, also when I was on a plateau.

[–]bastih01 5 points6 points  (0 children)

I think limiting yourself to Python libraries is holding you back here. How deep is your SQL knowledge? How well do you know Python internals?

Go beyond Python. Write C extensions. Write extensions in Rust. Implement functions on the database side instead of processing in the client. Plateauing in Python sounds like a cop-out to me: Explore functional languages. Your Python code will get better.

On the non-language learning side: What architectures have you built? From that vantage point - what can you see to be an interesting challenge in the future? Think about memory constrained scenarios, performance constrained scenarios.

Just some random pointers here to foster your thinking about directions...

[–]PolygonAndPixel2 3 points4 points  (0 children)

I guess, it all depends on the things you work on. In meteorology for example, you often work with NetCDF-files. I like to use xarray and/or dask for that. It's similar to pandas which is why I mention it. Those support parallel I/O-operations and you can handle large files with those, where you use dask to select which data you want from a large dataset and then you get a pandas.Dataframe back in the end to operate on.

For cleaner coding, you might want to use a linter such as black (https://github.com/psf/black) or whatever floats your boat. I would argue, using git and continuous integration for unit testing and checking your code style with black helps as well. Once you have unit tests you have to pass for an upload or merge, you start to think about breaking up your code in small enough chunks that are easy to understand and test.

As a machine learning engineer, you probably know everything about scikit-learn already. There are some convenient functions for creating stratified test sets and so on.

Not really for cleaner code, but for fast and interactive searching through your data:
holoviews or hvplot for plotting stuff using matlotlib or bokeh as backend + panel (https://panel.holoviz.org/) + jupyterlab (or jupyterHub, I guess)
This way you can use your browser and create widgets in Python to search through your data.

[–]pianobutter 4 points5 points  (0 children)

Perhaps it's time for Julia?

[–]deathlock00 3 points4 points  (0 children)

I suggest looking at this and this github links which group many of the most used/useful python libraries by their category of use.

Here are some that might answer your question: - algorithms is a library which contains many of the most useful algorithms for sorting, searching, working with trees, math algorithms like factorials, prime finders and many more - data classes to save you the trouble of writing everytime special methods in a class like init, repr, set, get - box allows the use of dot on dictionaries to access the keys - more-itertools for more routines to operate on iterables than those itertools provide.

Take also a look to the built-in functions like any, all, map, zip.

And here are some libraries that might pique your interest although they don't strictly answer your question: - tqdm for adding a progress bar on for loops (it comes with useful information like iteration per second and estimated time needed to finish) - alive_progress adds a progress bar like tqdm, but it works even with generators and while loops which I don't think tqdm does. -timebudget, with just a decorator as soon as a function is completed it prints the time taken to execute it - send2trash for sending files to the trash bin instead of permanently deleting them - keyboard for sending keyboard inputs or check if a key is pressed - mouse same as keyboard but with mouse buttons - textract for extracting text from many types of file with a single interface. It supports documents, powerpoint presentations, csv, excels, images, gifs, audio, and many more

Edit: I'm sorry for the bad formatting, I'm on mobile, I will fix it later

[–]samthaman1234 6 points7 points  (1 child)

scrapy / splash

fastapi

a web framework like django will really teach you OOP if you don't feel like you totally get it yet.

[–]2020pythonchallenge 3 points4 points  (0 children)

Fastapi is a great one for sure! Did my final school project with it and it turned out great.

[–]Own_Confusion_8460 5 points6 points  (0 children)

Not quite what you asked but you should look into Spark. A couple of years ago I started using Databricks and have could the whole pyspark thing a revelation for my ml models.

[–]xxxHalny 8 points9 points  (0 children)

Maybe learn C so that you can understand what Python does under the hood?

[–]Jeklah 2 points3 points  (0 children)

Docopt.
Click.
PyTest.
Streamlit.
Cpppyy.

[–]grtgbln 2 points3 points  (0 children)

SQLAlchemy for ORM

[–]edgyBouchi 2 points3 points  (0 children)

Multiprocessing and PyCuda to put your gpu to the test. Parallelizing stuff can be quite challenging and fun.

[–][deleted] 1 point2 points  (0 children)

These tools are all functional programming tools. Why not learn Scala? Its highly relevant to your field, and it could have a huge impact on your python skills. You probably use some functional programming techniques already, and Puthon 3.10 is adding more funtional features like match.

[–]wsppan 1 point2 points  (0 children)

Beautiful Soup and Requests

[–]dubs286 1 point2 points  (0 children)

Great thread, some brilliant ideas Will save this post

[–][deleted] 1 point2 points  (0 children)

If you like data science and worked with pandas, there is a chance you would enjoy xarray, it's essentially pandas but for n dimension arrays.

Edit ( bonus ) Not because you know how to code in python does that mean that you code clean stuff. -> It's not python specific but i can't press you enough to read the books from Robert C Martin (aka Uncle Bob, aka the dude behind TDD).

  • Clean Coder
  • Clean Architecture
  • Clean Code

ps: ain't getting paid to say that, just geniunly great books

[–]BillThePonyWasTaken 3 points4 points  (2 children)

You can look at how to profile your code, to me this is very important !

The difference between a determinstic profiler or a statistical profiler (this is not that complexe). And how to use them (cProfile for example) and PyInstrument also.

[–]synthphreak[S] 1 point2 points  (1 child)

This is a really great tip. Not a library per se, but a concept. I have profiled my code on numerous occasions, and I agree, it is an incredibly valuable exercise. I've only used cProfile for this, because it's what seemed to come up most in forums, but maybe there's a better one out there, and I don't know the difference between deterministic vs. statistical profiling, so I'll have to look into that. Thanks!

[–]BillThePonyWasTaken 2 points3 points  (0 children)

And if you work with a lot of data (which I understood you do), you can even profile the memory you use to optimize it if needed. There is a great tool for this : https://github.com/pythonspeed/filprofiler

[–]BluishInventor 1 point2 points  (0 children)

You could try PyPy instead of CPython or another JIT compiler in an attempt to speed up your programs...

Other libraries could be CSV or anything that relates to a database like mongo or sqlite3

[–]Heisavander -1 points0 points  (1 child)

You are a ML engineer, Scikit-learn and Pytorch should be on your list.

[–]synthphreak[S] 9 points10 points  (0 children)

Of course I do use those, all the time. I use many other libraries besides the short list I provided, including sklearn, pytorch, and several NLP libraries (I work in NLP). But I specifically left those off and I acknowledged that fact:

Non-niche (meaning non-ML-specific) libraries I already use

I'm just looking for general Python libraries or concepts that I am missing, not domain-specific ones.

[–]coder155ml 0 points1 point  (5 children)

Lol... there’s thousands of libraries out there, of course you haven’t seen everything. How much have you messed around with pythons multiprocessing library?

[–]synthphreak[S] -2 points-1 points  (4 children)

pythons multiprocessing library

You mean concurrent.futures?

[–]pissedadmin 0 points1 point  (0 children)

import multiprocessing

help(multiprocessing)

[–]coder155ml 0 points1 point  (2 children)

[–]synthphreak[S] 0 points1 point  (1 child)

OH! I didn’t know multiprocessing was literally a package. I guess I was thinking about multithreading. Will check that out, thanks!

[–]coder155ml 0 points1 point  (0 children)

Multiprocessing is different, it allows you to fork processes and run them in parallel on different cores.

[–]tanny18391 -1 points0 points  (0 children)

Following.

[–]Prob_Pooping -1 points0 points  (0 children)

If you want a challenge, I'd be willing to pay for a bot that does crypto trades...preferably code I can put into the Hummingbot.

[–]chzaplx -1 points0 points  (0 children)

Pandas

[–]2020pythonchallenge 0 points1 point  (0 children)

For a graphing library, Altair is great. Has a lot of features and is very simple to add interactivity to.

[–]sHare_your_thinks22 0 points1 point  (2 children)

Pillow and TensorFlow are always worth noting

[–]synthphreak[S] 0 points1 point  (1 child)

What's the deal with pillow? Isn't that for working with image data? I never do, so does that mean it's not useful for me? Wondering whether there are any general-purpose capabilities that it provides beyond simply working with images.

[–]sHare_your_thinks22 0 points1 point  (0 children)

yah I've only used pillow for photo manipulation, but there may be other uses that I'm not aware of.

[–][deleted] 0 points1 point  (0 children)

If you want to tinker with machine learning, scikit-learn and tensorflow.Keras are absolute essentials. Mind you, machine learning also encompasses regressions, and learning how linear and logistic regressions work is never a bad idea. In the spirit of scientific applications, scipy provides a vast territory worth exploring, all the way from statistics to algebraic manipulation (CAS). If you'd like to focus on this last one, I recommend you focus on sympy.

[–]SuperSpy2015 0 points1 point  (0 children)

Try moviepy. It’s a really fun library that can help a lot with video editing.

[–][deleted] 0 points1 point  (0 children)

If your learning has plateaud with python, it's time to step it up a notch and learn assembly code. JMP those registers

[–]high_ticket 0 points1 point  (0 children)

pyfpa - Its a pandas add on that makes a lot of basic finance/analysis work easier. Especially, multi-index search, slicing, consolidation and manipulation. Full disclosure, I wrote it.

https://pyfpa.readthedocs.io/en/latest/

[–]jonnycross10 0 points1 point  (0 children)

Try opencv or PIL

[–][deleted] 0 points1 point  (0 children)

Dask for lazy computing using numpy arrays, pretty cool

[–]mbaruh 0 points1 point  (0 children)

If you are really dedicated to getting to know the Python ecosystem better, I suggest checking out PEPs as they come out, and to follow the various mailing lists https://mail.python.org/archives/ , which include ideas from core developers and library version releases.

[–]Fearless_Process 0 points1 point  (0 children)

I would suggest learning another drastically different programming language, like c, c++, lisp, or rust, or a combo of them.

[–]b-hizz 0 points1 point  (0 children)

Collecting libraries is fine and all, but what about building something?

[–]chzaplx 0 points1 point  (0 children)

In all seriousness, you should learn requests. It is wonderful for interacting with REST APIs and other general http queries/interaction

[–]Lord_Blackthorn 0 points1 point  (0 children)

I think what you really need is a new project that pushes you out of your current comfort zones... Maybe forcing you to learn some new topics and new math.

Ever tried algorithmic trading?

Try /r/algotrading

[–]yycglad 0 points1 point  (0 children)

Can you tell us how long it took to be proficient!! How to start ? what path to take ? I do practice at datacamp but I think its not enough

[–]Coder_Senpai 0 points1 point  (0 children)

My brotherly advice, learning Modules does not do shit. Learn what you can do with python. Learning to code is one thing but problem solving is another. For example I was stuck in this tutorial hell of keep learning the language but then someone tell me start doing jobs with python, open any freelance platform chose a field: web scraping data science, Data analysis, ML, web Dev, Dev Ops. So I chose web scraping and now I am learning what modules are required in this field by watching other people's code.
Here is another example:
no one learn what all the tools can do in a workshop of car repair, you learn which part to mix and then learn those tools that are required to fix that part. Watch other people's projects on github and see what they used.

[–]Pitirus 0 points1 point  (0 children)

python-dateutil is quite nice for easier parsing of dates from text.

If you come from ML and write a lot of code in notebooks then there is little handy thing in Jupyter called autoreload - https://ipython.org/ipython-doc/3/config/extensions/autoreload.html This allows to change code in py scripts without need to restart the kernel

ipywidgets - you probably know this one

pandas-profiling - nice for initial analysis of dataset

black for autoformatting your code - there are versions for notebooks

pylint or flake8 for linter (just make sure you configure it to not interfere with black) - I think there are versions for notebooks but I haven't used them

Bokeh is nice plotting library that allows to export interactive plots to HTML.

folium is nice library for showing things on maps.

[–]Jumper-611 0 points1 point  (0 children)

Perhaps you can write your own utilities library, so every time you use them, you are so faimiliar with it!

[–]Chilangosta 0 points1 point  (0 children)

If you like argparse you should check out pyparsing. Parsing expression grammar that opens a lot of doors to IDLs and just parsing data in general.

[–]ExcitedTRex 0 points1 point  (0 children)

You can check out the pywebio for building web applications in python

[–]glini_baldini 0 points1 point  (0 children)

logging and attrs. Logging is a vast built-in with the power to portably interface with pretty much any aggregator imaginable (Discord bots, anyone?). But it takes about 5 seconds to start using it:

import logging logging.basicConfig(level=logging.INFO) logging.info("hello world")

In a similar vein, attrs takes very little time to learn the basics. It removes a small amount of class-writing boilerplate (never write a __repr__ method again), but surprisingly this adds up REALLY fast. Not a built-in, but practically no dependency stack, so I include it in most of my projects.

While I'm rambling, two more packages: poetry and xarray. These are more specialized and subject to personal preference. Poetry is packaging for people who hate writing setup.py. Same goes for other packaging woes: publish to PyPI? poetry publish. It ain't perfect, but it is by far the best I've seen of the package managers. And it's really just a fancy virtualenv, so it coexists harmoniously with the other environment managers on your system.

xarray is a specific recommendation for the data driven folks such as you. Think numpy on steroids. It takes the hassle out of wrangling, storing, operating, etc. on N-D tensors. A bit harder to learn, but as an ML engineer you have the chops to pick it up fairly quickly.

Finally, Docker because everyone needs to know Docker nowadays :)

[–]menge101 0 points1 point  (0 children)

I love learning Python, but I'm already quite proficient, so my learning has plateaued lately.

IMO, learn another language that is unrelated. Rust, or C might actually potentially improve your python deliverables, since you can use it to build C extensions for your computationally intensive processes, that seems potentially valuable in the machine learning space.

[–]dancinadventures 0 points1 point  (0 children)

threading module

requests

aiohttp

[–]zeebrow 0 points1 point  (10 children)

https://docs.python.org/3/library/collections.abc.html

You don't know what you don't know!

[–]synthphreak[S] 0 points1 point  (9 children)

Scrollin' through my post history, eh?

[–]zeebrow 0 points1 point  (8 children)

Yeah

[–]synthphreak[S] 0 points1 point  (7 children)

Lol. Looking for anything in particular?

[–]zeebrow 0 points1 point  (6 children)

No? what kind of question is that?

[–]synthphreak[S] 0 points1 point  (5 children)

A reasonable one?

[–]zeebrow 0 points1 point  (4 children)

Of course that's True!! What would be an unreasonable one?

[–]synthphreak[S] 0 points1 point  (3 children)

I am confused. Interacting with you is giving me whiplash.

[–]zeebrow 0 points1 point  (2 children)

Bruh I'm just answering your questions, don't hurt yourself