Christian Heilmann

Author Archive

Giving your app a temporary public URL with VS Code port forwarding

Monday, March 18th, 2024

port forwarding in VS code's terminal

VS Code now has port forwarding. If you want to share what you are working on with the world, open folder in terminal, run your server and forward the port. Set it to public and Bob’s your uncle!

This is great for some testing and showing people what you do, but of course should not be used as a hosting alternative. After all, you do make your computer web accessible that way, and you got to be 100% sure your app is safe.

Dev Digest 107 – and the OSScar goes to…

Monday, March 18th, 2024

Last Friday, I released the 107th edition of WeAreDevelopers DevDigest. It celebrated the 35th birthday of the World Wide Web, we had a video of me interviewing the founders of Daytona about going open source, we covered the news around Devin, the first AI software engineer and went to space in a Yugo. All strapped in? Let’s go.

No matter what language you build your web app in - HTML will always be there.

Daytona goes open source

Daytona is now open source and has been trending on GitHub for a few days. But what is it? We talked to CEO Ivan Burazin and CTO Vedran Jukic. Check it out.

Happy 35th birthay, World Wide Web!

Ah, 35 years of World Wide Web. I remember when it was quite a task to get connected. Do you?

But when that cacophony ended, we got access to a library of wonders, mostly text with some slow loading images, but it was something special. And by now, the web is something we take for granted, and do not quite give it the respect it deserves. As the W3C puts it in the birthday blog post : from humble beginnings, the web is now central to the lives of billions.

Of course, Sir Tim Berners-Lee also had quite a few things to say “in his open letter marking the web’s 35th birthday”https://webfoundation.org/2024/03/marking-the-webs-35th-birthday-an-open-letter/ .

There are two clear, connected issues to address. The first is the extent of power concentration, which contradicts the decentralised spirit I originally envisioned. This has segmented the web, with a fight to keep users hooked on one platform to optimise profit through the passive observation of content. This exploitative business model is particularly grave in this year of elections that could unravel political turmoil. Compounding this issue is the second, the personal data market that has exploited people’s time and data with the creation of deep profiles that allow for targeted advertising and ultimately control over the information people are fed.

It’s true, the open web is very much under attack and it is up to us to fight for it.

Brian Kardell also points out that not all is clear and safe for the future of the web and has some interesting points as to how we can fund the web ecosystem .

So the web is 35 and that means it might feel some backend pains and isn’t as springy as it used to be. But I for one will never give up on it as it was instrumental to my career. I started working as a radio newscaster and journalist and once I had access to this new media, I was all in. I hope you are, too.

We need to talk about Devin…

Cognition made a huge splash by releasing Devin , the first “AI software engineer”.

The announcement sounds straight out of science fiction movies and everyone and their dog had an immediate opinion about the product. Andrew Gao went deep in a Twitter thread and kicked its tyres thoroughly.

My personal opinion: neat, and let’s see how it fares in day to day deliveries. The concept of being a software engineer is a complex one and most of what Devin does is a thing that bored me about current engineering practices: using already existing code and putting it together to release it with other products and services made up from code I “don’t need to understand”. We automated and optimised our processes and re-use more than we create, so it isn’t quite surprising that this task could be done by a product, as it is predictable and follows strict processes. Now, debugging issues, finding performance problems, tweaking UX until it works for every user out there, these are very much different things. But do we even cherish them any longer?

Is frontend even valued any longer?

Josh Collinsworth is lamenting the quiet, pervasive devaluation of frontend and it makes you wonder if automating front-end engineering isn’t already a thing . Then again, Nicole Tietz argues that the most important goal in software is understandability and not getting to the result as quickly as possible.

Google made Interaction to Next Paint an official Core Web Vital which replaces some other metrics and here’s what it is and why you should care . Google is doing a hell of a job trying to teach developers to keep their products fast and use search engine ranking as the carrot. The question I have though if that is still such a huge incentive, considering that 90% of search engine results are actually ads and not indexed web sites. Same for Bing and the Edge team – I really worry about web search, do you?

Git things

Linux 6.9 will be the first Git repo with ten million objects and yet Facebook doesn’t use Git . Over my career I used almost every version control system there is. CVS, SVN, ClearCase, StarTeam, Microsoft Visual Source Safe, Bazaar, Mercurial. And the latter is what Facebook uses, because, to them, the Mercurial team appeared more open to outside contributions than Git was. I love Git, but I often wonder if it had had the same meteoric rise if GitHub didn’t exist.

Code and tools

One of the challenges in the CODE100 competition in Amsterdam was a ᓚᘏᗢ pics challenge.
Here is the README and the dataset . Could you have done it? The challengers didn’t struggle as much with this one as the first one, which was all about string manipulation.

Other news in code were that the excellent Eloquent JavaScript book has a new, free edition! I really enjoyed this book as it takes the language serious.

Eric Lawrence from Fiddler fame worked on Chrome, IE(?) and Microsoft Edge and he claims that browser extensions are powerful and potentially dangerous) . I agree. There is no doubt that browsers became as good as they are now by offering extensibility. Thus the browser makers could learn what people needed and create native solutions. Having worked on many browsers myself, my problem was that people still kept using these extensions when the browser offered the same functionality. Any extension can slow down the browser, make your surfing experience worse and spy on you. The latter is the worst problem as oftentimes you find extensions that are great and created by well-meaning developers who get bored with maintaining them soon and sell them to companies who add all kind of nasties. Good news is that there is an extension called Under New Management which informs you when the ones you have installed changed owners.

All PDF conversion tools in one place

PDFs are not going anywhere soon, despite not being an open web standard. If you want tools to do all kind of things to PDFs without buying and installing Acrobat, there is I ❤️ PDF which has lots of PDF tools in one place.

Can you name all the parts of a URL? You can rehearse using url-parts .

Don’t you hate it when your React app doesn’t react that swiftly? Million Lint identifies slow React code and provide suggestions to fix it.

More videos

We asked Jenny from Boss Three Quick Questions (2m18s)

That’s Jenny from Boss, the company, not your average Jenny from the block.

And in the work world…

In the work world, I added an introvert’s guide to visibility , a reminder that you are not a weak developer if you don’t show off , an investigation into OpenAI’s racial bias in CV scanning , some hard and soft skills for developers coding in the age of AI and an insight that context-switching is the worst productivity killer in the engineering industry.

I especially liked the last bit as it validates my work on the Microsoft Edge for VS Code extension) – no need to jump in between browser and editor all the time.

Procrastination corner

Last but not least, here are some resources to waste a bit of time on.

Until next Friday in your inbox or here with a more in-detail post.

Posted in General | Comments Off on Dev Digest 107 – and the OSScar goes to…

Kirby apps and regressive enhancements

Wednesday, March 6th, 2024

Kirby vomiting lots of app icons

ChatGPT announced that it now has a killer new feature: it can read out results in several synthesised voices. This means you can speak your prompt and the computer answers. We’ve reached Star Trek TNG levels of human-computer interaction. All praise be AI and the large corporations that make it happen!

Except, when I read the announcement, my immediate reaction was “so what?”. Generated voices have been a thing since the 80s and I remember SAM / Reciter being fun for, well, hours at most. Check it in all its glory in this JavaScript port or on YouTube.

MacOS even has generated voices in the terminal.

Speech is slow…

Just a few years ago speech was announced as the de-facto standard for human-mobile interaction. Siri, Alexa, Bixby, Cortana, they all came to make our lives easier and more “human”. And we all used them for a while, but soon discarded them as speaking and listening seems great, but has one big drawback: it is synchronous and fraught with communication errors.

It is frustrating to not be understood by people but even more hurtful to have a computer tell you it doesn’t know what you are on about.

Online reading – as in skimming – through a wrong response feels much less annoying than a synthesised voice spouting nonsense and you having to wait for it to finish. Maybe it is me having lived in England for too long, but I feel even weird interrupting a virtual person.

But OK, maybe this is a generational issue and people do want to talk and listen to their computers. Fair enough, but the ChatGPT announcement irked me in another way: why would I need to have a synthesised voice as part of the app when these services already exist in the operating system?

Speech synthesis is an accessibility feature

Every OS comes with voice recognition and voice synthesis as part of its accessibility stack. People who can’t use a mouse, a keyboard or can’t see the screen are dependent on these to interact with the computer. And these solutions have been tested, improved over decades and are available for all users – for free.

MacOS Voice Settings

If you, for example see this post in Microsoft Edge, you can choose `Tools` -> `Read aloud` and get the page read out to you. You can choose from Dozens of different voices catered to different languages and you can change the speed of the voice to your needs.

What did I have to do to give you this feature? Nothing. Well, I needed to do one thing: publish this text as HTML and that was easy enough.

Kirby apps – suck in features already available and deliver a worse experience

And this is what my real problem is with this “killer feature” announcement: instead of integrating the app into an already customised environment, it “innovates” by offering the feature in-app. This feels like a massive step backwards as you duplicate functionality.

And it validates something I’ve been complaining about ever since the concept of “App Stores” came up: this isn’t about user convenience, but about controlling the whole experience and keeping people in your app. It’s “time spent in app” KPIs over and over again.

Speech recognition and speech synthesis is something we already have on the platform level. An app running on the platform should integrate with these instead of competing. As a user, I have spent a lot of time setting up my environment to fit my needs. And I spent time and money to install and buy solutions I like to use for various tasks. Apps should recognise my efforts to cater the experience to my wants and needs and not offer me a lesser experience and sell it as innovation.

Of course, there is another thing at play here: the “not invented here” or “I can do that” attitude of developers. This is the same thing that makes people create and add dark/light theme switches to their web sites right now that aren’t accessible instead of using a simple media query to load the correct CSS according to the setting of the operating system. It reminds me of the dark days when Internet Explorer didn’t resize pixel based fonts and everybody added “font resizing widgets” to their sites, adding to the already full-up landfill of dead code on the web.

I love the idea of releasing content and functionality that users can cater to their needs and likes. I also like to give a basic experience to everyone and include more functionality when and if it is possible. This is called progressive enhancement and it has been my guiding star ever since I started coding for the web. It’s fun to let go and let the platform help me build things that are damn hard to do right. So why not allow it to do that?

Apple vs. PWAs – Go act now and help avoid this disaster…

Wednesday, February 28th, 2024

Apple wants to disallow Web Apps on iOS to be added to the home screen, run full screen and use the APIs necessary to create a great app. And to make things worse, only in Europe. We need to stop this from happening.

The European Union is enforcing its Digital Markets Act and Apple aren’t happy about it.

This should have been a great thing – more browser choice on iOS and distribution via URL. But instead it means you can’t publish full feature Web Apps on iOS – you stay within the browser and it’s limits.

The Open Web Advocacy group has all the details what that means for developers, but, even more importantly, they ask EU companies and developers to give them information by the 9th of March to show to Apple and the EU commission to prevent this.

They also have an open letter to Tim Cook for you to sign.

So fill out this survey if you want to stay a first class Apple developer although you are in the EU.

I met with Bruce Lawson of the OWA and Web App expert Ben Francis to discuss this in a special “Coffee with developers”. Check it out on YouTube.

Here’s some more info about this:

How does a changed market affect Developer Relations?

Wednesday, February 21st, 2024

Today, 21/02/2024, I will be opening a live event called Developer Program Leaders: Main Challenges in Developer Relations. Here’s the writeup of what I will be covering in 10 minutes:

What is Developer Advocacy?

According to the The Developer Advocacy Handbook written in 2009, here’s what a Developer Evangelist/Advocate does:

A developer evangelist is a spokesperson, mediator and translator between a company and its technical staff. Every day millions of dollars are wasted in companies because non-tech people and tech people either don’t communicate at all or completely miss each other’s points.

In other words: developer relations are as much an internal job in your company as it is an external role, being a contact person and representing your company.

Slide explaining this topic

Developer Advocacy internal tasks

The main tasks of a developer advocate inside your company are:

  • Optimise product docs to outside needs – find out what’s missing and write it/record videos/write demos.
  • Collect team questions and ideas – what do your developers need? What are they missing out on?
  • Find team frustrations and communicate them to the company – how can you convince management to improve processes and infrastructure to make the life of developers easier?
  • Coach and mentor team members to be a voice for the company – your job is to empower developers to speak on their behalf, not be on stage instead of them.
  • Find ways to keep the team excited about the product and working here – people should be able to concentrate on their work, not feel like they are missing out.

Developer Advocacy external tasks

This is the more common part of the role as it is much more visible. It’s also the dangerous one as it could mean you drift into marketing/sales territory and away from the people you should represent. In any case, the main tasks are:

  • Create product demand – explain your products in a technical manner, give access to sources and additional functionality to get developers to influence others to use your products.
  • Find developer needs – what do developers expect of your company? Documentation? Beta access? Open source access? Free developer accounts?
  • Explain product to various audiences – translate according to needs and wants.
  • Analyse competition – what’s brewing and how can it affect your company?
  • Find inspirational ideas – share great stuff with your company and your developers.
  • Find new talent for the company – getting people through the door is time consuming and expensive. A personal approach can avoid that.
  • Enable outside contribution and build communities – get people to not only use your products but become part of it.

What is in it for the company?

Slide explaining this topic

Here comes the big one. Developer Relations always has to find reasons to validate its existence in a company and – when done badly – can feel like a “boutique department” that doesn’t really bring much to the table. The benefits of having good Developer Relations people are tangible, though:

Internally, it is about:

  • Talent retention – developers who feel listened to, not miss out on market information and feel like they work on a great product stay in the company.
  • More maintainable products due to great documentation – by discovering outside needs and documenting your products not only a few people know how to maintain the product. Developers hardly ever have time to document what they do. Developer Advocates can do that for them with an outside view, which always results in better docs.
  • Market-fit product creation due to outside needs – by having a handle on what’s happening in the market, what excites developers and what the competition is up to you create better products. This should be backed up with user studies, too, but we all know that there’s never budget for that.
  • Less knowledge attrition due to sharing of outside trends and products – employees don’t hyper focus on the current state of affairs but keep learning when there’s a good Developer Advocacy in place. This eases tension and avoids the the “Am I falling behind by working here” feeling. It also allows the company to embrace new tech faster as someone is already trying it out.

Externally, things are pretty obvious:

  • Product sales – getting people to understand your product better means more people will use it.
  • Subscription sales – once established as a trustworthy technical company people are more likely to subscribe to ongoing offers.
  • Mindshare – being on the conference circuit and having an online presence as a technical source helps people remember your company, even if you are not one of the big players.
  • Already knowledgeable Applicants – people who already worked with your product need a lot less onboarding before they become effective.
  • Talent acquisition – DevRel goes where the developers are, so no need to find them in a pool of applicants and cold-call them.
  • Partner acquisition – finding similar companies and products can lead to great collaborations.

Things were good, but also weird…

Developer advocacy has become a normal thing for companies to do and when the market boomed the big players hired a lot of people to do advocacy. However, in a booming market our job as Developer Relations experts wasn’t always easy. One big topic to prove our worth to the company, talent retention, was one of the most problematic ones. When everybody is hiring and vying for the attention of tech talent, young and independent developers used “job jumping” as a way to get more salary and higher positions. When you work in larger companies, this becomes rampant. In Microsoft, we had a hard time keeping talent in the company as Meta and others, literally round the corner, offered much higher salaries. We also had people joining to have the name on the CV as a rite of passage into “cooler” companies. Sometimes the process was so broken that the saying was that in order to get promoted, the best way is to leave the company and apply in a different position.

Product/Subscription sales was another tricky subject in a world where people want everything free. Many companies use this as a business model – burn VC money to get known and then start billing people. That’s hard to compete with.

Lastly, the bigger you are the fewer valuable outside contributions you get. I spent a lot of energy to get Microsoft to release things as open source. I got that by promising a community to start embracing products that way and getting outside contributions to make the product better. The problem is that when you are someone the size of Microsoft or Google, people do not contribute as they expect that you have tons of developers better than them already working on the product. This isn’t the case, of course, as you also have to fight for resources internally, but it feels weird to do free work for the richest companies on the planet. As this didn’t work out, a lot of large players scaled down their developer relations efforts immensely. The dirty secret is that the biggest open source projects are maintained by a few people inside companies who are paid to do so.

Danger signs…

When all you meet at events are DevRel speakers, we don’t help our teams – Developer Advocacy is about making companies communicate better to the outside by allowing their employees to speak. Developer Relations should not be “voices for hire”. And yet, companies hired the loudest people on social media and sacked them a few months later when – oh wow – they didn’t deliver anything. Developer Relations became a role hired from the outside, not found and nurtured in the company.

A changed, humbler world…

Slide with all the benefits to the company not applicable right now crossed out

Right now, a lot of the benefits we as Developer Relations people bring to the company are not applicable. Hiring has slowed down, documentation teams are being laid off as “an AI chatbot can help users the same way” (insert eye roll here), and with not many people hiring companies are less inclined to bend over backwards to keep their developers happy.

All big tech companies we lost talent to are laying off, so there is no worry that you have to compete with them. Salaries are still much larger than elsewhere in the market, but job safety and work structure is terrible. It feels like the mass layoffs have opened the floodgates so companies take a “what can you do for us to prove your worth” stance. Talent acquisition and finding already knowledgeable developers becomes less interesting then. When I applied for jobs, I had to demand working from home and self-training to be part of my work time. Yet there is still a huge need for developers (no, AI will not replace them all), but companies focus on saving money instead of hiring. So our job as Developer Relations people is to be there to make this world work for the developers and the companies…

Interesting new focus areas…

To me, this means focusing on the “advocacy” part of Developer Advocacy. Instead of chasing the coolest, newest tech and trying to win social media, I concentrate on our jobs as a whole. Fixing the gap between job offers and CVs – why does this go wrong all the time? Bringing structure and safety to developer careers – why is there still a gap when you are principal developer and nowhere to go? Finding measurable data to define developer worth to the company (no, it’s not lines of code, Elon!). And trying to make retention and staying in a company a good thing and not a sign that you slowed down.