macOS

axel is a command-line utility, similar to curl and wget. In fact, axel can be substituted for wget for the most part, sans the additional options it provides (and vice-versa).

It can be installed on OS X through homebrew.

brew install axel

An anecdotal example seen in the screenshots below. axel downloads a 11.38 GB file at a rate of 56.46 MB/sec, compared to 27.3 MB/sec with wget. Of course, depending on numerous different factors, there may be little difference between the comparative download speeds, or even the opposite pattern.

axel download rate example

wget download rate example

It certainly does not hurt to have both tools in your toolkit! See also details of package axel on debian.org.

By default, JetBrains products (IntelliJ, WebStorm, etc) products default to a very small minimum (128 MB) and maximum (750 MB) Java Heap Space:

➜  ps aux | grep -i webstorm 
..
nick     22103  383  2.7 6838044 901056 .. /usr/lib/jvm/default/bin/java -agentlib:yjpagent-linux64=disablealloc,delay=10000,sessionname=WebStorm2016.2 -Xbootclasspath/a:/opt/webstorm-eap/bin/../lib/boot.jar -classpath /opt/webstorm-eap/bin/../lib/bootstrap.jar:/opt/webstorm-eap/bin/../lib/extensions.jar:/opt/webstorm-eap/bin/../lib/util.jar:/opt/webstorm-eap/bin/../lib/jdom.jar:/opt/webstorm-eap/bin/../lib/log4j.jar:/opt/webstorm-eap/bin/../lib/trove4j.jar:/opt/webstorm-eap/bin/../lib/jna.jar -Xms128m -Xmx750m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:MaxJavaStackTraceDepth=-1 -Dawt.useSystemAAFontSettings=lcd -Djb.vmOptionsFile=/opt/webstorm-eap/bin/webstorm64.vmoptions -XX:ErrorFile=/home/nick/java_error_in_WEBIDE_%p.log -XX:HeapDumpPath=/home/nick/java_error_in_WEBIDE.hprof -Djb.restart.code=88 -Didea.paths.selector=WebStorm2016.2 -Didea.platform.prefix=WebStorm com.intellij.idea.Main
..

Depending on the amount of memory (RAM) available on one’s machine, it may be desirable to bump up these values by simply modifying the appropriate *vmargs file. This will depend on one’s installation directory, which will vary by operating system. For me, running sudo vim /opt/webstorm-eap/bin/webstorm64.vmoptions and updating my JVM args as reflected below

-Xms8g
-Xmx24g
-XX:ReservedCodeCacheSize=1024m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:MaxJavaStackTraceDepth=-1
-Dawt.useSystemAAFontSettings=lcd

My machine has 32 GB of RAM, so much higher values were appropriate. I also bumped up the value for ReservedCodeCacheSize which has a maximum allowed value of 1024m. I will need to re-start WebStorm after making this change to the webstorm64.vmoptions file, but I should now see these parameters reflected in the running webstorm process that I can check as shown above in the initial step.

By default, a machine will be assigned two different IP addresses if connected via multiple interfaces (i.e. wireless and wired ethernet). Here is an example on a MacBookAir connected to the same router as such:

 
➜  ~ ifconfig
en0: flags=8823<UP,BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 1500
	ether 48:d7:05:bc:91:11
	nd6 options=1
	media: autoselect ()
	status: inactive
en4: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>
	ether 98:5a:eb:d3:b9:b9
	inet6 fe80::9a5a:ebff:fed3:b9b9%en4 prefixlen 64 scopeid 0x9
	inet 192.168.0.113 netmask 0xffffff00 broadcast 192.168.0.255
	nd6 options=1
	media: autoselect (1000baseT <full-duplex,flow-control,energy-efficient-ethernet>)
	status: active

To change this, open System Preferences -> Network -> Thunderbolt Ethernet, and change Configure IPv4 to Using DHCP with manual address. Enter in the current IP address for the first network interface used. Then repeat the same for that interface too, so that when DHCP re-assigns these addresses (either after connection is re-initialized, or the DHCP assignment expires, if your router is not configured to assign IP addresses permanently.

If you run the ifconfig command after applying the new configurations, you should see that the IP address assigned for both interfaces is the same.

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	ether 48:d7:05:bc:91:11
	inet6 fe80::4ad7:5ff:febc:9111%en0 prefixlen 64 scopeid 0x4
	inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
	nd6 options=1
	media: autoselect
	status: active
en4: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>
	ether 98:5a:eb:d3:b9:b9
	inet6 fe80::9a5a:ebff:fed3:b9b9%en4 prefixlen 64 scopeid 0x9
	inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
	nd6 options=1
	media: autoselect (1000baseT <full-duplex,flow-control,energy-efficient-ethernet>)
	status: active