Fun article on developer.java.sun.com called Futurama: Using Java Technology to Build Robots That Can See, Hear Speak, and Move. It explains how to use the Java speech API to capture speech, the Java Media Framework to capture webcam images, and the open source leJOS environment for controlling Lego Mindstorms robots.
[update 10:08pm] I know that tail exists for Windows by using cgywin or some of the other ports. If you view the article you’ll see that this utility isn’t run from the command line and uses VB.NET code, which I thought was a interesting…]
From the artima newsletter: Windows tail: “The UNIX operating system has long had a set of really good text file processing utilities. On of the utilities is a program named tail. What tail does is it displays the bottom of a file and then waits for any new information to be written to the end of that file then it displays that information, scrolling up as it goes along. This is perfect for monitoring log files to watch them actually grow as information is being written to them.
Windows has no such command. Also, in the spirit of Windows, I thought it would only be appropriate to have this command using a GUI user interface instead of the command line user interface employed by the UNIX version.
Enter Windows Tail, or wtail.exe. This is a program written in VB.NET using the Microsoft DOTNET Framework 1.1 which must be installed on your system in order for this program to run.“
From the jdev mailing list: Java Jabber Server, “… an open-source Java implementation (Apache License) of Jabber Instant Messager. The purpose of the OpenIM project is to produce a fast, simple, and highly efficient instant messager server with high modularisation and a codebase that uses the Avalon tools created by Apache’s Jakarta project.“
I downloaded and installed ScreenTaker by SymbianWare, a nifty little piece of software that gives you the ability to take screen shots of the applications on your Symbian based phone. If you’re using it on the 3650, you should read the instructions on the website, don’t pay attention to the instructions that come with the application. You should press ‘Pencil key + Menu key’ or ‘Pencil key + *’ to take a screen shot.
Mitch Kapor ranted about the email software that came with the Nokia 3650 he recently purhcased. He wanted software like that on the Blackberry that “pushes” your email out to your phone. Jim Corbett commented that Active Mail from Cibenix does exactly that… and works on the 3650. I’ll try it out soon and post some screenshots.
Short article at onjava.com entitled: Why Web Developers Need JavaServer Faces. Not much meat to it, but it sure the sparks are flying the comments section. If you don’t want to read it, here’s my data extraction:
· JSF prescribes an architecture for UI rendering to different clients.
· JSF provides rich client like event handling.
· JSF defines functionality for data conversion, validation, and localization.
That’s it… the entire support for why Web Developers need JSF. Pretty weak isn’t it?
The MIDlet I mentioned Tuesday is ‘working’… I guess it’s pretty basic functionality. A Thread repaints a Canvas object every 500 milliseconds, you can stop, start and reset the stopwatch. Download the jar and the jad here, install them on your favorite J2ME capable phone and lemme know if it works for you.
Update 10/7/2005: You can download the source here.
C# From a Java Developer’s Perspective: A Comparison of Microsoft’s C# programming language to Sun Microsystems’ Java programming language. [via thauvin.net]
Spent a bit this morning wading through .NET documentation trying to find out how one retrieves the number of records returned from a query. Turns out it’s pretty simple. First you get your query rolling:
// get the connection string from settings
String cs = System.Configuration.ConfigurationSettings.AppSettings["connectionString"].ToString();
// get a sql connection using the connection string
SqlConnection sqlcon = new SqlConnection(cs);
SqlDataAdapter adapter= new SqlDataAdapter(“select * from yourtable”, sqlcon);
DataSet dataset = new DataSet();
At this point you’ve run the query and you have a DataSet which you can then loop over like any other collection, ie:
foreach (DataRow d in dataset.Tables["mytable"].Rows)
or you can retrieve the number of rows:
DataRowCollection drc = dataset.Tables["mytable"].Rows;
Console.WriteLine(“there are ” + drc.Count + ” rows in the query.”);
or even quicker like this:
Console.WriteLine(“there are ” + dataset.Tables["mytable"].Rows.Count + ” rows in the query.”);
Back to work….