296 karma · joined September 8, 2009
You suffered from the university's lack of bandwidth -- only so many lecturers, only so many lecture theatres, many other competing classes. They try to find efficiencies where they can -- e.g. by giving all of the engineering departments a common mathematics curriculum.
That curriculum is almost certainly driven by the needs of the EEs and ME/CivE's much more than chem and software, and I'd guess software engineering is looked at is if there's really no maths required. After all, software engineers just program and write documents, don't they? The truth is of course that there is just as much scope for maths, if not more, in a software engineering or computer science course, it's just a whole other type of maths that's needed.
More seriously though, your macro is dangerous as a teaching example because it introduces variable capture (on i and ans) and unintentional repeated evaluation (of list), which are big gaping traps for the unwary.
Also, try passing #'(lambda (a b) (< a b)) as the pred argument to your macro, and see what happens.
Try it out at a repl.
I do think your jab at emacs lisp is spot on -- it's really not the lisp you want, and Common Lisp is certainly good enough these days to have a stab at writing an emacs clone in it. I don't know enough about Scheme to comment about it though.
My favourite candidate for most decrepit CS tool is GDB -- it astounds me that this is still the best the open source / Unix world can produce in the field of debuggers, especially since debuggers are the sort of non-user-facing, lots-of-interesting-technical-problems type of area that open source usually excels at. Every time it repeatedly segfaults and kills my carefully constructed debugging state I just want to cry.
I won't defend C: it's all that you say. I think one of the acknowledged reasons for C's longevity is that it is impedance-matched for UNIX because they grew up together, and for various reasons UNIX is popular with hackers; therefore C is popular. C is deeply rooted within UNIX, partly because the ABI has been so stable for so long. If you want to write a library for UNIX, you generally target C because anything else will run into a quagmire of cross-compiler incompatibility issues. That means all the good libraries on UNIX are written in C or present a C ABI/API. The easiest language to use a C library from is... C. Or C++. So application writers (and tool writers) have often favoured C as well, although the rise of interpreted languages such as Python, Perl, and Ruby has changed that a bit. Also, the C/C++ toolchains have tended to be more advanced than those of other languages.
So, C is still with us, but for reasons that don't have as much to do with its merits as a language as with its merits as a platform (when coupled with UNIX).
The L1 and MAC of 3GPP are generally implemented in an ASIC and not necessarily visible to the OS. Many of the parameters are dictated and controlled by the RAN (operators are picky and try to control things so that handsets can't misbehave and crap all over the other users in a cell), so the OS doesn't get a look in -- i.e. I don't think it's possible to turn off the 3G error recovery mechanisms.
Disclaimer: I used to work at L1 so someone with more detailed knowledge the MAC and higher layers of the 3GPP stack could give a better idea of what happens when the MAC ARQ limits are hit.
Summary: 3G was designed more than 10 years ago and is showing its age. User requirements have shifted, but standards can't evolve that quickly. Maybe LTE will help provide the user experience for today's apps... question is whether it will be widely deployed in time to matter.
EDIT: updated for clarity and spelling.
http://www.moneymorning.com.au/20110616/why-im-flying-the-fl...
He points out that China is urbanizing like mad (1 per cent a year) on top of 0.5 per cent population growth. At those rates, 50 million empty houses doesn't look so big. Whether there are other factors that prevent people taking up those apartments isn't clear though. Also I guess it depends on the financial situation of the developers. If there is a lot of leverage on those assets that are sitting idle and not being sold or generating income that must be hurting someone. Or perhaps the state owns them directly or indirectly, so ROI doesn't matter so much in the short term? I don't know.
You can change the registered phone number only by calling the bank and passing a set of identification questions posed by a human operator, so there has to be some significant identity theft to get past it. I don't think that would be particularly hard for a determined and experienced thief though.
I guess it hinges on what the meanings of "fancy features" and "everything should just be rock solid" are. I tend to agree with your earlier comment that for the banks this comes down to a risk assessment and a cost/benefit equation.
Where the social good lies is sometimes hard to work out; but I'd guess in this case Connecticut residents would be better off with an efficient Amazon and the ability to become Amazon Affiliates than with the small amount of tax revenue that this legislation tries to capture.