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. :-)

Moving WordPress

I’ve been doing a lot of web site work lately. I even have one site where the “boss” wants me to use website. I’ve been typing two words since the 1990s. Maybe someday I’ll switch.

I always set up WordPress in its own folder. Well, I guess that’s not really true for a couple of my sites now. I usually set up WordPress in its own folder. It keeps things cleaner. I don’t like tons of files in my root directory.

I just moved one site out from a folder to run in the root directory. I followed the directions from WordPress.org. It worked great.

The one part that didn’t work was the admin access. While that was still in the same place as before, the admin bar was missing, as were the edit links on the individual pages. I really like those links; it’s easier to find the pages I want with those most of the time. But WordPress didn’t know I was logged in anymore.

So I searched all over for the solution. How do I get it back? Did I have to move the login file or something? Nobody said anything. I searched through at least a dozen pages until I finally found someone who mentioned the problem and gave a far too simple solution. Ready?

Log out.

Log back in.

Oy vey. Problem solved. Now I’ll be ready for the other site when I finally get that one moved.

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.

New Site Design

And now my web site has a new design.

That was an adventure.

First, I had to back up the whole site to my computer. That wasn’t too hard.

Second, to get WordPress running on my computer. Also, not too difficult.

But getting the blog working on my computer was another story. I didn’t have a child theme before so I didn’t even try that; I just created a new child theme for the new design. But all of the images were broken because they were saved in the database with the URL instead of the URI. I never did try to fix that.

I brought most of the “static” pages into the blog, but moving the whole blog to not be in the “blog” folder just broke everything. Oh well. I’ve set up forwarding from the old pages.

Setting up the menu and the widgets was easy, but had to be done manually on the live site how I set up the test site on my computer.

And finally, I had to figure out how to do my custom header. I created nine headers of three designs and want each to show up for the “static” pages, the blog, and the nitpicker. After a few mistakes, I got that working too. I was going to put in a random number generator, but for now I’ll leave it with each showing the same background. I can change it later.

And so, a new design. I’m happy with it. Stephen’s site was easier; I did that in a day. Mom’s will be next. I hope hers is easy like his was. And then to finish the JGIRC search engine. And deal with the UJGS member stuff.

And I have to remember to change the media file. I keep forgetting to hack that. Apparently, hacking the theme breaks the built in gallery….. There, better. Well, that left something a little wrong, but it’s close enough for me now. Web site update finished. On to other things.

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?

Party and Programming

Went to Rochelle’s 60th birthday party. Alan and Andalin showed up eventually, so there were other people I knew. Had fun anyways.

Still working on my new FFF web site. Should be working for clients. Not prepared to go to the FHL today so will now plan to watch WDYTYA tonight and go downtown on Saturday. Must get some client organizing done for that.

Also, need to get back in touch with John, web site development client. It’s been since early in my cold that I last contacted him. I will need to do a lot of custom programming for his site, and integrating WordPress into it. I need to give him a rough estimate of the time/costs but haven’t even begun to think about that. I hate trying to estimate time; I suck at it.

Must still write a blog entry about the UJGS meeting.

Katie reminded me of Script Frenzy; I’d already gotten an email about it. I can’t think of anything to write except for something about David Tennant. What else is on my mind? But I wouldn’t know what to write. I’m a songwriter; I write vignettes. I can take five seconds of emotions and turn it into a four minute song, but I’m not loaded with complete stories. The NaNoWriMo novels are difficult enough. The only script I could think to write right now would be the Doctor Who episode I’ve been mulling over in my head, but it has no story. I’ve got a new companion and how they meet, lots of other details about her that would be revealed over time, and nothing else. That would make for a short script.

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.

New Web Client

I met with someone who found Great Bird on Google, amazingly enough. Is it because I finally updated just a bit that my page rank increased? Or maybe he was using specific keywords that just worked out.

He wanted to know if I could program a wiki. I told him that there are enough free ones already written. After meeting him, I determined that he needs a search engine and not a wiki. I’m looking into content management. I really hope I don’t decide to redo all my sites with this. Especially since I just started this blog and they have blogs built in. I’m trying Drupal first. If I don’t figure it out quickly, I might suggest a custom programmed site. That’s more my style anyways. I just thought I’d try to save myself the trouble.

We’ll see.

Not Much Today

So I didn’t get much done. I got another estimate for the floors and scheduled a couple others. I finished up a blog post for someone else’s blog — he asked questions and I wrote the post. Might have gotten more of Joel’s work done, but was too tired and went back to bed, but stayed awake and watched my shows, House and Heroes.

I did spend some time earlier looking at WordPress widgets. I think I need to start adding more stuff onto my blog and totally integrate it into my web site. The integration will take some time, but adding could be pretty easy. I just need to set up links for the RSS feed (already have one, but want better), easy links for Twitter and possibly Facebook (I may even include the whole social networking set), and just other stuff that I’ve been thinking about a little.

I started drafting a couple more blog entries yesterday. Don’t know if I’ll get to working more on those tonight before I go to sleep. I didn’t get enough sleep last night and I’m tired now, so likely not.

The last ever nighttime launch of a space shuttle was this morning around 4am. I saw a video of it after I got up. The space shuttle program ends this year. I wasn’t keeping up well but they apparently just cancelled a planned get-us-into-space project. They also don’t have the next generation of ships ready to go, so we’ll kind of be grounded for a bit. That’s sad.

Tomorrow I have another floor estimate and a meeting with a lawyer about a web site. Right, I wanted to look into what kind of program might work for him. He said a wiki, but I’m thinking there might be something else.