Softpanorama

May the source be with you, but remember the KISS principle ;-)
Contents Bulletin Scripting in shell and Perl Network troubleshooting History Humor

date command

News Recommended Books Recommended Links Reference Examples

Touch command

Find Command Webliography tar Admin Horror Stories Unix History Humor

Etc


Introduction

Command date is implemented as a binary (usually /bin/date). It is a very powerful utility with several modes of operation, including data calculator mode and referenced file mode. It also can set the time. The most typical usage is to create a timestamp is user-defined format, specified in a special format string with more then two dozen of built-in macros (format strings). The most common macros in format string are:

BSD version and GNU version has the ability to convert date representation in seconds to any format you wish.  There are also numerous "Unix timestamp calculators" on the WEB. For example

Command date was first seen in Version 1 of AT&T Unix, circa 1969, and has both grown and improved over the years to provide you with a wide variety of configurable options for your system. 

Creating timestamp

The most important for scripting functionality of date is the the ability to create timestamp is wide variety of formats.

date +"%Y/%m/%d %H:%M"

The output should look something like this:

2010/01/04 06:28

The format string %Y/%m/%d %H:%M is called date conversion template and it consist of individual single letter macros prefixed with % sign (here they are %Y,%m,%d,%H  and %M) and "filler" text. Please note that if you date conversion template contains spaces you need to put it in single or double quotes, for example

date +"%Y/%m/%d %H:%M"

is correct and

date +%Y/%m/%d %H:%M

is not.

If  you are OK with two year year representation you can use %y instead of %Y. There is also a macro %D that provides date in  mm/dd/yy format, so we can rewrite the previous example as

     date +"%D %H:%M"

Please note that if your date conversion template contains spaces you need to put it in single or double quotes

Using date as date calculator (option -d)

Option -d provides the opportunity to use data as a simple data calculator

date -d yesterday +"%y%m%d" 
date -d tomorrow +"%y%m%d"

The -d option which has long format --date=STRING is a free format human readable date string such as

A date string may contain items indicating calendar date, time of day, time zone, day of week, relative time, relative date, and numbers. An empty string indicates the beginning of the day. 

For example (GNU date only):
date +"%Y%m%d" -d sunday # GNU date
20060709

date +"%Y%m%d" -d last-sunday # GNU date
20060702

date +"%Y%m%d" -d last-week # GNU date
date -v -1m +"%Y%m%d" # BSD date
20060627

date +"%Y%m%d" -d last-month # GNU date
date -v -1w +"%Y%m%d" # BSD date
20060604

date +"%Y%m%d" -d last-year # GNU date
date -v -1y +"%Y%m%d" # BSD date
20050704

date +"%Y%m%d" -d next-week # GNU date
date -v 1w +"%Y%m%d" # BSD date
20060711

date +"%Y%m%d" -d next-month # GNU date
date -v 1m +"%Y%m%d" # BSD date
20060804

date +"%Y%m%d" -d next-year # GNU date
date -v 1y +"%Y%m%d" # BSD date
20070704

To show the time in seconds since 1970-01-01 (Unix epoch):

date +"%s" -d "Fri Apr 24 13:14:39 CDT 2009"
1240596879

To convert Unix epoch time (seconds since 1970-01-01) to a human readable format:

date -d "UTC 1970-01-01 1240596879 secs"
Fri Apr 24 13:14:39 CDT 2009

Or:

date -ud @1000000000
Sun Sep  9 01:46:40 UTC 2001

Using date for offset calculation:

date +"%Y%m%d" -d sunday
20060709

date +"%Y%m%d" -d last-sunday
20060702

date +"%Y%m%d" -d last-week
20060627

date +"%Y%m%d" -d last-month
20060604

date +"%Y%m%d" -d last-year
20050704

date +"%Y%m%d" -d next-week
20060711

date +"%Y%m%d" -d next-month
20060804

date +"%Y%m%d" -d next-year
20070704

 

Using the date of referenced file instead of now

Date also can work not with the current time, but with time of modification of the referenced file

date -r /etc/passwd +"%y%m%d"

You can convert time to a new format, for example second since Unix epoch using option -d

timestamp="Feb 19 17:01" 
reboot_time=`date -d "$timestamp" +%s`

It also can serve as data calculator.

Most important build-in macros

Here  are most important build-in macros:

 

Examples

date "+%-m/%-d/%y" 
7/4/06
date "+%Y%m%d"
20060704

date  +"%b %d, %Y"
Mar 14, 2010

date -d yesterday +"%Y/%m/%d"
2010/03/13

Yesterday assigned to variable

DATE=$(date -d yesterday +"%Y%m%d")
echo $DATE
20060704

To assign the time to a variable

START=`date '+%r'`
echo $START
03:06:02 PM
sleep 5
echo $START
03:06:02 PM

To show the time in a different timezone, the TZ environment variable is read, Timezone types is found in /usr/share/zoneinfo

OLDTZ=$TZ
export TZ=GMT; echo "GMT:               `date +\"%F %R (%Z)\"`"
GMT:               2008-10-31 12:30 (GMT)
export TZ=Europe/Stockholm; echo "Stockholm:    `date +\"%F %R (%Z)\"`"
Stockholm:    2008-10-31 13:30 (CET)
export TZ=Asia/Kuala_Lumpur; echo "Kuala Lumpur: `date +\"%F %R (%Z)\"`"
Kuala Lumpur:        2008-10-31 20:30 (MYT)
export TZ=US/Central; echo "Dallas:             `date +\"%F %R (%Z)\"`"
Dallas:             2008-10-31 07:30 (CDT)
export TZ=$OLDTZ

Using date for offset calculation:

date +"%Y%m%d" -d sunday
20060709

date +"%Y%m%d" -d last-sunday
20060702

date +"%Y%m%d" -d last-week
20060627

date +"%Y%m%d" -d last-month
20060604

date +"%Y%m%d" -d last-year
20050704

date +"%Y%m%d" -d next-week
20060711

date +"%Y%m%d" -d next-month
20060804

date +"%Y%m%d" -d next-year
20070704

Heelo
Top Visited
Switchboard
Latest
Past week
Past month


NEWS CONTENTS

Old News ;-)

[May 19, 2010] Converting time since the epoch to a human readable string

April 15, 2010 | Blog O’ Matty

I was parsing some Netbackup logs today, and needed a way to convert the time since the epoch into a human readable string. A while back I read about the various forms of input that can be passed to the GNU date’s “-d” option, one of these being the time since the epoch:

$ date -d @1263408025
Wed Jan 13 13:40:25 EST 2010

This solved my issue, though unfortunately it’s not super portable. Food for thought.

BASH Convert Unix Timestamp to a Date

April 6, 2006 | Anton Olsen.com

I’ve been asked this a number of times and always have to look it up, so here are 3 ways to convert a unix timestamp (seconds since Jan 1, 1970 GMT) to a real looking date.
Perl method 1: use the ctime module:

perl -e “require ‘ctime.pl’; print &ctime($EPOCH);”

Perl method 2: use the scalar and localtime functions:

perl -e “print scalar(localtime($EPOCH))”

Awk has a wrapper for the standard C strftime function:

echo $EPOCH|awk ‘{print strftime(”%c”,$1)}’

Here’s a sample script that uses all methods.

!#/bin/bash
EPOCH=1000000000
DATE=$(perl -e “require ‘ctime.pl’; print &ctime($EPOCH);”)
echo $DATE
DATE=$(perl -e “print scalar(localtime($EPOCH))”)
echo $DATE
DATE=$(echo $EPOCH|awk ‘{print strftime(”%c”,$1)}’)
echo $DATE

[update: Thanks to S. Maynard for reminding me of the proper use of quotes and how to avoid using the pipe...]
DATE=$(awk “BEGIN { print strftime(\”%c\”,$EPOCH) }”)

[UPDATE]

A reader found another way listed below. This doesn’t seem to be as portable (The mac ignores the –date and -d is an illegal option).
# date –date=’1970-01-01 1000000000 sec GMT’
Sat Sep 8 20:46:40 CDT 2001

[UPDATE]
# date -d @1000000042
Sun Sep 9 01:47:22 GMT 2001

But this only works on newer versions of date. It fails on my FC2 server and my Debian Sarge machine, but works fine on Ubuntu Feisty and Debian Etch.

Date in Unix using Korn Shell - Computing.Net

#This one gives you a day on any given date #from 0001 AD and the dates of the next 5 #weeks.
#Usage is:
#Programname DayOftheMonth Monthoftheyear #Year
#eg dates 26 04 2004


# This function returns the number of days per month
# Requires month and year. NOTE No leading zeros
# Usage dayspm 5 2002

dayspm () {
case $1 in
4|6|9|11) ndays=30
;;
1|3|5|7|8|10|12) ndays=31
;;
2)
if [ `echo "scale=0; $2%4" | bc` -eq 0 ]; then
ndays=29
else
ndays=28
fi
;;
*)
echo "Month Input error"
exit 1
;;
esac
return $ndays
}

if [ $# -eq 3 ]; then
cal $2 $3
day=0
week=`cal $2 $3 | grep -w $1`
year=$3
for pos in 1 4 7 10 13 16 19
do
day=`expr $day + 1`
pos1=`expr $pos + 1`
dpos=`echo "$week" | cut -c$pos-$pos1`
dpos=`echo $dpos`
if [ "$1" = "$dpos" ]; then
case $day in
1) echo "That date is a Sunday"
;;
2) echo "That date is a Monday"
;;
3) echo "That date is a Tuesday"
;;
4) echo "That date is a Wednesday"
;;
5) echo "That date is a Thursday"
;;
6) echo "That date is a Friday"
;;
7) echo "That date is a Saturday"
;;
*) echo "Woooops day error"
;;
esac
month=`expr $2 + 0`
pmonth=$month
ndays=`dayspm $month $3;echo $?`
echo "Next 5 weeks are: "
for nxwk in 7 14 21 28 35
do
week=`expr $1 + $nxwk`
if [ $week -gt $ndays ]; then
month1=`expr $month + 1`
if [ $month1 -gt 12 ]; then
month1=1
fi
pmonth=$month1
week=`expr $week - $ndays`
daysnm=`dayspm $month1 $3;echo $?`
if [ $week -gt $daysnm ]; then
week=`expr $week - $daysnm`
pmonth=`expr $pmonth + 1`
fi

fi
echo "${week}/${pmonth}"
done
fi
done
else
echo Usage $0 day month year
exit 1
fi

Raiden's Realm Using and Understanding the Unix Date Command

01.04.2008

"Date" is a useful little tool that is used to both tell time, and set the time on your Unix, Linux or BSD system. It was first seen in Version 1 of AT&T Unix, circa 1969, and has both grown and improved over the years to provide you with a wide variety of configurable options for your system. Typing "date" at the command line with no other options will render you a fully formatted date, something like this:

Tue Jan 1 20:11:20 EST 2008

As you can see, it's everything you want to know about the current time, but were afraid to ask. All of this is derived from a simple integer number that increments by one number every second. That's how a typical Unix, Linux or BSD system stores its day. The start point for this infinitely increasing number is the Unix Epox, which happened on December 31st, 1969 at 7pm. Was that Eastern Time or Greenwich Mean Time? Who knows. It's simply a starting point for the counter on a Unix, Linux or BSD system to work with when calculating dates.

Here's an example of how that integer number looks: 1199443481

Yes, you're reading that right. There's been (as of the writing of this article) almost 1.2 billion seconds since the Unix Epox. That will happen on January 10th at 4am. It won't roll over to the 1.3 billion mark until May 13th, 2011. Just an interesting little tidbit for you to chew on. It's not worth much at this point, but it's still a fun bit of trivia.

Now, if you want to, you can play around with some of those large numbers inside of data to see what the date and time was when that number appeared in the Unix landscape. For example, let's say we want to find out when 1450000000 will appear. If you type this:

date -r 1450000000

You should get a date like this:

Sun Dec 13 04:46:40 EST 2015

Sadly, this trick only works on Unix and BSD, but not Linux. Not sure why, but the two date applications vary a bit and while there are similarities, there are some unique differences as will be explained later on. Next, we move on to setting the date on your system. The first thing to know before using the date command is that almost everything in your system operates based on the time. So be sure you take extra care when working with this command. It won't format your drive or send your processor into orbit, but it may just mess up how the system does its regular maintenance and operations, and in some cases how security timings are handled.

Now to get started adjusting the time on your system, you will need to be logged in as root at the console to do this. You can also do this as a super user, provided the super user has sufficient privileges. Now, setting the date can be done in any of several ways. The simplest is setting the time. To do that, you would type this:

date 1427

That will set your system time to 2:27pm while leaving the month, day and year alone. But if you want to set the whole kit and caboodle, you would do this:

date 0801051627

That would set the date to January 5, 2008 at 4:27pm. The breakdown of this command is as follows:

2 digit year: 08
2 digit month: 01
2 digit day: 05
2 digit hour in 24 hour format: 16
2 digit minute: 27

Interestingly enough though, this only works in this order on Unix and BSD systems. Linux takes a different approach with the date function. Instead of the 08 being at the beginning, it's at the end. The rest remains the same. So you'd end up with this as your command:

date 0105162708

If you put it in the other order, it will throw the system clock so far forward (up to 2027) that things start crashing randomly due to date issues. Now, another interesting use for the date command is that if you want to add the seconds to this command, you would need to add a decimal number after the 27. But that trick only works on Unix and BSD systems, but not Linux systems. Now, to retrieve the current time format to use on another system to help set it to nearly the same time as your current system, you'll need to do something rather interesting.

For anyone who's ever done programming, you may remember at some point or another having to use percent alphanumeric values with a command to render a given output. The same applies here in some small degree to the date command. If you type in the following command, you can find out what the numerical preset should be:

date "+%Y%m%d%H%M"

The output should look something like this:

200801040628

Of course, on a Linux system, "%Y" will need to be at the end after "%M" in order to generate the correct numerical date format. You can now take that number over to another machine and plug it in by typing "date" and that number as displayed in the examples above. This little article only touches on the bare basics of the "date" command. To learn more, I suggest you hop into your system console sometime and read the man file. You can reach it by typing "man date" at the command prompt. I hope this little article has helped you. If you have any further questions, please feel free to ask in the forums. Thanks.

[Jan 30, 2008] GNU Core-utils / date: Print or set system date and time

date [option]... [+format]
date [-u|--utc|--universal] 
[ MMDDhhmm[[CC]YY][.ss] ]

Invoking date with no format argument is equivalent to invoking `date '+%a %b %e %H:%M:%S %Z %Y''.

If given an argument that starts with a `+', date prints the current time and date (or the time and date specified by the --date option, see below) in the format defined by that argument, which is the same as in the strftime function. Except for directives, which start with `%', characters in the format string are printed unchanged. The directives are described below.

21.1.1 Time directives %[HIklMprsSTXzZ]
21.1.2 Date directives %[aAbBcdDhjmUwWxyY]
21.1.3 Literal directives %[%nt]
21.1.4 Padding Pad with zeroes, spaces (%_), or nothing (%-).
21.1.5 Setting the time Changing the system clock.
21.1.6 Options for date Instead of the current time.
21.1.7 Examples of date Examples.

21.1.1 Time directives

date directives related to times.

`%H'
hour (00...23)
`%I'
hour (01...12)
`%k'
hour ( 0...23)
`%l'
hour ( 1...12)
`%M'
minute (00...59)
`%N'
nanoseconds (000000000...999999999)
`%p'
locale's upper case `AM' or `PM' (blank in many locales)
`%P'
locale's lower case `am' or `pm' (blank in many locales)
`%r'
time, 12-hour (hh:mm:ss [AP]M)
`%R'
time, 24-hour (hh:mm). Same as %H:%M.
`%s'
seconds since the epoch, i.e., 1 January 1970 00:00:00 UTC (a GNU extension). Note that this value is the number of seconds between the epoch and the current date as defined by the localtime system call. It isn't changed by the `--date' option.
`%S'
second (00...60). The range is [00...60], and not [00...59], in order to accommodate the occasional positive leap second.
`%T'
time, 24-hour (hh:mm:ss)
`%X'
locale's time representation (%H:%M:%S)
`%z'
RFC-822 style numeric time zone (e.g., -0600 or +0100), or nothing if no time zone is determinable. This value reflects the current time zone. It isn't changed by the `--date' option.
`%Z'
time zone (e.g., EDT), or nothing if no time zone is determinable. Note that this value reflects the current time zone. It isn't changed by the `--date' option.

21.1.2 Date directives

date directives related to dates.

`%a'
locale's abbreviated weekday name (Sun...Sat)
`%A'
locale's full weekday name, variable length (Sunday...Saturday)
`%b'
locale's abbreviated month name (Jan...Dec)
`%B'
locale's full month name, variable length (January...December)
`%c'
locale's date and time (Sat Nov 04 12:02:33 EST 1989)
`%C'
century (year divided by 100 and truncated to an integer) (00...99)
`%d'
day of month (01...31)
`%D'
date (mm/dd/yy)
`%e'
blank-padded day of month (1...31)
`%F'
the ISO 8601 standard date format: %Y-%m-%d. This is the preferred form for all uses.
`%g'
The year corresponding to the ISO week number, but without the century (range 00 through 99). This has the same format and value as %y, except that if the ISO week number (see %V) belongs to the previous or next year, that year is used instead.
`%G'
The year corresponding to the ISO week number. This has the same format and value as %Y, except that if the ISO week number (see %V) belongs to the previous or next year, that year is used instead.
`%h'
same as %b
`%j'
day of year (001...366)
`%m'
month (01...12)
`%u'
day of week (1...7) with 1 corresponding to Monday
`%U'
week number of year with Sunday as first day of week (00...53). Days in a new year preceding the first Sunday are in week zero.
`%V'
week number of year with Monday as first day of the week as a decimal (01...53). If the week containing January 1 has four or more days in the new year, then it is considered week 1; otherwise, it is week 53 of the previous year, and the next week is week 1. (See the ISO 8601 standard.)
`%w'
day of week (0...6) with 0 corresponding to Sunday
`%W'
week number of year with Monday as first day of week (00...53). Days in a new year preceding the first Monday are in week zero.
`%x'
locale's date representation (mm/dd/yy)
`%y'
last two digits of year (00...99)
`%Y'
year (1970....)

21.1.3 Literal directives

date directives that produce literal strings.

`%%'
a literal %
`%n'
a newline
`%t'
a horizontal tab

21.1.4 Padding

By default, date pads numeric fields with zeroes, so that, for example, numeric months are always output as two digits. GNU date recognizes the following numeric modifiers between the `%' and the directive.

`-'
(hyphen) do not pad the field; useful if the output is intended for human consumption.
`_'
(underscore) pad the field with spaces; useful if you need a fixed number of characters in the output, but zeroes are too distracting.

These are GNU extensions.

Here is an example illustrating the differences:

date +%d/%m -d "Feb 1"
=> 01/02
date +%-d/%-m -d "Feb 1"
=> 1/2
date +%_d/%_m -d "Feb 1"
=>  1/ 2

21.1.5 Setting the time

If given an argument that does not start with `+', date sets the system clock to the time and date specified by that argument (as described below). You must have appropriate privileges to set the system clock. The `--date' and `--set' options may not be used with such an argument. The `--universal' option may be used with such an argument to indicate that the specified time and date are relative to Coordinated Universal Time rather than to the local time zone.

The argument must consist entirely of digits, which have the following meaning:

`MM'
month
`DD'
day within month
`hh'
hour
`mm'
minute
`CC'
first two digits of year (optional)
`YY'
last two digits of year (optional)
`ss'
second (optional)

The `--set' option also sets the system clock; see the next section.

21.1.6 Options for date

The program accepts the following options. Also see 2. Common options.

`-d datestr'
`--date=datestr'
Display the time and date specified in datestr instead of the current time and date. datestr can be in almost any common format. It can contain month names, time zones, `am' and `pm', `yesterday', `ago', `next', etc. See section 27. Date input formats.

`-f datefile'
`--file=datefile'
Parse each line in datefile as with `-d' and display the resulting time and date. If datefile is `-', use standard input. This is useful when you have many dates to process, because the system overhead of starting up the date executable many times can be considerable.

`-I timespec'
`--iso-8601[=timespec]'
Display the date using the ISO 8601 format, `%Y-%m-%d'.

The argument timespec specifies the number of additional terms of the time to include. It can be one of the following:

`auto'
The default behavior: print just the date.

`hours'
Append the hour of the day to the date.

`minutes'
Append the hours and minutes.

`seconds'
Append the hours, minutes, and seconds.

If showing any time terms, then include the time zone using the format `%z'.

If timespec is omitted with `--iso-8601', the default is `auto'. On older systems, GNU date instead supports an obsolete option `-I[timespec]', where timespec defaults to `auto'. POSIX 1003.1-2001 (see section 2.5 Standards conformance) does not allow `-I' without an argument; use `--iso-8601' instead.

`-R'
`--rfc-822'
Display the time and date using the RFC-822-conforming format, `%a, %_d %b %Y %H:%M:%S %z'.

`-r file'
`--reference=file'
Display the time and date reference according to the last modification time of file, instead of the current time and date.

`-s datestr'
`--set=datestr'
Set the time and date to datestr. See `-d' above.

`-u'
`--utc'
`--universal'
Use Coordinated Universal Time (UTC) by operating as if the TZ environment variable were set to the string `UTC0'. Normally, date operates in the time zone indicated by TZ, or the system default if TZ is not set. Coordinated Universal Time is often called "Greenwich Mean Time" (GMT) for historical reasons.

21.1.7 Examples of date

Here are a few examples. Also see the documentation for the `-d' option in the previous section.

[Jan 30, 2008] date (Unix) - Wikipedia, the free encyclopedia

Examples

date "+%-m/%-d/%y" 
7/4/06
date "+%Y%m%d"
20060704

To assign the time to a variable

START=`date '+%r'`
echo $START
03:06:02 PM
sleep 5
echo $START
03:06:02 PM

N.B. the variable has the time when it was assigned.

Yesterday assigned to variable

DATE=$(date -d yesterday +"%Y%m%d")
echo $DATE
20060704

Recommended Links

Softpanorama hot topic of the month

Softpanorama Recommended

Reference



Etc

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available in our efforts to advance understanding of environmental, political, human rights, economic, democracy, scientific, and social justice issues, etc. We believe this constitutes a 'fair use' of any such copyrighted material as provided for in section 107 of the US Copyright Law. In accordance with Title 17 U.S.C. Section 107, the material on this site is distributed without profit exclusivly for research and educational purposes.   If you wish to use copyrighted material from this site for purposes of your own that go beyond 'fair use', you must obtain permission from the copyright owner. 

ABUSE: IPs or network segments from which we detect a stream of probes might be blocked for no less then 90 days. Multiple types of probes increase this period.  

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least


Copyright © 1996-2016 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License.

The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to make a contribution, supporting development of this site and speed up access. In case softpanorama.org is down you can use the at softpanorama.info

Disclaimer:

The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the author present and former employers, SDNP or any other organization the author may be associated with. We do not warrant the correctness of the information provided or its fitness for any purpose.

Last modified: March 01, 2016