I remember when I first used PDFCreator, I was doing some freelance web development work. As it happens sometimes, I had a client that was not very tech savvy. I was fortunate that this client could even check email (and even that was stretching it a bit). The PDF format was the one thing he could read and understand, and figure out how to open. In many cases, PDF seems to be the lowest common denominator; it’s easy, cross-platform, and it ensures that anyone viewing the document is looking at the same thing. PDFCreator allowed me to put *anything* into a nice PDF: screenshots, documents, spreadsheets, reports, whatever. It was a life saver then, and it is now.
While some programs offer the ability to convert into a PDF format, or export into PDF, there are many that do not have this capability. With this software, anything that can be printed can be turned into a PDF. In essence, you install the software, and it installs as a PDF printer, so to create a PDF from anything, you just need to print. Its only limitation is that it is specific to Windows OS.
PDFCreator does more than just create PDFs, in fact. The software now includes many other features such as the ability to:
The project began in 2002 when Philip Chinery, one of the core devs, needed a useful tool to make PDFs and nothing out there suited his needs. He wrote the software, and in 2003, Frank Heindörfer joined the team. “Since that time,” Philip tells me, “we have been the first free PDF software with a full installer, the first one with PDF security, PDF/A and PDF/X support, digital signatures and a COM automation interface to control the software.”
Over the years, the team has had to work through many technical obstacles, “like finding all relevant parts to do a proper printer driver installation or getting the permissions right with the new Windows Vista permission structure,” says Philip. “The latter has caused us to take nearly one year to fully support Vista after it has been released. We finally had to tweak the permissions of the SYSTEM account which other printer drivers as the Xerox drivers do as well, but we are not fully happy with that so far.”
Philip and Frank have learned a lot through their work with PDFCreator. They have a great time working on something they believe in, and they enjoy working on the team together, which is very important for any project, but especially crucial in open source.
Wise words of advice for others working in or just starting out in open source: “Take a point where you want to be better than everyone else and try to achieve that. It is better to have a good program with few features than a bad program with many features. And, use a programming language that will be available for some time.”
The team has big plans for PDFCreator, including rewriting the entire app in C# (it is currently written in VB6.) “We are currently having a kind of prototype application and are working on side aspects as a good translation system and Setting Storage. It is quite likely that they will become available separately to help other developers.”
They have also decided to start their own company, pdfforge GbR, to continue to improve PDFCreator, while offering custom development.
PDFCreator is one of the top 10 projects on SourceForge.net of all time, and there is a reason for that. It’s a great tool, it’s super simple to use and install, and the team works very well together. If you are using Windows, this should definitely be in your toolbox.
For more information on PDFCreator: http://pdfforge.org
To download PDFCreator: https://sourceforge.net/projects/pdfcreator
If you would like to donate to this project: http://www.pdfforge.org/donations
The end of the year is right around the corner (already!) but we’re not quite done showcasing projects that have been with us for 10 years or more. September’s Project of the Month is GPL Ghostscript, a complete set of page description language interpreters including PDF, PostScript, PCL5, PCLXL, and XPS.
Even if you’ve never used GPL Ghostscript, you’ve probably heard its name since it’s been around since 1989. Project developers say, “anyone who needs to view, print, archive, or convert PDF, PostScript, PCL, or XPS on any platform is a potential GPL Ghostscript user.” If that describes you, then be sure to check out the app. If you already know it and love it, why not contribute? “We are willing to pay for bug fixes through our bug bounty system,” says GPL Ghostscript’s Project Lead.
Have a look at what the development team has learned over the years, then take a trip down memory lane and see what other projects we’ve covered this year.
You may have noticed some recent changes here at SourceForge (and if not, that’s ok too.) As a new member of the SF.net team, I’d like to introduce myself. My name is Elizabeth Naramore, and I work as the OSS Outreach Coordinator here. Basically, I get to help ensure that we are doing what we can to help our projects succeed. My outreach also includes interacting with the SF.net and FOSS communities through outlets like this blog and Twitter, so you’ll see my face here quite often.
Who am I?
I’m a PHP enthusiast that has been working with PHP since 2002. Besides being a coder, I am an author, editor, speaker, and an active member of several open source communities, such as PHPC, PHPWomen, and OINK-PUG. I’ve also helped organize conferences such as php|tek, CodeWorks, and the Cincinnati Day of Agile. Also, I am proud to say that I earned my Pitfall Harry badge by sending in a picture of my TV screen showing my high score. A crowning achievement, indeed.
Opening Up
One reason why I’m thrilled to be here is SourceForge’s long standing commitment to open source, and the fact that we continue to be more open ourselves. Our Service Operations Group (affectionately known as SOG) has recently opened more of our internal tools, including peppet 2.0 (a push-based configuration management platform) and a permission based filesystem, based on FUSE and an Apache module. This new filesystem powers our new secure web hosting platform, for which we’re sending out early beta invites.
In addition, you will see us continuing to focus on the FOSS community at large. After all, open source is something that is very near and dear to our hearts, and it always has been. If there is something we can do to keep this industry alive and vibrant, then we’ll do what we can to make that happen. And besides, without open source, we wouldn’t have much to do around here except listen to our servers hum themselves to sleep at night and maybe get in some Starcraft time.
So what does that mean, “focusing on the FOSS community?” One part of that means that there will be a shift on our blog toward the bigger picture. We love the open source projects here, and we will still blog about them. And we will also keep honoring some of our more successful and long-standing projects with the “Project of the Month” spotlight. But we also want to give you resources to help you make your project better, such as how to recruit more people to the team, how to refine your deployment process, how to overcome obstacles with global team collaboration, how to get more users for your software, why documentation matters, and what your options are for licensing. We want you to know about community-run open source events and cool things user groups are doing. We want you to know about tools that might help you code or help your team collaborate with each other. We want to share lessons learned from other projects. In short, we want to talk about things that matter to you.
With that, we’ll open it up. Tell us what you want to hear about. Tell us what we can do to help your open source project succeed. Because, honestly, when open source wins, everybody wins.
Post your comment below, or hit us up on Twitter (@sourceforge). We have a bright, open future ahead of us, and we’d love for you to be a part of it.
We’re thrilled to honor network protocol analyzer Wireshark as August’s Project of the Month, one of SourceForge’s longest-lived projects. Originally named Ethereal, its been under development for more than 12 years and is used by companies like Google and Citigroup.
Project Lead Gerald Combs says he’s really proud of “Sharkfest, or more accurately what it represents. Each year my company sponsors a conference for Wireshark users and developers. The presenters and attendees are amazing — they have a lot of experience with, knowledge of, and enthusiasm for Wireshark. I’m proud to be part of such a community.”
The Wireshark development team has accomplished a lot over the past 12 years and Combs says he’s interested to see what the future brings. As for what’s on his project’s wish list, well, you really just need to read that for yourself.
For the rest of this year, we’ll be highlighting projects that have been with us for ten years or more. When you’re done reading Wireshark’s Project of the Month page, be sure to check out our past winners, too.
All good things come to an end, and so it is with my tenure at SourceForge and parent company Geeknet. I’ve enjoyed learning about the projects I’ve been writing about every day on the community blog, and I’m sorry I won’t be around to share the excitement as the developers debut new features as part of a total revamp of the forge. From now on you can expect to see fewer blog entries – probably mainly writeups of the projects of the month and the occasional news development.
As for me, I’m not certain yet what my next venture will be. (If you know of an organization that’s hiring an editor or community manager, or someone who needs freelance writing or editing, let me know!) I’ve had a great seven years at this company, working with many exceptionally talented individuals. So long and good luck to all my colleagues.
And to everyone: If you’d like to stay in touch, follow me on Twitter.
- 30 -
Reproducible research is, or should be, a tenet of any scientific endeavor. In today’s world, it means integrating results of published computational experiments with software and the data necessary for reproducing the experiments. Madagascar, an open source software package for scientific analysis of large digital datasets such as those occurring in geophysics, focuses on promoting reproducible research. Madagascar is used primarily by exploration geophysicists, but it can be employed for other scientific applications as well.
Madagascar comes from the Stanford Exploration Project. With the help of his students, including Madagascar project leader Sergey Fomel, geophysicist Jon Claerbout created an environment for reproducible computational experiments at his lab there. The environment worked at Stanford but was too complicated and clumsy to be shared with other groups, Fomel says. In addition, published results quickly lost reproducibility because nobody maintained them. “During my Ph.D. studies at Stanford in the late 1990s, I was inspired by the free and open source software movement and decided that the proper way to promote reproducible research was by turning it into an open source project,” Fomel says. “I started working on Madagascar (previously named Regularly Sampled Format) in 2003. The project got publicly released under the GPL in 2006. Since then, around 25 people have joined the community and contributed to development.
“We use C in the number-crunching part of Madagascar for optimal efficiency and for staying close to the hardware. We provide APIs for users who want to develop scientific codes in other languages, including C++, Fortran, Matlab, Python, and Java. We use Python for gluing the number-crunching code together into data processing workflows and for integrating them with publications. SCons, a Python-based open source replacement for make, provides a particularly useful environment. Python is a clean and easy-to-learn scripting language, which seems perfect for the task.”
Fomel says he released the software as open source because the open source philosophy matches the thinking behind reproducible research. “Reproducible research is a way of communicating computational results in a scientifically meaningful way so that other people could reproduce, verify, and extend them. Open source software works on the same principle. It is a natural match.
“SourceForge.net was attractive for us because it has the reputation for hosting famous open source projects and because it provides all the necessary tools for organizing an open source community: the Subversion server, the file server, mailing lists, etc. However, we miss the Compile Farm feature, which was useful for testing installation on different platforms and was one of the original attractions.”
Madagascar reached a big milestone last week with its release of version 1.0. “We had a particular goal for 1.0,” Fomel says, “which was a system for automatic testing. Once a computational result is archived in a reproducible form, it serves as a regression test for further development. We wanted a system for running such tests automatically. When a system like that was developed (in a community effort, with invaluable contributions from Joe Dellinger, Jim Jennings, and Nick Vlad), we could release 1.0.”
But this version is just one milestone for the project, Fomel says. “The collection of reproducible research papers will expand. We hope to diversify from geophysics to other scientific fields that work with large multidimensional data. There will be better tools for large-scale parallel computations and better documentation for existing tools. We have been doing two releases per year, which seems to catch major improvements, but that rate might accelerate.
“We could definitely use some help. New scientific applications, graphical user interfaces, better visualization, a cleaner Python framework are some of the areas where someone could contribute. The best way to get in touch is by writing to the mailing lists for users or developers.”
If you’ve ever looked at Google Maps to find points of interest in a given area, and wanted to do something similar with locales of your own, have we got a project for you. Phpoi is a set of PHP scripts for web servers that are designed to handle data about points of interest stored in a MySQL database. The scripts can create web pages with lists of POIs with links to different map services, and can also be used to create POI files usable by different GPS navigators.
Swedish developer Henrik Carlqvist started writing phpoi in 2008 when he was unable to find any software like it to use on a judo club’s website. “Most of all I was then looking for the functionality to provide POI files for navigators. As an added benefit I also got a web page with a complete list of all Swedish judo clubs.”
In future versions Carlqvist hopes to provide support for more GPS file formats. He makes new releases about once a year. “Right now I need someone with a Navman navigator and the software for it to load POIs. I need someone who can test the generated POI files created for Navman. I would also appreciate contributions of PHP files supporting more GPS file formats. The best way for anyone who would like to help to get in touch is through one of the project’s trackers.”
Five years ago, English developer Stephen Fairchild found himself with access to a Shoutcast server but no way of making a show using free software. “Purely by coincidence I was playing around with Python and working through the PyGTK tutorial at the exact same time, so I decided to attempt to create an Internet radio client of my own.” Thus was born Internet DJ Console, a source client for Shoutcast or Icecast servers aimed at people who want to produce their own radio shows and stream them live on the Internet.
Fairchild focused on the Linux platform because similar more mature applications already exist on Windows. “Creating another less well-known and less mature application would have been pointless. It had to be for Linux, therefore it had to be open, just so I could consider it to be my contribution.”
While he just released the latest version earlier this month, Fairchild is already focusing on the future. “I’m thinking of adding cue sheet support to the players. The record feature already creates those, and certain other players can use them. I want to add the ability to search playlists. Debian seem keen on MP2 so I may add that. AAC streaming is a distinct possibility.”
If you’re a psychology or neuroscientist, part of your job likely involves conducting experiments for research or clinical purposes. Unfortunately, the most common software tools used to create experiments typically require restrictive and expensive licenses. Not PEBL, however. This seven-year-old special-purpose programming language lets psychologists and neuroscientists create, modify, run, and share computer-based experiments.
The Psychology Experiment Building Language is also useful in the Psychology classroom, because it lets instructors and professors distribute tests to students or set them up in a computer lab so that students can experience firsthand the research paradigms they read about in a textbook. It includes special-purpose functions that make it easy to create visual stimuli, collect responses, randomize and counterbalance experimental designs, and record data.
PEBL is available on Windows, Linux, and Mac OS X. It bundles a set of experiments and tests in the form of the PEBL Test Battery that provide free implementations of many classic studies from cognitive and clinical neuropsychology. PEBL and the PEBL Test Battery have been used by researchers around the world, ranging from clinicians in their own offices to laboratories at Ivy League universities to government labs, including NASA and NIH.
Shane Mueller, a cognitive scientist and research psychologist who works in Dayton, Ohio, created and maintains PEBL. It’s a full-fledged programming language, heavily influenced by LISP and R, and written in C++, using the Standard Template Library and, increasingly, PEBL itself. It uses a parser/lexer created with Bison and flex, which gives PEBL a lot of flexibility in experimental design.
PEBL compiles text files to a parsed tree of executable nodes, and then executes that tree to run the experiment. It heavily leverages the SDL gaming libraries (including SDL_ttf, SDL_image, SDL_gfx, and SDL_net) to help provide simple creation and manipulation of stimuli. It is designed to be forgiving for beginner users (who are often graduate students in psychology) and to avoid many subtleties that create problems in other programming languages.
One script in the package allows you to collect survey data without working with PEBL code at all. You specify the survey questions in a .csv file, and the software runs the questions and saves the results in data files for you. “This turns out to be much easier than paper-and-pencil surveys that researchers still use frequently,” Mueller says, “because you don’t have to hand-code your data after you are done.”
Why make the software open source when similar applications are making money as proprietary tools? “I felt the community was turning over the keys to the scientific kingdom to vendors whose best interest was in keeping the doors locked,” Mueller says. “This, to me, is anti-scientific, because it means that you can’t share your experiments easily, unless the person you are sharing with buys the license. And you can’t check others’ experiments for errors, which is especially true for boutique companies that sell special-purpose test batteries. Plus, if your license lapses for whatever reason, you don’t have access to your own past experiments. Data are not much good if you can’t reproduce the conditions under which they are collected.”
Mueller chose to host on SourceForge.net because “it provides a level of permanence that hosting on your own site cannot, and a level of independence that hosting at a university cannot. Plus, SourceForge offers a number of useful tools (mailing lists, wiki, CVS, web hosting, etc.) to help a grow a community around a piece of software.”
In the next version of PEBL, Mueller plans to work on support for various devices and trigger mechanisms that researchers use to link their experiment software with hardware such as eyetrackers, response buttons, and EEG systems. He makes new releases of the core software about once a year, with releases to the test battery coming about twice a year. He welcomes help with translations. “Many of the experiments I distribute can be localized into different languages, and researchers do this, but I don’t get many translations contributed back to the project.”
He’d also like help with validation studies. “One of the biggest obstacles researchers face when considering PEBL Battery tests is that there are currently only a few published studies showing performance distributions of typical research participants in these specific tasks. This is improving, with ongoing studies collecting norms for different tests, but it is really an ideal setting for open source collaboration, where researchers from multiple sites, world-wide, can contribute small studies to a large pool so that better norms can be developed.”
If you’d like to help with the project, e-mail the pebl-list or pebl-norms list.
Need to connect to a remote client securely and simply? One way to do that is to employ Hamachi, a zero-configuration VPN service. While zero configuration sounds pretty easy, you can make things easier still by using Quamachi, a Hamachi GUI for Linux.
Once installed, Quamachi checks to see if the Hamachi system service is running, and prompts the user to start it if necessary. After that, users can control Hamachi via both Quamachi’s menus and the right-click functionality of its network/peer list box.
Together, Hamachi and Quamachi let you access VPNs via a mature GUI, browse remote Samba fileshares, remotely control systems via SSH and VNC, and flexibly choose optional dependencies.
Australian developer Chris Giles created Quamachi more than three years ago to fill a void that was slowing him down. “Back then I could find only a couple of other Hamachi GUIs for Linux. One of them sucked and the other wouldn’t even load.
“I wrote Quamachi in Python because I’m a fan of its minimalist syntax. KDE has always been my preferred desktop environment, and I knew that my applications would remain relatively small, so the Qt GUI toolkit was the perfect fit. I simply needed to fork and remodel the Q7Z source code, which uses the PyQt v4 bindings. These have proven to be reasonably stable over the years. PyQt is particularly suited to applications that need an attractive GUI and aren’t very resource-intensive.”
Giles just released a new version of Quamachi to correspond with a new version of the underlying software. “I recently realised that Hamachi had pulled v1 from its website and replaced it with a v2 release. I quickly added basic Hamachi v2 support into Quamachi and rushed v0.4.5 out the door a few days ago. Hamachi v2 brings several new features to the table, and upcoming releases of Quamachi will focus on supporting these and providing changes that accord with feedback received from users.”
expect-lite is an quick and easy command-line automation tool that’s designed to directly map an interactive terminal session into an automation script. You can create basic expect-lite scripts by simply cutting and pasting text from a terminal window into a script, and adding “>” and “<" or other special character to indicate the action. Because the software ignores any line that does not begin with a special character, any screen log can be turned into a script in the matter of seconds.
Expect-lite is targeted at the verification testing environment; it produces a pass/fail result at the end of the script. However, its use is not limited to this environment. The tool is written in the Expect scripting language, but it requires no knowledge of Expect. In fact, it’s so simple it takes no more than five minutes to learn.
Developer Craig Miller created expect-lite after leaving a job where he worked with a proprietary automation language. “I wanted to use a more standardized language like Expect, but it uses just too many curly braces, and it is easy to create cryptic code, which is hard to debug. I wanted to create a simple language that focused on getting the job done, rather than making users spend hours learning and debugging. Expect seemed like a good place to start.
“After three years of using expect-lite heavily at my job, I was able to convince management to open-source the software. I chose SourceForge for hosting, because at that time (and still today) it was the premier open source hosting site.”
Although expect-lite follows the keep-it-simple principle, Miller has added features over the years, many of them suggested by users, giving it the power to solve just about any automation problem. One trick he suggests is to use -vv to enable debug logging.
While the software contains an Integrated Debugger Environment, Miller says it doesn’t see much use by the community, and could stand improvement. If you’d like to help with the project, or have a suggestion for improving the software, the best way to get in touch is via email.
Automatic documentation tools like Javadoc and Doxygen let you generate documentation for your programs automatically. HyperSQL lets you do the same for SQL code. “You feed it your project’s PL/SQL code, and optionally even Oracle Forms, and it turns it into a reference containing statistics (lines of code, comment percentage, and the like), usage references (which code calls what), and even dependency graphs,” says developer Andreas Itzchak Rehberg. “If you use Javadoc-like comments along with your code, you can make the generated HTML pages a full-featured project reference that automatically updates when you update your code.”
The tool, written in Python, is mainly targeted at Oracle database developers, Rehberg says, but anyone who wants to document SQL code can use it. It’s easy to set up and use, with only a few dependencies, and is highly configurable.
Rehberg got involved with the project earlier this year when he began working with a new customer, maintaining a huge project built mainly with PL/SQL and Oracle Forms. The code, as code will do, had grown haphazardly over the years, and needed to be made more consistent, with a common coding style and documentation. Finding a way for new team members to get an overview of the project would also be helpful. After searching for a tool to meet those requirements, Rehberg came across an old version of HyperSQL that hadn’t been updated in years. He took over development from creator Randy Phillips.
“The new developers who just joined our team loved HyperSQL from the first day,” Rehberg says. “And its automatically generated Todo, Bug, and Verification lists (the first two collected from Javadoc @todo and @bug tags, and the latter generated by HyperSQL directly) help us keep track of open issues.”
Rehberg plans more enhancements for the software, based on both what his customer requires and what other users suggest via enhancement requests in the project’s ticket system. He expects to work first on improving support for Oracle Forms, improving and introducing support for certain object types, and tweaking the code to make the app faster.
I work on a lot of community theatre productions, so I know that the soundboard operator seldom gets any glory. If he’s lucky, the cast knows him as “the sound guy”; if not, it’s “who’s that?” But a little application called Soundboard is out to change all that. Soundboard makes it easy to create and play back complex sound cues for theatre and dance performances.
Soundboard lets you build the elements of playing a sound cue (playing a sound, fading a level, pausing a track, stopping a track) into sequences that you can activate at the push of a button. Since you can develop the logic and timing of the cues in advance, you can create cue sequences that would otherwise be difficult or impossible to play back manually.
Developer Tony Tambasco says Soundboard has a long way to go before it can match the features of commercial alternatives QLab on the Mac and Show Control on Windows, but unlike those programs it’s cross-platform, so you can develop your sound cues in one environment, then export them to whatever environment a venue has handy for playback with little more than copy and paste.
It’s also free, both as in freedom and beer. Budgets tend to be tight in the theatre world, and many theatres have substandard playback equipment. “Using Soundboard means you don’t have to compromise the integrity of your designs because the only thing you have available for playback is a home stereo someone donated 10 years ago,” Tambasco says.
Building a show with Soundboard is simple, and playing it back is even simpler. Tambasco says you can teach people the mechanics of playing back a design in 10 minutes, and in an hour you can teach them everything they need to know to build their own designs. This means that the kind of theatres I work in, which rely on volunteers, don’t need to find an expert sound tech to play elegant designs.
The Weathervane Playhouse in Newark, Ohio, is using Soundboard right now for its production of Alice in Wonderland. “That show has more sound cues than any other they’re doing this summer,” Tambasco says, “because they are using digitally orchestrated music. QLab wasn’t an option because the sound designer doesn’t have a Mac, there wasn’t any budget for Show Control, and he wanted to design something more complex than he would be able to play back without something designed for theatrical cueing. Working with Weathervane actually been very good for both of us, because the designer uncovered a lot of bugs that needed fixing right away, and had some great ideas for new features. Those are all available in the latest version, which we released last week; Weathervane’s beta test has moved the project ahead by leaps and bounds.
“Actually, Weathervane’s circumstances this year were the same as those that inspired me to get the project together last year: the board op for a show I was designing was running Linux, and there was no software (free or otherwise) that would do the trick.
“I joined the project a couple years ago because I thought it was a good idea. The original author had little interest in bringing it to fruition, so I asked him to give it to me and he did. I’ve been working on it for the past year or so. Having SourceForge’s Subversion repository is wonderful, and being able to manage all of my data relevant to the project in one place makes it so much easier to keep track of the bug reports and feature requests I get via e-mail.”
Because he wanted Soundboard to be cross-platform, Tambasco coded it in Java. “NetBeans seemed like the best fit for a development environment; that’s been my primary development tool. I’ve used a lot of Free Software libraries to help me along. I made the project open source because I wanted to give something back to the community, and because I’m a far cry from the best programmer on the planet. It just makes sense to me to share my code with the world in the hopes that someone better will spot any mistakes and help me correct them.”
Tambasco says future releases will include support for more audio formats, stereo pan control, and improved functionality for working with cues in rehearsals, as well as bug fixes. “I’ve got a nasty main thread locking issue I’m having a hard time troubleshooting at the moment, and Soundboard could really benefit from someone more experiences than I with Java Threads taking a look. Also, anyone with experience developing GUIs or sound in Java would be a big help. The best way for anyone interested in helping is to shoot me an e-mail.”
If you haven’t run into a situation where you need to rename multiple files in one go, you haven’t been using a computer for long. When the next time comes, turn to KRename. Its simple graphical interface makes renaming files easy for average users, and it offers a powerful template language for advanced users with more complex renaming tasks. Although it was written for the KDE desktop, KRename works under other Linux platforms and even on Windows.
KRename lets you specify common characteristics of the filenames you want using a template. The filenames can include numbers, the current date, meta-information from images (such as the EXIF generation date), tag information from music (such as the artist and title of an MP3 file), and other things.
One great use for KRename is to organize your music collection or digital camera images. For instance, you can rename the files in your MP3 collection by using the template string “[mp3Artist] - ## [mp3Title]“, which will rename all files to the pattern “Madonna - 01 Like a Virgin.” KRename can handle many different file types and extract meta-information from those that provide it.
Perhaps you’re a systems administrator who has to convert filenames from upper-case to lower. With KRename that’s a simple matter of using the template string “%” or selecting the option “convert to lower case” in the GUI.
Though KRename has a huge feature set, it’s easy to use. It provides a simple interface for users with simple renaming needs and a more powerful text-based renaming language for users with more advanced needs. And if you make a mistake, it let you fix it right away with an undo feature.
German developer Dominik Seichter has been working on KRename since 2000, “because there was no easy-to-use file renamer for KDE, and maybe for Linux in general, at that point in time.” He chose to use the Qt toolkit and KDE libraries under C++ “because I think it is a fantastic toolkit, with which you can create great applications in very little time. Also it is the toolset you use when you are developing for the KDE desktop, which was my target platform, as I wanted a utility that integrates nicely with my desktop.” Today the application is essentially feature-complete. Other than incorporated small patches and fixes, the only major change in the last three years has been the port to KDE4.
Seichter says anyone is welcome to help on the project. “Some areas that come to mind are help with the web page or the documentation – but of course help with the code is very welcome. If you have an idea for a new feature, contact me and I’ll try to help you dive into the code and develop it. The best way to contact me is to send e-mail to the project’s mailing list.”
Everybody has a hobby, and for every hobby there’s software to help the hobbyist – even for something as apparently non-technical as knitting. A few 2-D visualization programs help knitters create patterns or turn a specific image into a chart, and that’s helpful, but if you want a full simulation of the fabric so you can tell not only what it’s going to look like, but how it’ll behave in your hands, your best bet is Knitter.
Knitter lets you see your project before you spend the time to knit it yourself. It lets you see the effect of different needle and yarn sizes on your fabric, and experiment with patterns. It’s simple and intuitive enough to be used by anybody who knits.
Among other things, the software provides a place marker feature that allows you to simplify patterns by not having to specify exactly how many stitches to place. It also lets you move stitches between needles, which gives you the ability to create cable stitches.
Dane Wagner says he created the software to meet his own needs. “I needed a program capable of displaying arbitrarily complex knitting patterns. I have a knitting project that’s in the planning phases that’s supposed to reproduce a certain famous artist’s abstract geometric woodcuts. A basic stockinette fabric just pixellates the image I’m trying to emulate; what I needed was a pattern that reproduced the twisting and turning of the lines in the image, so I needed to write a pretty complex pattern. Creating such a pattern through trial and error by hand would take far too long; Knitter is designed to fix that. I’ve been working on the project on and off for probably two years now.”
Knitter’s core is written in C. “It’s personally my favorite language,” Wagner says, “because it allows me to describe my ideas most clearly. The user interface was originally written for GTK, but I moved to wxWidgets because the GTK port to OS X was not stable enough at the time. A lot of crafters use OS X, so a stable OS X port is critical for me. If I had it to do again, I’d evaluate Qt more closely, but wxWidgets has been great for me so far.”
Wagner says he’s a strong believer in open source, and wanted to give back to the community. “While it would be great to earn some money from the project, that’s secondary to helping people be more creative and more productive with their own projects. I also believe that as with music, the best way to increase visibility for your project is to get it into as many people’s hands as possible, and releasing the code through SourceForge was one of the best ways to do that.”
The developer says he has ideas for many enhancements to the program: “More intuitive ways to fix the yarn in space. Better control when clicking and dragging stitches around. Better rendering in the ‘tube’ style. Texturing the yarn is a big one. Finding the right simulation parameters so that the simulation is always fast and stable (work is already underway on this one). And that’s just the first few things that come to mind. I don’t know when any of it will get implemented; I tend to make releases pretty erratically since it’s just me working on the project.
“I do need help with the OpenGL rendering. Graphics is my weakest area and I haven’t had the time to do the research to generate a really first-class rendering, although the groundwork is there. Since the surrounding framework is already in place, it’d be a great project for a beginner or mid-level programmer with an interest in OpenGL. I could also use help mapping the latest version of KnitML onto the native Knitter API, which only requires basic familiarity with C and XML. Of course, anyone with a passion for programming is welcome to contribute. Contacting me over e-mail is probably the easiest way to get in touch with me, though it might take me a few days to respond.”
Once upon a time (about 10 years ago) developer Geoff Bache was working on an optimization system that involved processing enormous mathematical problems that could not be solved exactly. That meant he needed better and better heuristics to get a better solution as he went along. “It felt unnatural to write functional tests for the program using techniques based on unit testing,” he says, “since it was impossible to say in advance what the ‘right’ answer was and write an assertion for it.” The answer to that conundrum was TextTest, a functional testing tool with a twist.
TextTest is fundamentally different from most functional testing tools in that it runs the system under test from the command line and compares textual output from it with a previously checked version of that output. This leads to a more dynamic approach to testing, Bache says. “Essentially it exists to manage changes in the behavior of a system rather than trying to assert ‘timeless truths’ about it.” Bache says most test automation tools use the unit test paradigm of writing some code against an API and asserting that what you get back is equal to some hardcoded value. Functional test tools often add abstraction layers on top of this, but at heart they are basically doing the same thing.
You can use TextTest to test a program written in any language that terminates of its own accord and produces some text output that can be used as a measure of its behavior. It’s easiest to use with a batch program or script, but TextTest can also be used on GUIs in conjunction with a simulation tool, such as PyUseCase for Python GUIs. If you need to test a program that uses a database, you can write a small script to generate a textual description of the changes to the database during the test.
TextTest is particularly useful for testing a module with external dependencies. When creating a test you can automatically capture interactions with other modules (for instance system calls, synchronous messages over sockets, or ordinary Python method calls to other modules) and generate mock objects for them. When you run the test later, TextTest seamlessly replaces the external module with the mock version, which just replays the interaction it captured earlier. This saves you the work of hand-coding a mock, guarantees that the mock is behaving in a correct way, and makes it possible to test code in isolation.
“I find this useful for testing TextTest’s integration with Sun Grid Engine, version control systems, bug reporting systems, etc.,” Bache says. “It means I can quickly create tests that pass on systems where these tools are not even installed.”
Bache cautions developers “that it’s a different approach to testing than xUnit and that ‘red’ means the behavior has changed, not necessarily that it has failed. Remember that your tests are as readable and maintainable as the logs and other text files your system produces, and be prepared to invest in improving them for testability.”
TextTest is written in Python, using PyGTK for the user interface part. “I’ve always found Python to be a highly productive and expressive language, and the ability to ‘monkey-patch’ (modify code without touching the source itself) is very useful when testing. As for PyGTK, this came naturally as our main development platform is Linux.”
Bache chose to make the tool open source because “for a small investment in time and energy to make the external releases we get good feedback and contributions from the community. It has mostly been written on company time but my employer isn’t in the business of selling test tools, so there were never any serious plans to try and make money from selling it.”
Future plans for TextTest involve improving it as a test management tool to wrap around other popular test runners, and to improve its interactions with tools such as bug trackers, version control systems, and logging frameworks. Bache would appreciate help with the project “especially in areas where we have little internal incentive to expend effort. For example, it works on Windows, but all the ‘corporate’ users are on Linux, which affects my focus. And being able to run many tests in parallel is a key feature, but it’s currently dependent on Sun Grid Engine; it would be great to expand this to be able to, for example, make use of the cloud.” If you’d like to jump in and help, send a message to the SourceForge mailing list.
The first advice you’ll get from your wiseguy friends when you say you want to invest in the stock market is “buy low, sell high!” But how do you know when a stock is trading at a low cost, or has gone about as high as you can expect? Piggy Market Squeak can tell you. This Java application provides advice about buying and selling stocks by comparing current price and price movement against historical financial quotes using technical analysis and screening.
French developer Guillaume Thoréton says the aim of Piggy Market Squeak is to provide a tool to help with trading or longer-term investment in financial markets. “The objective is to provide a tool helpful enough to free the user from the fastidious task of picking the right share at the right time, as well as monitoring past investments. That makes it unique as a complete solution for this kind of middle-term and long-term trading.”
About three years ago, while searching for a free tool that would fit his needs, Thoréton generated buy and sell signal on stock market historical data manually. “I decided to implement my own solution. Since then the project has suffered several interruptions and undergone feature changes, refactorization, and changes in technological approach.”
Thoréton develops Piggy Market Squeak in Java, and uses Eclipse as his Java IDE. The implementation is based on Derby, SWT, Spring, and Hibernate. He released the tool as open source in order to promote sharing with potential users and other developers; “this would help me improve the quality of the software features as well as its implementation.”
Piggy Market Squeak comes with a friendly graphical user interface to monitor historical data trends, a screening function based on major fundamental analysis indicators and analyst advice, and a technical analysis indicator back-testing and optimization feature. The software is versatile, and made to programmatically integrate any trading indicator as long as it is based on open, closed, high, and low prices, as well as trading volumes.
Although to this point Thoréton says the project has been evolving to follow his own needs in terms of financial investment, he is open to suggestion in terms of improvement or new features.
Today SourceForge is announcing an open beta period for a new set of tools for developers. Specifically, our engineers have begun work on new and better tools for project members who want to use our tracker, wiki, and source code management. We also have a new open source project management environment. And there’s more to come.
The SourceForge 2.0 beta is ready to roll right now. If you want to try it out, you can register a project at http://sourceforge.net/register-project and specify that you want to create the new project on the SF 2.0 beta. SourceForge Product Director Nate Oostendorp says, “Once we have stability, feature parity, and a data migration path with the existing tools, the new forge tools will replace the existing developer interface.”
“This is the next iteration of the SourceForge development tools and platform. We want to give you an early look as we continue to release early and often and build great new tools,” says Senior Director of Engineering Dean Henrichsmeyer.
Why change the oldest and best-known open source forge? “We wanted to reboot our core tools and build on a new framework,” Oostendorp says. “A good deal of the existing code in the existing tools was nearly a decade old.” Oostendorp says the current changes mark the start of an ongoing effort. “We’re going to continue to enhance and improve the beta tools, and also look for improvements to the downloads and stats interfaces coming soon.”
Try the SourceForge 2.0 tools and let us know what you think. You can share your comments via Twitter (we’re @sourceforge) or on the #sourceforge IRC channel on irc.freenode.net, or file a support ticket.
Python developers have their choice of shells – command-line interpreters that let you write Python code and execute it immediately. Israeli developer Noam Yorav-Raphael used IDLE, the graphical shell shipped with Python, for many years, and even contributed to its code. But IDLE was originally created to run as a single process, so the client-server model was “quite hacky,” he says, and it was written using the outdated TkInter GUI toolkit. Yorav-Raphael decided that writing a new shell was the way to go.
“I started to gather ideas for a new shell in the summer of 2007, started writing it in the summer of 2008 (so I had a working but not really usable shell), worked on it again in the summer of 2009 (which made it actually usable), and added some cool features in the end of 2009. I released the first public version of DreamPie in February 2010.” Today he released the latest version.
Unlike some other Python shells, DreamPie is a GUI application, so you can use your mouse and keyboard with it in a familiar way. The process that handles the GUI and the process that executes your code are separate, so you can stop whatever you’re doing and the program keeps running. This also allows you to use other Python implementations, such as Jython and IronPython, under the same user interface. DreamPie gives you separate areas for entering code and viewing the results, so you can easily edit any amount of code before executing it. You can save your history to HTML files and load it back, so you can see how you reached your results. Long output is automatically folded so that you can concentrate on what’s interesting you. Results are saved, so you won’t lose a result if you haven’t immediately saved it into a variable. In addition to attribute completion, DreamPie gives you filename completion. There’s also a “copy code only” command that lets you copy a sequence of commands to run them at once or use them in a regular Python program.
DreamPie can help Python developers in a number of ways, Yorav-Raphael says. “I use it as a calculator, allowing me to save values and formulas I have used and change them. I use it when simple scripting is required, for example to rename a lot of files. I use it to work with data; Matplotlib and NumPy give you powerful tools for analyzing and plotting data, which gives me a free Matlab alternative (I actually prefer it over Matlab.) I use it when programming, to interact with libraries to see how they work, and to try my own classes without the need of a complete program to test them. I also used it to teach programming; I find the fact that each command is executed instantly and the feedback immediately available very helpful.”
The program includes keyboard shortcuts for some useful actions – check the menus. And if you type a few characters and press Ctrl+Up, only commands that start with those chars are recalled, giving you a quick way to rerun commands.
The new version 1.1 features “a much enhanced function documentation view and a cool
new way to save you typing parentheses time – you type a function name and press Space and DreamPie will type the parentheses for you, along with quotes for functions that expect a string. It also can be used to interactively play with
Java and C# classes, to aid with development – a use case that actually has nothing to do with Python.
“I also plan to add module name completion. I would like to add support for something like IPython magic commands, and for quickly running shell commands. I don’t have a release plan; I release when I feel that enough bug fixes were made, or when new features are added.
“If someone wants to implement a feature that I like, or is familiar with IPython’s magic and would like to help, it would be great. Also it would be nice if someone wanted to translate DreamPie to another language. People are welcome to contact me directly or post to the mailing list.”
