DailyDogo 226 🐶
DailyDogo 225 🐶
IDE Troubles: PHPStorm and VS Code
I work as a programmer for my day job. Right now I am working on two php projects. Coming from Sublime Text but having had the need for more IDE features I came to love Visual Studio Code and made it my home. VS Code is a great editor for PHP development, especially if you use the Intelephense extension. However, the bigger the project, the more it becomes apparent, that the performance of the language server is not that great.
I lived with this for many months now. Yesterday I started working on a new issue and thought to myself: “All of my dev team members use Jetbrains PHPStorm, I should give it a try.”. I had used Jetbrains Intelij Idea for a brief moment a while back and only remembered being fairly unimpressed, but not exactly why I felt that way. Having now tried getting into their PHP IDE product, I have to say my impression has not really changed and now I also remember why.
Although the code intelligence performance is clearly better, it is the small stuff that gets me. The impetus for this post for example was that you can’t use standard shell shortcuts with the integrated terminal: Control + R
(backwards history search) being one of my most often used commands.
I appreciated that they offer a keymap for people coming from Code to PHPStorm and as far as I can tell, the commands in it work. But customizing an IDE is more than just having the same default shortcuts for common tasks available in the new app. I have a bunch of my own shortcuts in code that use the pattern CMD + H <Key>
(press CMD + H
and then <Key>
). I use CMD + H
, because my last name start with H, so it was (and is) easier to remember. It just so happens that CMD + H
is also a system wide shortcut for hiding an application. So when I tried to set up a frequently used shortcut to reveal the currently opened file in the sidebar navigation, CMD + H S
the PHPStorm app was just hidden. In other words it did not “shadow” or override system shortcuts when asked. This feels even more arbitrary if we take those two things together: On the one hand standard shortcuts of the shell running inside the integrated terminal are shadowed per default - and this can also not be disabled - and on the other hand wanting to shadow a system wide shortcut like CMD + H
is not possible without remapping the shortcut within the OS. I feel like the IDE is not really playing along, but instead makes me jump through hoops.
These are only two compounding cuts of a thousand that make PHPStorm hard to love in my opinion. I have an especially hard time understanding the design decisions to remove long standing functionality from a shell by shadowing standard shortcuts. It’s just a bad idea. It does explain why my colleagues never use the integrated terminal, but have an extra shell window open to the side, to run terminal commands.
All in all I am very unimpressed by PHPStorm, but also worried: If the performance of Intelephense stays as bad much longer, I might have to look at other options. I know that Netbeans and Eclipse also have PHP features, I just don’t know anyone using, let alone loving these apps for PHP development…
DailyDogo 224 🐶
DailyDogo 223 🐶
DailyDogo 222 🐶
DailyDogo 221 🐶
Fascinating: This website shows the most recently bought books on book depository - an online book store - on a world map.
DailyDogo 220 🐶
DailyDogo 219 🐶
DailyDogo 218 🐶
DailyDogo 217 🐶
DailyDogo 216 🐶
Thoughts on the WWDC Keynote in Light of My Recently Bought iPad Pro and M1 MacBook Air
I recently bought new hardware for my personal use: An M1 MacBook Air and an 11” iPad Pro. My thoughts after the keynote:
- I couldn’t be more excited about the new iPadOS features
- I am slightly sad that the two new MacBook models - the new M2 MacBook Air and the new 13-inch MacBook Pro - would have been options for my needs and budget
Since the iPad Pro was supposed to be my main machine - not least because I wanted to see if that is possible and fun - I’m even more excited to double down on that. Yeah, I just bought the older MacBook Air, but I bought it because I assume that the light coding I’m doing in my free time and the heavier reading/writing/note taking/processing workflow I have, will lead me to use a machine that can run a less walled in OS with multitasking capabilities. We’ll see.
I wonder if I would have picked a beefier M2 Air over my two machine solution, but I’m also happy I got both devices. We live in a time of exciting technology in which we can pick the right digital tool for the job at hand and I’m happy that I can experience this exciting future.
In any case: My new hardware - I’m still waiting on my new Air - is/is going to be an amazing upgrade to my technological status quo. My personal laptop has been a 13-inch Mac Pro from 2013. And although that computer is still working (I just upgraded it to Monterey this morning!), it was time to upgrade. I’m really looking forward to leaving the sluggish, syrupy Mac experience behind.
DailyDogo 215 🐶
DailyDogo 214 🐶
DailyDogo 213 🐶
Setting up code-server again, because the iPad pro is my main personal machine. Last time it took me about a weekend to do so. It seems this time it will too…
DailyDogo 212 🐶
How I deal with notifications
I think notifications are a rich vein for thinking about my setup, because it requires me to be clear about my intentions as regards to what I want to be notified about and where (and how and when).
Analyzing The Problem Space
A notification is a way to let me know that something has happened, will happen, is available. It is an event that can interact with me and potentially makes me do things. It’s a trigger (or cue).
Notifications can be desirable, overwhelming, unhelpful or outright spam. They are not inherently good or bad, but they are not a neutral thing in the world either: They make a difference.
Judging the usefulness of a notification is a involved process. The complexity of getting notifications right increases when realizing that you have to set them up beforehand, which means you have to expect the future.
1. What do you not want to miss? - Not wanting to miss something doesn’t mean you need to know about it immediately.
Missing something means that a change of state in my world passed me by. Notification, on or not: If I missed it, the knowledge of having missed it implies that I now know that my world has changed (it) and I noticed afterwards. For things I don’t want to miss, I am interested in the changed state of affairs. But this doesn’t mean that I need to know about it now.
2. Is the change of state in itself important? - A change of the status quo doesn’t necessarily mean the info is going to be relevant forever (or relevant temporarily).
As compared to the things I don’t want to miss, here I’m more interested in the change of state: Something became available. A window of obligation/opportunity opened (or is about to close). Something was like this now it’s like that. Depending on the change, I might be interested in it forever or only for a limited period. In either case, time sensitivity itself is not the same as a change of state. It’s another property that alters this one.
3. How time sensitive is it? - Time sensitivity is not the same as the importance of the change occurring or the importance of the new status quo.
Time sensitivity doesn’t mean any change of state needs to be known now. Sometimes it needs to be known depending on a location or on a certain date and time. “Now” is one, but not the only possibility. The reasons for a notification being time sensitive can be manifold in practice. Abstractly speaking, it is a question of priority and urgency - which are also not the same thing.
Whilst priority is trying to rank items by importance (which itself is a relative measure of impactfulness of the thing in question) to my world, urgency re-ranks those items according to currently open windows of opportunity and/or obligation.
Not only is it hard to keep all these distinctions in mind when I’m trying to predict my future, I’m also prone to getting it wrong, because my world is not made of numbers. Parts of my world aren’t measurable, some parts are not even comparable. Still other parts might not even be identifiable as parts!
And if this wasn’t making it difficult enough, this is surely not even close to a complete description of the problem space and none of this is available to me objectively, either. So what to do?
Keeping It Simple
Understand the notification system of your setup
I’m an Apple user and have an iPhone, a work Mac, a personal Mac and an iPad. For me, it was important to understand that while focus modes can be shared across devices, the per-app notification settings are not.
Which makes sense, since not every app is available, let alone installed on every device.
Some notification specific settings are adjusted within the app itself, while others are adjusted through the settings of the os.
Start with no notifications, badges, anything
By disabling all notifications (individually), I am making sure that noise doesn’t even reach me. The default answer to any new app asking for permission to push notifications to me is “No”.
Same goes for badges, space on my home screen, or an app even getting installed. By radically reducing the apps that I have to manage, I reduce the problem a lot, by following this principled approach.
Try the least distracting, simple thing first
I knew some apps needed some way to inform me. And although my analysis above was important to get a feel for the difficulty of the problem, an 80% solution for 20% of effort may be good enough in practice. So I try that first for any app that actually really needs to inform me.
The harder part of this heuristic is figuring out what the least distracting thing is. I find a badge count of the right measure to be pretty good. But sometimes, actual notifications on one or more devices might be the obvious choice.
If I don’t act on it, I remove it
If something is only noise to me, it’s not worth getting informed about. Remove, simplify.
Manage the baseline first
Before even getting into things like focus modes, I make sure my baseline of notifications has a high average of usefulness. This is hard to measure. A good quick test is maybe if notification center is a useful place to me, or not. I tinker with the baseline before I’m even introducing new focus modes (which add extra complexity).
Use focus modes sparingly
I currently have the following focus modes:
-
“Sleep” - for the night
-
“Work” - for working
-
“Do Not Disturb” - for when I need to focus or can not be disturbed (except in extraordinary circumstances).
DailyDogo 211 🐶
DailyDogo 210 🐶
DailyDogo 209 🐶
DailyDogo 208 🐶
DailyDogo 207 🐶