Top 12 Things That Destroy Developer Productivity – Hacker Noon

via Top 12 Things That Destroy Developer Productivity – Hacker Noon

 The only difference between a meeting and an interruption is that a meeting is a planned interruption, which makes it even worse. Developers can’t progress on a task if they know that they will have an interruption while working on it. So if they have a meeting in one or two hours, they will not be able to progress on anything, as most engineering tasks take more time.

Things You Should Never Do, Part I – Joel on Software

via Things You Should Never Do, Part I – Joel on Software

Things You Should Never Do, Part I

Netscape 6.0 is finally going into its first public beta. There never was a version 5.0. The last major release, version 4.0, was released almost three years ago. Three years is an awfully long time in the Internet world. During this time, Netscape sat by, helplessly, as their market share plummeted.

Debugging the Ballerina Compiler

This article describes how to debug the Ballerina compiler using IntelliJ Idea. We are talking about debugging the compiler itself. Not debugging your Ballerina application.

You might find this useful if you want to understand the internals of how the compiler works.

First, clone the Ballerina repository.

git clone --recursive https://github.com/ballerinalang/ballerina
git submodule update --init 

Then, open the project from IntelliJ Idea. You can do this by opening the root level pom file as a project.

Now build the project with maven.

mvn idea:idea 
mvn clean install

This should create the ballerina executable at distribution/zip/ballerina/target/ballerina–SNAPSHOT.zip

We need to use the ballerina compiler in the above SNAPSHOT folder when doing our debugging. Unzip it to a convenient location. (I used /Library/Ballerina)

Now comes the fun part.

Run ballerina in remote debug mode with the following command. (Use the one just built in the above step!. The point is to make sure the code open in the IDEA exactly matches the executable it’s going to debug)

$ BAL_JAVA_DEBUG=5005 /Library/Ballerina/ballerina-0.982.1-SNAPSHOT/bin/ballerina run main.bal 
Please start the remote debugging client to continue...
Listening for transport dt_socket at address: 5005

It is waiting for the remote debugger to connect. In that case, we have to fire up the debugger from IntelliJ IDEA.

Set up the breakpoints as required, and then press the debug button. The debugger will connect to the executable and hit the breakpoints during execution.

Happy debugging!