Domain: stanford.edu
Stories and comments across the archive that link to stanford.edu.
Comments · 4,853
-
Why is this "new"?
God himself is well known for playing the pipe organ. RMS has (unfortunately) been known to sing (I can't find a link to this gem, it used to be somewhere on Jamie Zawinski's website.) Eric Raymond advises hacker wannabes to master a musical instrument to enrich their personality.
It's old news...hackers like music. Why? Music is a cleverly woven chain of simple notes and chords, and if you do it right it sounds amazing and gives much of the same gratification as programming.
That said, this guy's pretty damn cool.
-
Musical Computing
Musical computing is what I do now, at this place, and it's definitely true that computers are not musical enough.
First, the computer is theoretically a completely general tool, but the ones we use come packaged as an office tool. Using them for other purposes generally requires alot of work against this, even in our favorite operating systems. (though FAR less so)
The next problem is computer hardware. It's quite a daunting task in most cases to connect a keyboard or other controller to a computer. It has to be easy for non-geeks. (USB makes this much better than it has been.) In addition, the vast majority of low-end keyboards are awful. They usually have undersize keys, and almost never have velocity, which both become a problem once you move beyond 'mary had a little lamb'.
Creative makes a keyboard that is integrated into the qwerty keyboard. I think this is a fantastic idea. However, the same problems apply, undersize keys (they can be shorter, but they must be wide enough) proprietary, or at least nonstandard drivers, and very cheap construction. It is basically unusable, if they're wondering why it's not selling. Great idea though.
It is a travesty that all 'toy' musical instruments for children are really unplayable. What are we doing to our kids! Even the adult ones under $300 all lack velocity, and often have cheap keys that 'bounce.'
Using the qwerty keyboard as an instrument is not a bad idea. It is fundamentally different from typing. As an adult student of piano I thought my keyboard use as a geek would help. Maybe a little, but one key difference is that key hits when typing are INTERLEAVED, hence we get letters in order. Musical key hits are SYNCRONIZED, you often hit several keys at once. Learning the difference can be tough at first.
It does allow monoponic (one sound at a time) playing, and for that it's pretty neat. Many synth packages already do this, but the feature's not intended to be useful outside of testing. The PC keyboard sends key down and key up messages, so it may be possible to have polyphony (multiple sounds at once and chords) on keyboards whose internal multiplexing doesn't prevent it. Libraries intended for text keyboard use won't work for this.
Learning the piano I also realize that all those hours mastering Bruce Lee on the c64 when I was 13 were exactly the time when my brain could have been mastering music. The idea that you can't learn later is a myth. You learn differently. But the willingness, and the ability, to sit there for 6 to 8 hours a day trying to master something happens when you're young. (Luckily I did this with electronics and computers, so I'm now employed!)
Computers make GREAT musical instruments, and allow music to be made in most of the old ways and many completely new ways. Of course it's up to the musician to use them to make GOOD music.
The computer and toy industries have to start making products that are really useful to normally skilled people in normal situations, which are neither too technical or so stripped down as to be useless. Also, there need to be more musical games, which teach fundamentals, and are also fun. The only reason why the techological revolution isn't also a musical one is that we just haven't bothered. There's an instrument in every home and classroom now, and if we aren't cheap and lazy about it, they would be useful. -
The problem with flu vaccines...Flu vaccines--for the last several decades--are cultured in chicken eggs. The little eggs gets injected with flu virus, the virus replicates and the little liquid chicken produces antibodies, which are then sucked out and jabbed in Gramma's arm at the clinic. This works great. For swine flu.
Avian flu, however, would likely kill the egg--Dead Eggs Produce No Antibodies, i.e. no vaccine. Luckily, it's more difficult for avian flu to make the species jump to humans in a virulent form, but the WHO, CDC, and other groups are scared to death some bird flu is going to figure this out soon and we'll be helpless in front of it. It's 1918 all over again.
Don't get to cranky about these folks looking at ways to culture flu virii in something other than chickens--they're looking for answers.
-
Folding @ Home
All the more reason to participage in the Folding @ Home project. This project is helping researchers understand and develop models of protein folding, so that someday, sythetic enzymes that create useful products may be a reality.
-
Re:Alan Kay and the rest of the PARC crew richly
Xerox didn't invent the mouse. It was invented by "Douglas Engelbart and his colleagues at Stanford Research Institute in the 1960s."
-
Re:Paying for Air
Maybe because Yahoo was a stanford.edu site in those days?
-
Re:DRM is good
What rights are lost should be clarified: Fair Use.
http://fairuse.stanford.edu/
http://www.cetus.org/fairindex.html
It's not that the industry hasn't tried to do this before (CSS); it's just that this time, they've got a better-than-even chance of succeeding in their efforts. -
Re:Hey America:
As long as Americans are willing to believe that politics is over their heads and that they shouldn't worry about what goes on in Washington, the way is wide open for some dynastic madman to install himself in the White House without even being elected, and start waging unprovoked wars in countries most Americans can't recognize on continents most Americans can't name.
Wait... Didn't that happen already?
-
Re:Dude, Chill
-
Attention: This is totally legal.
Apple did not use Eminem's song in their commercial.
Apple did not sample Eminem's song in their commercial.
Apple did show a 10-year-old girl COVERING the song, in Acapella.
Not only could this easily be definied as a cover, which requires no payment of royalties, but I would see it as a parody, which is covered under fair use.
I suggest you all review the Stanford Copyright & Fair Use Guide at http://fairuse.stanford.edu/web_resources/index.ht ml.
There is no case here, mark my words... Apple will win this suit, as Eminem has no case. -
Re:i86 64I think the important thing is that people won't have to write for two architectures now.
Eventually, they'll have no choice. Bob Colwell, a former P4 architect, gave an interesting talk which basically said x86 is running out of steam due to, among other things, carrying compatibility baggage going all the way back to early DOS.
-
Not such a new ideaThis is a very old idea. Not that you should be ashamed for thinking it up. There are similar solutions for almost every vulnerable Internet protocol (DNS, BPG, etc.) People don't implement them because they have high cryptographic overhead and require major infrastructure changes (including the addition of a PKI.)
Incidentally, a better solution might use Identity Based Encryption. Still has many of the same problems, but it's a tiny bit more elegant.
-
Re:Mars is a Prospect for Money
I didn't realize Paul Ehrlich was a
/. poster. -
Re:ask the community
See also his help wanted page.
-
Re:ask the community
The community can help already. Download the fasciles and comb them for errors, as is explicitly requested on Knuth's news page.
-
Book too big? Watch the movies!
And if reading the fascicle is too heavy going, remember that you can watch the movies instead, at http://scpd.stanford.edu/knuth/. Fourteen videos of Knuth's lectures are aavailable, inclusing last years's "Tenth Annual Christmas Tree Lecture: Finding All Spanning Trees".
I watched the Tenth Annual Christmas Tree lecture live (the "trees", of course, being various computer science graphs and structures, not pine trees hung with colored lights) and found it surprisingly engaging and accessible even to an educated lay-person. If you have any interest in computer science or algorithm design, it's a fascinating way to spend an hour. (Disclaimer: I'd just watched the 1998 lecture to better understand Garsia-Wachs coding.)
I was so excited about watching it live that I submitted the Knuth Christmas lecture as a story about it to Slashdot, but the editors didn't think it important enough to accept. (Nor the story on "brain fingerprinting" -- a kind of polygraph based on direct reading of brain waves -- casting doubt on a death sentence, nor Eagle's drummer Don Henley's op-ed piece in the Washington Post attacking the music industry and ruminating on p2p, nor the story about Anglo-German scientific rivalry and the resulting pickled baby "dragon".) -
Re:Perception?
Agreed, "Chaos is perhaps at the bottom of everything." sums it up.
...No, wait, that's way too general for the given context, hmm.. (Ignorance alert: I actually never even considered the origins of that particular phrase* - thanks for the pointer!).*) For folks matching me in cluelessness: I believe KFG's referring to the quote**
"Progress, far from consisting in change, depends on retentiveness. Those who cannot remember the past are condemned to repeat it." (The Life of Reason, 1905)
As told by Wikiquote. See also George Santayana, stern looking feller.**) But "A child educated only at school is an uneducated child," seems applicable too.
-
Paraconsistent logic
There are a number of ways of treating sentences like "this sentence is false" logically without throwing one's hands in the air and saying it is meaningless.
It's a well formed sentence in English grammar; it certainly seems to have a meaning -- that is, that the sentence is in some way not true. The problem lies in that it appears self contradictory.
What's needed is some sane way of dealing with things which are inconsistent. Paraconsistent logic is one such way, and if you ask me, a pretty strong case is made for it. Such a logical underpinning for mathematics would also mean that the potential for inconsistency in maths that can not be avoided (thanks, Goedel!) need not spell disaster.
Read up on it -- it's cool. -
Re:Does software count?
Actually what I found more surprising is that Marc Levoy wasn't given an award, even though he is one of the authors of the "A Practical Model for Subsurface Light Transport" paper.
-
Depends on the linguistic school of thought
It depends on what school of linguistics you subscribe to. In the US, Chomsky's generative grammar reigns nearly universally (MIT, etc.). In Europe, functional linguistics is widespread (Reading, Liverpool, Freiburg, Cologne, etc. but also Stanford, U AZ, etc.).
To us functional linguists, it is apparent that language does not determine thought, but also that language is determined by culture. In other words, use is what determines what language looks like (see Krug's work with string frequency, Lehmann and Traugott's grammaticalization, etc.).
Of course, it seems once again to boil down to the ancient question -- what came first, the chicken or the egg.
Once language appeared on the scene, it changed with usage. However, it is quite robust, as evidenced by the very slow linguistic changes compared with rapidly advancing culture. -
PCI-Express == Vector CoProcessorIn my lab we're working on surgical simulation including organ physics, cutting, bleeding, etc. We need all the perfromance we can possibly get. The GPU is a monsterously fast parallel vector processing engine, and can be used for non-graphics computation. Asymmetric AGP bandwidth has prevented us from using the GPU as a coprocessor thus far: across the AGP bus you can push data down to the GPU through a firehose, back up through a straw.
AGP was a hack onto PCI. PCI-Express will give us the symmetric bandwidth we need. Yeah!
-
Re:Patent approach not surprisingPatents don't protect an end product -- just a particular process that yields that end product
I have to suggest that a patent on a process is possibly sufficient.
The rsa patent was narrow strong enough to prevent interoperable software
RSA encryption and decryption are both essentially 3 line algorithms. There are no known alternate ways to decrypt -- assuming the absence of an academic conspiracy to suppress its existance -- and so the patents were legally strong enough to block any unlicensed interoperable software.
See this for further legal and practical explanation.
-
Re:That is exactly the wrong approach
A fair point. The trick is to take a much more principled approach to analyzing real-world entities and relationships. This is the field of formal ontology, a branch of philosophy.
Good ontology modelling software would check assumptions about objects such as "if you remove a man's arm, he is still considered the same man" (in business context, yes) and "a company is the same as the people who work in it" (it's not). Basic stuff; people tend to know it intuitively, but that intuition tends not to make it into software, which causes breakage. -
Re:Afloat you say?
if we do not start paying down the debt, we will run into major problems. If the world stops buying US Treasury notes, we will have to find some other way to get the money to pay for our deficit spending.
First (quick) point: most of the US debt is owed to US citizens.
Then:
You shouldn't ever have a (sizeable) surplus if the government is running correctly. Any government can pay back its debt by increasing taxes or by printing more currency. Both of these policies would be irresponsible.
It is much more fiscally responsible to balance the budget (erring slightly either way doesn't make a big difference), and reduce the effect of the debt due to (1) an increased GDP and (2) inflation (the time value of money decreases).
Anybody who really wants a sizeable surplus is confusing micro-economics with macro-economics, or needs to read more articles where Nobel Laureate economists give their insight, rather than just making stuff up. -
Re:Bjarne Stroustrup
Perhaps, as C++ is quite a hack
;)
Jokes aside .. perhaps that comparison would be valid if Bjarne created an amazing (and innovative) OS. ;)
I think John McCarthy should be on the list (ha-ha, no pun intended). He was a major contributor to computer languages as we know them. Lisp was truly original. -
Re:Damage
Jets are closer to 200dB.
not quite: Jet engine at 3m : 140dB
Seems you're off by a factor 1 million.
Still, it seems pretty unlikely to affect, let alone damage, an aircraft.
Also, I doubt lightning is THAT loud. Where did you get that number? -
Re:Graduate School
Absolutely!!!
Or study EE/CompEng (for example at Stanford you can major in EE with sub-specialization of computer software, or major in CS with sub-specialization of computer hardware -- they are very similar in terms of courses but the theory-classes you take will be different).
Also, at the grad level, consider programs in Distributed Systems in addition to networking.
ObPlug: Stanford has some excellent higher-division CS and EE classes in computer networks, and distributed systems. Stanford's MS programs are heavily professional-oriented (1 year, coursework-only, no thesis) and worth considering post-undergrad -- they are very hard to get into though. If your employer is an SITN member you can take the classes via distance learning, without having to be admitted to a full-time degree program. -
Re:Graduate School
Absolutely!!!
Or study EE/CompEng (for example at Stanford you can major in EE with sub-specialization of computer software, or major in CS with sub-specialization of computer hardware -- they are very similar in terms of courses but the theory-classes you take will be different).
Also, at the grad level, consider programs in Distributed Systems in addition to networking.
ObPlug: Stanford has some excellent higher-division CS and EE classes in computer networks, and distributed systems. Stanford's MS programs are heavily professional-oriented (1 year, coursework-only, no thesis) and worth considering post-undergrad -- they are very hard to get into though. If your employer is an SITN member you can take the classes via distance learning, without having to be admitted to a full-time degree program. -
We're using ClarolineWe're using Claroline here. It's been doing fairly well, although there are some features I'd like it doesn't have yet. (I've already added 2 since it's just a set of PHP scripts- it ain't hard.)
Another possibility is Stanford's CourseWork
WebCT and Blackboard should be very, very scared
-
Knuth's Art of Computer Science did it, tooWhile Don Knuth's assembly language MIX runs on a theoretical processor, all of the examples in The Art of Computer Programming (TAOCP) are based on it. Even as he has revised the editions, he has updated the language to be based on RISC (search Google for MMIX), but he chose not to update the examples to a higher level language. Here is his reasoning from his web page:
Many readers are no doubt thinking, Why does Knuth replace MIX by another machine instead of just sticking to a high-level programming language? Hardly anybody uses assemblers these days.
Such people are entitled to their opinions, and they need not bother reading the machine-language parts of my books. But the reasons for machine language that I gave in the preface to Volume 1, written in the early 1960s, remain valid today:
- One of the principal goals of my books is to show how high-level constructions are actually implemented in machines, not simply to show how they are applied. I explain coroutine linkage, tree structures, random number generation, high-precision arithmetic, radix conversion, packing of data, combinatorial searching, recursion, etc., from the ground up.
- The programs needed in my books are generally so short that their main points can be grasped easily.
- People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird.
- Machine language is necessary in any case, as output of many of the software programs I describe.
- Expressing basic methods like algorithms for sorting and searching in machine language makes it possible to carry out meaningful studies of the effects of cache and RAM size and other hardware characteristics (memory speed, pipelining, multiple issue, lookaside buffers, the size of cache blocks, etc.) when comparing different schemes.
Moreover, if I did use a high-level language, what language should it be? In the 1960s I would probably have chosen Algol W; in the 1970s, I would then have had to rewrite my books using Pascal; in the 1980s, I would surely have changed everything to C; in the 1990s, I would have had to switch to C++ and then probably to Java. In the 2000s, yet another language will no doubt be de rigueur. I cannot afford the time to rewrite my books as languages go in and out of fashion; languages aren't the point of my books, the point is rather what you can do in your favorite language. My books focus on timeless truths.
Therefore I will continue to use English as the high-level language in TAOCP, and I will continue to use a low-level language to indicate how machines actually compute. Readers who only want to see algorithms that are already packaged in a plug-in way, using a trendy language, should buy other people's books.
The good news is that programming for RISC machines is pleasant and simple, when the RISC machine has a nice clean design. So I need not dwell on arcane, fiddly little details that distract from the main points. In this respect MMIX will be significantly better than MIX. -
Re:MIXAL
You might be interested to know that MMIX is the new 64-bit RISC processor version of MIX. There's even an assembler and simulator available so you can run code, and gcc even generates code for the processor.
-
Use an assembly language intended for teaching
Why not learn using an assembly language that was intended for teaching like MMIX? I know there's always ``the Art of Computer Programming'', but it would be nice to have a shorter simpler book for beginners. The problem with teaching 80x86 is that it's already hard enough to get people to move on as it is.
-
Use an assembly language intended for teaching
Why not learn using an assembly language that was intended for teaching like MMIX? I know there's always ``the Art of Computer Programming'', but it would be nice to have a shorter simpler book for beginners. The problem with teaching 80x86 is that it's already hard enough to get people to move on as it is.
-
Re:No, but...
Except that things like "i = i + 1" vs. "i++" vs "i+=1" are mostly irrelevant today, since that's a very easy thing for compilers to optimize. And they've been optimizing stuff like that for years.
Try looking at the asm output from GCC at -O2 on those two statements.
Knuth had reasons for using ASM that were a lot better than that. It does give you a better idea of how things are laid out in memory, because you have to do it yourself. It's easier to do detailed performance analysis of algorithms, because you can get exact cycle counts. (Which in turn helps train your intuition, and tell you how to find out from a CPU's instruction set how it does at various things to tune algorithms.) You can look at how cache affects things.
Take a look at his reasons. -
Yes, hardly a new concept
Fundamental Algorithms, volume 1 of Knuth's well-known series, handled nearly all of the programming exercises in MIX, his "virtual" assembly language that modeled capabilities on a variety of real processors. There were and are a variety of simulators for it.
Another one is this relic I have on my bookshelf: cardiac, "A cardboard illustrative aid to computation", by David Hagelbarger and Saul Fingerman of Bell Telephone Laboratories. It's literally a cardboard "computer" on which you write decimal instructions, move sliders around for addressing and opcodes, and use a cardboard "bug" (a ladybug) as the PC.
-
Re:Looks cool, but...
Ah. I knew it. Just got my names mixed up.
It was Edison, not Franklin. -
It has been done ...
While direct reception of Spirit and Opportunity is probably beyond the capabilities of single-amateur equipment, reception of a continuous wave (unmodulated carrier) beacon transmitted by the Mars Relay Radio System aboard the Mars Global Surveyor on the way to Mars was achieved by amateurs in 1996. At the time, the 1.3 Watt transmitter was approximately 5 million km away from Earth.
The Mars Express probe that launched the ill-fated Beagle 2 lander, and the Mars Orbiter in orbit around Mars, were both detected by this station in November last year, although it stretches the definition of "amateur" quite a bit; also by these guys with much more modest equipment.
For a real challenge, the New Horizons spacecraft, scheduled for launch in 2006 to Pluto and the Kuiper Belt beyond, will employ beacon cruise mode, in which it will send a fixed tone (see page 42), designed for easier reception by amateurs, while cruising in deep space.
Additional information on amateur deep space reception is available here.
-
It has been done ...
While direct reception of Spirit and Opportunity is probably beyond the capabilities of single-amateur equipment, reception of a continuous wave (unmodulated carrier) beacon transmitted by the Mars Relay Radio System aboard the Mars Global Surveyor on the way to Mars was achieved by amateurs in 1996. At the time, the 1.3 Watt transmitter was approximately 5 million km away from Earth.
The Mars Express probe that launched the ill-fated Beagle 2 lander, and the Mars Orbiter in orbit around Mars, were both detected by this station in November last year, although it stretches the definition of "amateur" quite a bit; also by these guys with much more modest equipment.
For a real challenge, the New Horizons spacecraft, scheduled for launch in 2006 to Pluto and the Kuiper Belt beyond, will employ beacon cruise mode, in which it will send a fixed tone (see page 42), designed for easier reception by amateurs, while cruising in deep space.
Additional information on amateur deep space reception is available here.
-
Re:Fishy company
Win 3.1 could run on top of MS-DOS or on top of DR-DOS (Digital Research DOS.) When you would start Win 3.1 on DR-DOS you would get an error message (that said ERROR) unsuportted OS detected. This effectively killed the ability of third party PC makers to sell DR-DOS + Win 3.1 preinstalled. Here is one site that gives the story. (Features Caldera too, eh.)
-
Re:Fishy company
Which, of course, is an exaggeration. Any such requirements come from the deal your shop has signed with Microsoft. If the contract stipulates that in order to get OEM discounts you must sell MS Windows with every piece of complete hardware you sell, that's a perfectly reasonable clause.
Except for those pesky antitrust laws, sure.
The FTC (Federal Trade Commission) and DOJ (Department of Justice) got Microsoft into trouble for exclusive OEM deals back in 1994.
The OEM exclusive licensing was part of the FTC investigation. From that link
The major illegal practice cited in the complaint was that Microsoft imposes a per processor license fee on OEMs, which means the manufacturers would have to pay Microsoft a royalty for each PC they sold, even if it did not include a Microsoft operating system. See the section on OEM Licensing Issues for details.
The FTC and DOJ didn't consider per-processor licensing to be "perfectly reasonable". Microsoft settled out of court rather than go to trial; they knew they would lose.
That settlement led to the Microsoft Consent Decree. Basically Microsoft promised never to do it again. This attracted criticism from Judge Sporkin who said:
Simply telling a defendant to go forth and sin no more does little or nothing to address the unfair advantage it has already gained
Of course, Microsoft violated the Consent Decree in 1997 in order to destroy a new company called Netscape. The Consent Decree was worthless (as many people said it was).
-
Find a research area of interest to apply skills.
Here's some advice applicable to your question unlike the other 98% of unrelated opinions already posted:
OCW will get you started on the right foot, but I would recommend finding a suitable research field to apply those skills to.
Some of the best programmers I've worked with have been in a research lab at my alma mater's comp sci dept. And several of these grad students came from a non-computer science background such as physics, chemistry, genetics, etc. Once they found an immediate application for their programming skills, their skills progressed at an amazing rate. This does not mean that all science-based individuals are good programmers, but the purpose and foundation for learning (and learning properly) is already there.
So my advice? Use the internet to start researching some of the better computer science schools research groups and see if there is anything out there you like. Conjoining your medical background with a CS focus might lead to neuro/bio/medical -informatics, or maybe computational biology. You can also go into simulation, such as scientific visualization of specific area of medical research or even go into computer graphics. There are literally thousands of specific areas to look into.
Here's on example: Sticking with the foundation learned in OCW and applying proper programming techniques (such as learned in "Effective C++" by Scott Meyers) to fields such as computer graphics can be a great way to get immersed in the field - as long as you have an end application to apply your skills. So picking up a project like applying computer graphic visualization and simulation to a medical process or generating physical-based character animation can be extremely beneficial. You'll obviously have to learn computer graphics programming somewhere along the way, but that that'll just sharpen both your math skills and visual sense, along with having another great tool under your belt.
Go research some of the current projects going on at research labs at the top computer science schools. Here are some suggestions for you to check out:
brown
carnegie mellon
berkeley
wisconsin
north carolina
stanford
And of course not all computer science research falls under the header of the computer science department. Research medical departments doing interdisciplinary research with both engineering and computer science.
Almost all research labs have papers of their work (even their most recent) avaialble in PDF format. Download some of the earlier papers to get a feel for the research focus and try to find something that interests you. Try to implement the same techniques and algorithms using your skills. This will bea great way for you to realize what you still need to learn and get a great foundation in a new area of research.
But always keep in mind that proper programming is of utmost importance. So while your trying to leanr a new area of research by applying your skills, also focus on the studying from the better programming books out there that teach you how to become a better programmer. Go on amazon for suggestions. Start with looking up my previous suggestion and go from there.
Good luck, and sorry about all of the hundreds of wasted postings coming from IT people bitching about their lack of applicable skills.
Martin
-
Re:This just in...Believe it or not, there is actually a problem like this. Not ink, but acidic paper. If you've ever had a book you loved printed on this garbage you will know what I mean. Over time, the paper begins to fall apart. For more information:
Of course, this wasn't done deliberately, it is just a consequence of using junk paper. My parents have a fairly large library in which the pages of some of the books are either falling apart or have to be handled carefully or they will shatter.
-
Look into . . .
clincal informatics or biomedical informatics. Both of these fields are in dire need of people with a combination of medical and cs backgrounds. My suggestions would be to look at Vanderbilt's biomedical informatics program . You would only need a few pre-reqs and it leads to a M.S. or Ph.D in the field. Further, they have a program that is specifically tailored for a M.D. getting into the field. Stanford, Utah, and Columbia round out the top schools in this field. Further, there is no shortage of jobs as it is still in its infancy!
-
Become a craftsman...My recommendation would be to first decide how you best learn. If you learn best in a classroom, go for it. Otherwise - you already have a graduate degree in your MD, so you don't really need a computer science degree as well to convince people you're educated. If MIT's OpenCourseWare works for you - by all means use it. There are also numerous excellent books on most aspects of computer science available - Knuth, Stevens, Richter, Petzold, Stroustrop and many other good authors made far better teachers for me than I ever found in a university.
The market is currently quite rough, especially to break into. After being laid off when a product tanked on the market, I've gone a few months without having a single resume responded to - and I have almost a decade of professional programming experience that was applicable to the jobs I've applied for (and my resume used to keep the phones ringing daily for months when I posted it - the market has changed a bit).
I've been spending the extra time continuing development on my personal code library and projects, writing open source code, and working on a few products that I expect there to be a market for when they're done. That's how I'd suggest breaking into the field as well.
You have a very special situation though - you know, or can find out if you think about it and ask your colleagues, exactly what one fairly wealthy niche market needs. What software would help you - as a doctor - work more efficiently? What software have you and your colleagues found lacking? There's your first project
:)It won't be easy, and you won't make money fast. My recommendation would be to start learning about computers and computer programming now while thinking about products. As soon as you feel like you can design a useful program and have one in mind - take a shot at it.
Use CVS ( or for Windows, WinCVS ) or some other revision control so you can keep track of all the code you write (I wish I had when I started!). Estimate for yourself how long tasks should take - track those estimates, and figure out why they were right or wrong. Document everything, especially the code.
Once you have a product you think is worthy for your target audience - use it yourself in your work. Then let some colleagues try it out. Fix anything you find wrong with it, and ask your colleagues for suggestions.
Then, set up a website, advertise it, and try to sell it - or set up a project on SourceForge and make it open source - whichever you feel more comfortable with. On SourceForge, you'll be able to enlist the help of other more experienced programmers and together tailor the product towards excellence. If you sell it and it's successful, you'll be able to afford to switch careers to full-time programmer/entreprenuer and just work on your business.
That brings me to another point - if you aren't currently running your own doctor's office, start learning business skills too. They're just as hard to pick up as programming skills - possibly harder for some. Figure out what you'll need to do to start running your own software company. Even if you decide to write your own software as open source and become an employee for someone else professionally, this will help you at the negotiating table.
What I would NOT recommend is dropping out of medicine, getting a BS in computer science, and expect doors to be immediately open when you g
-
Re:Radiation hardnessWhile I would agree with you that avoiding malloc and preallocating memory is the way to go, but it is not always possible. In my case, we are using various 3rd party libraries, and changing them to use static memory allocation would be prohibitave. In at least one case, the third party library source code was not available. Also, in many cases the dynamic nature of some algorithms requires dynamic memory management. You cannot statically allocate everything, especially in a limited memory environment.
I know we're not the only ones to have been burned by Wind River's malloc. I know several major companies that also had to replace Wind River's code.
As far as being able to dynamically replace code, VxWorks isn't alone in that. Numerous other RTOSes out there can do the same thing, including QNX. QNX even supports the concept of a hot standby process to take over if the main process dies.
To give you an idea about how Wind River's malloc works, they keep a sorted linked list of fragments from the smallest to the largest. When you try and allocate a block, it walks the linked list until it finds a block large enough. Likewise, when you free a block it checks if it can coalesc the block with a neighboring block. It then goes through the linked list looking for a slot to insert the free block.
Yes, VxWorks may have been around since the 80's, but that's part of the problem too and it is showing its age. In the 80s embedded processors typically did not have MMUs. Now MMUs are quite common in the more powerful embedded processors.
You say you can't have low latency and memory protection? QNX proves that you can. It is low latency and *very* robust. If your driver dies, no problem, restart it. Timesys Linux also has a very low latency, although not as low as QNX. Timesys also has an interesting feature where you can guarantee CPU and networking resources. I can schedule a task to be guaranteed 5.8ms of execution every 8.3ms and it will guarantee that that task will get the CPU time allotted to it with the desired resolution. This is without increasing the system tick rate (usually 10ms). Timesys can also schedule a task to be higher priority than an interrupt. I'm not as familiar with QNXs scheduler, but it's also quite flexible from what I've heard.
As far as FAT, it is not a robust filesystem. It never has been. If the FAT gets corrupted or a directory entry gets corrupted it's difficult to recover. Other than possibly having 2 copies of the FAT cluster table, any corruption can be difficult to repair. If the FAT table gets corrupted, which table is corrupt and which is not? If a directory entry gets corrupted, it can be impossible to fix. For flash memory, unless you are using a device with special wear-leveling, FAT is about the worst choice since any file write that changes the size of a file requires a write to the directory entry and possibly the FAT table. If the table gets corrupted and you don't run a repair operation (which often ends up leaving orphaned files as lost clusters), the file system can happily corrupt itself to death. Why do you think every time DOS/Windows9x/ME crashed it had to repair the disk with scandisk? FAT is a poorly designed file system that was originally designed for 160K floppies and scales poorly. FAT32 is an improvement, but it's still not very robust. For flash, something like Linux's journalling flash file system 2 (JFFS2). More information on VxWorks file system support can be found here.
Basic VxWorks information can be found http://www.slac.stanford.edu/exp/glast/flight/doc
s /VxWorks_2.2/vxworks/guide/. -
Re:there's another virus i'm more worried about
a more modern example would be the 'spanish flu'(or whatever you prefer to call the massive killer of ~1917-1918).
quick googlin turned this page up.
"The effect of the influenza epidemic was so severe that the average life span in the US was depressed by 10 years.", yet it only had a mortaliry rate of 2.5%(and sars had what? 0.25? it still would have been quite severe had it spread uncontrollably).
however as to what comes to the the bird influenza.. I wouldn't be that worried. sure it costs a lot to terminate them(chickens) but hey, at least it dies at ~70 degrees Celcius(as opposed to 'mad cow' for example). of course some wto officials prepare for the disaster that it would be if it started to move from people to people, but that's their job(doesn't mean that it will happen).
-
Re:I am fit and you are not
I like to think of myself as the difinitive version of Adonais.
Obviously not the definite version of english scholar however ... -
Re:Hoping for the best
[..] and without integration only users who have Lilypond themselves can contribute.
Yes, and where would one find a user who runs windows, MacOS X, Red Hat, Debian or indeed some obscure BSD variant nowadays? -
Deja Vu
Vocaloid has been covered on Slashdot before. It is one of the many impressive projects to have at least in part come out of the Music Technology Group at Institut Universitari de L'Audiovisual in Barcelona.
This is one of many impressive Music Technology groups in the world who is kind enough to provide us with open source software such as CLAM. Similarly there are some groups out there doing interesting things. Needless to say, I could link all day...
I am a graduate student in this field -
Donald Knuth's desktop
You can see Donald knuth's fvwm desktop and also his fvwm2rc on the bottom of this page