Wikipedia:Reference desk/Archives/Computing/2011 July 25

From Wikipedia, the free encyclopedia
Computing desk
< July 24 << Jun | July | Aug >> July 26 >
Welcome to the Wikipedia Computing Reference Desk Archives
The page you are currently viewing is an archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages.


July 25[edit]

Does logging in enhance access to this desk?[edit]

Hi I noticed that when I am not logged into Wikipedia, I can only see up to July 21, but when I am logged in, it takes me to the current forum. Is this supposed to happen--DSbanker (talk) 00:01, 25 July 2011 (UTC)?[reply]

No. —Jeremy v^_^v Components:V S M 00:09, 25 July 2011 (UTC)[reply]
We have previously noticed that (either by design or by accident) that many users who are not logged in see old, cached versions of the reference desks. That may also entail that the page appears read-only. If you're curious about details, search this page's archives for "caching" and "wikipedia" - if you need help finding some of the numerous prior detailed discussions, I or one of the other refdesk regulars can probably track down the archived discussions. Nimur (talk) 04:24, 25 July 2011 (UTC)[reply]
Some of the archived discussions;[1][2][3] [4]There's also a thread further up this page about it [5] and some threads from Village pump;[6][7]. The workaround at the moment is to purge Wikipedias server cache, see WP:Purge for how. This will force the current version of the page to appear, and you may have to keep doing it as for some reason pages often revert back to the out of date versions. Something really needs to be done about this entire situation, it has been going on for ages now AvrillirvA (talk) 10:40, 25 July 2011 (UTC)[reply]
Yes, this is happening to me as well, a lot of old revisions of pages are appearing, and as read-only. 80.123.210.172 (talk) 14:50, 25 July 2011 (UTC)[reply]

Ideal programming language(s) for beginning bioinformatics[edit]

I am a high school sophomore and visited a professor in the molecular biology sciences who is also an expert programmer. (He builds robots, biochips, and a bunch of other cool gadgets.) In discussing other things, he urged me to learn Python programming, and now im very interested in computer science, and progressing rapidly. I know Python is a powerful language for its simple syntax. But if I want to go into bioinformatics (especially to use the tool http://www.ncbi.nlm.nih.gov/BLAST/) and computer programming in general, maybe even study cybersecurity, is it an ideal language to start with? or is C/C++ a better choice?--DSbanker (talk) 15:33, 25 July 2011 (UTC)[reply]

In the long term, it doesn't make any difference. The skill you hope to acquire is programming; it's a bit like driving - you can learn to drive in a mini or a van and then drive anything in between, with a skill that's a head-start for learning to ride motorcycles or drive big-rig trucks. Any decent programmer can change to another language without a great struggle. -- Finlay McWalterTalk 16:11, 25 July 2011 (UTC)[reply]
Are there programming languages that would be especially bad choices for a beginning programmer; either because they are especially difficult to learn or eccentric in their approach and thus not easily transferable to other languages? Wanderer57 (talk) 16:40, 25 July 2011 (UTC)[reply]
Yes. There are many. Mumps is one that I like to pick on for being a terrible language to learn. Then, there are ones that are languages that are great for their intended purpose, but trying to use them as a general all-purpose language is a mistake, such as Lisp, Perl, or QBasic. -- kainaw 16:45, 25 July 2011 (UTC)[reply]
Lisp is definitely not a special-purpose language! Because of their macro systems, Lisp-like languages are perhaps the most general-purpose languages possible. A number of schools teach Scheme (a Lisp-derived language) as a first language because they're nice and simple, yet powerful. Paul (Stansifer) 18:46, 25 July 2011 (UTC)[reply]
This is just proof that any claim that anyone makes in the realm of computer science is certain to be met with contradiction without sufficient explanation. Scheme, as mentioned, is a dialect of Lisp that reduces emphasis on list processing and increases emphasis on minimalism and extendability. As such, it is more general purpose than Lisp - which is why I didn't include LispScheme in a very short list of programming languages that are primarily used as specialty languages. Similarly, I didn't include ML, which is my preferred dialect of Lisp. -- kainaw 19:41, 25 July 2011 (UTC)[reply]
Did you mean to say you didn't include Scheme or 'it' (i.e. referring to Scheme)? Nil Einne (talk) 09:52, 26 July 2011 (UTC)[reply]
There's a claim (which to my mind is a total myth) that the first language you learn somehow warps your mind (like some kind of neuroplastic Whorfian fugue) and that if you learn the wrong language (which is whatever language industry actually wants right now, and thus is unfashionably associated with drab accounting programs) you're forever scarred. If this were true, programmers of my age, who learned on a motley collection of BASIC, 8-bit assembly, forth, and some pascal, should by rights be gurgling imbeciles, our code neither (as the song would have it) functional nor elegant. In practice there's mostly a continuum from the mechanical end (VHDL, asm, C) through the procedural (pascal, python, javascript, java, perl) to the functional (ml, haskell, scheme) and logical (prolog). Although most people end up making their living writing C++ or Javascript or the like many universities try to start their CS (and sometimes EE) people off with lisp or haskell (and I've heard of places, at least a decade or so ago, still starting people with prolog). It is a bigger jump from Haskell to C than from Python to C, but clearly plenty of people of reasonable intelligence graduate from one to the other without their minds exploding. A friend of mine worked for decades in Cobol, a language decried by the fashionistas as everything that's wrong with the world, but in practice the programs he was producing did complex distributed time-sensitive operations; the programs probably looked rather ugly, but the ideas they represented were beautiful. There are some wilfully abstruse ghetto languages, but in general any language of moderate maturity, whose creators designed it to get stuff done and not just to make a point, should be just fine. -- Finlay McWalterTalk 17:08, 25 July 2011 (UTC)[reply]
I don't know why I didn't think to mention this above, but I work in bioinformatics as a programmer. The language that I use about 90% of the time is PHP. I could use Python or Ruby or any scripting language. I use PHP because many of the libraries that I had access to when I started where in PHP and I'm not in the mood to rewrite them. The reason for using a scripted language instead of a compiled one is that much of the programming is based on some theory that some doctor has. So, a quick script is written to compare this, that, and something else and pump out a CSV file that the doctor can play with in Excel. On a day when I'm in a good mood, I'll even dump a PDF report with pretty graphs. The scripts are one-time use, so I don't have any need to compile and store a lot of executables. The runtime hit for scripting isn't important. I just start the script and move on to the next project. When the script eventually ends, I send the results off to the doctor. -- kainaw 19:45, 25 July 2011 (UTC)[reply]
I think starting with Python is perfectly fine. I wish it was around when I started programming. Well, it was around when I really started learning programming, but not to the point of being widely used. After Python, I'd look into Java. That's another language school like to use as a starting language, and it has a lot of usability for cyber-security. --Wirbelwindヴィルヴェルヴィント (talk) 00:09, 26 July 2011 (UTC)[reply]
A lot of the bioinformatics grad students and faculty I know like to use the R statistical programming language, particularly for when they use our HPC clusters. I agree that Python is a great way to get into programming, though, particularly since SciPy is almost as fast as the Matlab toolboxes that perform the same kind of operations. -- JSBillings 00:22, 26 July 2011 (UTC)[reply]
It depends with whom(projects are generally written in the same language) and with what you'll be working with. There are beginning books specifically for bioinformatics:
  • Robert Gentleman (2009). R programming for bioinformatics. CRC Press. ISBN 9781420063677. Retrieved 25 July 2011.
  • James D. Tisdall (2001). Beginning Perl for bioinformatics. O'Reilly Media, Inc. ISBN 9780596000806. Retrieved 25 July 2011.
  • Jon Ison; Ison/Rice/Bleasby; Alan Bleasby (1 March 2008). Bioinformatics Programming with EMBOSS. Cambridge University Press. ISBN 9780521607247. Retrieved 25 July 2011. {{cite book}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  • Mitchell L. Model (23 December 2009). Bioinformatics Programming Using Python. O'Reilly Media, Inc. ISBN 9780596154509. Retrieved 25 July 2011.
  • Ruediger-Marcus Flaig (2008). Bioinformatics programming in Python: a practical course for beginners. Wiley-VCH. ISBN 9783527320943. Retrieved 25 July 2011.
  • Harshawardhan Bal; Johnny Hujol (2007). Java for bioinformatics and biomedical applications. Springer. ISBN 9780387372358. Retrieved 25 July 2011.

Depending on how intensive the task, you may need to learn assembly for CPU and GPUs which are increasingly being used such as CUDA.Smallman12q (talk) 01:48, 26 July 2011 (UTC)[reply]

Why would you need to learn GPU assembly? Isn't the whole point of CUDA and similar APIs like DirectCompute and OpenCL to take away the need for such low level programming? Nil Einne (talk) 09:49, 26 July 2011 (UTC)[reply]
Such a discussion is outside the scope of this thread. See Programming language generations, Programming paradigm, as well as Low-level programming language and High-level programming language.Smallman12q (talk) 20:45, 26 July 2011 (UTC)[reply]
None of those suggest CUDA is assembly. Okay further research suggests PTX can be considered a part of CUDA and can arguably be considered assembly. But even then my impression supported by e.g. [8] [9] is that assembly programming including PTX programming for GPGPUs is commonly not recommended because, other then the fact most people can't do better the compilers which is common with x86 and most CPU assembly programming, Nvidia and AMD don't release the information about their hardware necessary to mean it's likely you can perform better. (I believe Close to Metal was arguably assembly but it's long dead so it doesn't seem wise to learn it.)
And my impression from what people have said in the RD is even on the purely gaming GPU (rather than GPGPU) level, most graphics programmers are moving away from bothering with things like ARB (GPU assembly language) although I believe it wasn't unheard of in the past.
Of course if you are writing for a specific hardware subset that you intend to operate your code with, you don't have so many of the considerations that people trying to write code for others to execute have but I'm still not convinced there is much point learning assembly for GPGPUs particular for someone in the field of bioinformatics, at least not until you find a reason why you need it.
Nil Einne (talk) 18:08, 27 July 2011 (UTC)[reply]

What is bioinformatics?[edit]

This question is a followup to the previous one.

I looked up bioinformatics and read: "Bioinformatics (i/ˌbaɪoʊˌɪnfərˈmætɪks/) is the application of computer science and information technology to the field of biology."

To me that field is as wide as all outdoors. Is it really so broad as that? Thanks. Wanderer57 (talk) 03:07, 26 July 2011 (UTC)[reply]

Well, no. I think it would be more accurate to say that it is the application of database technology to biology. That might be a bit too limited, but the other is certainly too broad. Looie496 (talk) 03:22, 26 July 2011 (UTC)[reply]
Bioinformatics is merely the overlap between Biology and Computer Science (specifically Information Technology). About 80% of the time, it applies to the use of computers to advance DNA research. About 15% of the time, it refers to health informatics - using computers to advance health research. About 5% of the time, it refers to something that has nothing to do with biology or computer science. There is an internal problem in Bioinformatics in that the DNA researchers think that DNA research is all there is to bioinformatics and they get angry when they see something like a population study on diabetics in Canada. But, for those outside the field, it is just using computers to handle a large about of data that has something to do with biology. It is a bit specialized. For example, anyone with good programming skills and database knowledge could do my job, but they would do it poorly. Half of my "computer programming" job is fully understanding medical terminology and coding. No doctor wants to sit down and cover every ICD9 code that may imply cardiovascular disease in some report he's asking for. He just wants to say "I want CVD patients" and get his report. -- kainaw 18:08, 26 July 2011 (UTC)[reply]
Thank you. So, for example, if a team is on a huge development project to create a system to capture patient's medical records from anywhere they could be created, store them, and allow doctors and hospital to access them, is that bioinformatics? Wanderer57 (talk) 18:40, 26 July 2011 (UTC)[reply]
It becomes health informatics when you do research on the data, which is a subset of bioinformatics. Collecting data from a distributed heterogeneous source is computer science and, strangely, a lot of people keep thinking that this is a new field of study even though it has been implemented many times since the 70's. -- kainaw 18:46, 26 July 2011 (UTC)[reply]
Thanks again. I don't see "Collecting data from a distributed heterogeneous source" as new.
I'm wondering though about a very large system with very complex data. Say a system with the scope to absorb people's medical records from a wide variety of sources, and to make the information readily available in very useful forms (eg, a stranger is brought into a hospital in a state of collapse, as they pass a scanner the system identifies them using an implanted microchip, a query with the patient ID and the symptom "collapsed" is fired off, and a reply is fired back that starts with anything in their history that might be relevant to a collapse.) (Scalable to a population of say 15 million people.)
Is that new? Is that a big breakthrough waiting to happen? Or is it already in use? Wanderer57 (talk) 21:58, 26 July 2011 (UTC)[reply]
The capability for this has existed since databases came to be. Some examples would be Google Health, Microsoft HealthVault, IBM Healthcare, Oracle Health Information Exchange. Aside from privacy concerns, the technology is heavily encumbered by patent litigation.Smallman12q (talk) 01:17, 27 July 2011 (UTC)[reply]
It isn't new. I've been doing it since 2003. See http://oquin.musc.edu if you want to read about one way to make it work. The primary problem is privacy. Then, you have buy-in from the doctors. Then, you have an even worse time getting buy-in from the clinic's IT staff. Then, you have the relatively simple task of gathering and normalizing the data. -- kainaw 12:27, 27 July 2011 (UTC)[reply]

Problem synching Google Calendar & Android phone[edit]

I have an Android phone, and use Google Calendar (which I had been using online for some time before getting the phone). Now, most of the time it synchs fine, but twice now I've found that appointments are disappearing from the calendar as seen on the phone (they are still on the calendar online). What might cause this, how can I stop it happening, and most importantly is there a way to make the phone pick up the events again easily? Thanks. DuncanHill (talk) 19:46, 25 July 2011 (UTC)[reply]

On my phone, in calendar, I hit the option button, select more, select calendars, and I can see a sync/visible icon next to each one. Then, I can set which ones are synced and which are visible. I can also see if they are in fact synced. Are the missing events from an unsynced account? -- kainaw 19:57, 25 July 2011 (UTC)[reply]
No, they are from calendars which it says are synched (they've got a tick in the bx next to their names). DuncanHill (talk) 20:01, 25 July 2011 (UTC)[reply]

After using Windows, Ubuntu cursor breaks[edit]

I dual boot my laptop with Ubuntu 11.04 and Windows 7. I use the Ubuntu partition a lot more, because I prefer it, it runs faster, it has all my files on, etc. But sometimes I run Windows-specific software/games, and have to go back to Windows 7.

However, every time I use Windows, the next time I load Ubuntu, the cursor jumps randomly around the screen and I have to restart using Ctrl+Alt+Delete or the button on my laptop. After a restart, it works fine.

This is an annoyance, and I wondered if anyone had any idea what causes it and/or how to fix it. Dendodge T\C 19:59, 25 July 2011 (UTC)[reply]

It seems likely to be some sort of problem relating to the pointer device settings. What sort of laptop in it, and what sort of pointer does it have? (Touchpad?) Looie496 (talk) 05:57, 26 July 2011 (UTC)[reply]
It's a Dell Inspiron 1545 with a normal touchpad thingy. As far as I can tell, it's an ImPS/2 ALPS GlidePoint. Dendodge T\C 23:20, 26 July 2011 (UTC)[reply]
This is a known bug, see this bug report. Apparently what is happening is that the touch pad is recognized as a mouse, and therefore handled incorrectly. There is apparently no proper fix yet, but one of the comments includes a workaround in the form of a Python script you can download and run when the problem occurs. Looie496 (talk) 01:09, 27 July 2011 (UTC)[reply]

IGMP and PIM[edit]

Can someone please present a brief explanation of the roles of IGMP and PIM in a network and when would one or both be used? The respective articles do not relate each other. Thanks in advance. 81.193.153.78 (talk) 22:26, 25 July 2011 (UTC)[reply]