Free software for timing the film developing process

The Bee keeper

A
The Bee keeper

  • 1
  • 1
  • 50
120 Phoenix Red?

A
120 Phoenix Red?

  • 6
  • 3
  • 70
Chloe

A
Chloe

  • 1
  • 3
  • 77
Fence line

A
Fence line

  • 10
  • 3
  • 126
Kenosha, Wisconsin Trolley

A
Kenosha, Wisconsin Trolley

  • 1
  • 0
  • 102

Forum statistics

Threads
198,154
Messages
2,770,437
Members
99,567
Latest member
BlueLizard06
Recent bookmarks
0

TheVDM

Member
Joined
Aug 7, 2011
Messages
36
Location
Margate, UK
Format
35mm
Hello all,

Recently I have been trying to expand my programming skills and as such I have written a program using Java named 'Film Developing Timer' (or FDT for short). I have released the software as free and open source with binary downloads for Windows and Linux as well as the Java source code.

The software can be downloaded from http://thevdm.com/Film_dev_timer.html

A few screen shots:
FDT-Home.png
FDT-Select_developer.png
FDT-Manual_settings.png
FDT-Timer.png
FDT-Default_options.png

Please feel free to download, use, share and leave constructive feedback.
Jim

Edit: Just a thought that I should mention that I have tested this program on Windows 7 64-Bit and Ubuntu 14.04 AMD64, if you download and use it please let me know if it works with your operating system.

Also if any mac users would be so kind as to compile a mac binary using netbeans (I can offer instructions) that would be much appreciated, unfortunately I don't have access to a mac to compile it.
 
Last edited by a moderator:

RowanBloemhof

Member
Joined
Mar 12, 2014
Messages
102
Location
Amersfoort,
Format
Multi Format
Awesome. Good job:smile:

There were already similar tools for android, but they were limited in there use if the free version was used. Such as that the timers couldnt be used:S

So a great addition if you ask me.

Just out of curiosity, which database did you use for the development times? The one from Digital Truth or are you using filmdev.org?
 
OP
OP

TheVDM

Member
Joined
Aug 7, 2011
Messages
36
Location
Margate, UK
Format
35mm
Hi, thank you for your comments, the database is a stripped down version of the Digital Truth database, I have removed most of the push/pull times to simplify the programming a bit, although as time progresses (and hopefully my programming skills) I intend to add push and pull times to the database.

I have to be honest and admit that I do have the Massive Dev Chart app on my phone and use it regularly, it's got to be a good contender for the best £6 I've spent.

The PC version of this will always be free as I've written it more to brush up on skills as I'm starting a BSc in Computing and IT specialising in Java development later this year :cool:
 

pdeeh

Member
Joined
Jun 8, 2012
Messages
4,765
Location
UK
Format
Multi Format
for android, Darkroom Timer by chicken of the web is free and very useful; unfortunately it isn't being maintained, and it would be great if someone with the skills could take it over and tidy up some of the few loose ends.

I can't get the OP's application to run on my Linux netbook; is it for 64-bit systems only?
# ls -l
total 44
drwxrwxr-x 3 root root 4096 Jul 30 08:57 app
-rwxr-xr-x 1 root root 33725 Jul 30 08:56 DevTimer
drwxrwxr-x 3 root root 4096 Jul 30 08:56 runtime
# ./DevTimer
bash: ./DevTimer: cannot execute binary file

Also the download appears to contain the entire Java runtime environment, which seems superfluous as I would expect most Linux & Windows systems to have java installed anyway. It also means that every time Java update their runtime, the distribution package becomes out of date.

There are no installation notes or readmes either.

Sorry to sound negative, but there are many competing similar applications that are just download-and-go, and at the moment this one isn't
 

pdeeh

Member
Joined
Jun 8, 2012
Messages
4,765
Location
UK
Format
Multi Format
Did you ask permission from MDC to use their database by the way?
 

RowanBloemhof

Member
Joined
Mar 12, 2014
Messages
102
Location
Amersfoort,
Format
Multi Format
Well i supose its true the 6 pounds euros or dollars are worth it. But to be honest im personally i bigger fan of Filmdev.org. Since its coupled with flickr you can see the effect of your process prior to processing. Take for instance the push/pull suggestions on the massive dev chart, its always somewhat of a guess for me how that turns out. Filmdev allows you to see a rough example forehand.

@Pdeeh, perhaps its not a userfriendly app at this point. But as the OP points out this app was made mostly for his own education in java. I can therefore only see it as friendly and curtious to share it with us. Besides, who needs a readme. In windows you simply double click on "dev timer.exe". And for linux users, i supose we can expect them to know how to open a .jar file^^

In your case though. I dont think java executables are either 32 or 64bit. Java doesnt run native but in a virtual machine, meaning that the instruction set used by your cpu and or OS should have no consequence. It seems to me it rather has to do with the .jar file currently not being set as executable.
 

pdeeh

Member
Joined
Jun 8, 2012
Messages
4,765
Location
UK
Format
Multi Format
I don't think it's inappropriate to offer constructive criticism when that is what was requested.

Who needs a readme?

Well, I need a readme, as I can;t make it run. So I need some clues about what is needed to make it run.

If the package is being distributed, it needs to be distributed in a way that does not make it an obstacle course for users, and as the OP is seeking a career as a developer, he might as well start by learning good habits from the beginning

I think Rowan you are making a great too many assumptions about what users can be expected to know, even though I don't need lectures from a stranger about how to run java apps in Linux.
 

RowanBloemhof

Member
Joined
Mar 12, 2014
Messages
102
Location
Amersfoort,
Format
Multi Format
Well my apologies if i may have sounded presumptuous. And i did not mend at all to lecture anyone. All im saying is that to me it seems like a problem with the file being executable or not. This because java programs are cross platform. I could imagine that the file used to launch the java program could be platform dependent. Have you tried running the .jar file directly?
 
OP
OP

TheVDM

Member
Joined
Aug 7, 2011
Messages
36
Location
Margate, UK
Format
35mm
The Linux edition has been compiled for 64-Bit, the Jar file is included in the 'App' folder and could be run from there using the command 'java -jar Film_Dev.jar'. The reason that JRE has been bundled with the download is to ensure future compatibility as some functions are due to be depreciated in future releases of Java. The program won't conflict with any Java updates as they are used separately, when you run the Film Dev program using the binary it simply instructs the computer to load the jar file using the included JRE which also includes a few parts of the JDK which most people wont have installed on their computers.

For now I haven't spoken to Digital Truth about obtaining the full database, this one is based on the simplified database that is accessible to download, that said though I am tempted to switch to the Filmdev.org database.

Well i supose its true the 6 pounds euros or dollars are worth it. But to be honest im personally i bigger fan of Filmdev.org. Since its coupled with flickr you can see the effect of your process prior to processing. Take for instance the push/pull suggestions on the massive dev chart, its always somewhat of a guess for me how that turns out. Filmdev allows you to see a rough example forehand.

@Pdeeh, perhaps its not a userfriendly app at this point. But as the OP points out this app was made mostly for his own education in java. I can therefore only see it as friendly and curtious to share it with us. Besides, who needs a readme. In windows you simply double click on "dev timer.exe". And for linux users, i supose we can expect them to know how to open a .jar file^^

In your case though. I dont think java executables are either 32 or 64bit. Java doesnt run native but in a virtual machine, meaning that the instruction set used by your cpu and or OS should have no consequence. It seems to me it rather has to do with the .jar file currently not being set as executable.

That is exactly it, the program isn't intended to be a commercial contender, just a personal project that some people may be able to make use of. That is also true, a jar file will run on just about anything which can run Java, the only thing that is compiled for 64-Bit is the binary that loads the Jar file using the correct version of Java and ensures that it is running the Jar in the correct directory as double clicking the Jar file will usually try and run it from another directory meaning the app won't find the included CSV and WAV files.

It may not be too user friendly yet, but it's still early days, the project was only started a couple of weeks ago working around family life.

Either way, I'm not out for world domination of this kind of app :D

pdeeh
I don't think it's inappropriate to offer constructive criticism when that is what was requested.

Who needs a readme?

Well, I need a readme, as I can;t make it run. So I need some clues about what is needed to make it run.

If the package is being distributed, it needs to be distributed in a way that does not make it an obstacle course for users, and as the OP is seeking a career as a developer, he might as well start by learning good habits from the beginning

This is true, I did request constructive criticism, all of this I am taking on board. Typically this is probably the first thing I have released without a readme file included (I usually write PHP apps).

I will dig out one of the old laptops to install a 32-Bit Linux/Windows dual boot to allow me to compile the program in 32-Bit binaries, as well as include the readme file.

Edit: Just a thought, I will add a separate download with just the Jar file and included CSV/WAV files along with a bash script to run it in the correct directory for those who already have the correct version of Java installed.
 
Last edited by a moderator:

pdeeh

Member
Joined
Jun 8, 2012
Messages
4,765
Location
UK
Format
Multi Format
...
total 920
-rw-rw-r-- 1 root root 426318 Jul 6 15:57 alarm.wav
-rw-rw-r-- 1 root root 1660 Jul 29 20:48 click.wav
-rw-rw-r-- 1 root root 243998 Jul 30 08:53 devtimer.ico
-rwxr-xr-x 1 root root 56862 Jul 30 08:56 Dev_Timer.jar
-rw-rw-r-- 1 root root 1897 Jul 27 19:19 filmdb.csv
drwxrwxr-x 2 root root 4096 Jul 30 08:56 lib
-rw-rw-r-- 1 root root 169644 Jul 27 20:14 masterdb.csv
-rw-rw-r-- 1 root root 160 Jul 30 08:56 package.cfg
-rw-rw-r-- 1 root root 28 Jul 29 21:04 usersettings.csv


# java -jar Dev_Timer.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: DevTimer/DevTimerMain : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
 
OP
OP

TheVDM

Member
Joined
Aug 7, 2011
Messages
36
Location
Margate, UK
Format
35mm

That would be the results of not having a compatible JRE/JDK installed. Later today I will set up that old laptop to compile 32-Bit versions of the program including the appropriate standalone JRE/JDK files required for use.
 

pdeeh

Member
Joined
Jun 8, 2012
Messages
4,765
Location
UK
Format
Multi Format
If I sound a little "stiff" about all this, it's because I spent many years running first line technical support for a software house, then I designed X.400 message switching systems and then I was TDA for some very large projects for a very large computer manufacturer and consultancy ... When your neck's been on the block for multi-million £ IT projects, you develop high expectations of software, whether home-developed or not :laugh:
 

pdeeh

Member
Joined
Jun 8, 2012
Messages
4,765
Location
UK
Format
Multi Format
Later today I will set up that old laptop to compile 32-Bit versions of the program including the appropriate standalone JRE/JDK files required for use.

excellent, thanks.

I have to say, it would be extremely cool if you could build it for Android at some stage ...
 
OP
OP

TheVDM

Member
Joined
Aug 7, 2011
Messages
36
Location
Margate, UK
Format
35mm
If I sound a little "stiff" about all this, it's because I spent many years running first line technical support for a software house, then I designed X.400 message switching systems and then I was TDA for some very large projects for a very large computer manufacturer and consultancy ... When your neck's been on the block for multi-million £ IT projects, you develop high expectations of software, whether home-developed or not :laugh:

Thats fine, I've not taken anything the wrong way, I agree with what you said, it's best to learn without bad habits from the start rather than taking short-cuts and trying to learn a new way of doing things later. What you've said so far has only been constructive.

Not quite the same situation but I spent years working in a photo lab with customer facing kiosks, and as such had to give support to customers using the photo kiosks that send everything over to the minlab, as I'm sure your aware the software most of those kiosks use were clearly designed by the incompetent. It doesn't help when quite a few customers were clearly scared of computers.

Usability is the key to success, a program can have every feature you could ever desire but if it's not usable it's pointless. As I've found with many of my PHP based projects I can write a working script that to me looks fine because I know where everything is, but it's not until you give it to somebody else and get feedback that you realise that not everybody knows where you've hidden x option.

Edit: Android is in the future plans :D
 

pdeeh

Member
Joined
Jun 8, 2012
Messages
4,765
Location
UK
Format
Multi Format
TheVDM said:
I can write a working script that to me looks fine because I know where everything is ...

Exactly!

People forget this is in all sorts of different contexts, but it's SO important!

As part of an exercise in understanding what is involved in carrying out an apparently simple and obvious task, I've asked people in the past
to write instructions for making a cup of tea so that someone who had never done it before could do so ... it soon reveals the depth and complexity of the implicit knowledge we carry around and use in performing what appear everyday tasks.

I wish people would bear this in mind before getting testy with folk who sign up to APUG and ask "obvious" questions ... people don't "just know" stuff ...
 

polyglot

Member
Joined
Jun 12, 2009
Messages
3,467
Location
South Australia
Format
Medium Format
Good on you for releasing it, I am a big fan of open source.

While I'm assuming you've used Swing or something desktoppy for the UI, can I suggest that most of us don't have PCs in the darkroom and that writing it instead for Android (which is Java with a really lame standard library and bizarro-world program framework, if you're used to writing desktop code) might make your program useful to a larger number of people?

I apologise in advance for making a suggestion without trying your code, but can I enter an arbitrary-length sequence of process steps, each with a label and duration? I'm thinking a 2-column, N-rows table of Name+Time. That's the feature that I most want that's missing from MDC, it makes it really annoying to do E6 unless you can enter a 12-step program including all the washes. If one could enter arbitrary steps and times directly and save them as a named program, that would rock. And of course it makes the timer useful as a general purpose process timer, not just a film timer.
 
OP
OP

TheVDM

Member
Joined
Aug 7, 2011
Messages
36
Location
Margate, UK
Format
35mm
Good on you for releasing it, I am a big fan of open source.

While I'm assuming you've used Swing or something desktoppy for the UI, can I suggest that most of us don't have PCs in the darkroom and that writing it instead for Android (which is Java with a really lame standard library and bizarro-world program framework, if you're used to writing desktop code) might make your program useful to a larger number of people?

I apologise in advance for making a suggestion without trying your code, but can I enter an arbitrary-length sequence of process steps, each with a label and duration? I'm thinking a 2-column, N-rows table of Name+Time. That's the feature that I most want that's missing from MDC, it makes it really annoying to do E6 unless you can enter a 12-step program including all the washes. If one could enter arbitrary steps and times directly and save them as a named program, that would rock. And of course it makes the timer useful as a general purpose process timer, not just a film timer.

I release pretty much everything as open source, then on the other hand I use quite a lot of open source software from others in day to day life.

It is using Java Swing for the GUI, I could imagine not many people have computers in their darkroom, when developing film I tend to load it in the bag and sit in the living room while developing it, then move onto the darkroom for prints. Never the less I do plan on porting an Android version at some point in the future, obviously the layout would have to be altered a little to fit the aspect of a mobile phones screen etc...

At the moment the timer runs a maximum of 7 timers (Pre-wash, developer, stop bath, fixer, hypo clearing, final wash, wetting agent), although it wouldn't be to complicated to add in additional process sections in future releases, even with custom labels allowing the end user to create custom timers for any process they wish to use.
 

polyglot

Member
Joined
Jun 12, 2009
Messages
3,467
Location
South Australia
Format
Medium Format
If you've not tried Android before, you will be shocked at how not-Swing the framework is. Don't expect to port any code that interacts even slightly with the user.

In terms of extra process steps, don't put in extra labels. Put in a proper list-box that is open-ended in the number of steps it can hold.
 

RayDrueke

Member
Joined
Sep 8, 2011
Messages
10
Location
Little Compton, RI
Format
Multi Format
Hi,

Nice work! I spent most of my career in software engineering. Always a 'bunch of fun!'

A few comments:
I always tried to make installation and use 'idiot proof.' Install to the 'correct' location and automagically progress to the next screen after selecting a film and then developer, etc.
Also there doesn't appear to a 'stop and return to the menu' function - should there be one?

This will work well for tank development IFF (if and only if) the screen is off while loading the tank. It won't work for tray development. Too much light with white numbers - maybe a faint red or orange or...

What's the alert or whatever for agitation? Maybe a buzz or bell rather than the ticks... Speaking of ticks - what is your strategy for the ticks to be on or off or...?


Anyway, a VERY good start - keep it up - Its great to see people doing 'real' development rather than using 'packages' which I always found impossible to maintain - throw it away and start over was the maintenance philosophy.

Thanks,
Ray.
 
OP
OP

TheVDM

Member
Joined
Aug 7, 2011
Messages
36
Location
Margate, UK
Format
35mm
Polyglot. I've not touched Android development yet, although I have got Android-Studio installed in preparation for some experimentation, looks like it will eventually be 2 different programs, once for PC and the other for Android. Again that could be possible to allow the entire timer function to be dynamic depending on input.

RayDrueke. I'm hoping the installation procedure will eventually be idiot proof. I did originally have the 'Select film' and 'Select developer' combo boxes automatically moving onto the next step although I ran into a problem with it (cant quite remember what it was now), it will be something for me to work on for future releases.

A stop/pause button would be a useful addition, for either somebody who has selected the wrong times or somebody who has pressed start without being ready with their developer. There is a 'Back to the start' option in the menu, although this is disabled when the timer starts.

I could maybe add 2 colour schemes, one for daylight processing and the other for tray processing, although the tray processing option would work best if the program switched to full screen to further reduce light.

The tick sound can be a little annoying, especially when you've heard it thousands of times during development :blink:, I will have to experiment with some alternative sounds. The strategy for clicks is this:
int initAgitation = startTime - (minInitialAgitation * 60 + secInitialAgitation);
if ((counter > initAgitation) || (secThenAgitation >= seconds)) {
System.out.println(counter + "- " + initAgitation);
try {
InputStream playClick = new FileInputStream("click.wav");
AudioPlayer.player.start(playClick);
} catch(Exception e) {
}
}
For the initial agitation:
For example you have a developer time of 5 minutes, this is then converted to seconds (300), startTime will always be 300, counter starts at 300 and then reduces by one each cycle

For the seconds/minute agitation:
secThenAgitation is the number of seconds set in the 'Default settings' box and seconds is the integer value that is sent to the seconds box on the GUI.

I've always been a 'work from scratch' person with software, with the exception that I use elRTE whenever I need a WYSIWYG editor in HTML/PHP work.

There's some good feedback coming in from here, it's helping me to write a good list of modifications for FDT 0.2 :D

Thank you all.
 

Lee L

Member
Joined
Nov 17, 2004
Messages
3,281
Format
Multi Format
In masterdb.csv what is the fourth field (between the time and temp)?

Thanks,
Lee
 

Lee L

Member
Joined
Nov 17, 2004
Messages
3,281
Format
Multi Format
I'm a bit out of the mainstream, but I'd like to see the agitation settings allow a choice of 'n' seconds every 'n' seconds. E.g. 10 seconds every 180 seconds, with the start of each 10 seconds of agitation spaced 180 seconds apart.

I know this isn't the approach the MDC takes, but for custom timings it would fit the way I work and allow more flexibility for others. Although I might occasionally use the MDC to help pick a starting point with a new film and developer, I don't rely on the MDC, but on my own testing.

A dimable full screen display in green would be nice for Android.

Lee
 

Lee L

Member
Joined
Nov 17, 2004
Messages
3,281
Format
Multi Format
Thanks for the quick reply Jim. I probably could have figured that out if I'd spent a few minutes with it.

I was thinking of adding my personal data to the .csv file.

And thanks for sharing your program. I'm a long-time free (as in freedom) software user.

Lee

Hi Lee,

The fourth field is the time in seconds.

Jim
 
Photrio.com contains affiliate links to products. We may receive a commission for purchases made through these links.
To read our full affiliate disclosure statement please click Here.

PHOTRIO PARTNERS EQUALLY FUNDING OUR COMMUNITY:



Ilford ADOX Freestyle Photographic Stearman Press Weldon Color Lab Blue Moon Camera & Machine
Top Bottom