Forgot your password?
typodupeerror
Programming Books Media Book Reviews IT Technology

Building Intelligent .NET Applications 188

Posted by samzenpus
from the gentlemen-we-can-build-it-we-have-the-technology dept.
Bill Ryan writes "Sarah Morgan Rea's "Building Intelligent .NET Applications" is a book for those that get easily bored with mainstream development topics. Essentially, it's an in depth discussion of 3 niche technologies that came directly out of Microsoft Research (Microsoft Speech Server, Microsoft Analysis Services and Agents). The majority of the book is comprised of discussions of the first two technologies with roughly 12 pages being dedicated to Agents. It's finished off future Microsoft technologies "Avalon" (now known as the Microsoft Presentation Framework), Indigo, WinFS and Longhorn. Fortunately, since no one really knows when Microsoft will deliver each of these and what they will ultimately look like, she spends under 10 pages on them." Read the rest of Bill's review.
Building Intelligent .NET Applications
author Sara Morgan Rea
pages 270
publisher Addison-Wesley
rating 9
reviewer Bill Ryan
ISBN 0321246268
summary


One of the things that makes this book great is that each of the areas discussed receive very little discussion elsewhere. If you want to use Microsoft Speech Server, you are essentially confined to using the SDK documentation, the MSDN newsgroups or an occasional blog post out there. Analysis services has a little more documentation but if you were looking to do any serious A.S. development, you're still pretty hard pressed to find comprehensive resources on how to use it.

These two areas comprise roughly 80% of Sarah's book. The discussion on Speech Server comprises a little over 100 pages and does an excellent job showing you how to get Speech Server up and running and how to use it. She starts out slowly and walks you through the Speech SDK, then moves on to creating Grammars, creating Prompts, creating Transcriptions and Extractions, using the Telephony modules and debugging/performance tuning your applications. Another nice touch is that she spends a good bit of time discussing more agnostic elements of speech and telephony development, S.A.L.T. in particular. Within the discussion throughout, there's a good bit of attention paid to configuring Speech Server and the problems people are typically confronted with when they create speech enabled apps. However she does a pretty good job of balancing the introductory material with more advanced topics for although she does spend a lot of time on setup and configuration, she also goes as far as showing you how to use Speech Server from a PDA.

As far as speech (the topic goes), it would be helpful if the reader had some familiarity with the core concepts involved (such as SALT, Grammars etc.) but even if you didn't, this book would still help teach you a lot of what you'd want to know. The intended audience is clearly intermediate to advanced developers but newbies will definitely find quite a bit of valuable information in it.

The next section discusses Artificial intelligence in the context of Analysis services. If you aren't familiar with relational database concepts, then it's probably a little above your head, but most people buying this book aren't running into relational database theory for the first time.

Chapter 5 starts with using Data Mining to create predictions. It starts with getting things set up, moves onto building the data mart, and then finally 'training' the model. This discussion is pure gold in my humble opinion.

The next chapter moves on to applying those predictions. Not really much to say here without getting overly technical but essentially this chapter is a walk through of what you'd do after you had your data mart built and trained, essentially, how you'd maintain it and continue to refresh the information.

This is followed by a chapter titled "An Evolving Database". Again, this is pretty technical in nature so it's hard to describe without bogging you down in jargon. Suffice to say that everything about this section is cool++; .

The book then discusses Agents, which are cool but probably don't have that much applicability in most people's day to day lives. If you want to learn how to use them (as well as the Background Intelligent Transfer Service), then she provides everything you need.

Finally things wind down with a discussion of Microsoft's upcoming technologies, Microsoft Research, Artificial Intelligence in general (as well as many resources on where to learn more), a glossary, bibliography and finally the index. Discussing any one of the areas that she touches upon here (neural networks, Fuzzy logic, natural language processing, machine learning etc.) could comprise an entire book. That's where the beauty of this book comes in - instead of discussing the subjects one at a time, she creates a series of walk through examples where she creates specific scenarios and shows you how to address them using each respective technology.

If you're bored and want to dive into some really cool subject matter, this book is a must have. If you want to learn more about Speech technology in general and Microsoft's implementations of it in particular, this book is a must have. If you're interested in artificial intelligence again, you'll find this book to be superb. If you just want to learn about subject matter that's been discussed over and over again, like creating Winforms or drawing with GDI+, then this book probably isn't up your alley."


You can purchase Building Intelligent .NET Applications from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
This discussion has been archived. No new comments can be posted.

Building Intelligent .NET Applications

Comments Filter:
  • by Tackhead (54550) on Friday December 09, 2005 @02:14PM (#14221383)
    > Within the discussion throughout, there's a good bit of attention paid to configuring Speech Server and the problems people are typically confronted with when they create speech enabled apps.

    "Start! Run! Cee-Emm-Dee! Format! Cee-Colon Slash X, Slash, U, Slash Y! Enter!"

    And now you get to write a book on rebuilding intelligent .NET applications...

    • And now you get to write a book on rebuilding intelligent .NET applications...
      Nah, you'll just get "cannot find the 'cmdformat' file". It's a very robust system, you see ;)
      • can you imagine programming for this thing? you say: pound include open angle bracket es tee dee i oh dot h close angle bracket enter enter int function myfoo open parenthesis close parenthesis open curly bracket enter return 0 semicolon close curly bracket you get: # include open angle [ s t d i o dot h close angle [ int function open ( close ( open [ return 0; close [
  • by Alien54 (180860) on Friday December 09, 2005 @02:15PM (#14221396) Journal
    I can see patents on the concept of intelligent design in computers. After all, how many stupid computer programs and designs have you seen?

    Then the anti-evolutionaries can be sued for patent infringement.

  • by 70Bang (805280)


    as "is comprised" in the English language.

    e.g.

    A banana is composed of pieces.
    The pieces comprise the banana.

    Although there seems to be an exception for every rule in English, this is one rule with no exceptions.

    And to everyone else, don't invoke Godwin's Law on your first reply, okay?


    • Usage Note: The traditional rule states that the whole comprises the parts and the parts compose the whole. In strict usage: The Union comprises 50 states. Fifty states compose (or constitute or make up) the Union. Even though careful writers often maintain this distinction, comprise is increasingly used in place of compose, especially in the passive: The Union is comprised of 50 states. Our surveys show that opposition to this usage is abating. In the 1960s, 53 percent of the Usage Panel found this usage u
      • In the 1960s, 53 percent of the Usage Panel found this usage unacceptable; in 1996, only 35 percent objected.

        In 2005, over 50% of Americans surveyed believed that Saddam Hussein was responsible for the 9/11 attacks.

    • Godwin was a natzi
    • Language evolves, even if technology (as far back as printing in Europe) has slowed down the evolution.

      Do you go to the cleaners or the cleansers?

      Does gay mean happy or homosexual?

      Still, they're and their and there I find annoying, but I imagine it is for non-English speakers trying to learn it.

      I hate that Microsoft can backport DotNet into Windows 2000 but intentionally cripples new games like DS2 not to work with it.

    • I second your comment. It's an error of logic on the same order as writing '=' in your program when you mean '=='.
  • OK, so if I start building 'intelligent applications' (Intelligent Desgin, anyone?) using these new discoveries from Microsoft Labs will I be running the risk of a lawsuit?
    • I'm not sure about the risk of being sued, but you should not forget to show those applications who's the boss, when they start talking about evolution.
  • .NET programming (Score:2, Interesting)

    by TheDarkener (198348)
    IANAP, but my good friend is. He's a huge Linux guy, but unfortunately (as a lot of Slashdotters I'm sure) programs for a Windows-only firm. He's since started using .NET, and swears by it now. He says it is incredibly easy to build applications with it. I trust his judgement, because he's an incredibly talented programmer, and also programs in C/C++, Perl and is a huge database guy as well.

    It all comes down to the best tool for the job. I'm sure you wouldn't want to use .NET for a site that gets 20,000 hit
    • .NET seems to have finally matured to a quite usable framework of technologies. In begining it was like anything Microsoft puts out, buggy, badly documented and so on, but now it seems that the associated technologies and tools actually help programmers.
      • Re:.NET programming (Score:5, Informative)

        by ThinkFr33ly (902481) on Friday December 09, 2005 @03:27PM (#14222198)
        I know of a few bugs in v1.0 of the framework, nothing too serious... mostly stupid stuff (like a property being protected when it should have been public and is therefore inaccessible to anybody using the framework), but the documentation has always been stellar.

        That's one that Microsoft does better than pretty much everybody. MSDN is an incredibly good resource. For the most part, it always has been. Can you provide examples of crappy documentation in v1.0 or v1.1 of the framework? Again, I'm aware of a few isolated areas, but they were few and far between.
        • Can you provide examples of crappy documentation in v1.0 or v1.1 of the framework?

          I don't know if the original poster can, but I sure can: BindingContext and CurrencyManager. Having written a data bound hierarchical grid in C#, I can tell you for a fact that the CurrencyManager documentation is horribly documented for control designers, the people who have the most need of good CurrencyManager documentation. As a single major flaw, take the "Note to inheritors" section of the documentation. This would be r
        • Though the rest of the system is mainly undocumented. Read stuff from the guy who found the rootkit [sysinternals.com] and be amazed at all the well hiden functions Mark found.
        • Well first of all there is no bug list. That, for one, is less than steller. At least Borland always had a reasonably well maintained bug list. There are lots of KB articles though.

          Here are a couple of killers bugs that are not documented:
          The serialization of HashTable requires a special keyword to reduce serialization from 30 minutes to 5 seconds. On a 2GHz PentiumM 2GB memory -- unless a magic keyword is used, 600,000 element hashtable takes 30+ minutes to store to disk, with the keyword it only takes
        • MSDN good? Oh please. I still have nightmares about searching for a Win32 API function, and ending up on WinCE pages.

          I guess it got better now though (I haven't done Microsoft development in years, save for VB6 which has its own traditional help system that doesn't end up in something else you don't care about).
        • On using ASP.NET:

          Boss comes in says, "Build me a simple order entry screen. And use those 'new' asp:datagrid's with anything that looks like a table. If its HTML, don't use it. All input items are in the datagrid format also."

          Getting drop down boxes, check box lists, and text boxes to work is an undocumented nightmare. My humble dealings with ASP.NET is that its not ready for prime time.
    • I'm sure you wouldn't want to use .NET for a site that gets 20,000 hits a minute, but you also wouldn't want to use C++ or Perl to integrate Windows-only applications with Active Directory, either.

      I've got to ask, what would you use for a site that gets 20K hits a minute? A LAMP setup? PHP would fall over and die. Java servlets would be understandable I suppose...but if your beef is with Windows rather than the .NET platform, then just keep in mind that ASP.NET works fine under Linux/Apache/MySQL.
      • Re:.NET programming (Score:5, Informative)

        by ThinkFr33ly (902481) on Friday December 09, 2005 @04:18PM (#14222736)
        20,000 hits a minute doing what? I've created .NET sites that handled about 60 million hits a day (advertising related), with peak traffic doing 5000 requests a second. (That would be 300,000 requests a minute.)

        All this traffic was handled by two Dell servers which cost about $5000 a piece. (1.5GB of ram, 10k RPM SCSI RAID, dual 2.8 Ghz CPUs.) Neither machine ever went above 40% CPU, which means a single machine could have handled all the traffic. During peak times, we were fully utilizing a 100Mb pipe.

        Each request typically did some MSMQ operations and the occasional SQL Server DB hit if there was a cache miss, but most of it was served via the kernel mode HTTP listener and a few custom HTTP Handlers written in C#/ASP.NET.

        It all depends on what each hit is doing. If each request takes 1 second to complete there is no way you could do 20,000 hits per minute unless you had a large web farm. In our case, our TTFB (time to first byte) was very, very small. .NET performed extremely well, as did IIS 6.0 on Win2k3 Server. Very reliable too... never had downtime thanks to NLB. .NET is a fully capable platform. If the .NET application is written correctly, it can handle just as much load as a custom ATL-based application, which is typically regarded as the best performing platform. And trust me, writing an ATL app is painful for all but the best C++ developers.
        • It must be some fabulous porn site!

      • by killjoe (766577)
        Do you have any firsthand experience with using the ASP.NET under linux (using mono I presume). Does it really work "just fine", does it work well enough to put into production on a heavy site?

        I don't know but given that java is proven to work on linux (and other unix platforms as well as windows) I don't know if any business would risk using mono on a production web site.

        Finally since MS has patents on the ASP.NET platform a company would open themselves up for a patent infringement lawsuit for deploying o
    • Step 1: Yes, get a brain. Don't use a hammer on a screw.

      A screw works very well as a nail, you insensitive clod!

      I'm sure you wouldn't want to use .NET for a site that gets 20,000 hits a minute, but you also wouldn't want to use C++ or Perl to integrate Windows-only applications with Active Directory, either.

      Of course not, Microsoft works hard for this to be hard for you (sry folks, I wrote "hard" not "hard on")

    • I'm sure you wouldn't want to use .NET for a site that gets 20,000 hits a minute

      Monster.com and Match.com both use ASP.NET. I'm not sure how many hits they get a minute, but I bet you it's several thousand. Both sites are usually very peppy.
      • I don't know much about Match.com, but the Monster.com should be a counter-example instead. Last time I check, their site was quite buggy. Post back buttons would be missing randomly, etc.
    • Re:.NET programming (Score:2, Informative)

      by ergo98 (9391)
      I'm sure you wouldn't want to use .NET for a site that gets 20,000 hits a minute

      The greatest improvement that .NET brought to the table wasn't rich apps (Winforms still are quite a few steps behind what you could achieve with Delphi 7 years ago), nor was it component integration (COM is still the pervasive component model, and .NET remoting is just finally getting the features of COM+): It was that it revolutionized web development on the Windows platform.

      Not only was the programming model a world better th
    • ...but you also wouldn't want to use C++ or Perl to integrate Windows-only applications with Active Directory, either.
      No, no, no. You will want to use C++ to integrate a Windows-only app with Active Directory. The main Windows API (Win32) is still C based, and the main Active Directory API (ADSI) is still C++/COM based.
      • Not if the rest of your code is in C#. You're probably better of using the Novell C# LDAP library [novell.com].

        I know about System.DirectoryServices, but its just a COM interop for the windows standard API -- which dopes ADSI -- which sucks the monkey nut.

        It uses Mono to do SSL -- but I stripped that out and used .NET 2.0's SSL stream -- worked like a dream. And it talks real standard LDAP, so you can use it against AD, NDS, etc.
      • So you <flash>will</flash> want to simplify your life massively by avoiding native C++, and using a managed language and the managed AD API, and drop down to the C API where neccessary using P-Invoke (unlikely to be neccessary).

        Unless this is one of those weird Active Directory apps that needs raw speed. Maybe an Active Directory based first person shoot-em-up?
    • Actually, I have always found my .NET sites to be extremely responsive.

      Really, the only hold up with sites is the databases, and caching is so powerful in .NET that can become extremely managable.

      I had once coded a news engine that used caching, and I had extremely fast load times using output caching, standard data caching, and web controls. The site never launched to the public, and the server would not have been able to handle it anyway, but my point is that coded correctly, I would gladly use .NET

    • I agree: languages/environments like .NET are the future: they are easier to develop for, prevent silly programming mistakes, and help with security.

      But this is nothing specific about .NET; many languages have that property. Microsoft deserves no credit for the technologies in .NET or VisualStudio, since those technologies are 20 years old and weren't invented at Microsoft.

      Still, where does that leave open source and free software? We need to discard the user environment and applications written in C and
  • Small nitpick (Score:4, Informative)

    by Swamii (594522) on Friday December 09, 2005 @02:21PM (#14221445) Homepage
    "Avalon" (now known as the Microsoft Presentation Framework

    A very small nitpick, but for the record, it's Microsoft Presentation Foundation.

    Maybe it's just me, but "Avalon" was a much cooler name.
  • by ech00ne (937418)
    If you really want to seize an opportunity to drive some demand for your products you have to take a serious look at embedding some Business Intelligence into your product. Don't believe me?

    1. The second most important technology priority (after security) for CIO's is Business Intelligence.
    2. Not only that, but the most important business priority for them is business process improvement

    • That is the "buzzword complience" thing one needs.. but any proper CIO knows that almost all BI products are total crap. Thus there is definitely a trend of "oh your product also does BI?, bye" raising. What is needed is actually GOOD products as the current wave is largely "hype-ware", though there are actually some fairly good(if very complex) products.
  • Mono Chapter? (Score:2, Interesting)

    by ztwilight (549428)
    If they had a chapter about Mono compatibility, I might consider the book.
    • Re:Mono Chapter? (Score:3, Informative)

      by PsychicX (866028)
      The technologies are Microsoft Speech Server and Microsoft Analysis Services. I'll write the extra chapter for you:

      CHAPTER 10: Mono Compabitility: None of these technologies or any equivalents are available in Mono. You might be able to hack something together with /dev/speech, and that's about it.

      Kind of a short chapter though.
  • by PhatboySlim (862704) on Friday December 09, 2005 @04:19PM (#14222747)
    Honestly, I have been developing web applications for some time and granted I use C#, but I've never been opposed to someone using Java, or PHP, or Oracle. My personal experience has been that every language has a slight edge in some regard, but they all do the same thing. There is a much greater difference in the talent of programmers than in the language being used. If you pitted Steven Hawking in an Enzo Ferrari vs. Michael Schumaker in a Ford Taurus, who would win the race? I mean honestly. Mark me flamebait or troll I don't care, but all this Windows vs. Linux high school propaganda has got me sick of Slashdot. The original post was a book review on developing .NET. It wasn't a, "Why anything except MS sucks" book review. Can we please stay on topic and get the ever-increasing in size chip off the linux community's shoulder? Thanks.
  • I thought good coding evolved.
  • SOoooo. (Score:3, Funny)

    by MrCopilot (871878) on Saturday December 10, 2005 @12:38PM (#14228605) Homepage Journal
    Building Intelligent .Net Applications

    S0Oo...It's Fiction then.

The only difference between a car salesman and a computer salesman is that the car salesman knows he's lying.

Working...