Skip to main content

Building Golang CGO with Bazel

Bazel is a fast building system open sourced by Google. It has go support but it does not have a detailed instruction on how to integrate CGO with the bazel build system. Building everything from scratch with cc_library and manually written go_library is do-able. However, we do prefer the amazing gazelle and sometimes it is hard to use prebuilt libraries with CGO build without digging up in the source code in the gazelle.

Read more…

Limiting Fan Speed in Dell Poweredge Series

Sometimes we need to limit the fan speed in Dell PowerEdge server series maybe for the noise. The followings are the ipmi raw commands to setup the manual fan control which are very much undocumented.

Function ipmitool raw command
Enable manual fan control ipmitool raw 0x30 0x30 0x01 0x00
Disable manual fan control ipmitool raw 0x30 0x30 0x01 0x01
Set manual fan speed step ipmitool raw 0x30 0x30 0x02 0xff 0x??

I'm using Dell r720xd and setting 0x?? to 0x26 effectively limits the fan speed to around 8000 RPM. It is a somewhat safe value before you slowly set down the value to limit further down the fan speed.

Run Linux GUI Applications within Docker Containers


Running GUI applications inside docker might be useful when sandbox mechanism is needed or debugging complex and tricky container networking related issues.

Generally there are 3 major ideas when trying to run GUI applications in docker, which are:

  1. Penetrate in the host X11 sockets (most straight forward but not fully secure)
  2. Expose SSH connection and use X11Forwarding configuration
  3. Run VNC server inside the container and use VNC client to access the GUI application inside

Read more…

PDF Compression with Ghostscript

PDF do preserve the original information especially image when exported. The feature makes it very attractive for archive but it might be too large to spread.

We can use ghostscript command to compress (actually rewrite) a PDF file with a lot of images embedded.

Read more…