Linux – Extindere rețea locală

Descriere proiect:
Extindere și diagnosticare rețea folosind switch-ul plug and play fără management Switch TP-LINK TL-SG105, 5 x 10/100/1000Mbps
– Switch TP-LINK TL-SG105, 5 x 10/100/1000Mbps
Print Server MFP TP-LINK TL-PS310U, 10/100, USB 2.0
– Linux Armbian for Tinkerboard
Windows 7
– Putty

Schema retelei:

Diagnosticarea retelei din Linux: – In Linux am găsit o lista întreagă de unelte software pentru diagnosticarea și configurarea rețelei (Linux-network-configuration-and-troubleshooting-commands).
1. Primul utilitar este ifconfig care se folosește pentru a inițializa și configura o interfața de rețea :

root@tinkerboard:~# ifconfig
dummy0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet6 addr: fXXXX::XXXX:XXXX:XXXX:XXXX/XX Scope:Link
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:12000 (12.0 KB)

eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr: Bcast: Mask:
inet6 addr: XXXX::XXXX:XXXX:XXXX:XXXX/XX Scope:Link
RX packets:301252 errors:0 dropped:0 overruns:0 frame:0
TX packets:356627 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:74589716 (74.5 MB) TX bytes:180768540 (180.7 MB)

lo Link encap:Local Loopback
inet addr: Mask:
inet6 addr: ::1/128 Scope:Host
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:489 (489.0 B) TX bytes:489 (489.0 B)

wlan0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

2. Utilitarul PING (Packet INternet Groper) este folosit pentru a testa conectivitatea cu nodurile rețelei.

root@tinkerboard:~# ping -h
Usage: ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
[-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
[-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
[-w deadline] [-W timeout] [hop1 ...] destination

root@tinkerboard:~# ping
PING ( 56(84) bytes of data.
64 bytes from icmp_seq=1 ttl=64 time=1.28 ms
64 bytes from icmp_seq=2 ttl=64 time=0.533 ms
64 bytes from icmp_seq=3 ttl=64 time=0.496 ms
64 bytes from icmp_seq=4 ttl=64 time=0.634 ms
64 bytes from icmp_seq=5 ttl=64 time=0.515 ms
64 bytes from icmp_seq=6 ttl=64 time=0.660 ms
--- ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5108ms
rtt min/avg/max/mdev = 0.496/0.687/1.284/0.273 ms

3. Utilitarul TRACEROUTE care arată numărul de noduri folosite pentru a ajunge la destinație si determină, de asemenea, căile de călătorie pentru pachete.

root@tinkerboard:~# traceroute
traceroute [ -46dFITnreAUDV ] [ -f first_ttl ] [ -g gate,... ] [ -i device ] [ -m max_ttl ] [ -N squeries ] [ -p port ] [ -t tos ] [ -l flow_label ] [ -w waittime ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ --fwmark=num ] host [ packetlen ]
-4 Use IPv4
-6 Use IPv6
-d --debug Enable socket level debugging
-F --dont-fragment Do not fragment packets
-f first_ttl --first=first_ttl
Start from the first_ttl hop (instead from 1)
-g gate,... --gateway=gate,...
Route packets through the specified gateway
(maximum 8 for IPv4 and 127 for IPv6)
-I --icmp Use ICMP ECHO for tracerouting
-T --tcp Use TCP SYN for tracerouting (default port is 80)
-i device --interface=device
Specify a network interface to operate with
-m max_ttl --max-hops=max_ttl
Set the max number of hops (max TTL to be
reached). Default is 30
-N squeries --sim-queries=squeries
Set the number of probes to be tried
simultaneously (default is 16)
-n Do not resolve IP addresses to their domain names
-p port --port=port Set the destination port to use. It is either
initial udp port value for "default" method
(incremented by each probe, default is 33434), or
initial seq for "icmp" (incremented as well,
default from 1), or some constant destination
port for other methods (with default of 80 for
"tcp", 53 for "udp", etc.)
-t tos --tos=tos Set the TOS (IPv4 type of service) or TC (IPv6
traffic class) value for outgoing packets
-l flow_label --flowlabel=flow_label
Use specified flow_label for IPv6 packets
-w waittime --wait=waittime
Set the number of seconds to wait for response to
a probe (default is 5.0). Non-integer (float
point) values allowed too
-q nqueries --queries=nqueries
Set the number of probes per each hop. Default is
-r Bypass the normal routing and send directly to a
host on an attached network
-s src_addr --source=src_addr
Use source src_addr for outgoing packets
-z sendwait --sendwait=sendwait
Minimal time interval between probes (default 0).
If the value is more than 10, then it specifies a
number in milliseconds, else it is a number of
seconds (float point values allowed too)
-e --extensions Show ICMP extensions (if present), including MPLS
-A --as-path-lookups Perform AS path lookups in routing registries and
print results directly after the corresponding
-M name --module=name Use specified module (either builtin or external)
for traceroute operations. Most methods have
their shortcuts (`-I' means `-M icmp' etc.)
-O OPTS,... --options=OPTS,...
Use module-specific option OPTS for the
traceroute module. Several OPTS allowed,
separated by comma. If OPTS is "help", print info
about available options
--sport=num Use source port num for outgoing packets. Implies
`-N 1'
--fwmark=num Set firewall mark for outgoing packets
-U --udp Use UDP to particular port for tracerouting
(instead of increasing the port per each probe),
default port is 53
-UL Use UDPLITE for tracerouting (default dest port
is 53)
-D --dccp Use DCCP Request for tracerouting (default port
is 33434)
-P prot --protocol=prot Use raw packet of protocol prot for tracerouting
--mtu Discover MTU along the path being traced. Implies
`-F -N 1'
--back Guess the number of hops in the backward path and
print if it differs
-V --version Print version info and exit
--help Read this help and exit

+ host The host to traceroute to
packetlen The full packet length (default is the length of an IP
header plus 40). Can be ignored or increased to a minimal
allowed value

root@tinkerboard:~# traceroute
traceroute to (, 30 hops max, 60 byte packets
1 gateway ( 0.660 ms 1.380 ms 1.643 ms

4. Utilitarul netstat este folosit pentru a afișa informațiile de conectivitate, căile de rutare și starea porturile. Pentru alte exemple vezi aici : 20-netstat-commands-for-linux-network-management

root@tinkerboard:~# netstat -h
usage: netstat [-vWeenNcCF] [] -r netstat {-V|--version|-h|--help}
netstat [-vWnNcaeol] [ ...]
netstat { [-vWeenNac] -i | [-cWnNe] -M | -s }

-r, --route display routing table
-i, --interfaces display interface table
-g, --groups display multicast group memberships
-s, --statistics display networking statistics (like SNMP)
-M, --masquerade display masqueraded connections

-v, --verbose be verbose
-W, --wide don't truncate IP addresses
-n, --numeric don't resolve names
--numeric-hosts don't resolve host names
--numeric-ports don't resolve port names
--numeric-users don't resolve user names
-N, --symbolic resolve hardware names
-e, --extend display other/more information
-p, --programs display PID/Program name for sockets
-c, --continuous continuous listing

-l, --listening display listening server sockets
-a, --all, --listening display all sockets (default: connected)
-o, --timers display timers
-F, --fib display Forwarding Information Base (default)
-C, --cache display routing cache instead of FIB

={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom
=Use '-6|-4' or '-A ' or '--'; default: inet
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)

root@tinkerboard:~# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway UG 0 0 0 eth0
link-local * U 0 0 0 eth0 * U 0 0 0 eth0

5. Utilitarul DIG (domain information groper) este folosit pentru a interoga diverse informatii DNS (Domain Name System). Mai multe informatii gasiti aici :10-linux-dig-domain-information-groper-commands-to-query-dns

root@tinkerboard:~# dig -h
Usage: dig [@global-server] [domain] [q-type] [q-class] {q-opt}
{global-d-opt} host [@local-server] {local-d-opt}
[ host [@local-server] {local-d-opt} [...]]
Where: domain is in the Domain Name System
q-class is one of (in,hs,ch,...) [default: in]
q-type is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default:a]
(Use ixfr=version for type ixfr)
q-opt is one of:
-4 (use IPv4 query transport only)
-6 (use IPv6 query transport only)
-b address[#port] (bind to source address/port)
-c class (specify query class)
-f filename (batch mode)
-i (use IP6.INT for IPv6 reverse lookups)
-k keyfile (specify tsig key file)
-m (enable memory usage debugging)
-p port (specify port number)
-q name (specify query name)
-t type (specify query type)
-u (display times in usec instead of msec)
-x dot-notation (shortcut for reverse lookups)
-y [hmac:]name:key (specify named base64 tsig key)
d-opt is of the form +keyword[=value], where keyword is:
+[no]aaonly (Set AA flag in query (+[no]aaflag))
+[no]additional (Control display of additional section)
+[no]adflag (Set AD flag in query (default on))
+[no]all (Set or clear all display flags)
+[no]answer (Control display of answer section)
+[no]authority (Control display of authority section)
+[no]besteffort (Try to parse even illegal messages)
+bufsize=### (Set EDNS0 Max UDP packet size)
+[no]cdflag (Set checking disabled flag in query)
+[no]cl (Control display of class in records)
+[no]cmd (Control display of command line)
+[no]comments (Control display of comment lines)
+[no]crypto (Control display of cryptographic fields in records)
+[no]defname (Use search list (+[no]search))
+[no]dnssec (Request DNSSEC records)
+domain=### (Set default domainname)
+[no]edns[=###] (Set EDNS version) [0]
+ednsflags=### (Set EDNS flag bits)
+[no]ednsnegotiation (Set EDNS version negotiation)
+ednsopt=###[:value] (Send specified EDNS option)
+noednsopt (Clear list of +ednsopt options)
+[no]expire (Request time to expire)
+[no]fail (Don't try next server on SERVFAIL)
+[no]identify (ID responders in short answers)
+[no]ignore (Don't revert to TCP for TC responses.)
+[no]keepopen (Keep the TCP socket open between queries)
+[no]multiline (Print records in an expanded format)
+ndots=### (Set search NDOTS value)
+[no]nsid (Request Name Server ID)
+[no]nssearch (Search all authoritative nameservers)
+[no]onesoa (AXFR prints only one soa record)
+[no]opcode=[###] (Set the opcode of the request)
+[no]qr (Print question before sending)
+[no]question (Control display of question section)
+[no]recurse (Recursive mode)
+retry=### (Set number of UDP retries) [2]
+[no]rrcomments (Control display of per-record comments)
+[no]search (Set whether to use searchlist)
+[no]short (Display nothing except short
form of answer)
+[no]showsearch (Search with intermediate results)
+[no]split=## (Split hex/base64 fields into chunks)
+[no]stats (Control display of statistics)
+subnet=addr (Set edns-client-subnet option)
+[no]tcp (TCP mode (+[no]vc))
+time=### (Set query timeout) [5]
+[no]trace (Trace delegation down from root [+dnssec])
+tries=### (Set number of UDP attempts) [3]
+[no]ttlid (Control display of ttls in records)
+[no]vc (TCP mode (+[no]tcp))
global d-opts and servers (before host name) affect all queries.
local d-opts and servers (after host name) affect only that lookup.
-h (print help and exit)
-v (print version and exit)

root@tinkerboard:~# dig +short

6. Utilitarul arp (Address Resolution Protocol) este folosit pentru vizualiza si adauga in tabela ARP . Mai multe informatii gasiti aici :Address_Resolution_Protocol

root@tinkerboard:~# arp -h
arp [-vn] [] [-i ] [-a] [] <-Display ARP cache
arp [-v] [-i ] -d [pub] <-Delete ARP entry
arp [-vnD] [] [-i ] -f [] <-Add entry from file
arp [-v] [] [-i ] -s [temp] <-Add entry
arp [-v] [] [-i ] -Ds [netmask ] pub <-''-

-a display (all) hosts in alternative (BSD) style
-s, --set set a new ARP entry
-d, --delete delete a specified entry
-v, --verbose be verbose
-n, --numeric don't resolve names
-i, --device specify network interface (e.g. eth0)
-D, --use-device read from given device
-A, -p, --protocol specify protocol family
-f, --file read new entries from file or from /etc/ethers

=Use '-H ' to specify hardware address type. Default: ether
List of possible hardware types (which support ARP):
ash (Ash) ether (Ethernet) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) rose (AMPR ROSE) arcnet (ARCnet)
dlci (Frame Relay DLCI) fddi (Fiber Distributed Data Interface) hippi (HIPPI)
irda (IrLAP) x25 (generic X.25) eui64 (Generic EUI-64)
root@tinkerboard:~# arp -e
Address HWtype HWaddress Flags Mask Iface ether XX:XX:XX:XX:XX:XX C eth0 ether XX:XX:XX:XX:XX:XX C eth0 ether XX:XX:XX:XX:XX:XX C eth0
gateway ether XX:XX:XX:XX:XX:XX C eth0

O zi bună tuturor !

Linux – Cum se share-ieste un hdd extern folosind SAMBA

Am de share-uit un HDD extern dintr-un sistem de operare linux pentru o masina cu windows.
– Una bucata linux 😀
– Una bucata windows 7
– Un HDD extern
Schema :

Shell input/output:

sudo apt-get update
sudo reboot

sudo fdisk -l
Disk /dev/mmcblk0: 3965 MB, 3965190144 bytes
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 17 1216 76800 c W95 FAT32 (LBA)
/dev/mmcblk0p2 1233 26672 1628160 83 Linux
/dev/mmcblk0p3 26689 29744 195584 82 Linux swap / Solaris

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 121601 976760001 7 HPFS/NTFS

Disk /dev/sdb: 4005 MB, 4005560320 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 486 3903763+ b W95 FAT32
sudo mkdir /mnt/disk1
sudo mkdir /mnt/disk2
ls /mnt

sudo nano /etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 0
#/dev/mmcblk0p3 none swap sw 0 0

proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 0
#/dev/mmcblk0p3 none swap sw 0 0
/dev/sda1 /mnt/disk1 ntfs-3g defaults 0 0
/dev/sdb1 /mnt/disk2 vfat defaults 0 0

sudo mount -a
sudo apt-get install samba
sudo apt-get install samba-common-bin

sudo nano /etc/samba/smb.conf

comment = USB Share
path = /mnt/disk1
writeable = Yes
only guest = Yes
create mask = 0777
directory mask = 0777
browseable = Yes
public = yes
comment = USB Share
path = /mnt/disk2
writeable = Yes
only guest = Yes
create mask = 0777
directory mask = 0777
browseable = Yes
public = yes

sudo service samba restart

sudo testparm -s

sudo apt-get install autofs

sudo nano /etc/auto.master

You need to add the following below the +auto.master entry
/media/ /etc/auto.ext-usb --timeout=10,defaults,user,exec,uid=1000

O seară faină !

Priză Inteligentă TP link Wi-Fi HS100

Priza inteligenta este un aparat pentru controlarea de la distanta (WiFi) a prizelor normale. Chiar dacă sună destul de simplu, acest aparat deschide nenumărate posibilități de controlare a unor aparate și instalații de iluminare, care până acum puteau fi controlate doar ‘analog’.
 tp-link smart plug hs100

Specifications of the Smart Plug HS100:

Protocol IEEE 802.11b/g/n
Wireless Type 2.4GHz, 1T1R
System Requirements Android 4.1 or higher, iOS 8 or higher
Certification RoHS, EAC, CE
Package Contents Smart Plug HS100, Quick Start Guide
Environment Operating Temperature: 0 ºC ~ 40 ºC (32°F ~ 104°F)
Operating Humidity: 5%~90%RH, Non-condensing
Dimensions( H X W X D ) 3.9 x 2.6 x 2.5 in. ( 100.3 x 66.3 x 64 mm )
Materia PC
Buttons Power button, Settings button
Weight 123.3g
Packaging Dimensions 3.5 x 3.5 x 5.7 in. ( 90 x 88 x 144 mm )
Input voltage 100 – 120VAC, 15A
Output voltage 100 – 120VAC, 15A
Maximum Load 15A
Maximum Power 1.8KW

Schema electronica:

Are un șurubel pe partea din spate sub SN si se poate desface:

Contine chipul Qualcomm Atheros AR9331 2.4 GHz Wi-Fi SoC și în dreapta antena WiFi:

Cum este montat PCB-ul în carcasă

Pe verso gasim Zentel Electronics A3S56D40GTP 256 Mbit DDR SDRAM siGigaDevice 25Q32CVSIG 32 Mbit serial flash memory

  A doua placa conține partea de convertorul AC/DC și releul AC:

Imaginile le-am luat de pe site-ul–A-Wi-Fi-smart-plug-for-home-automation, pentru ca nu am vrut sa desfac aparatul , dar în același timp am vrut sa văd ce contine.

Sincer îmi place priza asta pentru ca mi-a permis să-mi automatizez cafetiera 🙂 , acum  în fiecare dimineață pornește automat la ora 6:40.

Weekend plăcut tuturor!


Zile libere și vacanțe școlare 2018

12 zile libere în 2018:
1 ianuarie, 2 ianuarie — Anul Nou
24 ianuarie — Ziua Unirii Principatelor Române
8 aprilie 2018 (duminică), 9 aprilie (luni) — Paștele
1 mai — Ziua Muncii
27 mai (duminică), 28 mai (luni) — Rusalii
1 iunie – Ziua Copilului
15 august — Adormirea Maicii Domnului
30 noiembrie — Sfântul Andrei
1 decembrie — Ziua Națională a României
25 decembrie, 26 decembrie — Crăciunul

Vacanțe școlare 2017-2018
vacanța de iarnă (23 decembrie 2017 – 14 ianuarie 2018)
vacanța inter semestrială (3 – 11 februarie 2018)
vacanța de primăvară (31 martie – 10 aprilie 2018)
vacanța de vară (16 iunie – 9 septembrie 2018)

Citate (1)

There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.

        — C.A.R. Hoare, The 1980 ACM Turing Award Lecture

The computing scientist’s main challenge is not to get confused by the complexities of his own making.

        — E. W. Dijkstra

The cheapest, fastest, and most reliable components are those that aren’t there.

        — Gordon Bell

One of my most productive days was throwing away 1000 lines of code.

        — Ken Thompson

When in doubt, use brute force.

        — Ken Thompson

Deleted code is debugged code.

        — Jeff Sickel

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

        — Brian W. Kernighan and P. J. Plauger in The Elements of Programming Style.

The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.

        — Brian W. Kernighan, in the paper Unix for Beginners (1979)

Controlling complexity is the essence of computer programming.

        — Brian Kernighan

Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defence against complexity.

        — David Gelernter

UNIX was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things.

        — Doug Gwyn

If you’re willing to restrict the flexibility of your approach, you can almost always do something better.

        — John Carmack

And folks, let’s be honest. Sturgeon was an optimist. Way more than 90% of code is crap.

        — viro []

A data structure is just a stupid programming language.

        — R. Wm. Gosper

The essence of XML is this: the problem it solves is not hard, and it does not solve the problem well.

        — Phil Wadler, POPL 2003

A program that produces incorrect results twice as fast is infinitely slower.

        — John Osterhout

Life is too short to run proprietary software.

        — Bdale Garbee

I had a nightmare once in which I a had convinced a friend how wonderful C++ is. A while later he came back., and he was mad.[sic]

        — Robin Rosenberg []

XML is like violence: if it doesn’t solve your problem, you aren’t using enough of it.

        — Heard from someone working at Microsoft

XML is like violence. Sure, it seems like a quick and easy solution at first, but then it spirals out of control into utter chaos.

        — Sarkos in reddit

Threads [and] signals [are] a platform-dependant trail of misery, despair, horror and madness.

        — Anthony Baxter []

Computers are about making life easier in much the same way that the Republican party is about fiscal responsibility and a culture of life.

        — mister_borogove []

All software sucks, be it open-source [or] proprietary. The only question is what can be done with particular instance of suckage, and that’s where having the source matters.

        — viro []

Mathematicians stand on each others’ shoulders and computer scientists stand on each others’ toes.

        — Richard Hamming

It’s not that Perl programmers are idiots, it’s that the language rewards idiotic behavior in a way that no other language or tool has ever done.

        — Erik Naggum, comp.lang.lisp

Out-of-band == should be on a separate channel…

        — Al Viro

It’s a curious thing about our industry: not only do we not learn from our mistakes, we also don’t learn from our successes.

        — Keith Braithwaite

Ethernet always wins.

        — Andy Bechtolsheim

The central enemy of reliability is complexity.

        — Geer et al.

Simplicity is prerequisite for reliability.

        — Edsger W. Dijkstra

Beware of “the real world”. A speaker’s apeal to it is always an invitation not to challenge his tacit assumptions.

        — Edsger W. Dijkstra

Unix is a junk OS designed by a committee of PhDs.

        — Dave Cutler

i’ve wondered whether Linux sysfs should be called syphilis

        — forsyth

A program is portable to the extent that it can be easily moved to a new computing environment with much less effort than would be required to write it afresh.

        — W. Stan Brown []

Programming graphics in X is like finding the square root of PI using Roman numerals.

        — Henry Spencer

Forward thinking was just the thing that made Multics what it is today.

        — Erik Quanstrom

The Eight Fallacies of Distributed Computing

Essentially everyone, when they first build a distributed application, makes the following eight assumptions. All prove to be false in the long run and all cause big trouble and painful learning experiences.

The network is reliable
Latency is zero
Bandwidth is infinite
The network is secure
Topology doesn’t change
There is one administrator
Transport cost is zero
The network is homogeneous
        — Peter Deutsch

From: (Russ Cox)
Subject: Re: [9fans] design clairvoyance & the 9 way
Date: Thu, 8 May 2003 04:05:31 GMT

> What does tomorrow’s unix look like?

I’m confident that tomorrow’s Unix will look like today’s Unix, only cruftier.

You want to make your way in the CS field? Simple. Calculate rough time of amnesia (hell, 10 years is plenty, probably 10 months is plenty), go to the dusty archives, dig out something fun, and go for it. It’s worked for many people, and it can work for you.

        — Ron Minnich

From: Alexander Viro
Subject: Re: ANNOUNCE: Linux Kernel ORB: kORBit
Date: Sat, 9 Dec 2000 00:39:36 -0500 (EST)


Yeah… „Infinitely extendable API” and all such. Roughly translated
as „we can’t live without API bloat”. Frankly, judging by the GNOME
codebase people who designed the thing[GNOME] are culturally incompatible with
> What’s wrong with perl?

It combines all the worst aspects of C and Lisp: a billion different
sublanguages in one monolithic executable.  It combines the power of
C with the readability of PostScript.

> To me perl is the triumph of utalitarianism.

So are cockroaches.  So is `sendmail’.
        — jwz []

From: ron minnich
Subject: [9fans] microkernels

are they the O-O of the OS world? Always the promises …

Subject: Re: BK, deltas, snapshots and fate of -pre…
From: Alexander Viro (


Sigh… When it comes to software there are three systems of beliefs.
One of them:

    * Thou shalt know by your heart that all software sucks.
    * Beware of those who say that their software does not suck, for they
      are either fools or liars.
    * Beware of those who give you garments and do not allow to mend them,
      for sooner or later thou shalt find what needs mending.
    * But beware also of those who give you badly rotten garments and say
      „Thou shalt prefer that above everything, for thou art allowed to
      mend it”.
    * Thou shalt not treat software as a living being, for it is not one.
    * Choose a license of thine liking for sofware thou writest and do not
      blame those who choose differently for software they write.
    * Know when to say „It can be mended, I shalt do that” and when to
      say „It is rotten beyond repair”.
    * Choose free over non-free when it is better or when thou art willing
      to fix what is broken.
    * When shit happens, think how to fix it.


    * All software wants to be free
    * Thou shalt not use non-free software
    * Thou shalt not mention non-free software
    * Thou shalt make all thine software free
    * Thou shalt choose free above working, even if free one is broken
      beyond repair
    * When shit happens, add new features

and the last one:

    * Our 3133t! K3wl! Software! Does Not Suck!!!
    * Always choose our software above everything else
    * When shit happens, we add new features

If you happen to believe in second variant, you have my condolence as
long as you don’t force your beliefs on everybody else. If you choose
to emulate door-to-door pests^H^H^H^Hreachers – don’t expect to be
treated differently.
People do have a right to put their code under whatever license they like. Now, I won’t use the stuff I don’t have a source for unless I have exceptionally good reason to believe that authors of that stuff are among the few percents of programmers who can find their arse without outside help. But that has nothing to do with licensing or any moral considerations and everything to the fact that I know what kind of crap most of the software is.

        — Al Viro on linux-kernel

Linus Torvalds wrote:
> Ehh.. Telling people „don’t do that” simply doesn’t work. Not if they can
> do it easily anyway. Things really don’t get fixed unless people have a
> certain pain-level to induce it to get fixed.

Umm… How about the following:  you hit delete on patches that introduce
new ioctls, I help to provide required level of pain.  Deal?
        — Al Viro on linux-kernel

James Simmons wrote:
> Crap can work. Given enough thrust pigs will fly, but it’s not necessary a
> good idea.                                 [ Alexander Viro on linux-kernel ]

Watch the attributions.

With sufficient thrust, pigs fly just fine.
However, this is not necessarily a good idea.
It is hard to be sure where they are going to land,
and it could be dangerous sitting under them as they fly overhead.
        From RFC1925, R Callon, 1996.
        — Al Viro on linux-kernel

In the same world where Vomit-Making System is elegant, SGI “designs” are and NT is The Wave Of Future™. Pardon me, but I’ll stay in our universe and away from the drugs of such power.

        — Al Viro on linux-kernel

> > Or even XML. Ouch! No need to throw things at me!
> It seems they would be thrown! XML in kernel is too much. OpenOffice and

They won’t be thrown.  They will be slowly driven under the nails, so that
victim could experience the joy equal to that of dealing with XML.
        — Alexander Viro on linux-kernel

A Professor of Computer Science gave a paper on how he uses Linux to teach his undergraduates about operating systems. Someone in the audience asked why use Linux rather than Plan 9?’ and the professor answered:Plan 9 looks like it was written by experts; Linux looks like something my students could aspire to write’.

Computer: Your nominators and endorsers for the Kanai Award consistently characterized your work as simple yet powerful. How do you discover such powerful abstractions?

Ken Thompson: It is the way I think. I am a very bottom-up thinker. If you give me the right kind of Tinker Toys, I can imagine the building. I can sit there and see primitives and recognize their power to build structures a half mile high, if only I had just one more to make it functionally complete. I can see those kinds of things.

The converse is true, too, I think. I can’t from the building imagine the Tinker Toys. When I see a top-down description of a system or language that has infinite libraries described by layers and layers, all I just see is a morass. I can’t get a feel for it. I can’t understand how the pieces fit; I can’t understand something presented to me that’s very complex. Maybe I do what I do because if I built anything more complicated, I couldn’t understand it. I really must break it down into little pieces.

if you’re capable of understanding `finalised virtual hyperstationary factory class’, remembering the Java class hierarchy, and all the details of the Java Media Framework, you are (a) a better man than i am (b) capable of filling your mind with large chunks of complexity, so concurrent programming should be simple by comparison. go for it.

ps. i made up the hyperstationary, but then again, it’s probably a design pattern.

        — forsyth

At first I hoped that such a technically unsound project would collapse but I soon realized it was doomed to success. Almost anything in software can be implemented, sold, and even used given enough determination. There is nothing a mere scientist can say that will stand against the flood of a hundred million dollars. But there is one quality that cannot be purchased in this way -and that is reliability. The price of reliability is the pursuit of the utmost simplicity. It is a price which the very rich find most hard to pay.

        — C.A.R. Hoare

 Vacuumware: n, software which was written specifically to fill a void in
 the industry, especially software which is successful more due to how well
 it fills that void than due to anything else, like usability or utility.
I believe it may have been Dennis Ritchie who said (about X) “Sometimes when you fill a vacuum, it still sucks.” X is a prime example of vacuumware, and in fact inspired the term.


I remarked to Dennis [Ritchie] that easily half the code I was writing in Multics was error recovery code. He said, “We left all that stuff out [of Unix]. If there’s an error, we have this routine called panic, and when it is called, the machine crashes, and you holler down the hall, ‘Hey, reboot it.’”

        — Tom Van Vleck []

RMS is to Unix, like Hitler [was] to Nietzsche.

        — Federico Benavento

Unix is simple. It just takes a genius to understand its simplicity.

        — Dennis Ritchie

Most xml i’ve seen makes me think i’m dyslexic. it also looks constipated, and two health problems in one standard is just too much.

        — Charles Forsyth

PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil perpetrated by skilled but perverted professionals.

OAuth is the best that the wrong way of doing things can provide.

        — Mike Stay []

This ‘users are idiots, and are confused by functionality’ mentality of Gnome is a disease. If you think your users are idiots, only idiots will use it.

        — Linus

{Ex-Cyber} some part of me desperately wants to believe that XML-RPC is some kind of elaborate joke, like a cross between Discordianism and IP Over Avian Carriers

The only places for icons is in a church, a burning church at that.

        — mhat

The key to performance is elegance, not battalions of special cases.

        — Jon Bentley and Doug McIlroy

Just because the standard provides a cliff in front of you, you are not necessarily required to jump off it.

        — Norman Diamond

Are you quite sure that all those bells and whistles, all those wonderful facilities of your so called powerful programming languages, belong to the solution set rather than the problem set?

        — Edsger W. Dijkstra

Measuring programming progress by lines of code is like measuring aircraft building progress by weight.

        — Bill Gates

The object-oriented model makes it easy to build up programs by accretion. What this often means, in practice, is that it provides a structured way to write spaghetti code.

        — Paul Graham

First, solve the problem. Then, write the code.

        — John Johnson

Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.

        — Alan Kay

Correctness is clearly the prime quality. If a system does not do what it is supposed to do, then everything else about it matters little.

        — Bertrand Meyer

Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges and it causes end-user and administrator frustration.

        — Ray Ozzie

If the designers of X Windows built cars, there would be no fewer than five steering wheels hidden about the cockpit, none of which followed the same principles – but you’d be able to shift gears with your car stereo. Useful feature that.

        — Marcus J. Ranum, DEC

A language that doesn’t have everything is actually easier to program in than some that do.

        — Dennis M. Ritchie

Mostly, when you see programmers, they aren’t doing anything. One of the attractive things about programmers is that you cannot tell whether or not they are working simply by looking at them. Very often they’re sitting there seemingly drinking coffee and gossiping, or just staring into space. What the programmer is trying to do is get a handle on all the individual and unrelated ideas that are scampering around in his head.

        — Charles M. Strauss

Haskell is faster than C++, more concise than Perl, more regular than Python, more flexible than Ruby, more typeful than C#, more robust than Java, and has absolutely nothing in common with PHP.

        — Autrijus Tang

You can’t trust code that you did not totally create yourself.

        — Ken Thompson

Object-oriented design is the roman numerals of computing.

        — Rob Pike

Not only is UNIX dead, it’s starting to smell really bad.

        — Rob Pike circa 1991

{ajh} I always viewed HURD development like the Special Olympics of free software.

cat came back from Berkeley waving flags

        — Rob Pike

We have persistant(sic) objects, they’re called files.

        — Ken Thompson

If you want to go somewhere, goto is the best way to get there.

        — ken

The X server has to be the biggest program I’ve ever seen that doesn’t do anything for you.

        — Ken Thompson

A smart terminal is not a smartass terminal, but rather a terminal you can educate.

        — Rob Pike

Simplicity is the ultimate sophistication.

        — Leonardo da Vinci

Increasingly, people seem to misinterpret complexity as sophistication, which is baffling—the incomprehensible should cause suspicion rather than admiration. Possibly this trend results from a mistaken belief that using a somewhat mysterious device confers an aura of power on the user.

        — Niklaus Wirth

Compatibility means deliberately repeating other people’s mistakes.

        — David Wheeler

[Like programmers] prostitutes also think they all suck.

And both, programmers and prostitutes, are right: they suck. The big difference is that prostitutes got the term “user-friendly” right.

        — yiyus []

The Purpose of Computing is Insight, Not Numbers.

        — This is the motto of the book Numerical Methods for Scientists and Engineers by Richard Hamming.

Every methodology I’ve come across has, at its kernel, a very small section labelled “do magic here”.

        — Katie []

I recommend the linux people to call it “GNU / Linux” instead of “GNU/Linux”. never hurts to distance yourself from GNU.

        — mjl on #plan9-social

For the sinner deserves not life but death, according to the disk devices. For example, start with Plan 9, which is free of sin, the case is different from His perspective.

        — Mark V. Shaney

Trying to express implicit and fuzzy relationships in ways that are explicit and sharp doesn’t clarify the meaning, it destroys it.

        — Clay Shirky []

Unix has retarded OS research by 10 years and linux has retarded it by 20.

        — Dennis Ritchie as quoted by by Boyd Roberts in 9fans.

Any program that tries to be so generalized and configurable that it could handle any kind of task will either fall short of this goal, or will be horribly broken.

        — Chris Wenham

Nobody who uses XML knows what they are doing.

        — Chris Wenham

Debugging time increases as a square of the program’s size.

        — Chris Wenham

I guess it’s like smart compiler for dumb people, and dumb compiler for smart people. But then smart compiler gets too smart.. so neither dumb nor smart people can understand it.

        — fgb on compilers and gcc

in aeronautical circles, it’s said that the f4 is proof that given enough thrust even a brick will fly.

linux is the f4 of computing?

        — erik quanstrom

It seems to me more like you use foresight and pessimism to avoid getting into situations where you need to demonstrate exceptional programming ability.

        — mister_borogove speaking to jwz []

Comparing a computer language to a human language is like comparing an operating system kernel to a popcorn kernel.

        — kryptkpr []

Hofstadter’s Law: It always takes longer than you expect, even when you take into account Hofstadter’s Law.

My definition of an expert in any field is a person who knows enough about what’s really going on to be scared.

        — P. J. Plauger, Computer Language, March 1983

Every language has an optimization operator. In C++ that operator is ‘//’

Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you’ll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don’t think about some big picture and fancy design. If it doesn’t solve some fairly immediate need, it’s almost certainly over-designed. And don’t expect people to jump in and help you. That’s not how these things work. You need to get something half-way useful first, and then others will say “hey, that almost works for me”, and they’ll get involved in the project.

        — Linus Torvalds

Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why.

A computer is a stupid machine with the ability to do incredibly smart things, while computer programmers are smart people with the ability to do incredibly stupid things. They are, in short, a perfect match

Q: What is the most often-overlooked risk in software engineering?

A: Incompetent programmers. There are estimates that the number of programmers needed in the U.S. exceeds 200,000. This is entirely misleading. It is not a quantity problem; we have a quality problem. One bad programmer can easily create two new jobs a year. Hiring more bad programmers will just increase our perceived need for them. If we had more good programmers, and could easily identify them, we would need fewer, not more.

        — David Parnas

Well over half of the time you spend working on a project (on the order of 70 percent) is spent thinking, and no tool, no matter how advanced, can think for you. Consequently, even if a tool did everything except the thinking for you – if it wrote 100 percent of the code, wrote 100 percent of the documentation, did 100 percent of the testing, burned the CD-ROMs, put them in boxes, and mailed them to your customers – the best you could hope for would be a 30 percent improvement in productivity. In order to do better than that, you have to change the way you think.

The best code is no code at all.

Before software can be reusable it first has to be usable.

Old programs read like quiet conversations between a well-spoken research worker and a well-studied mechanical colleague, not as a debate with a compiler. Who’d have guessed sophistication bought such noise?

        — Dick Gabriel

This is one of the reasons Lisp doesn’t get anywhere. The trend to promote features so clever that you stop thinking about your problem and start thinking about the clever features. CL’s loop is so powerful that people invented functional programming so that they’d never have to use it.

        — G_Morgan in reddit []

More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason – including blind stupidity.

        — William A. Wulf

There is not now, nor has there ever been, nor will there ever be, any programming language in which it is the least bit difficult to write bad code.

Program testing can be a very effective way to show the presence of bugs, but is hopelessly inadequate for showing their absence.

        — Edsger W. Dijkstra

The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.

        — Edsger W. Dijkstra

Parkinson’s Law Otherwise known as the law of bureaucracy, this law states that…

“Work expands so as to fill the time available for its completion.”

It has been said that the great scientific disciplines are examples of giants standing on the shoulders of other giants. It has also been said that the software industry is an example of midgets standing on the toes of other midgets.

        — Alan Cooper, About Face

Code never lies, comments sometimes do.

        — Ron Jeffries

What I cannot build, I do not understand.

        — Richard Feynman

If we’d asked the customers what they wanted, they would have said “faster horses”

        — Henry Ford

I (…) am rarely happier than when spending an entire day programming my computer to perform automatically a task that would otherwise take me a good ten seconds to do by hand.

        — Douglas Adams, Last Chance to See

Programming is not a zero-sum game. Teaching something to a fellow programmer doesn’t take it away from you. I’m happy to share what I can, because I’m in it for the love of programming. The Ferraris are just gravy, honest!

        — John Carmack, from Michael Abrash’ Graphics Programming Black Book.

I have found that the reason a lot of people are interested in artificial intelligence is the same reason a lot of people are interested in artificial limbs: they are missing one.

        — David Parnas

Once you’ve dressed and before you leave the house, look in the mirror and take at least one thing off.

        — Coco Chanel

When I am working on a problem I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong.

        — R. Buckminster Fuller

I have always found that plans are useless, but planning is indispensable.

        — Dwight D. Eisenhower

I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.

        — Linus Torvalds

Software is like entropy. It is difficult to grasp, weighs nothing, and obeys the second law of thermodynamics; i.e. it always increases.

A fool with a tool is a more dangerous fool.

        — u.

The best things are simple, but finding these simple things is not simple.

        — bill []

Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them.

        — Laurence J. Peter

The most amazing achievement of the computer software industry is its continuing cancellation of the steady and staggering gains made by the computer hardware industry.

        — Henry Petroski

Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why.

Once a new technology starts rolling, if you’re not part of the steamroller, you’re part of the road.

        — Stewart Brand

Einstein argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer.

        — Fred Brooks

… the cost of adding a feature isn’t just the time it takes to code it. The cost also includes the addition of an obstacle to future expansion. … The trick is to pick the features that don’t fight each other.

        — John Carmack

With diligence it is possible to make anything run slowly.

        — Tom Duff

Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius – and a lot of courage – to move in the opposite direction.

        — Albert Einstein

A foolish consistency is the hobgoblin of little minds, adored by little statesmen and philosophers and divines.

        — Ralph Waldo Emerson

For a sucessful technology, honesty must take precedence over public relations for nature cannot be fooled.

        — Richard Feynman

Comparing to another activity is useful if it helps you formulate questions, it’s dangerous when you use it to justify answers.

        — Martin Fowler

Simplicity carried to the extreme becomes elegance.

        — Jon Franklin

Software obeys the law of gaseous expansion – it continues to grow until memory is completely filled.

        — Larry Gleason

The unavoidable price of reliability is simplicity.

        — C.A.R. Hoare

The ability to simplify means to eliminate the unnecessary so that the necessary may speak.

        — Hans Hoffmann

Trying to outsmart a compiler defeats much of the purpose of using one.

        — Kernighan and Plauger, The Elements of Programming Style.

You’re bound to be unhappy if you optimize everything.

        — Donald Knuth

A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.

        — Leslie Lamport

But in our enthusiasm, we could not resist a radical overhaul of the system, in which all of its major weaknesses have been exposed, analyzed, and replaced with new weaknesses.

        — Bruce Leverett, Register Allocation in Optimizing Compilers

The proper use of comments is to compensate for our failure to express ourself in code.

        — Robert C. MartinClean Code

If you want a product with certain characteristics, you must ensure that the team has those characteristics before the product’s development.

        — Jim McCarthy and Michele McCarthy – Software for your Head

You can’t have great software without a great team, and most software teams behave like dysfunctional families.

        — Jim McCarthy

Testing by itself does not improve software quality. Test results are an indicator of quality, but in and of themselves, they don’t improve it. Trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often. What you eat before you step onto the scale determines how much you will weigh, and the software development techniques you use determine how many errors testing will find. If you want to lose weight, don’t buy a new scale; change your diet. If you want to improve your software, don’t test more; develop better.

        — Steve McConnell Code Complete

Correctness is clearly the prime quality. If a system does not do what it is supposed to do, then everything else about it matters little.

        — Bertrand Meyer

Incorrect documentation is often worse than no documentation.

        — Bertrand Meyer

Software sucks because users demand it to.

        — Nathan Myhrvold

Unformed people delight in the gaudy and in novelty. Cooked people delight in the ordinary.

        — Erik Naggum

There’s no sense being exact about something if you don’t even know what you’re talking about.

        — John von Neumann

That’s the thing about people who think they hate computers. What they really hate is lousy programmers.

        — Larry Niven and Jerry Pournelle Oath of Fealty

Search all the parks in all your cities; you’ll find no statues of committees.

        — David Ogilvy

Good code is short, simple, and symmetrical – the challenge is figuring out how to get there.

        — Sean Parent

Fashion is something barbarous, for it produces innovation without reason and imitation without benefit.

        — George Santayana

Forgive him, for he believes that the customs of his tribe are the laws of nature!

        — G.B. Shaw

The only sin is to make a choice without knowing you are making one.

        — Jonathan Shewchuk

It is a painful thing to look at your own trouble and know that you yourself and no one else has made it.

        — Sophocles, Ajax

The primary duty of an exception handler is to get the error out of the lap of the programmer and into the surprised face of the user. Provided you keep this cardinal rule in mind, you can’t go far wrong.

        — Verity Stob

A notation is important for what it leaves out.

        — Joseph Stoy

An organisation that treats its programmers as morons will soon have programmers that are willing and able to act like morons only.

        — Bjarne Stroustrup

I have always wished that my computer would be as easy to use as my telephone. My wish has come true. I no longer know how to use my telephone.

        — Bjarne Stroustrup

The most important single aspect of software development is to be clear about what you are trying to build.

        — Bjarne Stroustrup

The best is the enemy of the good.

        — Voltaire

As soon as we started programming, we found to our surprise that it wasn’t as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.

        — Maurice Wilkes discovers debugging, 1949

Software gets slower faster than hardware gets faster.

        — Wirth’s law

The purpose of software engineering is to control complexity, not to create it.

        — Dr. Pamela Zave

I object to doing things that computers can do.

        — Olin Shivers

Simplicity – the art of maximizing the amount of work not done – is essential.

        — From the Agile Manifesto.

When you want to do something differently from the rest of the world, it’s a good idea to look into whether the rest of the world knows something you don’t.

Perilous to us all are the devices of an art deeper than that which we possess ourselves.

        — J.R.R. Tolkien

Complexity has nothing to do with intelligence, simplicity does.

        — Larry Bossidy

If it doesn’t work, it doesn’t matter how fast it doesn’t work.

        — Mich Ravera

Simplicity is hard to build, easy to use, and hard to charge for. Complexity is easy to build, hard to use, and easy to charge for.

        — Chris Sacca

… what society overwhelmingly asks for is snake oil. Of course, the snake oil has the most impressive names — otherwise you would be selling nothing — like “Structured Analysis and Design”, “Software Engineering”, “Maturity Models”, “Management Information Systems”, “Integrated Project Support Environments” “Object Orientation” and “Business Process Re-engineering” (the latter three being known as IPSE, OO and BPR, respectively).

        — Edsger W. Dijkstra — EWD 1175: The strengths of the academic enterprise [Today we could add ‘Extreme Programming’, ‘Agile Software Development’ and many more.]

They won’t tell you that they don’t understand it; they will happily invent their way through the gaps and obscurities.

        — V.A. Vyssotsky on software programmers and their views on specifications

In software, the most beautiful code, the most beautiful functions, and the most beautiful programs are sometimes not there at all.

        — Jon Bentley, Beautiful Code (O’Reilly), “The Most Beautiful Code I Never Wrote”

Computers make it easier to do a lot of things, but most of the things they make it easier to do don’t need to be done.

        — Andy Rooney

True glory consists in doing what deserves to be written; in writing what deserves to be read.

        — Pliny the Elder

The whole point of getting things done is knowing what to leave undone.

        — Oswald Chambers

Q: What is the difference between an object methodologist and a terrorist?
A: You can negotiate with the terrorist.
One Page Principle: A specification that will not fit on one page of 8.5×11 inch paper cannot be understood.

        — Mark Ardis

The whole HTML validation exercise is questionable, but validating as XHTML is flat-out masochism. Only recommended for those that enjoy pain. Or programmers. I can’t always tell the difference.

        — Jeff Atwood

When in doubt, leave it out.

        — Joshua Bloch

No code is faster than no code.

        — merb motto

As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications.

        — Dave Parnas

OOP is to writing a program, what going through airport security is to flying.

        — Richard Mansfield

The problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.

        — Joe Armstrong

As a programmer, it is your job to put yourself out of business. What you do today can be automated tomorrow.

        — Doug McIlroy

IDE features are language smells.

        — Reg Braithwaite

PHP is [the] Sarah Palin of programming languages.

        — killerstorm []

A good way to have good ideas is by being unoriginal.

        — Bram Cohen

The comment about developers making work for themselves is also spot on. I answer a lot of programming questions, and the questions are always asked because the programmer has reached the end of a twisty maze of his own creation. Turn around, walk, spin around, and try again. You’ll find a better solution.

        — Jonathan Rockway in a Hacker News comment

a program is like a poem: you cannot write a poem without writing it. Yet people talk about programming as if it were a production process and measure “programmer productivity”in terms of „number of lines of code produced”.In so doing they book that number on the wrong side of the ledger: We should always refer to”the number of lines of code spent”.

        — E. W. Dijkstra

it’s an old observation that in order to be useful hypothesis has to be falsifiable. Similar principle applies to design proposals – to be worth of any attention they have to be detailed enough to allow meaningful criticism.

What you have done so far is equivalent to coming to a hospital and saying “aseptic good, infection bad”. That would get pretty much the same reactions, varying from “yes, we know” to “do you have any specific suggestions?” and “stop wasting our time”[1].

In short: get lost and do not come back until you have something less vague.

[1] If you are insistent enough, you might also earn a free referral to psychiatrist.

        — Al Viro in lkml

These are some of the types of problems engineers at REAL software shops have to solve to be able to ship REAL product for REAL money. If you haven’t HAD to produce code like this yourself at some point in your carrier then you’ve lived a sheltered life.

Its disingenuous for you to get on your ivory tower to point and laugh.

Well, you see, after spending years cleaning up the excrements of self-styled “REAL engineers” it’s either get on the tower to point and laugh or get on the tower to point and shoot.

        — Al Viro in lkml

‘Layered approach’ is not a magic incantation to excuse any bit of snake oil. Homeopathic remedies might not harm (pure water is pure water), but that’s not an excuse for quackery. And frankly, most of the ‘security improvement’ crowd sound exactly like woo-peddlers.

        — Al Viro

The trick is to fix the problem you have, rather than the problem you want.

        — Bram Cohen

Security is a state of mind.

        — NSA Security Manual

Never attribute to funny hardware that which can be adequately explained by broken locking.

        — Erik Quanstrom

Things which any idiot could write usually have the quality of having been written by an idiot.

        — Bram Cohen

In programming the hard part isn’t solving problems, but deciding what problems to solve.

        — Paul Graham

[POSIX] unifying unix? more like formalizing historical design mistakes made by major vendors…

        — ttyv0

Do I really want to be using a language where memoize is a PhD-level topic?

        — Mark Engelberg about Haskell

The beauty of small and simple code is that you can bend or break the rules as long it stays small and simple. Rules allow people to write code without thinking. [And when] you dont think […] you get bloated code that just concatenates stupid patterns.

People stop thinking and questioning [and] then its just worshipping some rules without any pruporse.

        — Cinap Lenrek

If you start programming by learning perl you will just become a menace to your self and others.

        — egoncasteel

When there is no type hierarchy you don’t have to manage the type hierarchy.

        — Rob Pike

Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.

        — RnRS

Software efficiency halves every 18 months, compensating Moore’s Law.

        — May’s Law

So-called “smart” software usually is the worst you can imagine.

        — Christian Neukirchen

Such is modern computing: everything simple is made too complicated because it’s easy to fiddle with; everything complicated stays complicated because it’s hard to fix.

        — Rob Pike

It is not that uncommon for the cost of an abstraction to outweigh the benefit it delivers. Kill one today!

        — John Carmack

So much complexity in software comes from trying to make one thing do two things.

        — Ryan Singer

The standard rule is, when you’re in a hole, stop digging; that seems not to apply [to] software nowadays.

        — Ron Minnich

Languages that try to disallow idiocy become themselves idiotic.

        — Rob Pike

uriel: When I read “OMG (Object Management Group)” I think “Oh My God!”.
gobongo: Fitting because whenever someone suggests I use UML I think “Oh My God (is this guy on crack?)!”.
There’s nothing in computing that can’t be broken by another level of indirection.

        — Rob Pike

A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work.

        — John Gall

“design patterns” are concepts used by people who can’t learn by any method except memorization, so in place of actual programming ability, they memorize “patterns” and throw each one in sequence at a problem until it works

        — Dark_Shikari

One of the big lessons of a big project is you don’t want people that aren’t really programmers programming, you’ll suffer for it!

        — John Carmack

Premature optimization, that’s like a sneeze. Premature abstraction is like ebola; it makes my eyes bleed.

        — Christer Ericson

Premature optimizations can be troublesome to revert, but premature generalizations are often near impossible.

        — Emil Persson

Premature optimization, that’s like a fart. Premature abstraction is like taking a dump on another developer’s desk.

        — Chris Eric

Normal people believe that if it ain’t broke, don’t fix it. Engineers believe that if it ain’t broke, it doesn’t have enough features yet.

        — Scott Adams

If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime.

        — David Leinweber (NOWS)

And don’t EVER make the mistake that you can design something better than what you get from ruthless massively parallel trial-and-error with a feedback cycle. That’s giving your intelligence much too much credit.

        — Linus (

Linux – Instalare server FTP pentru Tinkerboar Armbian

Instalare Server FTP:

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install vsftpd -y

Configurare de baza:

sudo nano /etc/vsftpd.conf

Salvare: Ctrl+X, Y și Enter

Dezactivare user root:

sudo nano /etc/ftpusers

Salvare: Ctrl+X, Y și Enter

Restart server FTP:

sudo service vsftpd restart

Linux – Comenzile de bază

Linux Commands – Command Description

cat [filename] Display file’s contents to the standard output device
(usually your monitor).
cd /directorypath Change to directory.
chmod [options] mode filename Change a file’s permissions.
chown [options] filename Change who owns a file.
clear Clear a command line screen/window for a fresh start.
cp [options] source destination Copy files and directories.
date [options] Display or set the system date and time.
df [options] Display used and available disk space.
du [options] Show how much space each file takes up.
file [options] filename Determine what type of data is within a file.
find [pathname] [expression] Search for files matching a provided pattern.
grep [options] pattern [filesname] Search files or output for a particular pattern.
kill [options] pid Stop a process. If the process refuses to stop, use kill -9 pid.
less [options] [filename] View the contents of a file one page at a time.
ln [options] source [destination] Create a shortcut.
locate filename Search a copy of your filesystem for the specified
lpr [options] Send a print job.
ls [options] List directory contents.
man [command] Display the help information for the specified command.
mkdir [options] directory Create a new directory.
mv [options] source destination Rename or move file(s) or directories.
passwd [name [password]] Change the password or allow (for the system administrator) to
change any password.
ps [options] Display a snapshot of the currently running processes.
pwd Display the pathname for the current directory.
rm [options] directory Remove (delete) file(s) and/or directories.
rmdir [options] directory Delete empty directories.
ssh [options] user@machine Remotely log in to another Linux machine, over the network.
Leave an ssh session by typing exit.
su [options] [user [arguments]] Switch to another user account.
tail [options] [filename] Display the last n lines of a file (the default is 10).
tar [options] filename Store and extract files from a tarfile (.tar) or tarball (.tar.gz or .tgz).
top Displays the resources being used on your system. Press q to
touch filename Create an empty file with the specified name.
who [options] Display who is logged on.