Category Archives: ideas

You are allowed to ask beginner questions in your techie communities

When I talk with new people in the development community, I often hear that they’re afraid of asking questions in public forums. They would explain their issue to me in person. When I ask them why don’t they ask in a specialized Slack, Facebook, or Stackoverflow community, they tell me that they don’t think they’re allowed to.

The reasons they give me range from “I don’t want to bother all these experienced people,” “I should be able to figure it out on my own,” to “I don’t want to look stupid.” I’m sure they have even more fears that they’re afraid of expressing.

This attitude is quite different from mine since I’ve been asking ‘stupid‘ questions in IT communities now for the last 20 years, and it’s just part of my workday.

How I approach asking for help with developer-related technology

I first try to find specialized Slack, Discord, IRC, Reddit, or StackExchange sites.

I join these communities and just lurk to get a feeling for the kind of questions people ask. I’m primarily interested in general support channels like #help or #beginner. This allows me to figure out what’s the appropriate complexity of questions that gets answers.

There’s an additional benefit to these communities that people there will share helpful articles, YouTube videos, and other materials.

It’s ok to ask many simple questions.

Sometimes I think that asking a question that seems too simple to ask (but I don’t know to figure it out) is somehow wrong. What I’ve learned through time is that people in #help channel genuinely like to help and answer these ‘basic‘ questions. An additional benefit is that if you’re sticking around for a few months, you’ll passively learn answers to these questions, and you’ll be able to help other newcomers.

Always keep in mind – there’s almost no risk in asking a question. The worst thing that will happen is you won’t get an answer. If the question isn’t well-formed, someone will ask for clarification, and you’ll also get a new insight into how to ask better questions in this area.

Extra credit: it builds rapport within the community

Throughout the years, I’ve noticed that people who ask questions on their learning journey become part of the community. You start to recognize their nicknames and see them begin contributing to the ecosystem. They open issues in related Github projects, make code or documentation contributions, and start attending conferences.

Swyx calls this Learning in public and uses it as a fundamental stepping stone in getting mentors.

Roam to WP Spike – Lessons learned

After prototyping a way to automatically integrate Roam Research into WordPress, I concluded that it’s not the best course of action.

The issue primarily lies in Roam’s default mode of expression through outlines and nested trees. This works exceptionally well for note-taking, but it doesn’t map well to final documents or web pages.

There’s also an issue of not having an extra ‘metadata’ space on individual pages. It’s possible to use Attributes in Roam to work around this. It’s still not pretty, and you’re now left with various attributes on the top or bottom of each individual page.

Example of attributes in Roam Research

On getting the data out of Roam

My first try to read the data from API was to figure out if it’s possible using alpha JavaScript API. While it’s possible, it’s not well documented or easy to use. I decided to wait until it becomes a more supported option.

The second option was parsing JSON export of whole roam database backup. The data structure isn’t too hard to parse. It’s still a bit annoying. You need to assemble the nodes together into a document and run it through the markdown parser. The main issue I have with this approach is that data upload workflow uploads your whole personal database to your WordPress blog. That’s a potential privacy issue, and it’s something that I would like to avoid.

Another option would be to write a local application that parses Roam JSON export and uploads only pages or blocks with allowed attributes. That’s probably the path I’ll attempt if I ever return back to this project.

Maybe copy/paste is enough

The more I thought about how to work around all of these issues, the more it became clear that my main issue is not how to publish content but the fact that it needs to get written. My workflow also evolved in the last few weeks.

I used to write directly into a text editor. I now outline, write the first draft, edit, run it through Grammarly and then somehow format it for publishing. Publishing from roaming directly into WordPress makes less sense as I would lose all of these in-between steps.

What I learned

Working on this project as a spike/prototype was a good approach. I learned about the Roam Research ecosystem, WordPress Plugin authoring ecosystem and reflected on my writing and publishing process.

Writing a short summary on my blog after each coding session also provided me with a more apparent scope that helped me to focus. Reflecting on work done and collecting links that I investigated feels like a valuable artifact that I’ll probably refer to in the future.

Reflection on & review of Building a Second Brain Course

Building a Second Brain is a productivity course produced by Forte Labs. It’s focused on improving your personal knowledge management system and habits around it. It’s delivered as a 5-week cohort-based online course. I was part of Cohort 12 in May 2021.

 When I was telling my friends about it there two things that stood out the most: cohort-based and the price.

Cohort-based – part of the course is delivered through Zoom lectures and more interactive workshops. There’s also an online forum, Slack, and other opportunities to connect. It’s kind of amazing to be on a Zoom call with 600 people. There were over 1500 students enrolled and amazingly it wasn’t a problem to find opportunities to ask questions and get back a thoughtful response from the instructor and fellow students.

Cost – As Ali Abdaal mentioned in his video review it costs a stupidly large amount of money – 3000 USD in my case. Initially, this challenged most of my existing beliefs about how much value an online course provides.

I’m also happy that some of my friends stepped back and ask a more important question: does it deliver this much value and how does it do that?

My answer to that is yes – if you do the work. The value comes from a large amount of high-quality content, very clear case studies, learning opportunities, and opportunities to discuss learnings with peers and mentors.

The main essence of Building a Second Brain (BASB)

There are two main pillars of BASB: C.O.D.E. and P.A.R.A.

C.O.D.E. stands for Capture, Organize, Distill, and Express. It’s a set of tools and approaches. An example of such workflow would be how to take a highlight from your Kindle (Capture), file it in your digital knowledge management tool (Organize), summarize a few of such notes (Distill), and then use it in your next blog post (Express).

P.A.R.A. stands for Projects, Areas, Resources, and Archive. It’s an organizational structure that helps you reuse parts of your work in future projects.

While the course presents both techniques with widely popular tools it’s mostly doing it just so that you understand how to apply the concepts using your tools.

If you’d like to learn more about these concepts Tiago’s short Podcast episodes are a good start as are free articles on blog.

 Is that it? Just a course on organizational techniques?

That’s how it starts and then in the second week, it shifts into a personal development course. After it fixes the basic technology workflows of participants it starts to ask important questions: what do you want to produce and why does it matter to you?

This shift from productivity to a personal development course is where it shines. What I noticed is that it doesn’t matter how well I can plan a project if I can’t emotionally connect with it. I’ll procrastinate on it and it’s going to be a big struggle. So what BASB does with monthly and weekly reviews is that it makes sure that you work on projects that you care about.

In my case it also forced me to reflect on the kind of content I’m consuming and what am I doing with all of this information. An example of this would be listening to the content by the Microconf community and reading books about running a Software as a service website. I already know enough about the topic so I should start focusing on execution and less on studying. This is also true for any conference videos, podcasts, and blog articles.

 What they could do better

I wish the initial part of the course and mentor groups would be less focused on the technology. I think the course is teaching something greater and constant refocusing on technology is distracting from the part of showing up and doing the important work. Mentor groups were also too focused on technology and I also missed more time slots in European Time Zone.

I was also surprised by how poor the technology choices for their platforms were. Teachable felt outdated as a teaching platform. I found Circle forum software much less developed than open-source discourse and hard to use.

Parts of the course delivery felt like they’re still in an early stage of technological development and while it’s great to see how the team builds in public it was also a bit disappointing at times. Probably because I have experience with building similar technology and I know what’s possible. At no point, it prevented me from fully participating in the course and learning. I just know it can be done better.

 What I liked

The community of students was amazing and they’ve helped me get over my struggles with excellent answers.

Just a ton of content that allowed me to really deep dive into parts of course where I felt that I needed further information. It was pure productivity geeking out of heaven.

I have lifetime access to all future cohorts and I’m looking forward to the fall one. I’m sure I’ll be able to further improve my processes so I can do even more work that matters to me.

 Was it worth it and would I recommend it?

For me, it was absolutely worth it and I’d mostly recommend it to others too. I’d say there are two important things to consider.

You should already be in a well-paid job. I’d say that if you make over $50k/year after taxes then it makes sense to invest about 5% of your salary to boost your personal organization and productivity skills. For students and people in lower-paying jobs, it might take too long for new systems and habits to start returning on the course investment.

You need to be able to invest time and focus during the 5 weeks of the course. There’s a lot of supporting content that you’ll want to study and think about. You’ll also want to experiment with new tools and how you organize your information and that’s hard to do if you’re in a middle of a few large projects. As it’s a cohort-based approach you’ll lose a lot of learning opportunities if you can’t participate in the scheduled activities.

Powerful thoughts that stuck with me

Capturing and consuming by itself doesn’t add any value. It’s just gorging on information making it a 3rd tier type of task. Everything else is a priority.

Consuming content is the least unique to you and with this least useful.

Define projects in a way that they will succeed or fail as soon as possible. Avoid zombie projects at all costs.

Publish the work when it is 80% ready so that you get a maximum outcome based on the effort you put in.

 Closing thoughts

Most of the time I complete a course or a workshop it feels like it will have a lasting effect on my life. Building a second brain was no different. It provided me with a paradigm shift that I needed as I start my work on new projects.

If you’re even a bit of a productivity geek you should enroll in such a course and give this part of you some attention as you reflect on your habits.

Technology and tools that we use don’t matter that much in the end. Know your why and you’ll find your how.

Islands vs. Streams as a learning model

How we learn in this digital age is broken, amazing, and weird at the same time. I see two major paradigms that are present in learning models: islands and streams.

Islands of learning are a traditional classroom approach. There’s a syllabus of reading, tasks to do, and lectures to listen to. It’s a very safe and guarded experience. Major online learning platforms such as Udemy or Coursera are bringing that model online. The other option is to learn through different streams of information. You read a chapter from a book, look at the YouTube video, do a short Skillshare course, and lurk on Instagram.

I’m trying to figure out how we can make these types of learnings more explicit to the learners. I’m also noticing that there is prestige attached to being a part of an island of learning. There’s just more status to say that you’re part of an expensive island instead of admitting that you’ve learned from many YouTube videos and blog posts.

There’s also a matter of getting good feedback loops in the process of learning. Let’s say you decide to learn about baking sourdough bread.

Islands way is to: 

  1. Read a book and try to follow instructions
  2. Go to a two-day workshop.
  3. Experiment with baking and talk to your family and a few close friends.
  4. Participate in a Facebook group for your workshop class

Streams way would be to:

  1. Find a 101 YouTube video from Tasty
  2. Read articles on the Perfect Loaf website
  3. Fail and discover “Beginner sourdough bakers” Facebook groups
  4. Post your pictures, get feedback from others, and with time get better
  5. Start posting on Instagram and get feedback from a global community of people

You only need to find the first few and you’ll organically find them by attracting people that are just a bit better than you. You’ll also start helping people that know a bit less than you.

6. Discover new sub-communities and repeat the process. Think of it as a journey and there’s no final destination.

The way I described streams is very community-driven. It requires a lot of vulnerability to consistently share failures instead of only your successes. Even with your best work you should approach it by asking how to improve it further.

I’m approaching learning from both perspectives and it’s frustrating in both cases. Islands make it hard to weave in resources from outside. Streams are often just these giants blobs of content that don’t make it easy to weave them into a coherent story and they’re hard to reference later.

Products that would help me on this learning journey

Figure out what’s the smallest and most streamable unit of content for each creative work. I’m thinking in terms of paragraphs and short video clips from longer videos. I’d like to have a way to easily assemble a learning trail of such content. Both for my reference and to be able to share it with others.

I’d like to relate these units of content to a larger community. Give a bit of context about the author and what’s the best audience for them.

Is there an inherent feedback loop that makes sharing such resources better with time? Can we develop assistive tools that will make it easier to suggest links to community-written FAQs or instructional videos?

Overall I still find that the process of collecting and curating learning is too high friction. There’s a lot of value in seeing the journey that one person took and we don’t make it easy for others to follow them. Our prevailing model is still mostly of top-down teaching and collaborative learning is still not a fundamental building block.

Google Sheets in Python with gspread

As I build more back-office web interfaces I notice that users feel most comfortable in an Excel-like interface. That’s why it’s now so common to find data being edited and exchanged Google Sheets.

This got me wondering – how do I access, manipulate and write to Sheets from Python. I like the answer that I found – a library called gspread.

Basic usage

A high-level overview of how you use it:

  1. Create a service account in Google Developer Console
  2. Share your Google Sheet to that special email address
  3. You can now access it from python with gspread and related libraries

Making it even better with Pandas

While it’s great to have low-level access in Python it’s much more convenient if I can manipulate the data inside Pandas DataFrame. That way I don’t have to think about data structures and how to correctly represent data in each cell or row.

To do this I found two libraries:

They’re both similar and you essentially just import a snippet:

For a larger project, I used gspread-pandas (just because I found it first) and it gives you quite a lot of control over how and when you update the data.

Sheets and Data Validation

Sheets allow you to define data validation checks on specific cells. You can validate against a predefined list of items or reference a range of cells. This allowed me to build an elaborate export of data from an API and provide users a way to quickly review the data and also possibly use Sheets to update the data.

To manipulate Sheets data validation from Python you can use gspread-formatting library.

Video and Slides of Talk on this topic

If you’d like to see slides from my talk on this Subject at the Python Ljubljana meetup group I’ve embedded them below.

Was this useful for you?

If this is useful to you, please leave a comment or send me an email. I’ll be happy to write a more detailed tutorials and support you.