Domain: ed.ac.uk
Stories and comments across the archive that link to ed.ac.uk.
Comments · 421
-
Microwaves & Magnets
There is an entire field of research in industrial chemistry right now to see how microwaves can affect chemical reactions and promote certain reaction paths over others. You don't have to break an molecular bond to have an effect on chemistry. Microwave heating, even at very low levels, can significant speed up certain reactions. Enzymes in particular seem subject to this effect at very low power levels. (Read this, look for a paragraph 2/3 down.)
Futhermore, I remembered some of Lai's more recent research just a few seconds ago. Remember an article several months ago about 50-60 Hz magnetic fields doing DNA damage to rat brains? That was the same guy.
Basically, in his paper, he put forth the theory that an iron-mediated reaction is going wrong when rats are exposed to alternating magnetic fields. Even though the fields are not enough to break covalent bonds, there is an iron-mediated reaction that turn hydrogen peroxide into hydroxyl free radicals that they theorize is affected by the magnetic fields. When they introduced an oxidative free radical chelating agent into the mice, DNA damage from magnetic fields ceased.
You can read more on it here. -
Re:Long gone...Now we just have to use
shred
http://unixhelp.ed.ac.uk/CGI/man-cgi?shred+1 -
A advice
Since most of the replies are crap i am going to post an advice that has helped me learn to read very well:
Read as many books as posible - start with the really easy and move on. In the beginning your brother will properly need someone to read the words to him - he will then reconise them later. A good tool might be festival
As for natual selection post above:
Our society is rich - it can afford (and should) aford to help everybody, how wish to be helped -
Re:"What Is Message Queuing?"And here are the glibc bindings. For local machines, msgsnd(2) goes back to SVr1, which was released in 1981. That's right, message queueing is pushing 25 years old. You only need to actually queue header files containing socket, timing, and/or versioning information, not the 100MB data blocks. Slap on a slow but reliable network stack (TCP) for the control messages and an unreliable but high-bandwidth network stack (UDP) for the actual data, and you've got yourself a distributed system. Yes yes, it's not quite that simple, but I don't see what all the fuss is over.
[/reinvent-wheel]
-
Warning, polemics ;-) [Re:Mouse or Paddles?]
-
Re:Behold the speaking computer!
All the free tts systems sound the same as they did since the early 80s. Because they all use the same algorithms and data generated by the Navy. The nicer sounding ones that have more complete data sets, improved algorithms and are computationally more intensive are only available through special licensing. (the algorithms have multiple patents, the data has copyrights, etc).
Compare a public domain TTS like rsynth to a free, but commercial quality TTS like festival or Bell Lab's. It's funny how rsynth sounds a lot like the mac (although rsynth doesn't have a bunch of predefined settings to do different voices, you have to set all the parameters yourself to make it sound exactly like Bruce).
TTS technology doesn't move terribly fast. the TTS that was in the Mac 21 years ago is basically the same technology 30 years ago. But that's no excuse for Apple not to have moved on to using diphonemes or triphonemes like other systems. Apple is behind, but in the TTS world, 20 years behind is not all that far behind. (unlike say the harddrive world, where 20 years behind is the difference between 100s of gigabytes to 10s of megabytes. ouch) -
Re:Behold the speaking computer!
Try Festival !!!!
Festival speech
75% as good at AT&T Natural Voices - and it's free, with a BSD like license.
Quite good when set up properly.
-
difficult tradeoff
I am somewhat involved in product development for portable machines for law-enforcement, so have a bit of an idea about what is what in portable land these days. First of all, "cheap" is a relative term - with these things, much like all else, you get what you pay for. If this would be your employers only reliable bridge with the outside world, I would have a good think about system criticality, and the relative worth of such.
Secondly, I assume from your question that you are looking for an off-the shelf solution in terms of software. There are plenty of off-the shelf systems that do TTS, but you may need to look at custom stuff, depending on the physical state and limitations of your employer.You may want to consider getting something done in-house, so to speak.
Hardware wise, in terms of form-factor, functionality and ruggedness, you may want to look at any of the current crop of handtops out there. However, they may be a bit expensive in terms of value for money. Tablet PC's are a bit expensive, and can be a bit fragile. They are also unwieldy. On the other hand, they give you a very good price/performance ratio, so could equate well in terms of value for money. Battery life may also be an issue. Finally, you can look at using wearable systems - they have come a long way, and with the right kind of setup, they can really be what you are looking for. From that link, you may want to look at the MA-TC system or the Xyberkids system. both have pro's and con's. However - they are really, really expensive - but I would probably go with the MA-TC platform, with a good HMD system.
Software wise, I would go with Linux as the core OS - can't beat value for money, stability, and software availability. I would combine that with Dasher for the input system, linked perhaps with Festival.
Also, to your employer: don't underestimate the value of working with professionals that know what they are talking about. -
Re:PC of the future
We're a long way off buddy. You show me an acurate map of the human brain, and CNS before you try to promote the creation of the borg.
How about these ones? -
free speech synthesis
Use http://www.cstr.ed.ac.uk/projects/festival/ festival to do text to speech. Then it's a matter of redirecting stdout to
/dev/speech (ok you've got to install the speech driver) and you've got web browsing with speech.
I'm sure there are other apps available. Just a matter of emerging them -
Re:emacspeak
My 12-yr-old son has been using Emacspeak for about two years now. It was a pain to set up as we are using the IBM ViaVoice TTS engine that was available for Linux for a while (but no more, even back then), meaning that I had to scrounge around and make do with some outdated zip files. The situation was also complicated by the fact that I was trying to use the somewhat broken built-in Via audio; things got much easier when I put in a cheap but authentic soundblaster card. Using a free software TTS engine like Festival wasn't quite ready for prime time back then, but I hope that by now it's a reasonable option.
So far we've just been using Emacspeak & Linux for me to teach him basic programming in Python; it's been great so far. We are just embarking on Emacs Lisp, partly for him to learn a different language, and partly so we can customize emacspeak should we find the need. FYI, he also uses JAWS on Win98 for web browsing and email (too many $$ to upgrade to the version of JAWS that runs on XP, unfortunately). He dual boots himself; adding a bunch of ctrl-Gs to the LILO prompt string lets him know when he reaches the prompt, and then he just hits 'w' for Windows or 'l' for Linux. I put some ctrl-G's in
/etc/issue also so he knows when he gets to the login prompt. His .bash_profile sets some environment variables and runs emacspeak directly. He uses dired to manage his files.Someday I'd like to get him up with reading email and surfing the web in emacspeak too, but I haven't had the time to get that set up.
BTW, related to another topic, I just heard about Rockbox a few days ago from another Slashdot post, so I bought an Archos Ondio off of Ebay with hopes of getting that working for a Christmas present. (Glad he doesn't read Slashdot himself, though it's probably just a matter of time!)
-
Re:I know this is an oft repeated point but
Oh, yeah, and my wife says how are you supposed to read an ebook in the bath?
Easy... or not so easy with DRM'd books, but plain text files are trivial. I've gone to sleep listening to Sherlock Holmes stories from Gutenberg, Lovecraftian horror stories, and 419 baitings. =)
-
Re:Hold Crap!Chinese teaches more about eastern languages, latin, about western.
Chinese teaches you about whatever dialect of Chinese you learned, and I believe a bit about Korean. Latin gives insight into French, Spanish, Italian, and a lot of English, plus a leg up in understanding legal terms, medical terminology, etc. (Although I'm sure some linguist could come around now and point out all of my errors...)
What's rec? What's l? What's h? What's t? What's fun? What's less? What's greater? It's not documented, and I don't want to read up on OCAML to find out that it isn't documented, either.
rec indicates that the function is recursive (something covered in section 1.1 of the OCaml manual). l, h, t, less, and greater are (prepare for shock and awe) variable names, representing the following values: l is the list being sorted, h is the head of that list, t is the tail of the list, less is the list of values that are less than the head of l and surprisingly greater is the list of values greater than (or equal to) h. If you have trouble telling what a variable is, it's no wonder Haskell befuddled you (Do you look at a function like let f x = x + 3 and ask, "What's x? What's 3?"). By the way, before you ask, List.partition is a function that partitions a list into two sublists according to some predicate. I'd apologize for it not being documented, but well... it is.
Certainly a fibbonnaci series computed in a loop runs faster than the equivalent recursive solution.
Well that certainly depends on whether you mean recursive in the sense of the process or in the sense of the procedure (see SICP if you don't know the difference. The difference in performance between a for loop and something like:
let fib n =
let rec fib_h a b n =
if n = 0 then b else fib_h (a + b) a (pred n) in
fib_h 1 0 n;;Unless, of course we're talking about a memoized version. But if you want one, it's actually pretty damn easy to wrap a recursive function with a memoizing wrapper. By the way, do you really want to be talking about speed and efficiency in a thread about Perl?
Tree manipulation is generally a toy problem.
Tree manipulation is a toy problem? Last time I checked, trees (and heaps and treaps, and all sorts of other recursive data structures) are all over programming.
What's more, I can write recursive solutions in perl if I really have to.
And I can do imperative programming in OCaml if I really have to. Your point was what again?
We're programmers. We do need to understand that complex underbelly.
So you know all about the properties of the semiconductors making up your machine? You can tell me how to build a J/K filp-flop and a shift register? You know all about circuit layout optimization? The inner workings of a DVD burner? See, that's one of the nice things about programming. You only need to strip off a certain number of layers of abstraction to do your job well -- sometimes you need to go deeper, sometimes you don't need to go deep at all.
We often need to prove that we're using exactly the correct function, and that it operates in the smallest amount of time, using the fewest resources possible.
And so you're advocating Perl?!? It's nigh impossible to reason at all about imperative programs and prove them correct, but when you've got a language that essentially encourages willy-nilly programming styles (yes, I know you can code clean Perl, but it takes a lot more effort than other languages) and highly mutable state like Perl than pretty much all hope i
-
Re:Where France Gets It Right
Actually I'd say the AGR design is the best about in terms of conversion ratio, it's the most efficient out there, unfortunately it's much like Concorde in that sense, it's very technically advanced but consequently very complex (plumbers field day) so PWR wins out for simplicity and cost reasons.
The Sci-Fi author Charlie Stross went on a tour of the Torness AGR on the Scottish coast, a very interesting read. They'll probably never offer tours like that again post 9/11. -
Re:RTFA
For noise immunity, I'd sample at 1/4, 1/2, and 3/4 bit time and use a weighted average to determine the bit value.
Makes sense. Even with a series of alternating phase reversals you still have one "real" zero crossing per bit cell, at least with traditional BPSK. It could be detected reliably, I guess, but I'd still be tempted to use a tracking filter centered in the baseband spectrum to regenerate a sampling clock. That being said, I'm sort of talking out of my ass since I've never built a BPSK codec. :-P For all I know, some bit patterns might generate a big honking Bessel null right where I want to lock my PLL.
But then again, I design test equipment, so I am always designing my decoders to deal with severely broken encoders.
Yeah, I've seen enough of those in MP3-land to do me for awhile... -
Re:Backwards compatibilityWell, sure, a lot of programs run just fine on newer versions of Windows, and if a program does not keep running, it may be that it was not designed right in the first place.
Speaking of backwards compatibility, I have a story that tops yours. Back in 1988 or 1989, my dad would type his research-papers with a proprietary system called Mass-11 that ran under plain DOS (his PC was an 8088 clone), export them to ASCII files, and run them through TeX. Just a month or so ago, we tested the programs on his Windows ME box, and it seemed to do everything he might want; however, we didn't try printing to the printer he used to use, because he also has MikTeX (which can print to his DeskJet or PDF) installed on that system. I've also run the program on an NT 4.0 box, so I doubt it would have any problems on XP Pro. That's a 15-year program useful lifetime. Of course, my dad would probably be better off just making sure he's exported everything he might possible want to copy and then junk the program.
If a program stuck to the standard C library or the documented DOS API, it probably kept working from then 'till now; same thing for Windows program that stuck to the core API. However, in the DOS/Windows/Visual Basic/.NET programming milieu there's long been an attitude that one needs to use obscure or undocumented APIs to produce good programs. Sure, some of this came from sources outside of Microsoft, but even today articles on MSDN tend to encourage writing to the latest-and-greatest version of Windows using non-backwards-compatible toolkits or still-developing platforms. (This one, for instance, talks about "Avoiding the Win32 API"!). Now, oficially
.NET is an ECMA standard, just like JavaScript, but even MSDN encourages Windows-centric ways of doing things (which is bad because of this question about Registry support, for instance). I guess the documentation for gets() has an OK warning to use fgets() instead, but I think the "BUGS" section of the corresponding UNIX manpage is better. -
Re:Why this won't happen soon
Not necessarily the technological challenge. A highway is far from being a vacuum of information. It is a fairly standardised enviroment with many constraints and fairly predictable behaviour. [robotic] Cars have been able since the late 90s to drive more than 90% of the time to drive amongst normal traffic
This is where open-source software could shine. All car makers get together to develop an open-source guiding system, and it could be continuously refined, allowing customers to update their cars. The liability regarding the guidance system would be shared amongst all makers, thus making it more attractive to individual car makers.
The main reason is, companies don't want to be liable for the risk. -
Why this won't happen soon
Not necessarily the technological challenge. A highway is far from being a vacuum of information. It is a fairly standardised enviroment with many constraints and fairly predictable behaviour. Cars have been able since the late 90s to drive more than 90% of the time to drive amongst normal traffic.
The main reason is, companies don't want to be liable for the risk. -
Re:Why bother?
About half of C#'s "advantages" are capabilities that the designers of Java considered and rejected as being a bad idea (by making the runtime less stable and secure, unnecessarily complex, etc. -- I knew Guy Steele at the time, and he certainly was aware of operator overloading, generics, etc., and made the (smart, IMO) decision that it was more important to make the language,compiler and JVM (and security model) simpler, smaller and more predictable).
Sure, Guy Steele is smart, but that doesn't mean he he never makes mistakes. At the time, the Java designers tried to eliminate unnecessary complexity, but it's hard to decide what "unnecessary" means without seeing the language in action. He now seems to think otherwise about generics and operator overloading (if, in fact, he originally thought they did not belong in Java), probably after seeing the collections and BigInteger in action.
You haven't made any specific arguments about how the features add unnecessary complexity and make the runtime less secure, but here's what people usually say:
- "Operator overloading can be abused." Yes, it can be. But it doesn't have to be. There are ways to write obfuscated Java programs with the 1.0 language spec. You cannot eliminate obfuscated code. You just have to set a good example with the standard class libraries and use operator overloading only when it makes sense.
- "C++ templates are really complicated, so generics must be really complicated." Generics are much simpler than C++ templates. They don't bloat the code, they use explicit constraints to make error messages more sensible, and you don't have to ship template classes around in source form. I don't know why you mentioned generics, though, since Java 1.5 has them.
- "Unsafe code compromises the safety of the system." Yes it does, but that's something the developer is aware of. The safe subset of the CLR instructions is just as complete as the entire JVM instruction set. Unsafe code is meant to be used as an alternative to some of the cases where you were forced to use JNI. Unsafe code is portable in compiled form, unlike an application that uses JNI.
What C# design mistakes make it worse than Java? Though I think value types were a mistake, Java doesn't really have a better way of handling them right now. I also mentioned that Java has better enums and variant typing. That's all I can think of (please respond if you can think of any more). Those advantages don't outweigh C#'s: function pointers, closures, generator functions, fast generics, isolatable runtime contexts, etc. C#'s improvements over Java probably won't make it worth your time to port your application, but there's no question that it is, overall, a better language.
Industry Support
Yes, Java has more industry support and more industry support is definitely better. However, there's a threshold after which you can safely use a language without worrying about tool support or the variety of available libraries. It's not a well-defined line, but C# is definitely going to cross it very soon. For many developers, the current level of support is probably good enough.
How does Java have better desktop platform penetration? It doesn't come with Windows either. Some OEMs might pre-install the JRE, but those OEMs are probably just as willing to pre-install the
.Net runtime. While Longhorn wont be out for a while, it will be preinstalled by all the major desktop vendors when it does. It's not likely that Solaris (or any other OS that comes with Java pre-installed) will have a significant share of the market. It could happen, but it's a sensible decision to bet on Microsoft winning out again.Companies that want uniform environments are willing to pre-install MS Office and Adobe Acrobat on all employee desktops. Why wouldn't they be willing to make the free
.Net runtime part of the standard installation? -
Re:I'm not so sure...
Whenever my cable net goes out, I feel like I've suddenly just awakened. I go read, I do things around the house, go outside... it's a pretty startling change.
A more interesting variation is when your network connection works fine, but your (only) monitor is very much dead. This has happened to me. However, I still managed to telnet into a BBS and post messages, having inadvertently memorised all the necessary key-presses.
Thinking about it, I should have printed out some man-pages and got Festival up and running... -
Re:So that explains the deterioration> Eventually you decide to start randomly changing the file extension and when you hit upon AVI, Bingo!
file is your friend
-
Earth Evidence for Mars lifeThere is already evidence of life in extreme conditions on earth. Our biosphere extends from as deep as we can measure to space. There is evidence that life can sustain radiation that would kill a city.
To look at a rock in space and say, " I doubt there is life there" is to ignore the fact that we have yet to find a place where life can't exist (maybe the sun...). In essence, if there is energy, then there exists the potential for something to exploit that energy. And more often the not, something does.
The question should be "What is living on this rock, and why can't I find it?"
-
Re:this is truely scary
The problem of course is that, as TheWordOfB (696275) noted, the Prion is an extremely stable molecule. There is no standard method for destruction. At best there are approved disposal methods http://www.ehrs.upenn.edu/protocols/sa_destruct.h
t ml#prions The protein PrPC which is the normal protein has, at this time, an undefined function as explained here:http://www.portfolio.mvm.ed.ac.uk/studentwebs /session1/group42/prion_index.htm. The signifigance of artificially creating a prion is that it may now be possible to put the reaction under heavy restriction to see exactly what happens between PrPC and a Prion that causes this metamorphosis. -
Re:Displaying XHTML
The CSS error is probably beause your XHTML isn't well-formed.
-
Tons of Ontarios [Re: Where is Ottawa]Ontarios outside the US:
1|-356249|-535329| -11.2833333| -74.4333333|-111700|-742600|WN65|SC18-15|P|PPL||P
Ontarios part of the US:E |12||||N||||ONTARIO|Ontario|Ontario|1993-12-12
1| -894310|-1322756| -38.25| -72.1|-381500|-720600|YC56|SJ19-09|S|FRM||CI|04||| |N||||ONTARIO|Ontario|Ontario|1993-12-19
3|-12693 64|-1846857| -25.9166667|23.1333333|-255500|230800|GS13|SG34-08 |S|FRM||SF|01||||N||||ONTARIO|Ontario|Ontario|1993 -12-23
3|-1269365|-1846858| -27.2666667|26.7333333|-271600|264400|MK78|SG35-14 |S|FRM||SF|03||||N||||ONTARIO|Ontario|Ontario|1993 -12-23
1|-1636725|-2305677|22.9166667| -81.3166667|225500|-811900|MF63|NF17-06|L|LCTY||CU |03||||N||||ONTARIO|Ontario|Ontario|1994-01-12CA|Ontario|ppl|San Bernardino|06|071|340348N|1173900W|34.06333|-117.
And of course there are loads of Sheffields, Aberdeens and plentitudes of instances of pretty much any other name on earth (i.e. locations named 'Paris', 'London', 'Berlin') abound.6 5|||||988|134825||Ontario
IA|Ontario|ppl|Story|19 |169|420209N|0934053W|42.03583|-93.68139||||||||Am es West
IL|Ontario|ppl|Knox|17|095|410443N|0901827W| 41.07861|-90.3075|||||802|||Wataga
IN|Ontario|ppl |LaGrange|18|087|414208N|0852257W|41.70222|-85.382 5|||||880|||Lagrange
KS|Ontario|ppl|Nemaha|20|131 |393400N|0955255W|39.56667|-95.88194|||||1205|||So ldier
NY|Ontario|ppl|Wayne|36|117|431315N|0771700 W|43.22083|-77.28333||||||||Ontario
OH|Ontario|pp l|Richland|39|139|404534N|0823525W|40.75944|-82.59 028|||||1390|3979||Mansfield North
OK|Ontario|ppl|Ottawa|40|115|365915N|094454 6W|36.9875|-94.76278|||||844|||Picher
OR|Ontario| ppl|Malheur|41|045|440136N|1165743W|44.02667|-116. 96194|||||2154|10344||Payette
PA|Ontario|ppl|Wash ington|42|125|400612N|0800429W|40.10333|-80.07472| ||||1060|||Ellsworth
VA|Ontario|ppl|Charlotte|51| 037|365918N|0782911W|36.98833|-78.48639|||||615||| Fort Mitchell
WI|Ontario|ppl|Vernon|55|123|434333N|090 3529W|43.72583|-90.59139|||||900|412||Ontario -
Re:Improving Star Trek, the idiot's guide:
-
Re:Go Google Go!!They support multiple archive formats, although bzip2 and rar are strangely missing from the list:
Can I send or receive an executable file?
I assume they use file or something similar to identify executables and archives. I fail to see how that is any worse than Yahoo identifying file type and scanning for viruses.
As a security measure to prevent potential viruses, Gmail does not allow you to receive executable files (such as files ending in .exe) that could contain damaging executable code.
Gmail does not accept these types of files, even if they are sent in a zipped (.zip, .tar, .tgz, .taz, .z, .gz [emphasis added]) format. If someone tries to send this type of message to your Gmail account, the message will be bounced back to the sender. -
Re:examples?
I think the subtle clues apply to speech synthesis as well. Even the best speech synthesizers ( like the Festival Speech Synthesis System ) have yet to eliminate the subtle clues that humans are able to pick to determine a fake.
-
one more program
Nobody has mentioned Pythoñol yet. It's not Japanese, but I figure the people trying to learn Spanish probably ask the same questions. Pythoñol is open source, runs happy on Linux (and runs not quite so happy on other platforms), and talks to you if you can figure out how to install festival.Hope this helps someone.
-
Re:I should be so lucky
RCP? What's that? BSD remote file copy?
-
A lot of work as been going on
At my university they have been working hard on a similar sort of anti-virii for combating HIV and Influenza we have a research page located here for more details.
-
They rather go post-card shoppingOf course geo-spatial data is VERY useful for all sorts of purposes. Just like with a steak knife: you can do wonderful and fun things with it and cause a lot of nasty wounds and red stains on the living-room carpet as well...
But seriously, the (US) governments totally gets the mind-set of these people wrong. They don't download multi-gigabyte maps from the net before they attack, they simply and effectively pick so-called postcard targets, because they seek to attract media attention and these targets stand for what they resent.
Most terrorists are surprisingly low-tech, but that's actually why they can be difficult to track down: if you never use Web browsers, phones and credit cards you leave few traces.
If you read the recent intelligence 'success story' where they tracked some people because they used a Swiss pre-paid mobile phone SIM-card from somewhere in Pakistan, apparently swapping mobile phones and not SIM-cards instead of the other way round, this gives you an idea of what to expect. -
Re:Okay Now
I think that some people would rather use shred(1) .
-
Re:look down a few posts
-
Re:The advantages of taking MS seriously...
Two reference to look at: Stephen Gilmore, Mobile Resource Guarantees Project, Laboratory for Foundations of Computer Science, University of Edinburgh, Presentation, "Comparing the JVM and
.NET", here> Jeremy Singer, "JVM versus CLR: A Comparitive Study", Proceeding of the 2nd International Conference on Principles and Practice of Programming in Java, May 2002, pp. 167-169 Both papers compared the performance of the JVM to the CLR. The first used the Pascal compiler that emitted code for both the JVM (1.4) and the CLR and the second used Java Grande benchmarkes that were translated to C# and complied to the 1.0 CLR (the Java was compiled to Java 1.4.1, with hotspot). In both cases, the CLR beat the JVM in performance, in some cases, by a large margin. A beta version and version 1.0 of the CLR on Microsoft beat a mature version of the JVM on the Windows platform. So, the CLR can indeed be faster than the JVM. In fact, each paper talks about how the CLR instruction is more ameddable to optimization (on any platform) than the JVM, which was not originally designed with JIT in mind. Just FYI. Any references on Java beating the CLR to counteract the above? (Seriously. Debate is good). -
Re:Natural Voices
Festival is at least tolerably good; it's under an X11-style license. It's admittedly not as nice as AT&T's thing though.
-
Salter's Duck
Let's hope it does better than the Salter's Duck. The development project was cancelled in the 1980's after UK government departments grossly over-estimated (by a factor of 10) the cost of the electricity it was going to produce. Cock-up or conspiracy?
-
Additional Information
This article gives a nice overview of how Single Image Random Dot Stereograms (SIRDS) work and their history.
Also, check out this Java applet here which can generate stereograms, with source code. -
This is useful for non-blind as wellFor my job, I have to commute at least 2 hours every day, so I use Festival to convert text to wav, which I burn on a CD. That way, when I'm fed up with news or music, I put on the CD and 'listen' to this new article which I saw online but didn't have the time to read.
Any others who do this as well? Any tips for better software for this purpose than Festival? It's not too bad, but it's not terrific either.
-
What I should do...
IF I knew that Comcast wouldn't shut it down on me, I would set up a stream server, fed by aFestival server, constantly repeating the same stream over and over and over.
This is a message from the general population of the United States to Michael Powell, chairman of the F C C. FUCK YOU. Thank you.
-
Re:Why isn't Haskell more popular?
The reason why functional programming languages (not just Haskell) aren't popular is a bit of a Catch-22 situation. Most people try to learn a new language because it adds value to their resume or because something they're working on demands it. In the former case they always lean towards the so called mainstream languages - C/C++/C#/Java/... In the latter case, they probably don't care which language they're forced to learn and abandon it once their work is done. So a language doesn't get adopted unless it goes mainstream. But for a language like Haskell, it's difficult to go mainstream unless it gets adopted.
This does not in any way mean that an implementation of an idea in a functional language is necessarily slower than one in a say C/C++. See for e.g. Yaws . Phil Wadler has some information on functional language use in industry here. Galois Connections uses functional languages like Haskell/ML and there are several companies which use Erlang. -
Re:Turbo Codes for modems?
well they are not exactly a compression technique... but basically an error correcting technique.... like hamming. And thus help you transfer more reliably at the same power.
see this small writeup
besides changes like the one you talk about would require hardware changes... as i said its not compression
-
Re:Functionals
I agree that functional programming languages are quite useful, but speaking as a coder who learned functional programming just last year in class, I can say that functional languages are a lot more complicated than procedural languages.
I'm not sure I'd consider most functional languages complicated. Look at the number of types and basic functions in something like SML or OCaml... a few basic types, and a few functions to act on them... There's really not a lot there to learn.
If anything many functional programs are simpler because they directly map to the mathematics of the algorithm given... especially for recursive algorithms!
I believe that often times it's more difficult to program in, but that's hard the same as "complicated".
Sure, once you get good at it you can bang out a functional program easily, and maintenance can be a breeze once you know how to write the code. However, reading and understanding code that ISN'T yours can be damn near impossible sometimes, especially when you're a newbie.
Actually one of the main problems that is noticed within the functional community is that because there's a lot of recursion and tight coupling between different parts of algorithms, they can be hard to maintain. That's why a lot of people are excited about monads. They allow the use of modularity in a very cool, and appropriately mathematical way! You should check them out of you haven't already, they greatly simplify the task of writing things like interpreters, etc.
I'm not discounting the use of functional languages, I'm just saying they are harder to learn than procedural languages.
I'm not really sure that's true. I know people who's first programming language was functional, and they found it equally hard to move to a procedural language - worrying about things like state, ordering, pointers, globals, memory management, bounds checking, interrupts and callbacks and non-persistent data structures, and even manually-implemented laziness.
Advanced features of any language are difficult to learn, but I'd suggest that anyone who knows a little math can learn to write a small but useful functional program as easy or easier than they could in something like C. Not to mention many algorithms are so naturally recursive, but tail-recursion optimization doesn't seem to work well on many C compilers.
It's certainly different though!
Cheers,
Justin Wick -
Just got this book
Nice review!
I just got this book and it's clear the author has really done his research. His writing style is also very clear, concise and well thought out. Not overly chatty or pandering, yet not dryly accademic either. Precisely the kind of computer book I'd want to write!
I'm glad the reviewer didn't try to talk a lot about why people should be interested in functional programs, however I must say that the ability to write large complex algorithms in very few lines, and prove mathematically that it works is simply a miracle in some situations. If you need to write a compiler (or do any other set of complex alogirthms on large recursive data structures, especially those that could take advantage of tagged unions, like Abstract Syntax Trees do) you should check out OCaml. And it doesn't hurt that it can figure out the type of all your functions and variables for you :)
Oh, and if you happen to get this book, and want to play with OCaml, you can get the OCaml translation of the data structures in this book here.
I dont' know if very many programmers will ever program in a purely functional language, however it seems that languages of the future will have to include things like first class functions and closures, as they are incredibly useful. I know Ruby and Python already support a lot of it.
Oh and in case anyone's wondering, it *IS* possible to encapsulate things like notion of state, error handling, and I/O in a purely functional language ("side effect free" language) using something called monads. Now there's a fun concept to wrap your brain around!
Hope some people here are brave enough to dig into a book like this that requires a bit of math, and more than a little faith at some points :)
Cheers,
Justin Wick -
If anyone can get this right, it'll be PARC...PARC has a history of doing things meta before anyone else, and by and large getting it right.
A couple of examples:
Smalltalk - took "everything is an object" to the extreme. Smalltalk's byte-coded portability worked, in 1980.
CLOS - its "meta-object protocol" lets developers change the language's object-model semantics.
-
Text-to-speech & other stuff.
I have a friend with retinitis pigmentosa who is legally blind, but has some vision left. He was running a Windows box with a few tricks: a high-contrast color scheme with a black background and gaudy purple and yellow text & widget decorations. He also used a text magnifier and a tool that snapped the mouse cursor to the middle of the screen when he middle-clicked (he frequently lost the mouse cursor.) He also had a hardware speech synthesizer, with text-to-speech software that would read icon labels when he moused over them, read web pages, emails, documents, etc.
For an open-source solution, you might want to try Festival, an open-source speech synthesis system.
-
Re:Where's the VOICE RECOG.?!
-
Good, but not a good starting point
Speaking from some experience (CS undergrad TA while in grad school)....
A few thoughts:
It's essential to teach some assembly at some point in a CS undergrad - A CS course should give full insight into the workings of a real CPU, and should give as wide a variety as possible.
At Edinburgh the first year CS course included assembly, C, and ... wait for it ... PostScript. PS sounds wacky but it's the only stack based language widely used on modern computers (APL and Forth have died out).
When I was a CS undergrad we had practical classes in no fewer than 17 languages, covering the range of imperative, declarative, functional and stack based, plus specialist toys like theorem provers and SQL.
The best starting point for a university level course is the good old procedural language - in my day it was Pascal, C++ and Modula-3, these days I'd use Java (and many CS departments do).
Also, when you do get to assembler, I don't think using a real assembler is the best teaching tool - assemblers are intended for developing real low level code, or as back end targets for compilers. For teaching at Edinburgh, we used an X11 based tool called xspim which simulated a MIPS R2000 (we actually ran it on Sun Sparc-II's, not that it matters), and it let you single step and examine registers without the complexity of adding a debugger, and had a window where you could see the registers, CPU pipeline etc. displayed.
For introducing programming concepts to a younger audience I think an interpreted language which will execute command lines, allowing them to experiment while avoiding the edit-compile-run cycle, is very important. Some are better than others; when I was a kid the 8 bit micros (Apple, Commodore, Atari, ...) had BASIC interpreters in ROM, and they were mostly OK, though the only one with a really good BASIC language (proper procedures, not GOSUB) was the Acorn BBC.
I don't like Pilot or Comal for teaching (failed experiments of the 1980's) but I think LOGO is a very commendable way to make concepts accessible to the young.
A perhaps unexpected place I was made to learn with an interpreted environment was as an undergrad at Cambridge University, where the first programming language taught is ML which for the CS people who haven't heard of is an implementation of lambda calculus with a sane syntax. -
Good, but not a good starting point
Speaking from some experience (CS undergrad TA while in grad school)....
A few thoughts:
It's essential to teach some assembly at some point in a CS undergrad - A CS course should give full insight into the workings of a real CPU, and should give as wide a variety as possible.
At Edinburgh the first year CS course included assembly, C, and ... wait for it ... PostScript. PS sounds wacky but it's the only stack based language widely used on modern computers (APL and Forth have died out).
When I was a CS undergrad we had practical classes in no fewer than 17 languages, covering the range of imperative, declarative, functional and stack based, plus specialist toys like theorem provers and SQL.
The best starting point for a university level course is the good old procedural language - in my day it was Pascal, C++ and Modula-3, these days I'd use Java (and many CS departments do).
Also, when you do get to assembler, I don't think using a real assembler is the best teaching tool - assemblers are intended for developing real low level code, or as back end targets for compilers. For teaching at Edinburgh, we used an X11 based tool called xspim which simulated a MIPS R2000 (we actually ran it on Sun Sparc-II's, not that it matters), and it let you single step and examine registers without the complexity of adding a debugger, and had a window where you could see the registers, CPU pipeline etc. displayed.
For introducing programming concepts to a younger audience I think an interpreted language which will execute command lines, allowing them to experiment while avoiding the edit-compile-run cycle, is very important. Some are better than others; when I was a kid the 8 bit micros (Apple, Commodore, Atari, ...) had BASIC interpreters in ROM, and they were mostly OK, though the only one with a really good BASIC language (proper procedures, not GOSUB) was the Acorn BBC.
I don't like Pilot or Comal for teaching (failed experiments of the 1980's) but I think LOGO is a very commendable way to make concepts accessible to the young.
A perhaps unexpected place I was made to learn with an interpreted environment was as an undergrad at Cambridge University, where the first programming language taught is ML which for the CS people who haven't heard of is an implementation of lambda calculus with a sane syntax. -
Re:"generics"
I don't think I'd be going out on a limb to say that you don't really know what generics are as they apply to C++ and Java.
I think I will have to agree with you here.Given that Lisp is a dynamically typed language in the first place, I'd imagine that "generics" are a very different feature entirely in that language. So what are generics in Lisp, exactly?
What the parent is probably referring to when he talks about Lisp "generics" is macros, which are a totally unrelated concept.* Like you said, Lisp is dynamically typed, and the closest parallel to C++ generics is multimethods.* - A Lisp macro is a function that manipulates it's arguments before they are evaluated, with the result spliced back in the place of the macro call (this is pretty much the same thing as parse-tree manipulation in languages without explicit program representation). Peter Seibel's upcoming book explains them very well.
PS - Note that when I say Lisp here, I'm referring to Common Lisp. Scheme macros ("syntax-case") are a bit different, and Scheme doesn't come with multimethods or other goodies.