Initial thinking on Roam to WordPress Plugin

What I’m trying to do with this plugin is to create a digital garden that I can connect from Roam Research to WordPress.

Most of the existing solutions are using static web site generators. I’d like to avoid that because I want to have only one CMS on my site and to also maintain only one theme. There are also additional potential power features that would allow me toI can connect exported Roam pages to WordPress Taxonomies.

My current thinking is as follows:

When looking at the overall architecture design I realised that:

  • Roam’s JSON API is something that I don’t understand, it’s undocumented and hard to develop. So I’ll pass it for now.
  • Exported MD files are nice but they’re messy to automate.
  • Uploading one exported JSON file allows me keep all application logic in WordPress plugin and removes the need for any additional tools.

I’ve also found some nice prior art. There’s WP Roam Blocks that does something similar within Gutenberg.

I also appreciate blogging from David Bieber where he describes how he’s currently using Python to blog with Roam:

Next steps

  1. REST API to allow uploading of Roam’s JSON export
  2. Initial React backend upload dialog
  3. Basic jsonq parsing of uploaded JSON file

Aleš Vaupotič on conversations in IT

In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them.

Aleš Vaupotič has a wide-ranging 35+ years career in building software and hardware solutions. He’s one of the most experienced e-commerce experts in the region. Our conversation ranged from how to grow as a developer, what it’s like to be part of the sales process, and where he currently sees technological opportunities.

We had a very wide-reaching conversation and what follows is just a partial summary of things we discussed.

How do people introduce you?

I’m most known as an Application Architect. I’m most often in a role where I lead the project from the initial meeting up until the first successful deployment. By that time I’m usually embedded in a larger team and I can usually call my client a friend. 

I’m most proud that I can identify the needs of my clients and have the necessary breadth of experience to lead the implementation. It took me a lot of time to develop this skill.

I explain my job as mostly finding the opportunities in the business process where IT can help. What can we do to make everyday work easier? It’s also a multi-layered system. We need to think about our client, our client’s client, and also possible end-users. We try to figure out how we can arrange processes so that everyone benefits. I think this type of thinking and planning is what makes me an Architect.

What were some of your early projects and what have you learned from them?

In my teens, I designed a mechatronic system that measured how fast we were skiing between two points at my local hill. That’s where I first learned how to define what the project needs, the materials required and how we’re going to implement it. Of course, this being in the 80’s it required a lot of ingenuity and borrowing of hardware parts from different household electronics.

I later worked with Globtour where we developed the first regional systems for booking, tourism transfers, and billing. There I first learned how to implement business needs and regulatory requirements into such a large-scale project.

Luckily, I had a colleague who previously worked as a programmer for IBM and was trained by them in the USA. He taught me the basics of project management. For them, an IT project started with planning for how you’re going to do backups, maintenance, and ease of use. With this in mind, we developed a software framework that was serving us well for many years. We made sure that there was a robust login system, defined backup system, permission systems, and centralized logging to name a few important aspects. Even though it was written in Pascal it was not much different from today’s modern frameworks like Laravel. It allowed us to be at about 1/3 of the budget and time of competing companies at the time.

Why did you recently switch from a small consultancy to working inside a larger agency?

While I always enjoyed working solo or in small teams, I’ve recently noticed that I’ve hit a limit of what I can accomplish alone. It’s just not possible for me to get larger projects because I don’t have the necessary certificates, references, or required team size. 

While I can offer a lot of experience and specialized knowledge, that’s not enough if you want to become a larger solutions vendor. To solve this I’ve decided to join a large digital company that can fulfill all these checkboxes and provides me with new challenges to work on.

You mentioned that you’ve participated in a lot of sales meetings. How do you see your role in the sales process and what makes for a good sales pitch in IT?

I found that being good at doing sales is a very important skill to master. I am not enjoying sales, but it’s a skill you can learn by reading a book and practicing. In this regard, I see it as just like learning JavaScript or any other technical skill.

A large part of sales in IT is also being able to explain the solution in a very plain language. I find it extremely valuable to invest time in these initial stages as we explain to the client what we’re going to do. If the client understands the benefit of high-quality localization and accessibility they are more than happy to both pay for it and accept a longer development timeline. What I also often see is that people try to rush this part of the process and don’t take time to learn how their client works and what their real needs are.

Creating a high-quality business overview document creates value for everyone. It helps different people on the client’s side understand what’s going on and it also ensures that there is a good understanding of the team that will execute a plan. It’s still a very imprecise problem as we still don’t know how to properly define software projects ahead of time. 

I noticed that having the capability to quickly create high-fidelity prototypes makes a big difference in how clients understand proposed project functionality.

How are you improving the quality of your communication with your team?

I’m always questioning my assumptions and how I relay information. Especially if the results are not what I expected. There’s always an opportunity to improve as a communicator. It’s always a new challenge when you need to delegate work that you used to do yourself. Many things that were obvious to you now need to be explicitly stated.

One of the things that I’m doing to improve in this area is that I’m blogging more and creating YouTube videos. Today I realize that I won’t improve if I don’t go through the process of creating, publishing, and then learning from feedback. Despite my understanding of all this it’s still scary to get feedback.

What does a good code look like?

It’s a code that it’s simple and straightforward on its own. Something that I know I’ll still understand months later without having to think about what it does. I’m not a fan of modern Javascript that you can write in a very terse way but doesn’t make it easy to reason about it. I’d rather write a for-loop than a map function. It feels much more natural to me. My personal mission at the moment is that each project that I work on has less unnecessary code.

These days I’m also studying code flows and how the project is structured. It doesn’t have to be a language that I’m working on. I’m just trying to understand and learn from these conceptual ideas. GitHub is a great source to find such projects.

What would be your advice to more junior colleagues in the industry that are battling with all the technology changes, fear of missing out, and are starting to talk about burnout?

What I see happening with some people is that they fall into the trap of everybody can be a developer. Sure, for some time but after that, you become tired if you keep doing the same things all the time. You need to find ways to grow and to keep challenging yourself. If they can’t do it in their workplace setting they could try to find that enthusiasm in life in their personal lives.

Writing code and building technological solutions were always something that excited me. I’m also very proud of my attention to detail and that I always see opportunities for my growth as a developer. That’s why I think I don’t feel many of these challenges.

You’re also supporting the development of young people through First Lego League Adria. Can you reflect on some of the things that you learned in the process?

I’m fascinated by how creative and capable kids are, aged between 8 and 16 years. They’re also always very successful when competing on the international level and have very solid language and presentation skills.

I’m happy to see that the best local participants are getting great opportunities for further studies and personal development. I hear that US Universities and Colleges are actively trying to recruit them with good scholarships. At the same time, there’s a lack of trust in such opportunities in our environment so they mostly go unused. After working with such teams for the last 10 years I see how much potential they have and what kind of big impact they’ll be able to have in their professional work.

What technologies excite you at the moment?

Svelte makes sense for me for front-end development. It just feels natural to write. I also really like the community around it. It’s really supportive, full of great ideas, and open to discussion. I’m also contributing to the Routify project that enables routing through file structures.

Incremental Static Regeneration in modern JavaScript frameworks is definitely something I can see a lot of good use cases for.

Tailwind makes it really easy to write CSS styles in a very natural way.

I’m looking at serverless and edge computing as I feel that this is finally the true cloud that allows us to bring websites closer to end customers.

I’m also excited about WASM and that we can push computation to clients’ devices. When we connect this potential with serverless it greatly simplifies a lot of the needed backend infrastructure.

What I learned from talking with Aleš

Communication and written expression is the most fundamental part of successful IT projects. If people can’t understand each other the project will fail.

Keep tinkering with technologies and different challenges. Fundamentals are always the same and I’ll be able to build on previous knowledge.

Don’t worry too much about businesses. They come and go. People and relationships around them last much longer.

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.

Anže Tomić explains why I don’t need a Podcast

In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them.

Anže Tomič is most known for his podcasts Apparatus pogovori and Glave. He makes technology and media approachable to people that wouldn’t otherwise care.

I wanted to talk to Anže to see if he has any advice for me on how to approach interviews and all the media and brand myths around that. I expected basic tips on how to get started but instead got deep insights on business models and economics of the creator-led industry.

How do people introduce you?

Tech journalist and podcaster. I’m always kind of amazed that they need to add the podcaster part as if it’s something special.

Why podcasts?

Short version: I listened to a lot of them and I wanted to make them. The first podcast that I listened to was not a podcast but a radio show on XFM – Ricky Gervais Show that was airing every Saturday in London and it lasted about 2 hours. Someone actually recorded the show, cut out all the music so that it’s just the dialogue between hosts, and uploaded it to the internet. It’s at least 90 hours of content and I listened to this at least 8 times.

At the time I worked at Radio Študent and started noticing the trend of the radio moving online and decided that I also want to do this.

Should this conversation be a podcast and should I start a podcast instead of writing down a summary?

That’s a good question. I don’t think it really matters as it’s more about providing information. Pick a medium that you’re more comfortable in. As far as I know you, it seems that you prefer writing. You’re the one that’s asking questions and you need to be comfortable so that you can create your work. Personally, I can convey more when I’m working with audio compared to text. I want to underline the personal part. Since you asked “if you should” I think the answer is that it depends, yo! (Anže wanted to make sure that the last part made it to the final edit).

Is there anything else I should think about if I’m deciding between text or podcasts?

Not really. I used to advise people to do podcasts because they were new. But now they’re mainstream and it’s just like advising someone to go start a blog. I’m happy that it became so popular as a medium but it’s not special on its own anymore.

I describe it as like going to the cinema. You don’t go watch the movie Avengers, you just go watch Avengers. There’s no movie anymore. I’m also seeing this with the podcast shows. People now listen to Odbita do bita they don’t listen to podcast Odbita do bita. There are many of these kinds of shows now and people know how to interact with them.

There are two additional considerations. Time is definitely a factor. Both text and audio require editing time. With audio, you also need to make sure that the person that you’re interviewing sounds good and can talk coherently. With text, it’s much easier to make them look good.

Does that mean that you are a brand now?

No. I think it’s tied to personality and personal brands. It’s now much easier for someone to move between networks. It used to be that a TV or a radio show was more than just the host. I don’t believe that this is true anymore. That’s why you see so many shows these days that are named after the hosts.

It seems that I’m on a path to establish my own personal brand. Do you have any advice for me?

Keep doing what you’re doing. Talk to as many people as you can. That’s the easiest hack to grow your presence. That’s how you ensure that people will know about you since every person that you talk to will bring their people to you. It’s “the easiest” that still requires a lot of work.

Everyone that you talk to has their own audience. They will share your interview with them. People will see you and the more often you do it the more people see you. Rinse and repeat. I really think that this is a good way to do this.

It’s the same model that many international podcasters were following. They started with interviews and only after they’ve built a following they started doing other types of shows.

I’ve made 208 podcast interviews throughout the years. This allowed me to build a really strong network and personal following. When I decided to pause my podcast for now I felt comfortable that I could restart it again later.

One more tip is to make sure that you ask people to share. There’s no shame in trying to cut through the noise of social media by explicitly asking your guests to share and tag you.

You should also decide if you’re doing this as a hobby or as a job. If you want to make this part of your income you should make sure to ask your audience to support you as soon as possible. Running sponsorship and ads early on is also another way to approach this.

Do you think all digital creators should have their own Patreon-like account in 2021?

Yes, definitely. Creating quality content takes time and it’s real work. I think it’s perfectly valid to ask your audience to support you if they like what you are doing. Initially, it feels a bit strange since a lot of our existing economy is supported by Venture Capital and Big Tech. But when you think about it’s also a very simple model. Ask people to support what they like by directly paying for it so that you can continue doing your work. Modern online tools make it really easy to do that.

With the Patreon model, how do you ensure that you stay true to the work that you want to keep doing? How do you not sell out so that you can get a bigger audience?

Is having a large audience really your goal? You don’t need to underestimate niche audiences and what they value. Since you are publishing in English you have access to many more niches. When you’re publishing in large languages you can have very niche topics like 12th Century Classical Composers and you can still be successful. 

You can think about it in terms of Kevin Kelly’s 1000 true fans. Your business model is to build a core audience of your true fans that support your work so you can create it full time. Unless you decide that you want to have a huge audience because being famous and rich is your goal. Then you’ll probably need to create mainstream content.

Do you see any point in creating content in the Slovenian language? Will your next podcast show be in English?

The English language gives you access to more people and there is also much more competition. It becomes more important when you’re creating niche content. When I look at what my friends from the USA are doing I see that it’s quite possible to make a living doing 5 very niche shows. They can do it because they have enough potential English-speaking audience.

I think you can still accomplish things when producing content in Slovenian and I think I’ll keep my work in Slovenian.

Do you think having a strong Eastern European accent is a problem when creating content in English?

I think it’s a huge advantage. It’s what differentiates you from the competition and makes you unique. If you have a good vocabulary and can speak it’s better if you don’t try to hide your accent. I can confirm this based on my personal experience.

Is there any other advice that you often give to new creators?

You need to persevere and grow. When you read or listen to your first work after two years you need to be ashamed of it. If you’re happy with it you haven’t accomplished anything. In the beginning, your work will suck. With time you’ll get feedback and you’ll be able to adjust it so it becomes better. We see all these successful people and they seem so polished. What we don’t see is all the work that came before. 

Who are your heroes that you’re learning from?

Gervais, Merchant, and Pilkington in terms of spoken radio.

John Siracusa, and Jason Snell in terms of quality tech podcasts.

I’m mostly learning by following the work of people that I admire. Sometimes they’ll also explain their processes and thinking.

What I learned from talking with Anže

  • There’s no expectation of working for free in niche verticals. It’s completely acceptable to create Patreons and ask people to support your work.
  • I need to stop thinking in terms of “open source” economics where everyone expects everything for free. I can (and should!) create paid products and different consulting offers.
  • Embracing the differences is the new black. Provide value, entertain and lean into what makes you different from everyone else.

Spruce Sprouts Sourdough Bread

Inspired by the different things that Alenka is cooking with Spruce Sprouts I decided to try to see if it would work in bread. Initial Internet search didn’t show any prior art in this area. There are some people that bake pastries. Most of the uses for spruce sprouts I found was to mix it with sugar to make syrups or to just drop it into schnapps.

I’m using basic sourdough technique from Foodgeek.dk and he describes it much better than I can. I used 20g of fresh sprouts for 500g of flour at 75% hydration.

So, how was it? The taste was interesting. Some of select quotes from taste testers:

It’s like eating Car’s Air Freshener

Oh, that’s what my Christmas tree would taste like

Exotic

Overall experience changes with time. Directly from oven it tasted woody with resin texture. Aroma itself was overpowering to the point that it was too much for me. After it cooled down it become much more subtle. I tried adding honey on top of it and it made for okish bread.

One interesting side effect of this bread was that it has a very long after taste. It’s probably because of little bits of resin that will keep the taste for at least half an hour.

What I learned

It was fun to try to create something new like that. It’s also my first practical project since starting to explore more foraging from the nature. I don’t think I’ll bake this again in such a format. I want to try it next time with a syrup as a base.