Category Archives: Web Site Development

Introducing CSI: Crowd Sourced Indexing

CSIL Crowd Sourced IndexingI’d like to introduce my readers to, well, part of the reason I haven’t been blogging much for the past couple of months. I’ve been programming instead. In fact, this was also my NaNoWriMo project, where I rebelled.

CSI: Crowd Sourced Indexing is written for genealogy societies, special interest groups, and other smaller research groups to manage their indexing projects.

It’s great for indexers because anyone can sign up to index and log in any time they feel like indexing. It puts the record image and the fields for indexing in the same window and it’s a pleasure to not have to juggle the image and Excel to get that done. There’s no sending or downloading of images from the project administrator or waiting for the next batch when you’ve completed the last one. Everything is on the web site waiting for the indexers. When they finish an image, they can do the next one. Tired of the project? Try another project instead.

CSI: Crowd Sourced IndexingBut CSI is especially built for project management. The project administrator can set up a project by providing basic information, uploading the files to be indexed, choosing the fields to be indexed, and then they can invite members of their society or group to index. CSI takes care of most of the administrative work of running the project from that point on. Just as the indexers don’t have to wait for new batches, the admin doesn’t have to send them out, track who has which images, keep track of which are yet to be indexed and which are completed, or determine when to give up on an indexer and send the same images to another indexer. Just keeping up with the indexers is most of the work.

CSI is written in UTF-8 so it’s compatible with every language. Right now, there are several projects going on in Hebrew, thanks to my collaborator bringing projects from IGRA. And the entire site is translatable (the code is in place, translations are coming soon).

And to top it off, I submitted CSI to the 2017 RootsTech Innovator Showdown and I have been named a semifinalist! There were 41 entries and only 10 are semifinalists, so I’m honored to be among them.

RootsTech Innovator Showdown 2017

Would you like to try it out? Visit http://csi.idogenealogy.com/ to sign up and index a little. The easiest project is the NYC Staten Island Marriage Index, downloaded from the Internet Archive, provided by Reclaim the Records. The images are easy to read and generally don’t have too many records per page. Similarly the Queens Marriage Index is available, but that one is a little harder to read the handwriting and the pages are generally longer, some with 100 names. For these particular indexes, when they’re complete, they’ll be made available just like the images.

You can read more about CSI on Devpost where the official entry took place, along with watching my commercial. (Check out those older screenshots. It has already changed a little.)

So give it a try because indexing with CSI is fun and easy.

I’m programming more for CSI every day, so there are more features still to come. Let me know what you think of CSI. And don’t forget to vote for me for the People’s Choice award during the Innovator’s Showdown.

The URL of this post is: http://idogenealogy.com/2016/12/16/introducing-csi-crowd-sourced-indexing/.

Simplest Lightbox Code in the World

I was working on a web page where, in the past, the design was to use pop-up boxes. But pop-up boxes are so 1990s. Now, the thing is lightboxes. You’ve seen them. That’s when you get, essentially, a pop-up box on your screen, except it’s not another browser window and the web site in the background is often grayed out.

This page was a big table of information. First I tried using TablePress in a WordPress installation. But putting links in all those table cells was not going to happen. So I chucked that and found DataTables. It did the same kind of things as TablePress, but without the blog. And this way, I could put all the data into a real database and pull it that way, which was far superior.

Once the table part was done, there was the lightbox part. I tried Lightbox2 first, since I’d used that on a web site a decade ago. That failed quickly as it only does images and captions. I needed text in my lightboxes. I tried a couple others but had problems with them. I can’t even remember all the specifics, but they didn’t want to work easily. Certainly not as easily as DataTables did.

I found where people shared the code needed to program lightboxes, but they went on and on and on. If it was that complicated, I might as well use a program that someone has already written (which I’d already tried.)

And then I found this page from Superior Web Solutions, a Toronto web designer. They claimed their code was “the most simple way to code a Lightbox”, and boy is it.

I had some trouble with the code when I had too much content and it didn’t scroll, but I finally figured that out — they mentioned it in a comment that I hadn’t noticed. But the one thing missing was clicking on the background. I like my lightboxes where you can close the box by clicking outside of it and their code didn’t do that.

I struggled to try things to make that happen and came up short. Then I let my subconscious figure it out. It can do that a lot, especially with programming.

Out of nowhere, I had the solution. I added a global variable. It was so simple. All the times I tried to close the lightbox without knowing which one was open (I had a page with 308 lightboxes), all I needed was to know which was open. So I defined a global variable. When I opened the lightbox, I set the global variable to the lightbox number. I made the background box clickable and called the same display/hide function, but with the global variable instead.

Bingo.

So now I have the simplest lightbox code in the world, and it closes when you click the background. I’m a happy camper.

Go ahead. Try it. :-)

Internationalization in PHP (in Windows)

I have been working on a web site, written in PHP, that will need a translation. In programming, this is Internationalization, or I18N. I could easily write something that would check for the language variable and provide the alternate translation, but I wanted to do it correctly.

Yeah, I know, silly me, wanting to do something a little more complicated and using Windows for the development machine.

I decided to use gettext, because it seemed easy and it’s what WordPress uses, so I’d be more familiar with it when I get to it on a blog.

After fighting with it for a while and doing everything right but getting no results, I uploaded it to the server to test it out… and it worked perfectly.

The problem is that gettext doesn’t work in Windows. Sure, it seems to work, but setting the localization doesn’t work and there doesn’t seem to be any alternative way to set the localization to make use of the translations… so no way to actually see the translated text while in development in Windows. And I want to see it working.

I spent hours over two days searching the Internet for answers. So many answers… none ever worked.

Until I found this page: http://www.extradrm.com/blog/?p=1035

Thank you nameless person for finally providing a correct answer. And the correct answer is that the setlocale function of PHP does not work in Windows. Period.

But thanks to Danilo Segan, there is an alternate version of gettext that actually works in Windows, and that’s over here (https://launchpad.net/php-gettext/+download).

Now I can move forward with programming the project.

And I’m putting this blog post out here so that maybe the next person who goes searching all over the Internet for a solution will find this post and not waste as much time as me trying every which type of code and finding that none of them works.

GenAssist – RootsTech Reject

RootsTech has once again put me in a bad mood. They’re getting too good at this. This time, it’s the developer’s challenge. The challenge was to imagine and then write a brand new program in less than two months. And I got started late. Looking at the finalists, I’d say that either some of them have been working on their programs for more than two months, or I have been left in the dark ages of web programming.

I’m not sure what I was thinking. The prizes are pretty significant this year. Maybe I should have looked at this program as if it was my full time job and put that much effort into it. Maybe that’s what the finalists actually did. Or maybe I somehow knew that I would be left in the dust in the end, so I didn’t.

Either way, I created a program to help beginning genealogists: the people that have just gotten started and found sites like FamilySearch and Ancestry, or maybe a few more, but don’t really know what they’re doing; the people that haven’t been to conferences, webinars, or society meetings; the people that want to know their genealogy but either don’t know how or don’t want to take the time to learn.

Genealogy research is a puzzle. Not only are there methodologies to learn, but you must also learn what records are available. Were your ancestors in Florida? Did you know there are state censuses for 1935 and 1945? Certainly a beginner wouldn’t know. So how does a new genealogist easily find out what’s available?

GenAssist.

In order to research your genealogy, you have to know how to do the research, to know what to look for, and to know what records are available. With GenAssist, you just enter the information about an individual and it will suggest document types in which you might find your relatives.

And while it’s telling you what records to search, it is also teaching you. It will explain why to search for certain records.

However, my program has been left in the dust of this contest. The judges found an error and only informed me when I pestered them that they were behind schedule to announce the finalists. They also hadn’t entered the sample information, because my database is extremely limited at the moment. When they finally entered the sample data, they didn’t do it correctly. (When I say to enter 1980, 1908 will not produce the same favorable results. Genealogy and programming are both more precise than that.)

Therefore, I am opening it up for you to try. Login with username “blog” and password “gjg” (without the quotes). Try the “View History” to see the two sample entries, so you can get an idea what kind of data is already in the database. Then add your own if you like. Keep in mind that your individuals are recorded and visible in the history, and this is a shared login for whoever reads this blog post, so don’t use the living. Besides, you probably won’t find much about the living in my database.

http://GenAssist.info/

Remember that this is just what I got done in about a month in some spare time. Clearly it is nowhere near complete, nor is it incredibly pretty, because I spent my time on the cool programming part instead of the web design part. There is almost no error checking, so don’t test if it can figure out your misspellings. But let me know what you think of it and if I should keep working on it. I do have a lot more ideas for it (you’ll find some on the “RootsTech 2012” page), besides the obvious of filling in the database with genealogy record data.

Also, I will likely not leave the login open for very long. Since my blog gets a lot of spammer comments, who knows what they’ll do to my program.

So, is my program worth working on more? Or should I let it fade away into oblivion?

Integration

I’ve spent the past several days learning about WordPress and how it all works. Why?

  1. I’ve wanted to integrate the blog into my site since I went public with it.
  2. A potential new client wants a blog, along with everything else he’s asked for, and it was recommended to me to just use WordPress for the whole site as my content management system.

So here it is! My site and my blog should now fit together perfectly. I went ahead and added things like a Twitter feed, some “share this” buttons, and my surname list (using WP tags, actually). If you see any problems, let me know. I’ve tested in Firefox and IE8.

Now, I have some genealogy research to do.

To Wiki or Not To Wiki, That is the Question

If you’ve been following me on Twitter, then you know I just got a new computer. It’s a Windows 7 computer. So along with the new OS, I decided to upgrade all my software. I downloaded the newest or newest stable releases of Apache, PHP, and MySQL, since I do my own web development and my genealogy database is self-programmed using those. I also opted for the latest release of TikiWiki. I had an old release before only because it would run on the old PHP/MySQL versions I had.

Unfortunately, the wiki program seems to have degraded over time. There were fewer themes and the old ones were utterly incompatible, so I had to go with an entirely new look. After not spending enough time on that, I started looking around at my pages. The wiki menus had changed and I didn’t like them. My Hebrew text didn’t survive for some reason. Maybe it was the way the wiki set up the database, but my regular genealogy database Hebrew survived the transfer to the new computer. One of the newest wiki pages I created was a name index with a list of surnames at the top linked to the anchors within the page. Well, the new TikiWiki version entirely erased all those anchors within the page and even when I tried to put them back, it wiped them out again. It has new plugins specifically for anchors and linking within pages, but they don’t seem to work or I couldn’t figure out how they work. The documentation site is usually non-functional, but I was on it briefly and saw nothing to suggest how to use them differently than I was already trying to do.

So that leaves me with the big dilemma. I originally wanted to use MediaWiki because I like the look and feel of Wikipedia. But I was also considering putting this online someday as a private web site and my current web host practically begged me not to use that particular wiki. They had TikiWiki installed and I was able to find an older version that I could install to my local computer. There seems to be a way to convert from one to the other, but it’s in Python, which I don’t have or really want, and it was done using an even older version than I was using, so it might not work at all.

I spent a lot of time on the wiki and was finding the initial results to be very interesting. I hate to abandon the project, or even start over from the beginning again in a new wiki program, but I’m considering it. I’m also considering going back to my original database and working more with that. My GEDCOM export was still riddled with errors and I wanted to fix those. And I wonder if I could write my own wiki-like program based on the database I already have. I was setting up some things quite differently in the wiki, so I would have to make a lot of adjustments for it.

So in the middle of writing this post, I installed PHPMyAdmin, which went pleasantly well. Taking a look at the database tables for the wiki, I noticed that most of the tables TikiWiki created are empty. One table has the text of each wiki page while another keeps track of every link between pages. If I don’t try to do the latter, I bet I could use the database I already have and generate output that looks like the wiki.

Once I get the rest of my computer applications set up and running, creating a wiki-like output from my current database may be my next project.