Kanban is another word that is currently popular among corporate flocks, I mean folks. So here is a quick guide on that.
- Kanban is a technique of categorizing, scheduling and displaying the work output of a project team.
- The Kanban method originated in Japan through the Toyota Production System (TPS) and uses a feedback system to manage store inventory based on demand .
- Software development teams can use Kanban techniques for enhancing their development pipeline and simplifying project management.
- The simplest form of Kanban can be applied as below.
- All phases of the project such as specification, design, development, testing, and deployment are each given a slot on a Kanban chart.
- Each slot is further divided into smaller slots based on status of a single feature/task, such as planned, ongoing, and completed as shown in the diagram.
- Work-In-Progress or WIP limits are allotted to each slot. This is the amount of maximum items allowed to be pending in any one slot.
- The tasks are then mapped on the Kanban board as they traverse each stage of software development.
- Whenever a slot is filled to its assigned WIP limit, team members working on other slots can then help move the pending items forward or focus on other activities until the backlog is cleared.
- This pull-back helps reduce spikes in the software development process.
Download this post as an image
The corporate sector spews a lot of business jargon and buzzwords. Scrum is one such word. For people wanting to understand the meaning of scrum without devoting a lot of time to it, here it is in its most distilled form.
- Scrum is an agile project management framework.
- The main objective of scrum is to render project management simple and flexible.
- As per the diktats of the agile method, testing is a part of the process and not a separate phase.
- The scrum team consists of three roles drawn along the lines of their respective responsibilities as given below.
- the product owner – an individual responsible for decisions related to the product
- the development team – a team of executives working on the product
- the scrum master – an individual orchestrating the project management
- The entire product lifecycle is divided into small timed events called ‘sprints‘.
- Each sprint starts with a single preparation meeting for selecting the requirements to be advanced in that sprint and the plan for doing so.
- The progress of the sprint is monitored by using any of the following tools.
- the testing carried out to verify the goals of the sprint
- a daily scrum meeting at the start of the day (status meeting)
- a sprint burn-down chart and/or a scrum task-board
- A sprint ends with a sprint review and a sprint retrospective (lessons learned).
- The Scrum method includes the following main artifacts.
- a product backlog (potential requirements)
- a sprint backlog (requirements selected for a sprint – input)
- an increment (the actual code/functionality for a sprint – output)
- the sprint statistics (used to monitor the sprint)
- If a sprint is cancelled, the incomplete backlog items are added back to the product backlog. The completed items are reviewed and released, or kept back for release in the next sprint.
Download this post as an image
I am going to rant some on this post before I get to the solution. I have been a fan of Ubuntu Linux for a long time. In fact Ubuntu was the reason I started using Linux. But ever since Ubuntu 11.04 (Natty Narwhal) came out, I have faced some usability issues. I like the new Unity interface and I think that it has great potential. On the other hand Gnome is progressing on its own path of GUI evolution. However, mixing both of these GUI is not working out for me. In my opinion, this mix resulted in a mashup of two very diverging approaches of handling linux GUI. The bottom-line is that I have decided to wait on the fence until this GUI battle is over and then root for the winner later. So I decided that I need to go to the next level of geek-dom and install a minimal Linux distro. My distro of choice is Crunchbang, just because. Anyways, it is a fun little distro and I still keep my Ubuntu Linux on a separate partition lest I need it someday.
Enough of that though… as the title states, this post is about a shell script to put an end to all the annoying system beeps you get in Crunchbang linux. The script is given below. (Or you can get it using the Pastie Link) Copy and paste this to a file (say ‘beepoff.sh’) and make it executable by using the following command.
sudo chmod a+x beepoff.sh
Next run the script with root privileges with your username as an argument. So for example, if your username is ‘uname’, the command would be as follows.
sudo ./beepoff uname
This should get rid of almost all the system beeps. Please note that the script is just a compiled version of a solution that I found here on the Crunchbang Forums. So if you prefer to do the typing yourself, you can make all the changes in the forum manually.
#! /bin/sh
# Shell script to disable (almost) all beeps on Crunchbang Linux
# @author: Akshay Dandekar
# @version: 0 (there will be no other)
# This script is free - do whatever you want with it
# and I am not responsible for the outcome
# Blacklist pcspkr
if [ $(grep -c 'blacklist\ pcspkr' /etc/modprobe.d/pcspkr.conf) -eq 0 ]
then
echo 'blacklist pcspkr' | tee -a /etc/modprobe.d/pcspkr.conf
rmmod pcspkr
else
echo "blacklist pcspkr in pcspkr configuration"
fi
#set PC speaker and PC Beep to mute on amixer
amixer set 'PC speaker' 0% mute
amixer set 'PC Beep' 0% mute
# remove gtk application beeps
if [ $(grep -c 'gtk-error-bell\ \=\ 0' /home/$1/.gtkrc-2.0.mine) -eq 0 ]
then
echo "gtk-error-bell = 0" >> /home/$1/.gtkrc-2.0.mine
chmod 755 /home/$1/.gtkrc-2.0.mine
else
echo "gtk-error-bell already set to zero"
fi
# remove console beeps in X
if [ $(grep -c 'xset\ b\ off' /home/$1/.config/openbox/autostart.sh) -eq 0 ]
then
echo "\n# remove console beeps in X --Added by $1 \nxset b off &" >> /home/$1/.config/openbox/autostart.sh
else
echo "console beeps already off in autostart script"
fi
# remove bash beeps
sed -i 's/^#\ set\ bell\-style\ none/set\ bell\-style\ none/g' /etc/inputrc
# remove console beeps from the system console
if [ $(grep -c 'setterm\ -blength\ 0' /etc/profile) -eq 0 ]
then
echo "setterm -blength 0" >> /etc/profile
echo "setterm -bfreq 0" >> /etc/profile
else
echo "console beeps already off in /etc/profile"
fi
# remove login sound from gdm
if [ $(grep -c 'SoundOnLogin=False' /etc/gdm/gdm.conf) -eq 0 ]
then
sed -i 's/\[greeter\]/\[greeter\]\nSoundOnLogin\=False/' /etc/gdm/gdm.conf
else
echo "login sound already off from gdm"
fi
Also, an easier but riskier way of getting around the annoying system beeps is by disabling the pc speaker in BIOS. However, I do not know what the implications that would have on your computer. (For example, would the computer beep if you fall asleep on the keyboard? 🙂 or more seriously if the processor cooler fan stops working?) Also, I dual-boot my machine and would like to keep configuration settings separate for both OSes.