IntelliJ IDE

How IntelliJ IDEs waste disk space

I love IntelliJ IDEs. I use Android Studio for Android, PyCharm for Python, and GoLand for Go. They are powerful. I just wish they didn’t fill my 500GB disk as if there is no tomorrow. For example, with IDE settings left over from old installations. Bash 1 2 3 4 5 6 7 8 9 10 11 12 $ du -shc ~/Library/Application\ Support/JetBrains/* | sort -h ... 264M JetBrains/PyCharm2023.2 359M JetBrains/PyCharmCE2023.2 382M JetBrains/PyCharmCE2023.3 387M JetBrains/PyCharmCE2024.1 625M JetBrains/GoLand2023.2 927M JetBrains/GoLand2024.1 938M JetBrains/GoLand2023.3 950M JetBrains/GoLand2024.2 ... 5.3G total If you check inside, it is mostly “plugins” that are consuming the disk space. It is safe to delete all the old versions of the settings unless you are planning to downgrade. ...

Android Logo

Maintaining an Android app is a lot of work

There was recent news about 47% decline in the number of apps on Google Play Store. As a hobby Android developer, who has been developing MusicSync, a Google Play Music + Podcast replacement for the last five years, I thought I would share my experience of maintaining an Android app. And why this reduction in the number of apps is not surprising to me. ...

Android Logo

Cross-language bridge error handling: JS-to-Java Example

All languages have certain semantics for dealing with error cases. C deals with them by setting error codes. Java deals with them by throwing exceptions. JavaScript deals with them by throwing exceptions as well but unlike Java, it does have any concept of checked Exceptions. The JS interpreter just stops. And this has some interesting implications in hybrid scenarios like a Webview based app. Consider a simple Android app where most of the code is in JavaScript but is making a request to Java layer. ...

Java Musings - referencing an uninitialized final variable

Java has fewer quirks compared to C++, but sometimes I do come across surprises. A code like following will fail to compile since you are trying to initialize a variable with an uninitialized variable. Java 1 2 3 4 5 6 7 8 9 public class Sample { private final String mField1; private final String mField2 = mField1 + " two"; private Sample(String field1) { mField1 = field1; } } But if instead of directly referencing mField1, you reference indirectly via a getter method code will compile, and mField2 will get null value for mField1. ...