What is the best dictionary for software development terminology? - terminology

On stack overflow, I see that there is referred to Wikipedia a lot. However, I'm often not sure whether they are the definite authority for very specific software development related concepts. For example, I have recently looked for definitions of the terms web server/service and RPC/IPC, and the responses I get very often refer to Wikipedia (directly and indirectly).
Hence my question: which sources do you trust the most for definitions of software development jargon?

http://www.google.com
And no, this isn't being tongue-in-cheek.

Personally I used to trust Wikipedia, and I still read it to get an idea about the subject. But definitely books are better choice. Because they not only have a "compressed" explanation but also provide an examples and give broader description. As professors of my university say, don't trust wikipedia, search for an authorized source. For example a huge information about web service technology you can find in the book Building Web Services with Java - Making Sense of XML, SOAP, WSDL, UDDI - 2nd Edition 2005. It contains information you'll never find in Wikipedia or even in Google (Unless you'll find this book using it ;) ).
Hope this helps.

Google and technical & non-technical software development books.

"A Story Culture" may be a useful read for you as you want something other than a dictionary, IMO. You want something with the knowledge and wisdom of the topic rather than simply what does this mean. For example, there are a couple of blog posts about Technical Debt that I really like to use for reference about the subject, one from Steve McConnell and one from Martin Fowler.
While I can generally suggest going to the source for the term, there is something to be said for a term getting overloaded or overused so that it can have little meaning. There are a few folks' blogs that I can say I trust to get some understanding on a subject including Joels and Jeffs, but don't forget that each of us has a brain and we shouldn't be afraid to use it.

Related

What's a good explanation of statistical machine translation?

I'm trying to find a good high level explanation of how statistical machine translation works. That is, supposing I have a corpus of non-aligned English, French and German texts, how could I use that to translate any sentence from one language to another ? It's not that I'm looking to build a Google Translate myself, but I'd like to understand how it works in more detail.
I've seen searched Google but come across nothing good, it either quickly needs advanced mathematics knowledge to understand or is way too generalized. Wikipedia's article on SMT seems to be both, so it doesn't really help much. I'm skeptical that this is such a complex area that it's simply not possible to understand without all the mathematics.
Can anyone give, or know of, a general step-by-step explanation of how such a system works, targeted towards programmers (so code examples are fine) but without needing a mathematics degree to understand ? Or a book that's like this would be great too.
Edit: A perfect example of what I'm looking for would be an SMT equivalent to Peter Norvig's great article on spelling correction. That gives a good idea of what it's involved in writing a spell checker, without going into detailed maths on Levenshtein/soundex/smoothing algorithms etc...
Here is a nice video lecture (in 2 parts):
http://videolectures.net/aerfaiss08_koehn_pbfs/
For in-depth details, I highly advise this book:
http://www.amazon.com/Statistical-Machine-Translation-Philipp-Koehn/dp/0521874157
Both are from the guy who created the most widely used MT system in research. It covers all the fundamental stuff, is very well explained and accurate. This probably one of the de-facto standard books that any researcher beginning in this field should read.
The Atlantic Online had a very straightforward nontechnical description of statistical machine translation back in December 1998:
Lost in Translation by Stephen Budiansky
I've read nontechnical stuff on statistical MT before but always wondered "yeah but how does the statistical stuff know which words map to which when word orders vary and supposedly no dictionary and no grammar are used?" Well this article actually does answer that and it's simple and straightforward and I was quite surprised.
A Peter Norvig talk from Google Developer Day 2007, Theorizing from Data: Avoiding the Capital Mistake, contains some accessible high-level explanation of the principles of statstical machine translation (starting from about 21:20).

tips for learning from opensource [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
Besides practice(practice and more practice) reading books and forums, analyzing others people code is a must in order to have a career in this field.
The problem is that I'm a student(feels like always on learning stage) but sometimes i can't solve the problems by my own. I was thinking that on public open source repositories might be the answer I'm looking for.
My question is how can i find the answer to some of my problems in open source projects/community? Do you have any tips to share for me?
ty
A few things for learning problem solving skills related to software developement (once you've found a project that you are interested in that is also written in a language you feel comfortable with) are:
Sign up to the mailing list
Lurk about on the project's IRC
channel (assuming they have one)
Read through bug repots (the open
ones to try solve them, and the
closed ones to see how others solved
them).
and of course discuss discuss discuss, if you think you have a basic grasp of the problem at hand but need clarification on some issues don't be afraid to ask your peers.
Hope this was of at least some help,
Welcome to the open source world and good luck!
Analyzing others people code is a must... I'm a student... public open source repositories might be the answer?
The problem with open source is that the quality varies too much.
(There's lots of my own code sitting in public open-source repositories that I wouldn't want anyone to try to see, let alone learn from.
And yet some of my code, the code I have lavished time and attention on, is very good—or so my peers tell me.)
So you don't want to pick an open-source project and learn from J. Random Hacker. You want to learn from the best hackers.
Here are some strategies:
If you're a student, you have acccess to teachers. One or two of them may have an idea about software. Ask them what is worth reading—what you will learn from.
Look at conferences and journals that publish about software: SIGPLAN, SIGSOFT, USENIX, Software—Practice & Experience, Journal of Functional Programming. Read about systems that look interesting to you. Write to the authors and ask them if they recommend you try to learn from their code. Listen carefully to what they say; most of the best hackers know they can do better. If you extract a grudging admission, with a bunch of caveats, that maybe there is something to learn there, you've found the right person.
If you're learning C, a lot of the old Bell Labs stuff is really worth looking at (and a lot isn't). I admire the work of Jon Bentley, Brian Kernighan, and Rob Pike, among many others. You can download and read the source of the original awk, or Pike's interpreter for Newsqueak.
Popularity does not correlate with suitability for learning. The GNU tools are very popular, but almost anyone who has seen both will tell you that you will learn more from the Bell Labs versions. And Linux is very popular, but people I trust who work in the field tell me that if you want to learn about operating systems, you should study BSD. I myself work in the field of compilers and can tell you that if you want to write a compiler in C, the model to emulate is the little-known lcc, not the wildly popular gcc.
Finally, I highly recommend the work of Richard Bird, Hans Boehm, Ralf Hinze, and Phong Vo (two Haskell programmers and two C/C++ programmers).
What I've found useful over the years, is to validate your code, go through coding conventions and best practices for various languages. Open Standards are the inevitable part of Open Source Software. In order to maintain a successful OSS project, it has to have some common ground in the community, so for instance:
if doing some (X)HTML and CSS, always do it by the W3C standards. Passing validation will in itself improve your skills greatly. Use tableless markup (see Benefits of tableless design);
if doing some PHP, go through PEAR coding standards which is the de facto standard for all OSS PHP projects;
if doing some Flash Platform coding in Flex/ActionScript, see Flex SDK coding conventions and best practices;
if doing some Java, see Code Conventions for the Java™ Programming Language.
Lastly, but not less importantly, research Object oriented programming and various architectures used for software development, e.g. the MVC pattern.
... analyzing others people code is a must in order to have a career in this field.
I wouldn't say that is correct. Certainly it is not a must. Reading other people's code doesn't usually explain why they chose to solve a problem a certain way, and what alternatives they considered and then dismissed. Besides, it is not uncommon to find open source code that is badly designed and/or badly implemented.
The problem is that ... but sometimes i can't solve the problems by my own.
Ah. Well the solution to that is to practice, practice, practice, and not be afraid to make mistakes. Be self-critical, but don't let this stop you from "having a go". The more you do your own problem solving, the easier it will become.
Ask, ask, ask, ask if you come across a particular problem or solution that you don't understand. Make a good-faith effort to solve the problem or to understand a solution, share your thought process, and ask. SO is an excellent place for that, which you undoubtedly have already discovered. Good luck!
As other said, ask to the mailing list of the project, anyway some of open source developers are not willing to help (unfortunately) for this sort of things.
In this situation I search answers by myself: pick up a terminal and use grep.
Guess naming of classes/functions that involves your problem you will find the way toward the module where the interesting bits are written.

Analyzing client requirements and formulating software functionalities

How does one go about properly analyzing the requirements of a client in terms of software and writing down a list of functionalities? Feel free to share your own experiences.
Requirement engineering is a discipline on its own. It can be actually quite hard, because most of the time people want something, but don't know what it is. Then comes the hard part to identify and determine what is really needed, that's called requirement elicitation.
There are various methods to do so, including workshop sessions with customers, or sending analysts at customer site to identify how the client works and what it needs. There are also numerous tools to support this activity and capture/organize requirements efficiently.
The hardest part, IMHO, is to identify contradicting requirements, e.g. I want fulltext search, but I also want all data to be encrypted. Pretty hard to achieve.
Without a more precise question, I can only provide such a generic answer.

How do you find a qualified, reliable technical reviewer for a programming document?

I need to find a technical reviewer for a programming document.
I have looked on Craigslist and various freelancers' websites (RentACoder, Odesk, Elance, etc) but it's difficult to determine who is qualified to act as a reviewer.
The last thing I need is to have the document reviewed by someone who either doesn't know what they are talking about or is not willing to go to the trouble of reviewing the document thoroughly.
An ineffective review might be worse than no review at all since it might generate a false sense of completion.
Any tips on selecting someone qualified & reliable?
The easiest way to determine if someone is qualified as a reviewer is to have them show you they can do the job:
Ask for a portfolio of previous
work, or
(better) Give them a sample
of your current project and ask them
to do a review.
Another option is to ask your contacts for any recommendations.
I strongly advise against relying on a dead-tree (CV/Resume) for making a determination, as it will distract you from weeding out those who "have experience" but cannot do the job, or you can miss finding those who can do the job, but lack the experience.
You could look on SO and see if you can find some people that give answers that give you an idea that they know what they are talking about, though this could be a slow process.
I actually like BryanH's second response, let them review something non-critical and see how they do, but have an idea what it important to you.
Are you looking for someone to be able to make decisions as to what you wrote is technically valid, or do you want someone that can also check the writing and see that the grammar is correct, for example?
There are several things to look at when reviewing a document, you should be very specific about what you are looking for.
Linkedin
Linkedin is a popular network for pitching contracts to documentation freelancers. It's also a fantastic way to procure interest from full-time technical writers at large organisations that might be looking for side-projects (if allowed), or case study projects to leverage their existing skills on new methods.
Mailing Lists
Depending on your geographical location, there are also popular mailing lists with a high volume of contract communications (and passionate technical writers). In Australia, the ATW mailing list is a good resource.
Industry Bodies
If you're in the US, contact the Society for Technical Communication. Other nations will have other bodies (or regional chapters).
Summary
I focus more on the question of "where to find writers" than I do of "how to get a competent peer review", but the right person is always the biggest hurdle. In this way I admit to having a bias in preference for communities of active and engaged participants over something like a bidding website or outsourcing mechanism. The latter is fine, but these islands of technical writers are vocal and active because they are interested, and often give back to the community that makes it available to connect talent to projects such as yours. Good luck!
Have you tried asking a publisher? (O'Reilly, Manning etc)
Obviously publishers need to find technical reviewers and indeed peer reviewers for a number of topics, so they may well be able to put you in touch with someone. They'll probably suggest that you write a book for them, too.

Does anyone bother with Dublin Core anymore?

As the question states, is there any point adding Dublin Core meta-tags to your HTML head? Or has sitemap.org removed the use for most of this (though it only replaces some of the tags)
I ask this as most sites I visit don't seem to use DC metatags in their source.
I'm interested in whether I need them for a site that will be used mostly for developers, however the discussion can be broader than this category.
To quote Google (from 2002):
"Currently we don't trust metadata because we are afraid of it being manipulated"
I would rather say that the time of rich metadata hasn’t come yet. In fact technologies like RFD are just on the way up. Tim Berners-Lee – you know, the guy who invented the web – quite recently spoke at TED about The next Web of open, linked data. So Dublin Core and other metadata formats are anything but out.
Dublin Core is still very important in certain industry sectors. Here in the UK, government organisations use DC to provide standardised access to tags.
META tags are not the only place you can put DC metadata. You can integrate it more with HTML using RDFa.
Now, as for proliferation — well, the only incentive it currently gives to webmasters is satisfaction for job well done, but does not yet affect SEO. As soon as this changes, you'll see outburst of sites tagged with RDF and microformats. And it will come. Yahoo already started working on that: http://ysearchblog.com/2008/03/13/the-yahoo-search-open-ecosystem/
I was looking on the web for information about the Dublin Core and if search engines used them and I came across the academic paper "Search Engines and Resource Discovery on the Web:
Is Dublin Core an Impact Factor?" by Mehdi Safari:
http://www.webology.ir/2005/v2n2/a13.html
To quote his conclusions section: "it was found that using Dublin Core elements did not improve the retrieval rank of the web pages" and that "Dublin Core metadata, as a well-known metadata schema, is not widely accepted and used by search engine designers and the spiders do not consider its elements while ranking the web pages".
This was back in 2005, but I am assuming this is still true.
Semantic web efforts are still sputtering along. I've run across a couple of research efforts to use RDF triples including the Dublin Core... but nothing close to commercialization.
However, as a general organizing principle for the world wild web? Don't bother. My guess is that folksonomies will deal with some metadata management, but that site tagging will need to be handled through ontological deduction of some sort. I get the same feeling around DC and RDF that I get around general-purpose globally open UDDI registries: nice idea, but that's not the way the world works.
It would be kinda interesting to know whether DC tags increase your Google Page Rank (and how reliably): that could be a strong incitament for many!