$ for i in `nmcli c | grep "never" | grep -o -- "[0-9a-fA-F]\{8\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{12\}"` ; do nmcli connection delete uuid $i ; done
$ nmcli connection
NAME UUID TYPE TIMESTAMP-REAL
Lobby 0f91bb0d-e2be-4f8a-a00e-457c8bdaf9a9 802-11-wireless never
TTH-Zentral 2d3ddca9-772f-47d9-99a1-1559640b0f25 802-11-wireless never
attwifi 6be3c5aa-fc85-415c-96e4-5583b25c23bb 802-11-wireless never
uni-koblenz 8a0d1d51-672c-4ded-ad92-18e27b8215df 802-11-wireless Do 16 Apr 2015 18:11:45 CEST
greenscafe 22dd0f8e-be2d-4402-af82-7716222add75 802-11-wireless never
WLAN-2DD138 5308ed9e-5def-430e-85f4-e1eb01426927 802-11-wireless never
Fairfield_GUEST b72080e0-c5dd-492a-b8a3-017fe7d6099c 802-11-wireless never
Hotel Sylter Hof d7c8fc6c-64e3-435f-b2c0-316c1f11ddf1 802-11-wireless never
TELENETHOTSPOT 1345bcda-26ab-4193-904c-088235d29873 802-11-wireless never
CHI_ECRC_2013 a316f6be-bb4c-4501-867b-6928f9f429ef 802-11-wireless never
AndroidAP5270 b5c5462c-072e-4e90-a3b2-def467562579 802-11-wireless never
hotel_harvey 7c6d1794-6d45-40aa-b7ac-f9a7f401d02e 802-11-wireless never
free-hotspot.com dc7351ce-ca6c-413e-ae8b-a82c2093525e 802-11-wireless never
PAT-WLAN 4662b075-9519-4f69-8ce9-b938ea8270c1 802-11-wireless never
dlink 5dab3493-cdd8-4d6c-a7a2-6def0836c2a5 802-11-wireless never
TTHKasse b9c2f9d9-aeda-454b-941b-bb1ccfc0ad9a 802-11-wireless never
BTOpenzone-B bede9d3a-9fc1-4dc2-9c75-0d2686c225f1 802-11-wireless never
MBTA_WIFI_Car0385_Box-068 17ac549c-574c-4bf4-a464-6b633f2a4ac3 802-11-wireless never
Wireless connection 1 17b18b79-411d-4d69-813d-6506f38b8ea5 802-11-wireless never
MBTA_WiFi_Car0620_Box-199 c36c572e-e469-4e86-a50f-87d6d68f4f7e 802-11-wireless never
*VIPARIS_WIFI 0593b927-644b-4604-a479-4fc652b6050d 802-11-wireless never
test 836af61a-8268-4a16-a5ab-036f3e0cf7e9 802-11-wireless So 15 Sep 2013 21:18:35 CEST
WL1A 46b6496f-6583-4306-a58f-4e4d2bdd5d50 802-11-wireless never
Hochhaus f6b80571-37d5-4bcd-b558-62084c61622b 802-11-wireless never
FreeWifi 379f9efd-b91d-433f-8ce2-209e4ed2099b 802-11-wireless never
NETCONNECT-6202 2f84b475-a852-49ac-a236-61b3f0bc9548 802-11-wireless never
stolteraa d789f49e-2643-4894-96a8-4e10ea3cbb69 802-11-wireless never
ALICE-WLAN28 17e4838f-bbaf-470c-bf24-9de948b42b00 802-11-wireless never
NAS QNAP ef6a08df-1c7c-48ba-b476-f3ff3b1e2669 802-3-ethernet Mi 15 Apr 2015 11:03:51 CEST
WLAN-8CA902 3046307e-69a3-4c99-89fb-b79f7f9ee24b 802-11-wireless Mi 01 Apr 2015 11:42:27 CEST
MfN-Guest 25d3765f-dcca-4f40-872a-8ffcfe307f25 802-11-wireless never
FRITZ!Box Fon WLAN 7360 7c428f50-078d-442a-9ba7-268853c888f0 802-11-wireless Mo 11 Feb 2013 23:39:08 CET
Arcor-362007-L 87a2d11c-3a3d-4b5e-a1b0-cc5b38916035 802-11-wireless Di 14 Apr 2015 17:42:33 CEST
Telekom_ICE 8763adcc-f27b-441f-9184-594128871351 802-11-wireless So 29 Mär 2015 19:56:35 CEST
IBMVISITOR 48227bb6-63e8-4a58-8b8f-1929f76d8ef2 802-11-wireless never
OWL 13ff2ed5-8ecf-4d67-b039-a3bc4cce56d9 802-11-wireless never
Parkhotel Kraehennest e763a256-4a2d-4813-b354-57ad8f642e2a 802-11-wireless never
EasyBox-AD3112 e4f342ae-d20b-4abc-9fe2-52b208d6b61b 802-11-wireless never
BTOpenzone 860cf4c0-45eb-4a57-a01e-cfd54933387f 802-11-wireless never
southshore 274cfaa8-2c08-4abc-bef3-3fd2608060b8 802-11-wireless never
annanet 06b3b3bc-a264-4d05-a848-3b5d6df9eed0 802-11-wireless never
shared 806c9806-fadc-472f-8460-318babbd38ea 802-3-ethernet Fr 10 Apr 2015 09:39:50 CEST
vidiu 3abf0848-b09c-457e-9c7a-958728f2c59f 802-11-wireless never
wlan 1 ad9e4a07-b66f-4f3f-8f6d-4f5a81b2ed54 802-11-wireless never
CITYHOTEL dec05243-06b6-4477-8813-0491b436f993 802-11-wireless never
eduroam f844713b-a726-4b5b-98a5-3b35411c4cf5 802-11-wireless never
Starlight-HotSpot 6842159f-94e9-4f5d-8a76-93b1f4c32912 802-11-wireless never
Dr_l)P35_21_22#342C5C e307b6e8-598b-4bd1-b47f-dc8a34ff12e0 802-11-wireless never
iPhone 5 9070ee1c-8ac1-4458-a590-cf241685b929 802-11-wireless never
Lummerland 7d2d4d89-9eb7-45c0-a963-a8a240e33100 802-11-wireless Mo 10 Feb 2014 22:35:03 CET
AndroidAP4089 ec201acc-9e6f-4c7b-9da8-6ed4539dde6c 802-11-wireless never
heartofgold 437e2b7d-5b76-4e3e-a101-698776293ede 802-11-wireless never
09FX09039648 e2cc4508-e18e-4c0c-a694-633ace5d095a 802-11-wireless never
WIRELESS_BEN_GURION_AIRPORT 8ff2846d-9e84-4175-8c4d-968e226e7a43 802-11-wireless never
Telekom 60aded97-f697-48c6-8070-91e1b786df82 802-11-wireless Mi 15 Apr 2015 00:14:14 CEST
Marriott_CONF a4ec2c22-8a31-46bb-a146-a02d8f7b2582 802-11-wireless never
TTH-Seminar4+5 23422256-0a4b-45b5-8394-43c92592564d 802-11-wireless never
FRITZ!Box 7330 SL a431f83e-6a73-4cf1-94ee-4409c19dfdb9 802-11-wireless Do 13 Feb 2014 18:45:48 CET
mycloud f3fcf1ae-eebb-4e37-a700-96035d0aea59 802-11-wireless never
ArcorWirelessLAN 428769c9-3dfc-43f0-a2dc-29f3c4ecb0fb 802-11-wireless never
TP-LINK_PocketAP_7329E2 a17a19b4-251e-41d7-a82e-1add52ec1317 802-11-wireless never
TTH-Taunus fbb24cae-c2aa-4057-be67-095b80604f5e 802-11-wireless never
BWI-WiFi 58e749f6-58e9-44fe-8528-6a1e3bacc88f 802-11-wireless never
uni vpn b28d76f8-57d2-4548-8959-9c47e189221e vpn never
Miri 74147f40-07c4-4e91-8a43-8c69bc733479 802-11-wireless never
wiew7 7193e045-9570-4d16-b4b6-d676fc19d05a 802-11-wireless never
ZurichAirport 0fe8cde1-de8b-48f9-9ca0-52ac129e9876 802-11-wireless never
mercure f3fbf40d-7c2b-4e6d-b5db-fce6888bb719 802-11-wireless never
HITRON-A600 501ac6d9-6912-46a1-9681-4a73e1009fe0 802-11-wireless never
HTC Portable Hotspot 61EF 3675cadc-251a-487c-8c4d-cf3747117f13 802-11-wireless never
FRITZ!Box 7312 a7d9b99d-63bc-4caa-b82c-1da9fec95cea 802-11-wireless never
o2-WLAN38 76a67dd7-3d50-4388-ba9f-07f52a328eca 802-11-wireless never
ALICE-WLAN36 e55d0ccd-7941-4da0-8ac8-99ed22adda49 802-11-wireless never
WEBPORTAL e2ce59eb-fa7d-4ece-88b7-bd0585a8d589 802-11-wireless never
FOSDEM 0cc3584b-1a5e-41fd-944e-df85f0a2d418 802-11-wireless never
BRITZ!Fox Fon WLAN 7360 SL fc70206c-04c8-4ae6-a0fd-7f769addf0b6 802-11-wireless never
Hotel Amsee3 f4ff9826-22d2-4f9b-91d9-8c63dc0f9bd4 802-11-wireless So 29 Mär 2015 11:56:21 CEST
ibis a348ed30-2fcf-4068-ba1c-176cdd9e7b10 802-11-wireless never
O2 Wifi 8935490d-313f-4fd0-b1fd-c78ab138af51 802-11-wireless never
FRITZ!Box Fon WLAN 7270 50d62587-5a48-4635-b30f-fbb1ded20455 802-11-wireless Di 30 Dez 2014 12:23:23 CET
Ambassador-Opera fdefea8c-d218-4632-bb07-b67ddb63f778 802-11-wireless never
HOTEL BB 05d9792c-6f9e-48a6-9c0c-6c03a9708954 802-11-wireless never
MBTA_WiFi_Car0353_Box-104 24a1527c-3083-44f3-8812-cacafb88cf7a 802-11-wireless never
theairline 54770eb9-78f2-4a3b-86cf-0e594a55c9f9 802-11-wireless never
republicansareontheirown 074ca340-643c-411e-95eb-d6e78f887fcf 802-11-wireless never
VPN/WEB 4a5f132b-81c2-49ba-8934-0257f98e5a54 802-11-wireless never
WLAN-6A1EA7 d2e80ec0-9bd3-4801-bada-65a695f7dc92 802-11-wireless never
Mahler 1d59c9a1-090c-4333-b2af-4154d5edd9c2 802-11-wireless never
guest-access c0ff03ac-a195-46a7-a507-5c1cf5c7f668 802-11-wireless never
Schlummerland 3d029511-2627-458a-a06b-e2c8e86d26b4 802-11-wireless never
MSDSL2 f2fbd0b7-26f6-4939-aece-c2c9d3621e40 802-11-wireless Do 16 Apr 2015 20:28:22 CEST
Urania 846e76bc-b96f-40aa-a30f-b6d2f84fd7f0 802-11-wireless never
CJDDSAWLN 55158cdb-07cc-4c02-8f44-a19ec2aeca06 802-11-wireless never
AndroidAP 375e398a-1b2e-4d2e-b4a5-4c05c904b109 802-11-wireless Fr 02 Jan 2015 16:29:17 CET
gesis-guest b9a00edd-9e28-4549-8f13-2634577c1276 802-11-wireless never
guests@WMDE 9aeccb7b-e629-4f0a-ab81-5300c7c433c0 802-11-wireless never
Wired connection 1 30ffcf0e-5181-41b0-b7d4-402de875889f 802-3-ethernet Mo 04 Mär 2013 15:10:44 CET
wlan a2f073a8-f0b0-4f58-a79a-2f22131016b1 802-11-wireless never
Wired connection 2 700ebb58-f049-4ec7-bac6-cd5801a975e2 802-3-ethernet Do 16 Apr 2015 18:11:44 CEST
Wired connection 3 bf70a943-9510-4883-ba64-a4bede826120 802-3-ethernet Do 16 Apr 2015 09:26:08 CEST
30 Min. Free Wi-Fi - Vodafone f5cd9efa-d735-41d5-a90f-ba83357f2e40 802-11-wireless never
WIKIMEDIA a40d0c35-8232-42db-b5a2-2118d69d6c41 802-11-wireless never
loganwifi 41e42d9c-efe9-45c5-9f8e-a2f5f441dd73 802-11-wireless never
WL3D efe99726-557a-4595-90e8-9c0fc3ee0c20 802-11-wireless never
m3connect 6ce7f634-5c44-4818-a055-cb32dca20738 802-11-wireless never
MIRI-PC_Network d1243377-9aed-4abf-8207-90b47840a48f 802-11-wireless never
innflux bd5be404-6a8b-402a-8a6f-856eaa054664 802-11-wireless never
LRTA24open2 dc95a098-107f-46c9-8d36-23cf575a319f 802-11-wireless never
LRTA24open3 5166cb9a-20ff-4d5c-b224-88f0b2276398 802-11-wireless never
Boingo Hotspot 954559e9-5f8c-4f9b-b2bc-36ff23f18d4a 802-11-wireless never
nmcli c | grep "never"
nmcli c | grep "never" | grep -o -- "[0-9a-fA-F]\{8\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{12\}"
Usage: nmcli connection { COMMAND | help }
COMMAND := { list | status | up | down | delete }
list [id | uuid ]
status [id | uuid | path ]
up id | uuid [iface ] [ap ] [--nowait] [--timeout ]
down id | uuid
delete id | uuid
nmcli connection delete uuid 954559e9-5f8c-4f9b-b2bc-36ff23f18d4a
$ for i in `nmcli c | grep "never" | grep -o -- "[0-9a-fA-F]\{8\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{12\}"` ; do echo $i ; done
0f91bb0d-e2be-4f8a-a00e-457c8bdaf9a9
2d3ddca9-772f-47d9-99a1-1559640b0f25
6be3c5aa-fc85-415c-96e4-5583b25c23bb
22dd0f8e-be2d-4402-af82-7716222add75
5308ed9e-5def-430e-85f4-e1eb01426927
b72080e0-c5dd-492a-b8a3-017fe7d6099c
d7c8fc6c-64e3-435f-b2c0-316c1f11ddf1
1345bcda-26ab-4193-904c-088235d29873
a316f6be-bb4c-4501-867b-6928f9f429ef
b5c5462c-072e-4e90-a3b2-def467562579
7c6d1794-6d45-40aa-b7ac-f9a7f401d02e
dc7351ce-ca6c-413e-ae8b-a82c2093525e
4662b075-9519-4f69-8ce9-b938ea8270c1
5dab3493-cdd8-4d6c-a7a2-6def0836c2a5
b9c2f9d9-aeda-454b-941b-bb1ccfc0ad9a
bede9d3a-9fc1-4dc2-9c75-0d2686c225f1
17ac549c-574c-4bf4-a464-6b633f2a4ac3
17b18b79-411d-4d69-813d-6506f38b8ea5
c36c572e-e469-4e86-a50f-87d6d68f4f7e
0593b927-644b-4604-a479-4fc652b6050d
46b6496f-6583-4306-a58f-4e4d2bdd5d50
f6b80571-37d5-4bcd-b558-62084c61622b
379f9efd-b91d-433f-8ce2-209e4ed2099b
2f84b475-a852-49ac-a236-61b3f0bc9548
d789f49e-2643-4894-96a8-4e10ea3cbb69
17e4838f-bbaf-470c-bf24-9de948b42b00
25d3765f-dcca-4f40-872a-8ffcfe307f25
48227bb6-63e8-4a58-8b8f-1929f76d8ef2
13ff2ed5-8ecf-4d67-b039-a3bc4cce56d9
e763a256-4a2d-4813-b354-57ad8f642e2a
e4f342ae-d20b-4abc-9fe2-52b208d6b61b
860cf4c0-45eb-4a57-a01e-cfd54933387f
274cfaa8-2c08-4abc-bef3-3fd2608060b8
06b3b3bc-a264-4d05-a848-3b5d6df9eed0
3abf0848-b09c-457e-9c7a-958728f2c59f
ad9e4a07-b66f-4f3f-8f6d-4f5a81b2ed54
dec05243-06b6-4477-8813-0491b436f993
f844713b-a726-4b5b-98a5-3b35411c4cf5
6842159f-94e9-4f5d-8a76-93b1f4c32912
e307b6e8-598b-4bd1-b47f-dc8a34ff12e0
9070ee1c-8ac1-4458-a590-cf241685b929
ec201acc-9e6f-4c7b-9da8-6ed4539dde6c
437e2b7d-5b76-4e3e-a101-698776293ede
e2cc4508-e18e-4c0c-a694-633ace5d095a
8ff2846d-9e84-4175-8c4d-968e226e7a43
a4ec2c22-8a31-46bb-a146-a02d8f7b2582
23422256-0a4b-45b5-8394-43c92592564d
f3fcf1ae-eebb-4e37-a700-96035d0aea59
428769c9-3dfc-43f0-a2dc-29f3c4ecb0fb
a17a19b4-251e-41d7-a82e-1add52ec1317
fbb24cae-c2aa-4057-be67-095b80604f5e
58e749f6-58e9-44fe-8528-6a1e3bacc88f
b28d76f8-57d2-4548-8959-9c47e189221e
74147f40-07c4-4e91-8a43-8c69bc733479
7193e045-9570-4d16-b4b6-d676fc19d05a
0fe8cde1-de8b-48f9-9ca0-52ac129e9876
f3fbf40d-7c2b-4e6d-b5db-fce6888bb719
501ac6d9-6912-46a1-9681-4a73e1009fe0
3675cadc-251a-487c-8c4d-cf3747117f13
a7d9b99d-63bc-4caa-b82c-1da9fec95cea
76a67dd7-3d50-4388-ba9f-07f52a328eca
e55d0ccd-7941-4da0-8ac8-99ed22adda49
e2ce59eb-fa7d-4ece-88b7-bd0585a8d589
0cc3584b-1a5e-41fd-944e-df85f0a2d418
fc70206c-04c8-4ae6-a0fd-7f769addf0b6
a348ed30-2fcf-4068-ba1c-176cdd9e7b10
8935490d-313f-4fd0-b1fd-c78ab138af51
fdefea8c-d218-4632-bb07-b67ddb63f778
05d9792c-6f9e-48a6-9c0c-6c03a9708954
24a1527c-3083-44f3-8812-cacafb88cf7a
54770eb9-78f2-4a3b-86cf-0e594a55c9f9
074ca340-643c-411e-95eb-d6e78f887fcf
4a5f132b-81c2-49ba-8934-0257f98e5a54
d2e80ec0-9bd3-4801-bada-65a695f7dc92
1d59c9a1-090c-4333-b2af-4154d5edd9c2
c0ff03ac-a195-46a7-a507-5c1cf5c7f668
3d029511-2627-458a-a06b-e2c8e86d26b4
846e76bc-b96f-40aa-a30f-b6d2f84fd7f0
55158cdb-07cc-4c02-8f44-a19ec2aeca06
b9a00edd-9e28-4549-8f13-2634577c1276
9aeccb7b-e629-4f0a-ab81-5300c7c433c0
a2f073a8-f0b0-4f58-a79a-2f22131016b1
f5cd9efa-d735-41d5-a90f-ba83357f2e40
a40d0c35-8232-42db-b5a2-2118d69d6c41
41e42d9c-efe9-45c5-9f8e-a2f5f441dd73
efe99726-557a-4595-90e8-9c0fc3ee0c20
6ce7f634-5c44-4818-a055-cb32dca20738
d1243377-9aed-4abf-8207-90b47840a48f
bd5be404-6a8b-402a-8a6f-856eaa054664
dc95a098-107f-46c9-8d36-23cf575a319f
5166cb9a-20ff-4d5c-b224-88f0b2276398
954559e9-5f8c-4f9b-b2bc-36ff23f18d4a
nmcli connection delete uuid $i
$ for i in `nmcli c | \
grep "never" | \
grep -o -- "[0-9a-fA-F]\{8\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{4\}-[0-9a-fA-F]\{12\}"` ; \
do nmcli connection delete uuid $i ; \
done
$ nmcli c
NAME UUID TYPE TIMESTAMP-REAL
AndroidAP 375e398a-1b2e-4d2e-b4a5-4c05c904b109 802-11-wireless Fr 02 Jan 2015 16:29:17 CET
FRITZ!Box 7330 SL a431f83e-6a73-4cf1-94ee-4409c19dfdb9 802-11-wireless Do 13 Feb 2014 18:45:48 CET
NAS QNAP ef6a08df-1c7c-48ba-b476-f3ff3b1e2669 802-3-ethernet Mi 15 Apr 2015 11:03:51 CEST
MSDSL2 f2fbd0b7-26f6-4939-aece-c2c9d3621e40 802-11-wireless Do 16 Apr 2015 20:28:22 CEST
shared 806c9806-fadc-472f-8460-318babbd38ea 802-3-ethernet Fr 10 Apr 2015 09:39:50 CEST
Hotel Amsee3 f4ff9826-22d2-4f9b-91d9-8c63dc0f9bd4 802-11-wireless So 29 Mär 2015 11:56:21 CEST
Lummerland 7d2d4d89-9eb7-45c0-a963-a8a240e33100 802-11-wireless Mo 10 Feb 2014 22:35:03 CET
FRITZ!Box Fon WLAN 7270 50d62587-5a48-4635-b30f-fbb1ded20455 802-11-wireless Di 30 Dez 2014 12:23:23 CET
Arcor-362007-L 87a2d11c-3a3d-4b5e-a1b0-cc5b38916035 802-11-wireless Di 14 Apr 2015 17:42:33 CEST
Telekom 60aded97-f697-48c6-8070-91e1b786df82 802-11-wireless Mi 15 Apr 2015 00:14:14 CEST
Wired connection 3 bf70a943-9510-4883-ba64-a4bede826120 802-3-ethernet Do 16 Apr 2015 09:26:08 CEST
FRITZ!Box Fon WLAN 7360 7c428f50-078d-442a-9ba7-268853c888f0 802-11-wireless Mo 11 Feb 2013 23:39:08 CET
test 836af61a-8268-4a16-a5ab-036f3e0cf7e9 802-11-wireless So 15 Sep 2013 21:18:35 CEST
Wired connection 1 30ffcf0e-5181-41b0-b7d4-402de875889f 802-3-ethernet Mo 04 Mär 2013 15:10:44 CET
Telekom_ICE 8763adcc-f27b-441f-9184-594128871351 802-11-wireless So 29 Mär 2015 19:56:35 CEST
Wired connection 2 700ebb58-f049-4ec7-bac6-cd5801a975e2 802-3-ethernet Do 16 Apr 2015 18:11:44 CEST
WLAN-8CA902 3046307e-69a3-4c99-89fb-b79f7f9ee24b 802-11-wireless Mi 01 Apr 2015 11:42:27 CEST
uni-koblenz 8a0d1d51-672c-4ded-ad92-18e27b8215df 802-11-wireless Do 16 Apr 2015 18:11:45 CEST
]]>These questions are in my opinion very tough but I will try to give an answer. Even though a lot of what I will say is probably true for people like me who learned programming just by curiosity while being in high school or for people who wish to make a career in IT engineering I try to aim this article for people with a university degree who already have a certain knowledge of how to approach learning and want to have programming skills as an additional skill but not for their main living.
The outline of this article will be the following.
I will assume that you do not want to learn programming because you want to change your major towards IT or that you are suddenly totally interested in programming, computers, nerds and geek talk. I will rather assume that you might be a linguist who realizes that statistical natural language processing might be useful. Or you are a biologist or psychologist and need to automate some work with your experimental data from the lab. You could also be a sociologist and want to do some experiments on the web or study how people behave on the web. Maybe you ended up in a company because jobs in your major are rare and you seek for an additional qualifications. You might have similar reasons but I guess you get the gist of the article.
Being able to program is a somewhat weird skill. Those who are able to code know clearly what they can expect from another hacker. Yet I have the feeling that people who want to learn programming often have wrong expectations what programming means. So I will try to work on your expectation management.
Know to code is a skill that exists on various levels. Being a good programmer and acquiring programming skills that are really useful for you might be a long road and might require some effort (c.f. peter norvig’s “how to learn programming in 10 years?” ). Still I have to state (in a somewhat arrogant way) that the first step is very easy (at least in theory).
The first step would probably be to learn the syntax – which are the commands or instructions of a programming language. This is simple because programming languages usually have a very small syntax. Learning the syntax and playing around with it should seriously not take you more than a view hours in total. If you consider practice and repetitions this time will be distributed over a couple of days. This is what books with titles like “how to learn XXX in YYY days” which are heavily criticized by Norvig will teach you. The same can be learnt from online courses on http://www.codecademy.com/ The main problem here is that this skill – even though at core it is all you need – seems very useless to a beginner.
In particular once you have acquired this skill you will have the feeling to know as much as before. Compare it with having the force like a Jedi knight. You might feel it but you don’t know how to use those skills yet.
In my oppinion the main problem starts now. In order to make something meaningful with your new skill you will do much more that will distract you from using or learning that skill. You will become frustrated. You will find everything complicated and you most likely will often have the feeling that you don’t know why something does not work as explained and if it finally does you might also not know why it does so at this point.
Common pitfalls for distraction are:
The problem is these things are almost not documented at all and are just assumed to be learnt implicitly or while talking to people or while being in a classroom. You might want to have a look at my German screen cast where I explain how to run “hello world in c“.
The program is the most basic program and and it involves almost no programming at all it just has all the overhead that was described above. Even though the screen cast is 20 minutes I still omit so much information that you might think: “Why the hell should I learn all about this?” The point I am trying to make is that it is all the other stuff that is complex.
Taking this in mind I sometimes wonder how anyone can learn programming at all anyway? The bad news is. Books won’t tell you all the differences most of the time they don’t even help you with setting up your developing environment so they leave you lost to learn a task which – again – at its core is actually pretty simple.
I would say a subset of being able to program is actually being aware of all these things and being able to distinguish what is happening at what point in time and not becoming confused by all this “magic”.
It already needs some experience to know all of this. The good news is. Once you master these things you know about everything you need in order to move on.
Even though you just want to program a little bit I think what will help you most is to bring curiosity about computers in general and the willingness to iterate, fail and play around. Don’t get frustrated if you seem to not understand anything anymore. Abstract and structured thinking is a very helpful skill which you probably bring along when you read this article and have been able to follow until here.
Most likely you will have to move out of your comfort zone. I remember learning 10 finger typing. In the beginning I thought chatting with friends is faster with my old system. I had to move out of my comfort zone to use the new skill and I had to use it in order to get used to it. The same will hold true for programming. In the beginning you might think that stuff from your day to day job go faster the way you have always done them. Take the challange. This time using programming might take longer. But over time it will save you a hack a lot of time.
But moving out of your comfort zone will mean that you have to be open to geek culture. Computer scientists are nerds and they celebrate it. I honestly learnt stuff about hacking from xkcd comics (or similar stuff).
Having courage to try out stuff and play around will be essential but still many people seem to confuse “try and error” with meaning full testing of “what happens actually if I …” (sorry that was so important I had to bold print it and I will repeat it later…). Read the fucking manual (or documentation – even though it is often missing and badly written) will be of tremendous help for you. What you have to learn is to ask as many questions as possible. A good practice is to write down the questions and explaining your problems. While doing so you will understand your problem better and most likely solve the problem on your own. (Ask questions even to this article. I am well aware of the fact, that this article leaves open questions. Go and ask me in the comments as an exercise. (NOW (:)) In general before asking questions googeling is a great idea. This of course is another way of asking questions. Honestly it is a skill to use a search engine. I have seen so many students which are not able to properly use a search engine to solve their problems. Fact is if you want to learn programming almost all questions that you have, have already been asked on the web and are indexed by a search engine. Being aware of this fact and learning to find those answers is a large portion of what you need to become a programmer.
Fiannly you will need a lot of paticence. The complexity of programming comes from the sheer amount of technologies that play together. It will be inevitably that you will be confused. Stay focused take a deep breadth start over again and try once more.
There are various kinds of languages which serve a certain purpose. If you are coming from the outside world you will most likely know what language you want to learn. Honestly the syntax is almost the same all the time anyway. What is different are the libraries and APIs. When gaining more experience you will realize that you use tools to remember APIs and at some point in time you have a feeling of what functions already exist in some API and you probably can guess the name or at least google for it. What I am trying to say it doesn’t really matter which language you will take for learning how to program.
Still I think there are three languages that might be particular interesting candidates. All of these language have object oriented concepts. Even though I think object oriented programming is great and probably not so difficult for you. You could probably ignore the object oriented concepts.
c/c++: This language is great for people who want to focus on the understanding part of fundamental stuff and computers. It is certainly most difficult to learn and easy to mess up things. The level of frustration will be highest but the reward will be the biggest. I learnt programming with C first and from there on I could very easily move on to other languages.
Python: I think Python has a very beautiful syntax and it minimizes the distraction elements I wrote about so broadly. Especially for people who want to use programming as an additional skill python is very quick for solving smaller tasks with few overhead on the amount of code that you need. Also the standard API that comes with python is easy to use. Python can be used in the Web, in the shell. So it is probably a very nice compromise among all scripting languages.
Java: I would say Java is one of the widest spread languages. It has many strong concepts and especially a lot of tool chain around it. I did not find any other language that has so much code completion and tools to make your life easier. Still having tools thinking for you while you did not understand something is a difficult thing.
There are other languages and excellent reasons why you would want to learn them. The only language I would not recommend is java script. This language is a mess for various reasons. So unless you want to explicitly do user interfaces on the web I see almost no reason why a non IT person should learn javascript.
Let’s finally get concrete now. How to approach this project of learning to program:
10 relatively easy tips for the first week:
Once you are here and as I said you should not need to long. Go to the next level – The transfer / experience stage.
Finnaly the hard parts
I wish you good luck and a lot of fun while acquiring your new skills. If this article was helpful for you or changed your life please tell me in 10 years or so what kind of amazing things you have built since then. Just put the mark in your calendar right now. You don’t use an electronic calender system yet? Ohhh, much to learn young Padawan (:
]]>“Well you want to monitor changes of your system config. You want to be able to revert them and you don’t want to care about this when you do something.”
I really liked this and thinks its so useful and a smart idea that I wanted to share it with you. Just keep in mind that you don’t push the git repository to some public space since the config files might include a lot of passwords. Also look out for his .gitignore in his case the printer does a lot of automatic changes and is thus ignored. You might have similar settings for your configs.
I hope sharing this was useful for you!
recordmydesktop --quick-subsampling --full-shots --no-shared --v_bitrate 2000000 --on-the-fly-encoding
ffmpeg2theora video.ogv --noaudio
ffmpeg2theora video.ogv --novideo
First of all I think it is really important to understand that in China everything is related to your relations (http://en.wikipedia.org/wiki/Guanxi). A chinese business card will always name a view of your best and strongest contacts. This is more important than your adress for example. If a conference starts people exchange namecards before they sit down and discuss.
This principle of Guanxi is also reflected in the style presentations are made. Here are some basic rules:
My way of respecting these principles:
The second thing is that in China the concept of family is very important. I would say as a rule of thumb if you want to make business with someone in china and you havent been introduced to their family things are not going like you might expect this.
For this reason I have included some slides with a worldmap going further down to the place where I was born and where I studied and where my parents still leave!
When I choosed a worldmap I did not only take one with Chinese language but I also took one where china was centered. In my contact data I also put chinese social networks. Remember Twitter, Facebook and many other sites are blocked in China. So if you really want to communicate with chinese people why not getting a QQ number or weibo account?
You saw this on conferences many times. Chinese people just put a hack a lot of stuff on a slide. I strongly believe this is due to the fact that reading and recognizing Chinese characters is much faster than western characters. So if your presentation is in Chinese Language don’t be afraid to stuff your slides with information. I have seen many talks by Chinese people that where literally reading word by word what was written on the slides. Where in western countries this is considered bad practice in China this is all right.
Speaking of Language: Of course if you know some chinese it shows respect if you at least try to include some chinese. I split my presentation in 2 parts. One which was in chinese and one that was in english.
So in my case I included the fact that we have PhD positions open and scholarships. That our institut is really international and the working language is english. Of course I also included some slides about my past and current research like Graphity and Typology
In China it is not rude at all if ones cellphone rings and one has more important stuff to do. You as presenter should switch of your phone but you should not be disturbed or annoyed if people in the audience receive phone calls and go out of the room doing that business. This is very common in China.
I am sure there are many more rules on how to hold a presentation in China and maybe I even made some mistakes in my presentation but at least I have the feeling that the reaction was quite positiv. So if you have questions, suggestions and feedback feel free to drop a line I am more than happy to discuss cultural topics!
I did not touch it again over the last couple months and it really has a lot of debugging comments inside. My appologies for this bad practice. I hope you can oversee this by having in mind that I am a mathematician and this was one of my first bigger evaluation projects. In my own interest I promise next time I produce code that will be easier to read / understand and reuse.
Still if you have any questions suggestions or comments feel free to contact me.
The raw data is can be downloaded at:
the format of these files is straight foward:
de-nodeIs.txt has first some ID then a tab and then the title of the wikipedia article this is just necessary if you want to display your data with titles rather than names.
the interesting file is the de-events.log in this file there are 4 columns
timestamp TAB FromNodeID TAB [ToNodeID] TAB U/R/A
So every line tells exactly when an article FromNodeID changes. if only 3 collumns are available and an U is written then the article just changed. Maybe links in the article changed in this case there exists another nodeID in the 3 column and an A or a R for add or remove respectively.
I think processing these files is rather straight forward. With this file you can totally simulate the growth of wikipedia over time. The file is sorted by the 2. column. If you want to use it in our evaluation framework you should sort this by the first column. This can be done on a unix shell in less than 10 minutes with the sort command.
Sorry I cannot publish the paper right now on my blog yet since the camera ready version has to be prepared and checked in to IEEE. But follow me on twitter or subscribe to my newsletter so I can let you know as soon as the entire paper as a pdf is available.