Skip to main content

Asking Questions

This has everything in it on how to ask questions correctly.

In short, it can be summed down to this:

  1. Do your own research first.
  2. Include things you have tried and thought of before asking the question.
  3. Be explicit about what you want to achieve in the end and provide as much information as possible to help.
  4. Respect other people's time.

XY problem is also something to be aware of. When asking for help, let the people know what the problem you are trying to solve actually is instead of simply saying your solution and the reader guessing what it is you are actually trying to do.

Notes

Researching

Research

Good Research Code Handbook is good read. Autocomplete vs graph is useful.

How I research

The most useful thing that has helped me be more productive in uncovering new and interesting things is to do things with a purpose. Research included.

As for the research itself, I use all the tools available to me to answer a question I have. I love using macOS dictionary app to quickly go and read a wiki article. It is amazing how fast it lets me both search for things there and simply explore the depth of the wiki.

For searching, I use:

  • Google - General / programming related.
  • DuckDuckGo - Private searches / instant answers / cheat sheets.
  • GitHub - Software / repos / code search

And of course I love specializing my search to any website I wish. My Web Searches workflow lets me do that with ease and anyone can download it too to get all these search super powers.

There is also absolutely amazing workflow to search various websites with autosuggestions. I highly recommend it. It essentially lets you have powerful search like Google, DuckDuckGo, YouTube and more from wherever you are in your operating system.

Super fast access to all knowledge of the world

It's insane, the world we live in.

We have all the knowledge of every human who has ever lived or lives now at our disposal. Not many people do share all their knowledge in a continuous way like I do here but most people share it through their blogs. Their code, videos, tweets and other mediums.

Google, DuckDuckGo and other search engines are phenomenal in how they solve this problem of trying to access and query all this collective sum of knowledge.

Together with Learn Anything, you have all the superpowers of this world to create anything and everything. Things that didn't exist before. Ideas and thoughts that weren't thought of before.

In addition to Learn Anything, I also help curate many curated lists of resources and links. I then parse these lists and access them from Alfred Learn Anything workflow. These lists include:

Notes

Solving Problems

Solving problems

Always think from first principles.

  1. What are you trying to solve? Define the problem well.
  2. Break the problem down to essential and smaller parts.
  3. Prioritize order of solving the parts. Do necessary research.
  4. Work on solving each part one by one. No distractions. Get rid of parts that are non essential.
  5. Optimize. Document. Share solution.

1. What are you trying to solve? Define the problem well.

I use Height for all my project and personal tasks/ideas I work on.

In there I clearly define the subtasks and all the necessary information. Just lay it all out. If something is not yet clear, think it through alone or with like minded friends in Excalidraw. High level diagrams.

For personal tasks and keeping my brain fresh of memorizing things, I use 2Do, GitHub issues and TODO:'s in the code. Write anything that comes to mind that's of value, always! Don't keep non directly actionable things in your brain RAM. Only thing you should keep in your brain RAM is the actual problem or subtask of the big problem you are solving.

Going on walks or having naps and even relaxing with friends whilst still having the problem at back of your mind is super useful as your brain is actually processing the problem in background and can give you novel insights.

Just try to be clear of what you're solving and why!

2. Break the problem down to essential and smaller parts.

As mentioned, I use Height for this now and its subtasks feature is lovely. Want to build a Height like app that sits on top of GitHub issues soon as that would be even better.

Example task with subtasks

Month view of things to do for a project

Most important part in this step is just to make sure that subtasks are all actionable. Sort by priority and then go at it, one by one.

I like breaking things down more visually in Excalidraw or [MindNode].

Can look like this. Here LA and epictools are two tasks/projects with subtasks.

MindNode lets you focus in on one of the nodes for better focus.

Can also use arrows with descriptions for more high level views. Above is example of one brainstorming session.

Often times I don't need to go this deep into sketching everything out. And just working in the code editor and outlining the task in Height/GitHub is enough. Or [2Do] (as note).

FigJam and Excalidraw are amazing as they allow you to collaborate on brainstorming together.

If through this process, you find some part of solving the task, not useful or unneeded, remove it! Why Tesla removed Radar and Ultrasonic sensors is nice overview of this in action.

Minimal viable working thing first!

3. Prioritize order of solving the parts. Do necessary research.

In this part, assuming you have things in order and well defined (as much as possible). Do necessary [research]. Is this problem already solved by someone? Can we just use it or integrate?

For research, I do Google searches. Search [Reddit], HN, [Twitter] for convos around the topic/problem. Note things.

4. Work on solving each part one by one. No distractions. Get rid of parts that are non essential.

If there are no viable solutions already for the problem. Do the work to solve it!

Each subtask, one by one. No distractions during work [focus sessions].

I use [great tools] to make the process of solving tasks as smooth/fast as possible.

Know [how to effectively ask questions] so as to respect other people's time and maximize chances of getting a good answer.

Often times I reach out to authors of certain libraries directly, sponsor them for their work and ask for help on my issue. GitHub sponsors are great for bringing attention to certain issues.

5. Optimize. Document. Share solution.

Once you have your first working solution that solves the thing. You can start optimizing the solution, if you actually need the optimization!

Then document everything related to it, hopefully you also documented the process of building too. Especially why certain key decisions were made in certain parts of design/solution.

And share it! Most fun part as you can then get even more feedback. Can also start sharing early to get early feedback or help with the research part of solution seeking.

--

As far as knowing how to prioritize on what to work on. Minimizing regret is always a good mental model for choosing problems to solve. Will I still be worried about this a year from now? If so, it's probably important and worth worrying about and solving. If not, let it go and move on. Better side on [making decisions] and reversing in light of new knowledge than falling victim to fear or risk.

Notes

Staying Updated

Staying on top of things

There is a lot happening in the world every single minute. It's hard to not feel like you are constantly missing out on things.

The truth is that it's a battle you can't win as your time is limited. Thus you should focus on things that truly matter to you. [Mindfulness] is what helps me keep my focus.

Here are things I do/use to keep my self up to date on things I care about efficiently.

I use custom script to quickly save links to check later. In future I hope to use Learn Anything to handle this.

High priority links/notes are sent as messages to myself on Telegram. I also have bindings to save snapshots of my current tabs on mac into a session I can come back later to.

What I use

I try to stay in touch using these few things:

Twitter with [Tweetbot]

Twitter is my favorite social media network and it is where I share everything I am personally up to right now. I love Twitter for its ability to tailor completely what news and tweets I am actually reading. I split Tweetbot into [two columns] on mac. And I use official Twitter iOS app.

Hacker News and Lobsters

They are my two favorite news aggregators on the web. I like Lobsters for its smaller community and quite often better links and discussions.

I mostly use Hckr News and/or HN and Lobsters sorted by new. HN Front is nice too to get a full day coverage of posts. And HN Search is great too.

Reddit

My Reddit is heavily tailored to my own likes and I very often just look into some subreddits I like to see what is new.

Here is multireddit of subreddits I am subbed too. Less priority subs are put in Other list.

There is also nice list of Reddit subs. I access all these subreddits using Deanishe's Reddit worklfow.

RSS with Inoreader

I follow [many blogs]

IRC

I love using IRC via [Matrix] and hanging out in various channels of Freenode. Mostly as a way to get help with an issue that I can't solve on my own after searching for everything.

I sometimes check it out as it does contain some interesting links.

Medium

I follow few publications and writers on Medium. I then view new articles from my feed here.

Communities and forums I frequent

I spend a lot of my time on LA Discord server to discuss LA development. As well as macOS/iOS automation Telegram group.

Aside from that I like visiting and at times contributing to these forums:

As well as a few other Slack communities like:

And these Discord servers:

Publications

Other

Notes

Guides