Joerg Jaspert: “Cabal wars”
Clint, you do
realize that 2/3 of ftpmasters are 2/4 of the sysadmins?
array set hash
foo bar
bee bop
Makes me reach for the shift key significantly less than
hash = :foo => "bar", :bee => "bop"
Tcl's spare syntax is one of the reasons it is so flexible, but for everyday use, sometimes it's nice to have a little bit more. In the end, it's a question of taste, so we'll call it even.
Where Tcl is rock solid
Here's where the "part 1" in the title comes in. The following are things I don't care for in Ruby, but since I'm new to it, there's the chance that I'm missing something in these observations.
Interpreters. Tcl lets you handle multiple interpreters not only at the C API level, but in Tcl itself. This is really cool - you can juggle different people running different scripts in your application, without them stepping on one another's feet. If you want, you can let them share stuff, too. This capability has also been extended to provide safe interpreters for the execution of untrusted code. Ruby has safe evaluation too, but it's not in a completely separate context, so it's just a different way of doing things, but still, I like the idea of having and being able to manipulate multiple interpreters. Tcl wins hands down.
Event oriented programming. Tcl really shines here, as it's possible to create simple, fast servers without actually having to muck about with select yourself. The python folks have caught on to this with Twisted, and I suspect that Ruby will too, if it hasn't already and I'm simply not aware of it. Note that Ruby has a select call as part of the language, but what I'm talking about is being able to whip up servers in a few lines, without even needing to require any external modules.
Modularity is an area where both languages could do better (well, at least for some users/uses). Both languages might be interesting in the embedded arena, but it takes some effort to cut them down to size. In Ruby on the Mobile, Matz himself states that this isn't an easy operation. Tcl is notable in that it has some small footprint implementations like Jim, but the core language would require non-trivial hacking to remove some of the bits and pieces that are 'welded on'.
A few nitpicks about Ruby: no deep copy - you have to marshal/unmarshal, which feels wonky to me. File.split functionality is just dirname/basename rehashed, rather that Tcl's more correct/useful splitting of a path into a list of all its components based on the current platform's directory separator.
Threads are another area where Ruby, at first glance, at least, could probably use some work. Tcl has real, OS-level threads, which are very easy to work with because each one gets its own interpreter. Because of this, they almost feel like separate processes, but of course, if you need to, you can do all the sharing and mutexing and so on that you need.
Conclusions
So, what conclusions can you draw from this? Well, they're both fine languages, and are more than likely capable of doing most anything you need. Something else that I was pleasantly surprised by is the fact that Tcl, despite its age, and its lack of buzz and O'Reilly/Web 2.0/the hot new thingness, still has a lot to show the world, and does a lot of things right, out of the box. It's also worth noting that most of the problem areas for Tcl are social, rather than technical, and could have been resolved easily/avoided with the right leadership.
Master backups are made on monday as you can see.
It's that time time of the year again when the Debian Project gathers to elect a new leader. This year there are a record seven candidates. I just spent a couple of hours reading their platforms and a lot (not all, my eyes glazed over after a bit) of the discussions on debian-vote and these are my initial impressions.
Jeroen Van Wolffelaar: Jeroen seems to have a good grasp of where the bottlenecks in the Debian system are. He supports the project Scud idea which has not really worked well so far (as far as I can see) but claims he knows what is wrong and how to fix it. He is young and still a student which might hamper his ability to travel which is a big part of being DPL. Astutely notes that Debian needs to stand out from the crowd more.
Zeke the Cat: Does he have the balls to be an effective leader?
Steve McIntyre: Not really high profile within the project as far as I can tell. Will he be able to "herd cats"? His platform is mainly about reforming Debians' social structure so this is a real concern. The idea of imposing some level of performance standard on developers is intriguing but he is rather short of details on how it is supposed to happen.
Anthony Towns: Anthony is heavily involved in such roles as ftpmaster and release manager. It would be a shame if being DPL actually meant he would have less time for that sort of thing. He claims to be running mainly to introduce some new ideas. So hopefully he won't mind if we keep him in the boiler room instead of, um, athwart the foc'sle?
Andreas Schuldei I like the idea of frequent face to face meetings. Andreas is a good fundraiser so if anyone can make this happen, he can. But in the absence of support from an eccentric billionaire is this really feasible? Also a member of project Scud.
Johnathan 'Ted' Walther: Retar-ted.
Bill Allombert: Also suffers from being relatively unknown (IMO.) A bit low on ideas and basically wants to maintain the status quo as far as social issues go. I can't consider him a viable contender.
At the moment I'm leaning towards voting for Jeroen but Andreas and Anthony are still in the running. The IRC debate should be interesting.
Tor is a toolset for a wide range of organizations and people that want to improve their safety and security on the Internet. Using Tor can help you anonymize web browsing and publishing, instant messaging, IRC, SSH, and other applications that use the TCP protocol. Tor also provides a platform on which software developers can build new applications with built-in anonymity, safety, and privacy features. Tor aims to defend against traffic analysis, a form of network surveillance that threatens personal anonymity and privacy, confidential business activities and relationships, and state security. Communications are bounced around a distributed network of servers called onion routers, protecting you from websites that build profiles of your interests, local eavesdroppers that read your data or learn what sites you visit, and even the onion routers themselves.Tor also allows you to set up and/or use a so-called Tor hidden service, i.e., a server which offers some service (a website, ssh access, or similar) without revealing its IP to its users. Why? Why would you want to use Tor? Well, because you probably don't want anybody (neither state agencies, nor companies, nor "hackers", nor any other individuals or groups) to be able to record, analyze, and (ab)use information about your web browsing habits, or any other communication habits. For instance, you don't want Google to have a complete search-profile of you, which — even worse — might some day get in the hands of other parties. In the days of massive data retention you don't want all your electronic traces to be recorded, stored for ages, analyzed, and data-mined for dubious reasons and with even more dubious results and false conclusions drawn which might negatively affect you. If you're a human rights activist in China, you want anonymous communication. If you're a whistleblower, you want anonymous communication. The list is endless. For securing your communications, so that nobody is able to sniff your emails, your chat messages, your passwords, your private documents and conversations, you use encryption. For communicating anonymously you can use Tor. Combine both, and you have secure and anonymous communication. In case you're wondering whether criminals might abuse Tor, read the Tor Abuse FAQ. Short answer: yes, but if you're willing to break the law, you already have anonymity (open access points, stolen/prepaid mobile phones, etc.). You don't need Tor to do bad things if you're a criminal. If you're one of those horrible "oh, but I don't have anything to hide" guys, consider this: Say you have a drug/alcohol problem and want to visit an anti-drugs/anti-alcohol website or forum for help. Would you want the whole world, your neighbors, your co-workers, your boss, to know that, or would you rather want to keep that a secret? Say you have AIDS and want to get information on the web? Or, to make the example even more dramatic: Would you want some random guys to be able to watch you while you fuck your wife? No? So you have something to hide after all, right? My point is: Everyone has something to hide, even more, it is a basic human right to have the ability to hide something. It's called privacy. How? Tor implements a form of onion routing to, basically, push encrypted data through multiple Tor nodes (servers), before it reaches the final destination (e.g. a website). The result is that neither the website owner, nor a local eavesdropper, nor any single Tor server knows who requested that specific website, hence you are communicating anonymously. For more technical details, read the Tor overview and the Tor documentation pages. In order to use Tor, you have to install and run a local Tor client/daemon (this is not necessarily a Tor server!). On Debian, type
apt-get install tor, on other systems you can get the respective binary packages or download the sources and compile Tor yourself.
Usually Tor is used together with Privoxy, a configurable HTTP proxy which sanitizes your web-browsing experience by removing nasty banner ads, pop-ups, JavaScript, webbugs, cookies etc. etc. So: apt-get install privoxy.
After installing and starting Tor and Privoxy, you can now configure your webbrowser to use Privoxy as an HTTP proxy (see below), and Privoxy will in turn use Tor to anonymize your communication if you add "forward-socks4a / localhost:9050 ." to your /etc/privoxy/config.
Anonymizing various applications
Most (but not all) of the following information is also covered in the very useful Torify HOWTO in the Tor wiki (I will add the missing information there, ASAP). As I'm pretty paranoid, I have checked every single of these configurations with Ethereal to ensure that the traffic is really anonymized. However, if you are paranoid, you shouldn't trust me, but rather test this stuff for yourself!
Warning: DNS Leaks:torify (e.g. by typing torify fetchmail), but often this approach has DNS leaking problems, see below.
127.0.0.1 as proxy host and 8118 as proxy port.HTTP Proxy: 127.0.0.1 port 8118
SSL Proxy: 127.0.0.1 port 8118
FTP Proxy: 127.0.0.1 port 8118
SOCKS v5
HTTP Proxy: 127.0.0.1 port 8118
HTTPS Proxy: 127.0.0.1 port 8118
FTP Proxy: 127.0.0.1 port 8118
ftp:// URLs, but at least you don't send untorified traffic without noticing.http_proxy and HTTP_PROXY environment variables. Applications which don't honor http_proxy probably have a configuration option to set the HTTP proxy.~/.bashrc or similar config-file:http_proxy=http://127.0.0.1:8118/
HTTP_PROXY=$http_proxy
export http_proxy HTTP_PROXY
http_proxy environment variable! However, you can add http_proxy 127.0.0.1:8118 to your /etc/links.cfg and/or to your ~/.links/links.cfg. Or go to Setup -> Network Options and do the same there. Or use the -http-proxy 127.0.0.1:8118 command line option.
Proxy type: Socks 5
Host: 127.0.0.1
Port: 9050
http_proxy is enough, as apt-get honors the http_proxy environment variable. But you can also add this line to your /etc/apt/apt-conf:Acquire::http::Proxy "http://127.0.0.1:8118/";
Use a proxy server: enable
Address: http://127.0.0.1
Port: 8118
Host *
ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050
apt-get install socat.torify ssh does not suffice, it leaks DNS requests!
torify fetchmail should be enough (one would think), but that leaks DNS requests! All tips offered in the Torify HOWTO suffer from this problem. The ideal solution would be to use tor-resolve (a small utility which resolves DNS requests via the Tor network, and hence anonymously) before fetching the emails, but I haven't found a good and simple solution for that. What I do right now is to hardcode IP addresses in my ~/.fetchmailrc config-file and then use torify fetchmail, which doesn't leak DNS requests. However, it leads to some ugly "fetchmail: Server CommonName mismatch: foo.bar.com != xxx.xxx.xxx.xxx" warnings.prog Fetchmail fetchmail xterm -e torify fetchmail
alias fetchmail='torify fetchmail'
Warning: Just for the record: torify fetchmail alone (i.e. used with hostnames in ~/.fetchmailrc) does not suffice, it leaks DNS requests!
Hostname: 127.0.0.1
Port: 9050
Type: Socks5
~/.bashrc file. It defines some functions and aliases which transparently direct the traffic of some (but not all!) programs through Tor.
Applications which cannot easily be torified
Anything not using TCP usually cannot be torified, as Tor only works for TCP.
torify whois google.com leaks the DNS request for the whois-server (in this case whois.crsnic.net), it doesn't seem to leak the host you wanted to lookup. Can somebody confirm this? The safer method is to use a web-frontend, though.torify ncftp works, it leaks DNS requests! I haven't yet found a way to fix this (help is appreciated!). I also tried a few other FTP clients, without luck.http_proxy environment variable and by using a hidden Tor server as keyserver.keyserver x-hkp://yod73zr3y6wnm2sw.onion
keyserver-options honor-http-proxy broken-http-proxy
gpg --recv-keys seems to work fine, gpg --refresh-keys leaks DNS requests! It seems GnuPG hard-codes the keyserver to keyserver.pgp.com in that case and leaks the DNS request for this domain name.
I am a little disappointed with the new Thinkpad X40 I have from work. I wanted a MacBook Pro, but their availability and price in Korea is bad.
Unplugging the mains leaves me about 2:30hrs. That’s almost the same as my personal T30 machine! My T30 has about 2 hours of battery life, although it also has about twice the CPU power (going by Bogomips)!
If I do processor intensive stuff like compiling and watching videos then we can half those times… (!)
My T30 also has better wireless performance after my little tests. I’m also wary of this little X40 keyboard. I don’t think it’s good for my RSI. Though it’s too early to tell.
You can get a bigger battery pack for the X40. But it will probably be expensive. :/
The X40 is brand new and is branded IBM thinkpad. The build quality is excellent, just like my other thinkpads I’ve used. It does say “Lenovo” on all the copyright stickers.
I whipped out the hard drive and I thought I might upgrade to a quieter Seagate Momentus. I was surprised to see a 2” drive that was about half the height. I didn’t know about this form factor! I’ll miss my T30’s roomy 100G.
It was tricky installing Debian without a CDROM. I managed in the end with an external USB hard drive and my experiences are documented in debian-boot threads starting here and here.
One major redeeming thing about the X40 is that I get 18371880.31 bytes/sec compared with the T30’s 959174.47 bytes/sec for USB throughput. That’s an amazing 20x speed up! So I’ll be using external USB drives to compensate for the tiny 30GB hard drive.
I am giving away my old T30 to my sister. I just wish the X40 fealt a little more like an upgrade from the T30. The X40 is my workplace’s equipment after all. I think I will aim to get a Mac Pro still if I visit Japan in the next weeks for myself.
Next.