I just wanted to put the current state of local open source language models on the record, because a few years ago I thought these would be a huge deal by now. They aren't.
Local models would be incredibly useful
I think the usecases for running LLMs locally on your phone really obvious. They can give you instructions for emergencies (e.g. changing a flat tyre). You can use them as a sounding board for thinking out load, with full confidence that the conversation will remain private. You can look something up without having access to the internet (e.g. a long flight). This isn't even considering the countless integrations that could be really useful (e.g. it could read your notes app).
Apps for running small models have gotten better
A year ago the best app for running local models on Android was MLC Chat, which was crap. Now there's Pocket Pal LLM which is way better. LLM Studio is also excellent on desktop compared to older more barebones approaches like llama.cpp
Models
Open source models that can run on powerful desktops (in my case, my MacBook) have gotten significantly better, but 999 times out of 1000 if I'm using my laptop then I have an internet connection.
So models that can run on smartphones (where I'm regularly without a good internet connection) are potentially far more useful and interesting, but the issue is that the models are just bad right now. llama-3.2-7B runs slow on my S21 Ultra (granted, kind old but very high end phone) and it's responses are just not useful whatsoever.
Stuff I need to look more into
I have a little bit more looking into this problem to do. I'm particularly interested in the Gemma model that's built into Chrome now, and I'm sure that there is better models I can run with Pocket Pal on my phone, I just need to experiment a bit more. I'm not an expert in this stuff so absolutely sure there is better ways to run better models on my phone, but I think this is a rough lay of the land in early 2025.
I first tried v0.dev when it was announced back towards the end of 2023 and I thought it was cool but it didn't seem like it added that much value on top of GPT-4.
I tried it again today (January 11th 2025) and it absolutely blew me away. It has improved faster and more noticeably than any other AI coding tool I've used in that time, like it's unsettling. I encourage you to play around with it and maybe even spend some money on it.
The implications for frontend devs are pretty obvious, but it's worth looking at how you use it for your own gains...
There's this class of very small personal tools that I find myself making every few months - a GCal datepicker, or a time tracker for work... I've had mixed results trying to make these types of tools in Claude Artifacts, but v0 can just one shot them and handle way more complex stuff. I have a feeling that this specific product will be incredibly important.
Git Hooks are simpler to change and setup, provide a much faster feedback loop (ie. for failing tests), and don't require pushing loads of commits to GitHub to test.
Resist falling into the trap of over-engineering your tiny side projects or you will never build anything.
TLDR:
I think it's possible to limit how much your software development job stresses you out is possible by learning skills that fall under "being professional".
Disclaimers:
Professionalism won't make a toxic working environment OK.
I can only write this from the perspective of a man.
Many non-work factors can impact mental health at work
Hashing out my thoughts on this topic has been incredibly helpful for me. I'd love to make this into a proper blog post but I'd like to get a bit more experience before I do that.
Oversharing personal issues at work is a bad idea
In my first few years as a software developer I was occassionally guilty of getting stressed out by work, and then treating my 1-to-1s with my manager as a sort of informal therapy session.
And I wasn't unqiue either, this is a very common theme. On /r/cscareerquestions. It's a very easy pattern to fall into when you don't have the skills to deal with work stress, but it's a bad idea.
Not bringing too much of your emotions to work is an important boundary to maintain. A lot of the time it's downstream of not letting your mental health get effected by work in the first place, but if your job is stressing you out or making you anxious, bringing those unprocessed feelings back into work creates a viscious cycle.
There is productive ways to complain about work stress to your manager, but making it too personal and every week is unproductive.
You and your manager have different incentives and goals in terms of your employments, which means oversharing can undermine your career growth. If you're constantly venting about deadlines then your manager can't trust you to handle the pressure. You won't get more responsibility because you seem like you won't be able to cope. You'll never get a reputation as someone who can be relied on when the going gets tough.
Unless your manager is in a position to fix the issue (sometimes stressful situations are just part of the job and can't be fixed immediately) then venting just strains your professional relationship.
The alternative
A better approach to constant complaining is to develop various skills that make up the quality that we call professionalism. This is how you maintain good work/life boundaries and address the issues causing work to be stressful in the first place.
Table stakes for managing work stress/anxiety/boundaries
Before you can really address stress and anxiety using professionalism you need to tick these 4 boxes:
1. Develop a strong worth ethic
This is the most important step - if you don't trust yourself to work hard then you will always, deep down, blame yourself when things go wrong. If you consistently work hard then you won't let yourself get pushed around.
2. Get some wins under your belt
Fix some bugs, help ship a small feature, use your understand of a system to save the day. The feeling of being valuable at work gives you the confidence to enforce boundaries.
3. Be serious about moving on if job's not right
Some environments are just bad for you. If you won't actually look for a new job when things get out of control then you have no leverage.
4. If you are struggling consider talking to a therapist
They can be tremendously helpful.
Vital professionalism skills to manage stress
Developing these have made busy weeks and months at work much easier for me:
1. Communicate early and often to stakeholders
For bigger riskier tickets give your manager a few brief updates as you go along. If you think you might get blocked by someone else (e.g. deployment timing issue), let them know ahead of time so you can coordinate. If you are trying to build/debug something and you're not getting anywhere, reach out to someone as soon as you run out of ideas and start flailing uselessly. Err on the side of oversharing, even if that means posting updates to entire Slack channels.
2. Have a network of people at work who can help you
3. Giving estimates
Avoid giving estimates unless pressed
Don't give into pressure to give short estimates at all costs. Short inaccurate estimates help no one and hurt everyone invovled.
Assume everything will go wrong, including things you didn't even think could go wrong.
Always give estimates as a range (e.g., "3 weeks if everything goes well, 6 weeks if things go wrong"). It sets more realistic expectations and helps you ignore the pressure to commit to an overly optimistic timeline.
As work progresses and the release date approaches, your estimate range should naturally narrow. If it doesn’t, it’s a red flag that something might be off with the project’s scope, understanding, or execution.
4. Handling deadline pressure
Deadlines are often set arbitrarily by people with little technical context, like PMs or management. The work will take as long as it takes, and it’s not your responsibility to fulfill unrealistic promises others made on your behalf.
Trust in your good work ethic—you already try your best every day.
Deadlines can and often should be adjusted as work progresses. They’re not set in stone.
Occasionally, pushing to meet a deadline can be valuable, such as ensuring increased capacity before a high-demand event like Black Friday. Know when it’s worth making the extra effort.
5. Be mindful about work life boundaries
Take your full lunch break, especially when working from home
Don't work late unless there's a very good reason so
Don't look at Slack on your phone after hours
6. Learn to say no
If you are very busy and someone who isn't your manager tries to put more work on your just tell them to ask your manager, and then ask your manager what to prioritise.
7. Cover your technical weakpoints
If a technical issue that you don't fully understand keeps happening you'll get more stressed and frustrated each time you fail to fix the issue.
A situation of conflicting git histories on protected branches arose at work. My lack of really deep understanding around how GitHub implements "rebase and merge" made this more stressful for me than it needed to be. I have since learned as much as possible about GitHub merge strategies and workflows so resolving this issue is easier if it arrises again.
Common issues like this - git, CORS, debugging, async code, auth
8. Take your annual leave wisely
Honestly try to take some annual leave as soon as possible if work gets stressful.
Always leave a day or two unbooked in the last few months of the year, and then take them around Christmas/let them rollover. Just to keep them for an emergency.
Using bank holidays and weekends to stretch out the number of days off work you have a time absolutely makes your time off more relaxing.
9. Master the art of raising concerns
Instead of explaining how impractical and stressful a deadline is to your boss in an emotional way, raise your concerns. The magic phrase is "I have concerns about (things you have concerns about)". For example. "I have concerns about meeting the deadline because we haven't accounted for the authentication integration with Google.".
Be precise about why you have concerns
If there's an existing estimate or deadline, give a new estimate range.
Provide some options - ie. leave functionality out, push deadline out, etc.
Don't bring any emotions into it, this is a normal thing that happens all the time.
Shows you're solution-oriented
Maintains your professional credibility
10. Only work on the most important task(s) each day
Final thoughts
If you don't have the skills to navigate the stressful parts of software development it can be crushing. Encourage younger coworkers and juniors to value their mental health first and teach them some of these professionalism skills.
Something that stood out to me about this article detailing the current tech job market is the comment about how it seems like some interviewers are almost trying to make you feel small.
"The entire industry just kinda accepts candidates should have negative and personally degrading interview experiences where candidates are undermined by some vague sense of social superiority from the interviewers."
I think rigorous coding interviews are fine but I have felt this exact atmosphere in an interview before. Being in a position to decline offers from these places feels so important for our self worth.
Last year during my little self-directed work phase last year I had a look into Upwork for a few days. It's not even worth looking at.
It's too much noise, too hard to break into, and too stressful. It's a numbers game but the payoff just isn't worth it.
The platform itself is pay to play and has this kind of unprofessional icky gamified feel to it. It seems like there's some work there for people who are really desperate or got started pre-COVID, but starting out in 2023 a complete waste of time. I'm sure it's only gotten worse as AI has advanced further.
Setting line lengths to 800px max yields great readability gains. This is the change that genuinely made Obsidian a useful everyday writing tool for me.
Yes, I know there is a way to do them right...they are good for detecting unintended side effects...they are for mature applications...but I just don't think they're worth it.
What are you even testing? Tests should have names describing what you're testing, snapshot tests don't.
They are flakey by design. Flakey tests are bad.
Everyone ignores them anyways so none of their benefits matter.
They waste everyone's time, over and over and over again.
Take a random selfie and put it into PimEyes...the implications are insane. Reverse face search is the single scariest publicly available tech I have ever personally encountered...and that's just what's publicly available.
Every stalker is now an expert detective. You've been tagged in every photo you've ever accidentally appear in. No matter where you go, you can be instantly identified. It's all already quietly happened.
What does it mean?
Wearable devices with cameras are a security threat to everyone and should be banned outright.
Posting pictures of your children or anyone else online means they'll probably get scraped by these creepy companies.
Keeping your mobile # and home address off the internet is vital, otherwise they could be found in ~20 seconds by a stranger taking your picture.
I think about how great Randnautica is every few months. It might be the best viral app of all time.
We're used to apps zapping our attention and taking a bit of colour out of real life. Randnautica was the exact oppposite - it gave it's users a bit of mystery, like a folklore creating machine. I hope I can make something so wonderful someday.
I've done a small bit of this over the years, but I've stopped because I don't enjoy the work. If someone was interested in doing this here are my suggestions:
Business validation/market analysis
I found that there was real demand for websites, ecommerce, email address setup, and Google Maps setup for local businesses. People actually reached out to me through word of mouth and referrals, but Facebook groups are the most effective place to look for leads. The local and even national competitors in this field are generally all pretty amateurish.
Why I didn't like the work
For starters working with clients is stressful. Getting their business means negotiating. They tend to not really see it as a collaborative thing so you end up having to pester them for even basic stuff like a few images relating to their business. And they tend to have absolutely no ability to even use a computer so they struggle with that. Feature creep is also a massive issue.
It's also just stressful to make the sites. There's almost always going to need to be some sort of graphics work involved which requires a very specific non-programmer skill and is insanely time consuming. You have to figure out what the site will look like, write the content, and continuously get feedback and iterate. It takes as many hours to make a very simple website 3 page for a small business as it does to make a reasonably ambitious coding side project. All this means that it's very difficult to get an hourly wage of a reasonable dev job
Building from scratch is a mistake
My biggest mistake was that I was trying to code the websites from scratch. It made every site a software development project instead of a "how to make this business more money" project. I would absolutely recommend dropping your ego and using Wordpress instead of something like React or 11ty. Yes you won't be able to make things as unique and perfect but no one cares. The bar for these sites is very low, and a thoughtfully made Wordpress site will be much better than most local business websites.
If you are successful a client will ask you to make a site where they can sell things or a site where they can easily write and update a blog. Building a good ecommerce application or a blogging engine in React is a monumental undertaking and you will likely fail, just use Wordpress.
Marketing thoughts
Every client wants a custom email address with Gmail - this is a service you can provide.
Provide a set of services, not just "I will build you websites". Be able to implement each service quickly.
Because a smart local biz web developer will use Wordpress they can market quick turnarounds.
Transparent pricing is underused by competitors but most sites take roughly the same amount of time.
Understand exactly how you will make your clients money.
Focus on your own site - at the very least it should have good SEO otherwise why would anyone hire you?