Welcome to another edition of the WeAreDevelopers Dev Digest. This time we have am interview with Sead Ahmetovic, CEO of of WeAreDevelopers amd Scott Chacon, co-Founder of GitHub. They talk about careers, early coding days, developer communities, evangelizing git, and how AI is shaping the future of coding.
Gitting things done…
So, let’s get started with some some Git topics. Julia Evans is full of great information about it, for example talking about popular Git config options, or a deep-dive explanation on how HEAD works in Git. Always worth coming back to her blog.
Version control to me is the main step to move from an enthusiast to a professional developer. You need to get your head around it at first, but it is so much better than keeping lots of zip archives and rename folders to `_final_really_this_time_it_is_version1.0a` and the like. The big thing about Git is that it allows safe collaboration without the danger of overwriting each other’s work. And that makes us more effective.
Which is an interesting topic, as the median active developer merges 2 PRs per week and on average 48% of active developers are responsible for 80% of PRs merged since 2023. So whilst collaboration is much easier, we still wait for each other to deliver the work for us. Anyone wanting to start as a developer should try to break this cycle and start collaborating immediately. Do your own branch or fork and nobody can be annoyed at your contributions.
Working together is a big thing in general and it’s amazing how the communication part is often what breaks down. This is why many big products have a well-defined code of conduct. The W3C just adopted a new Code of Conduct which is pretty thorough and sensible to enforce. Also a good example for others.
Looking back at development learnings…
Development is nothing new, and we should be more organised by now and not afraid of change like other markets are. We have lots of experience of other people to build upon. And most is available on the internet. 50 years ago the book `The Mythical Man Month` defined the The “10x engineer and it still a mythical being to me. It’s not about one person doing everything or finding the shortcut to release things much quicker. It is about people from various backgrounds, with different perspectives and experience building things together. Lars Wirzenius wrote a wonderful article on his experiences of 40 years of programming. If performance is your thing, there is a great performance-aware programming series with lots of information about the inner workings of different processors.
The job market has become a bit better but job cuts are still at highest since dot-com crash which has people worried. I remember the crash and how the dotcom I worked for closed all its offices. My response was to work for an agency focussed on government services in the UK, which was a good time to lay low for a year.
Some things are great to be automated, like browser testing, and Playwright is an excellent tool for that. Browsercat released the Ultimate Guide to Visual Testing with Playwright and I did not know that Playwright has a code generator. You can use a web product, record all the interactions and let Playwright replay them.
Money matters
Serverless Horrors Stories”:https://serverlesshorrors.com/ is a collection of things going wrong when you go serverless. Especially bills coming in for traffic you didn’t expect. Another interesting thing is a report showing that most subscription-based apps do not make money and ads don’t seem to work either. So what can we do?
Tools in brief
tlm – an offline AI Copilot, suggesting and explaining command line code, powered by CodeLLaMa.
Capo.js helps you fix performance issues by optimising the `` order
Bartosz Ciechanowski is great at explaining complex topics with beautiful animated illustrations. He told us some time ago how bikes work, but this time things really take off with How planes fly.
GifCities The GeoCities Animated GIF Search Engine allows you to find all those wonderful GIFs that made people’s Geocities pages so much more unique. Time to let babies dance, hamsters spin and show that “under construction” sign.
That’s it! See you all next week!
Posted in General | Comments Off on Dev Digest 108 – Git off my cloud!
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.
Posted in General | Comments Off on Giving your app a temporary public URL with VS Code port forwarding
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.
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.
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.
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?
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.
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.
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.
Emojicombiner allows you to combine emoji to create new ones.
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.
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?
Posted in General | Comments Off on Kirby apps and regressive enhancements