Wednesday, December 24, 2008

Cisco VPN, vpnc and Ubuntu upgrades

I get to do a little work from home here and there. And, I was happy to get my VPN account this fall with my new job. But, knowing that I usually just remote control my workstation at the office to do some of the work, I don't really need to boot into Windows to do this. After all, Ubuntu has a Terminal Server client that will support remote controlling a Windows box. I've done so at home. I had finally got the guts enough to install the Cisco VPN client on Ubuntu. I got it working and all was well with the world for some time.

Earlier this week, I ran some of the suggested Ubuntu updates, which gave me a new kernel version, now sitting at 2.6.24-22-generic. That broke the Cisco VPN client. And, I couldn't figure out why or how to fix it. I tried rebooting, reinstalling, etc. No love. It would start up the vpnclient, but would not be able to read my PCF (connection configuration thinger) file.

I did some searching and found a solution that worked for me. There is a package out there called vpnc. You can install vpnc using apt:

sudo apt-get install vpnc

Once you install it, you will need to convert your PCF file to get the host and address info it requires, You do this using pfc2vpnc. It's a Perl script. It should be installed and you can use it like so:

NOTE: I had copied my pcf file to my home directory. This just tells the Perl script to read it and output the results.

cd /usr/share/vpnc
./pcf2vpnc ~/myPCFFile.pcf

## generated by pcf2vpnc
IPSec ID theipsecid
IPSec gateway something.foo.com
IPSec secret ipsecsecret

IKE Authmode psk

## To add your username and password,
## use the following lines:
# Xauth username
# Xauth password

So, it didn't write that to a file that I could see. So, I wrote it down in a file to keep it handy. Once you have that, you just just start up vpnc and connect.
NOTE: I haven't been able to specify a separate config file yet, so I just typed it all. At least it works.

$ sudo vpnc
Enter IPSec gateway address: something.foo.com
Enter IPSec ID for something.foo.com: theipsecid
Enter IPSec secret for theipsecid@something.foo.com: ipsecsecret
Enter username for something.foo.com: myusername
Enter password for myusername@something.foo.com: pin and/or pass for vpn
VPNC started in background

Now you're connected to work. Or, at least I was.
So, I have to enter those 3 IPSec things for now. That's more than before. But, I'm sure with some tinkering I can figure out how to automate that out of the process and only have to enter my username and pass each time.

Good luck!

Tuesday, November 18, 2008

Golan 0.9.1 released

I uploaded a new version of Golan tonight. We'll call it 0.9.1. This version fixes a lot of things over the old one. You can now update an individual feed (as well as all of them using the service). But, now you can also cancel the dialog for individual updates. I'm also using SD card storage now for the feed content rather than the database. The app is much zippier now and now you don't have to worry about app bloat. My copy got up to 9 MB. And, a 9 MB app in RAM is no good. Now it's 100KB with external storage. Coming soon, plucking ability (multiple page levels). I'm close to releasing but I really want the plucking capability there first.

Get your Golan on here

Monday, November 3, 2008

Golan 0.0.8 released

I posted a binary of Golan tonight. No source yet. I still want to fix a couple of things before I show the crap brilliance underneath.

If you are feeling brave you can go ahead and give it a go. I expect I will have the source code up in about a week and up on the Android Market by the end of the month.


Golan Project

Direct download Golan 0.0.8 for Android

NOTE: this thing is still buggy but I've been using it for a while now.

Manic 8-Ball source released

Yeah. I committed my first open source project code. Version 1.0.1.

I also included a new build for download. No need to build it yourself.

Manic8ball 1.0.1 Release Notes:

- Removed some profanity questionable phrases
- Fixed tap sensitivity. It was too sensitive in previous release.

Manic8ball Home

Thursday, October 30, 2008

Manic 8-Ball

Funny story. I decided to be Manic 8-ball for Halloween.

The crafty part of the costume making wasn't working out, attaching a real magic 8-ball to the top. So, I thought. Hey, Why not write a program. I'll just attach the phone to my costume. It will be more like the real character :-)

Well, 2 hours later, here's the app. And, I will be submitting the code for others to enjoy. It's a really simple app.

Manic 8-Ball Project Site

Tuesday, October 28, 2008

Golan

Got a new Android phone? Do you like to read news and blogs but find yourself offline a lot away from wifi? On a plane? On a train? Maybe you don't like how awkward it is to browse on a phone? If you answered yes to any of these things (Android phone required) then maybe you should try out my little baby. The name is Golan. The name was inspired from Golan Trevize, a fictional character from Isaac Asimov's Foundation Series.

Applications like these have been around for some time. For years, I owned Palm devices and was a heavy Plucker user. When I lived in NY, I was often out of network range in the subway. Plucker was so useful. I don't know if anyone will port Plucker directly to Android. But, this is my start in that direction. Only 1 level of "plucking" so far, but I'm pleased with it for now. There is room for lots of improvement.

The project site is hosted on Google's Code site where you can download the source (soon to be committed) or a built version and install on your phone. Once I save up $30 for the registration fee, I will post it to the Android Market. And, it will be free.

Golan Project Home




Let's get plucking!

Wednesday, October 22, 2008

Installing your Android Application to your Phone Locally

I bought my G1 phone today. Yes, my Android phone. Dude. Am I happy. It is soo much faster than the emulator. So much fun. Not much time to play with it yet.

When I got it home tonight, I got to the task of getting my application installed on it.

Obviously the way to go is to just publish the application to one of the many marketplaces.

But, my app isn't ready yet. I want to install it on my phone and play with it and to get feedback from friends.

Here are the steps to getting that app on your phone. Maybe I will clean this up later.

Use keytool. From the command line (you obviously need the JDK installed):



Now you have a key. We will be using a self-signed key. Don't worry. Android accepts that.

Now you need to sign your .apk file. Screw the command line. You're gonna be doing this a lot. Use ant. Ant has a core task called oddly enough signjar.
Here's a build file you can start with.



Run the build. Hopefully, the "build" succeeds. Check the last modfied date on your file. It should have updated. It if it did, your jar should be signed. I'm sure there's a more intelligent way of examining it.

Now you can install your app on your phone. How the heck do you do that? Well, you need a server. Just install Tomcat locally. Copy the file to a simple web app. Modify your web.xml file (or your web server) to treat the .apk file extension as "application/vnd.android.package-archive".



Now add a link to your file in a web page or JSP. Hopefully the PC/laptop you're running this little local app is on your local network. And, you've turned on wi-fi on your phone. Go to your browser on your phone. Access your pc/laptop: http://192.168.1.10/yourapp/yourfile.jsp or some such url). Click the apk file and the Chrome browser should download the file. Once the file finishes click on the file. It should try to install the application. If it fails, it will tell you so. Unfortunately, it doesn't tell you why it failed. If it succeeeds, it will tell you and allow you to launch it.

Good luck!

Tuesday, October 7, 2008

Classpath Doh!

I keep learning more and more about building complex systems and the importance of getting classpath correct.

The other day I did an SVN update on my project. All of the sudden, this one piece of code wouldn't compile. I think it's probably OK to show this 1 line of code.



Anyway, the bit that was barking at me was javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI.
I asked a colleague where this lives. In rt.jar, he says. Waa? OK. It's in the JDK. I looked around in rt.jar. Yep. It's there. Why the hell isn't it compiling then?

Hmm. Here's the answer.

Project | Properties | Java Build Path | Order and Export
There was a jar in our project (which wasn't being used any longer) called jsr173_1.0_api.jar. That jar contains a class in the javax.xml package called XMLConstants just like in RT.jar. Only this copy did not have javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI. But, why does that affect whether it compiles or not? The jar without the class was listed higher in the classpath order. We didn't notice the problem before the JDK was previoulsy higher in the classpath order. Someone had re-ordered it on the last commit. Ugh. But, I'm glad they did it.

It was an easy fix for us. We were able to simply remove the unused jar from our project and the problem was gone. But, what if we couldn't remove it? Hmm. You can cheat, at least in the IDE. Though I'm sure that might have caused deployment issues. You can re-order the classpath by moving a class up or down in the list. Just click the jar in question and move it below the JDK entry. Voila, it compiles.

Be careful out there. It's a weird classpath world.

Friday, October 3, 2008

Android and sqlite3

Wow. For my new application which will go unnamed at the moment, I learned something very cool.

In the Eclipse Android SDK for Eclipse, there is a Perspective called DDMS. While your emulator (and application) is running, this will let you do all sorts of cool things. You can take a screenshot of what's showing on the phone. You can debug, look at logs, etc. It also shows you the filesystem for your application. Since your application is a its own Linux account, it has its own set of files and applications. And, if you are like mine and have persisted data using the built-in sqlite3 database, the database is also there on the filesystem. If your app is called foo.myapp then it's under /data/data/foo.myapp/databases.
There will be a file that is the name of the database along with any tables.

Let's say your database is called MyDatabase and you have a table, mytable.

Now click on the databases folder and click the action menu item for that view "Pull a file from this device". It will actually copy this whole directory to your local filesystem.

Now, hopefully at this point you are in Linux and already have sqlite3 installed. You do run Ubuntu right? :-)

Bring up a shell. Fire up sqlite3 like so:



That's it. It should list the contents of your table (assuming you have a column named col1). Other than that, it's standard sqlite3 stuff.

There should be a lot of neurons firing right now about what this means. Perhaps involving snycing. You can add files back to the device. And, this sort of thing can be done with a standalone emulator, so no eclipse is required.

Enjoy!

Tuesday, September 16, 2008

Pluck Me

Having used Ubuntu now for some time. I figured I needed a little shell scripting practice. I admit it. I'm lazy. I don't want to go through a bunch of unnecessary clicks every time I use Sunrise (my app for PluckerDocs on my Palm Treo). Alas, my Treo is dying on me. It won't be much longer I'll be using this type of offline reading, unless I port it to Android or the iPhone. In the meantime, let's do it. So, normally I would just write something in Java. It's easy enough. I know Java well and it's easily accessible from the command line. It would have been simple. But, it must have been years since I've written a Bash script. So, here goes.

All this script needs to do to replace my monotony is do this workflow:

Old way
- I open Sunrise and tell it to update everything. We wait. It's takes some 5 minutes to pluck everything.
- I put in the SD (ugh, still gotta do that manually)
- I open my Pluckerdocs folder (the source).
- I open my SD card folder (where my Palm reader will see them, the destination)
- I remove the old pdb files b/c my old 1GB SD card drive died and I'm living off a 34 MB SD Card. Life is tough.
- I empty the Trash in Gnome. Yes. Another manual step if you aren't using the command line, else the card will look full.
- I copy over the new files

New improved Bash way
- I open Sunrise and tell it to update everything. We wait. It's takes some 5 minutes to pluck everything.
- I put in the SD (ugh, still gotta do that manually)
- I run the script (this is new!)
- Done!

Next on the list might need to be something fun like running sunrise headless and kicking off an update or something. That would be pretty cool. Running it as a job.

Here's the script. Yeah, it's tiny. So what?

Sunday, July 13, 2008

Plurk

Yes, I'm out there. I just joined another one. This time it's Plurk.

This is interesting. Like Twitter (I don't see any SMS support). I also like Pownce (who also doesn't have SMS support, but lets you share files!).

The cool thing about Plurk is that it has this nifty timeline UI. Interesting.

It appears to be written in Python (or at least partly). I believe the same is true of Pownce. Python and Ruby are coming along. That's cool. The more the merrier. I love languages.

Plurk sounds kind of nasty.

Wednesday, June 18, 2008

I love me some Ruby

So, I'm learning Ruby and Rails at home, and I'm absolutely loving it.

I love the little idiomatic stuff that make typing in it so concise.

Let's say that I have a list called mylist. I want to add an object to the list, foo.

In Java, I'd have to go something like this.



In Ruby, it's just this:



It's not earth shattering, but there are a dozen examples like this that I really like. If you understand the symbols and operators of the language, it actually reads just fine. Maybe I'm getting cranky in my old age and not wanting to type out all that stuff as much anymore.

Another perhaps bigger example was the "attr_accessor" convenience method.



What just happened here? For me, the critical part was the getter/setter bits. In Java, I'd have to select a menu option in Eclipse to generate the getter's and setter's for this class. Imagine a class with 10 fields in Java. You are NOT gonna type out those methods.

In the Ruby case, it's just 1 line of code. And, you can add more fields to the same line. "attr_accessor" tells us that what are our accessor methods. Nice!

See also attr_reader and attr_writer which do as you would expect, allowing only read or only write methods.

Alfresco partnering with Adobe

I just randomly hit my bookmark for the Alfresco blog today and was like...whoa!

It appears Alfresco is partnering with Adobe now on forms. They're gonna embed the Alfresco repository as part of the LiveCycle suite. Wow. Congrats if that works out for ya. Not sure how that works yet but I'm intrigued. I was just speaking with a colleague about forms applications and how badly OpenText did it in the past. Not sure if their competitors did it any better. Having not worked with LiveCycle directly, I cannot say that this is a good thing, only it's a big thing. Something to keep an eye on.

Here's the Press Release.

Read more... on their blog.

Wednesday, June 11, 2008

MyEclipse Quirk

I discovered a really weird UI quirk with MyEclipse today. I updated a thread on the MyEclipse forum for good measure. But, this is the issue:

I've seen this where case where the Add button on the Manage Deployments dialog is grey or greyed out. It's the weirdest thing. This was happening to me on Ubuntu Linux today but I don't think that matters. Also, I'm using MyEclipse 6.x. And, this also happened to a colleague of mine using Windows a few weeks ago. It was maddening and I couldn't figure it out at the time.

It seems that if the current open project doesn't have focus, this occurs. Make sure to click somewhere on your project in your project explorer. Then click the Deploy button again to bring up the Manage Deployments dialog.

So, to re-create this problem click on a closed project on your package explorer then try to deploy. It should be greyed out.

I don't know if this is really a bug as much as it is a UI quirk?

Friday, April 25, 2008

SQL's brain-lock on the development community....

I was reading this blog post by Tim Bray on the subway this morning. It seems so spot on to me. So, I'll link to it now and maybe comment on it later.
By the way, Tim was one of the co-founders of OpenText back in the day.

Tim Bray: Multi-Inflection-Point Alert. The comments are quite insightful as well.

Wednesday, April 2, 2008

How Fast Can OpenOffice.org Be Extended?

Here's a nice article with code and screenshots on how to extend Open Office using Java. When I was playing around trying to do some stuff with Plucker, I also noticed they have a Java package to handle Palm database files (.pdb). Look around in their repository. You might actually find some useful code.

TDD, yeah you know me

If you've been keeping up with my rants lately, you know that I have become a big advocate of TDD in the last few months. But, it's a practice that's hard to convert people to, including yourself. I wish I could even get to the point with code coverage that I could get to this argument. Alas, I'm not there yet with my current group. Follow the link. There are a lot of good comments related to TDD following the post on Cedric's blog. Like anything, it's not for everyone, or for everything. But, you should at least look at the idea.

Otaku, Cedric's Blog: TDD leads to an architectural meltdown around iteration three

Sunday, March 30, 2008

Kindle envy

So my trainer last week showed off his Kindle to me. I must say I was more impressed than I expected to be. The demonstration turned into a discussion of the pro's and con's of owning one and why someone like me would be offended by the DRM included in the device. But, after thinking on his comments and looking at the features more myself, I am now wondering when I can afford one.

I read a lot of blogs on the subway. Soccer, programming, etc. I have even synced down technical documentation and manuals. My current process is to use Plucker ala the Sunrise application to sync those down to my old Treo. Code is not a very realistic option on my current device as it doesn't wrap well at all.

I'm cheap so I had concerns that owning a Kindle means I couldn't get all that nice free content down to the device. No problem. The Kindle has an email account you can send content to. If you have something in Word or text you can email it to the Kindle account and it will show up on the device. The device comes with wi-fi.

My current method works great but a nicer screen is so tantalizing. I want to read more. Unfortunately, I don't have the money to be buying books as often I would prefer. And, NYC doesn't have a nice chain of half-price books with good books on the shelves ala the likes of a Half-Price books in Austin. Alas, my choices are thin on the ground.

The Kindle screen is excellent for reading. It's hard to see the difference on a PC screen. If you know someone with one, just take a look at theirs.

I was surprised to see that they sold out on the Kindle in five and a half hours. Jeff Bezos apologized that there was still a six week delay. Interesting. As of today, the price is still sitting at $399. Ouch. Maybe at 300-350 this would be more attractive for my pocket book. However, demand will not allow for such a price reduction anytime soon. It will take competition to force a price reduction.

Maybe in 2009 things will look better.

Friday, March 28, 2008

Documentum System Administration Training

I was pleased to wrap up my week of training with 2 days of Documentum System Administration training. This is the basic training. As you'll notice in my notes, there are some things that are only covered in the advanced class. Such is life.

This post will cover both days. I found myself taking fewer notes in this class as it was more interactive with fewer students. And the labs were more interesting. Also, the slides pretty much cover the details you need to know. As with Livelink administration, I noticed this is something you get trained for. But, you probably learn a lot more by doing and troubleshooting over time.

Again, these are mostly just raw notes. Not intended as entertaining literature :-) One thing about these notes is that this class covered Documentum version 6. There are a lot of comparisons to Livelink here as that's the world I come from and understand as it pertains to ECM. Of course, I've also tinkered with Alfresco but nothing serious (yet).

Day 1 of Administrator Training.

Add on services. Collaboration Services does chat, forums, portal, etc. Do we have this? Yes. It turns out to be so. After asking this question, I found out there are quite a bit of differences between eRoom and Collaboration Services. Not something I will go into here. But, suffice it to say that we will most likely be focusing on the latter possible.

LDAP integration. I noticed that Notes LDAP is not listed in the supported list of LDAP servers. Yes, we use Notes where I work. I know. I know.

During our lab, our Reassign user job wouldn't run today. We fixed it with this DQL query:

Then restart your Docbase.

Language packs are very easy to do. I can't believe we spent so much time worrying about this in the evaluation process.

Jobs - the Window interval is worth noting. Setting it to 60 means it can ONLY be run 60 minutes either side of it's scheduled time. If you want to enable a job to be able to be run anytime the number is weird. It should be 720 but it's not. it's 1440. I don't care what they say. That is an odd implementation of a job scheduler.

Day 2 of Administrator Training. Happy Friday.

We discussed distributed repositories. See distributed repositories reference. We didn't go too deep into content replication as that's in the advanced administrator course.

BOCS (Branch Office Caching Services) is a standalone ACS server. It's like a cache server. Not replicating (except maybe initial pre-pop). It lightweight. It's not ACS (you can't run jobs and stuff). Easy to administer, etc. It might be a good solution for remote sites. Requires web-based Documentum clients.

ACS/BOCS is read only by default? But you can make it writable. It's configurable.

Regarding failover, Documentum doesn't need to know about it. There's only one Content Server. With repository configurations, you have to tell each connection broker about the other servers using proximity values. If the server is prefixed with 0, it is used for data requests. And, servers prefixed with 9 (in the thousands position), it's used for content requests. And, there could be multiple of each. It goes to the closest one by number.

The proximity values use a thousands number: ####. But, you need to split that out as the first number and then the next 3. For example, 0100 is 0 and 100. And, 9001 is 9 and 001. So, a server for data requests with a proximity of 100 and a server for content requests with a proximity of 100, respectively.

Failover support - in this class, we are primarily talking about Content Server failover support not the application server failover support which is different.

Multiple repositories (docbases). You don't want just one usually as different groups within your organization may want their own. You can use objection replication. Not content replication like in remote location/caching scenarios. Instead, you are replicating objects. Important to keep track of which one is the original. If you try to check out an object, it must connect to the original and check that one out then you can edit the replica. If someone does something on the original server it doesn't update replicas immediately. It gets scheduled to replicate. See object replication jobs.

Interesting you can also configure it in such a way that you replicate objects manually. You could export it from one repository and burn to a CD. Example: movie studio, big big files. You don't want to push this stuff across the network.

When handling multiple repositories you need to have a repository federation in order to observe user/group/permissions across repositories as each repository has their own permissions and different sets of users.

One repository must be named as the governing repository. Superuser priv's not replicated. That's good. Setting up a federation is pretty easy. You create an object and define the governing repository and a job to do the replication.

For object replication each job is only representing a cabinet or a folder.

Storage areas are neat. You can actually specify whether or not to leave the extensions on. In Livelink this is not the case. Extensions are not included in LL.

Interesting choices on storage areas. I hope nobody asks for anything crazy. Blobs are always a bad idea. However, the Content Addressing option (forces you use one of their Centera devices) could be an option for some types of content, especially email. The reason is we need to archive that stuff. And, it's read only anyway. So, there's value there.

Records migration jobs. Interesting way to maintain your storage areas. I suppose you'd do this if disk space was more critical. I never had to do anything like this with Livelink, b/c I made sure I always had ample disk space. Keep it simple.

dm_ContentWarning - tell us if the drive's getting full. setup a job to do this..
dm_DMClean cleans up oprhaned files and aborter wf's, etc. Like an empty trash function.
dm_DMFilescan - looks at the filesystem then looks in the repository. That's different. This is more useful in a distributed environment where you are using content replication. So, you need both in a complex architecture.
see also dm_RenditionMgt and dm_VersionMgt and dmRemoveExpiredRetnObjects.

It's amazing how transparent they are about their system. I don't remember OpenText being this open about how everything works. Often it seemed in LL they had options in the UI that they told you never to touch without talking to support. The Documentum folks seem to take a different approach. They WANT you know what everything does as much as possible. Of course, they don't cover everything in this course. That's why they have an advanced admin course. Who knows. Maybe the OpenText culture has changed a little in the last 2 years?

Logging. Well, the logs aren't all in one place. There are lots of places to look. Reminiscent of my experience administering Oracle AS. That's what happens when you buy other software and try to merge it with your own. :-) But, it looks pretty reasonable. They are using Log4J. w00t. Wow. You can set filter DFC tracing to only look at a single user.

Consistency Checker. This is great. Livelink has something like this as well. Every system should have this!

Search. They used to use Verity before v5.3. Didn't scale as well. Now they use an Index Agent/Index Server package. Here we go. Index administration. More and more with Livelink administration, this became a large part of your responsibility. Search must ALWAYS be working and there are a lot of configuration options. It will be interesting to see how difficult this is to manage with Documentum.

Full text software has to be installed separately. Waa? Who wouldn't want their data full text indexed these days? Whatever. Must be for the small group option.

Wow. This Indexer reserves the next 4000 ports after the one you assign. Beastly. No wonder they insist you run it on a separate box from the Content Server.

When you run the installer for the indexer, one of the screens displays prerequisite information. And one of those items is that they do NOT support VM's for this. Thank GOD. I've had more troubles with VM's for certain software where I work than you might imagine. So, it will be nice to just use that screenshot. The thing is that VM's are not good enough to handle disk intensive systems like Index Servers.

Interesting architecture note: each Index Server uses a self-contained copy of Tomcat because it might be installed on a separate box.

By default, everything (dm_sysobject) is indexed. If you want to selectively manage that, you turn it off and explicitly name them. Livelink was like the latter. It will be interesting to see if there are any problem document types. Every now and again in Livelink, some documents would cause trouble. In fact, there were sometimes mystery documents that simply would not index. In which case, you could exclude them by node ID. Subtypes of a parent use their indexing property. If the parent is indexed, so are the children types.

There's also a self-paced 1 day course on index administration if we want to learn a little more about search. They are not free, but they are cheaper. "Online" means an online class like this one. "Self-paced" is different.

Upgrading
Run the Consistency Checker prior to upgrade. Man, that is right out of the Livelink book. Do I know that's true :-)

References to have

  • Server Fundamentals Guide (the bible)

  • Server Administration Guide



The Advanced class gets into performance tuning.
There is a System Administration certification. It's only a couple hundred bucks. You can take it multiple times if you need to. You have to pay again. WDK course is a 2 day course and might also be useful.

Overall. My training was quite good. The trainer gets good marks. I took these classes from MicroTek down in the Financial District.

That's it for my training. But, word is I may get some more soon. DFC. Look out.

Documentum Training, Day 3

This took a while for me to post but here it is. And finally my notes for the Tech Fundamentals training for Documentum, day 3. This was a 3 day course. This will be followed my notes from the 2 day System Administration course. These are mostly just raw notes. Not intended as entertaining literature :-) Again, there are a lot of comparisons to Livelink here as that's the world I come from and understand as it pertains to ECM. Of course, I've also tinkered with Alfresco but nothing serious (yet).

Yumm. More free coffee.

Day 3

DocApps are self contained packages of repository objects. It used to be you had to write everything down that you did in QA then carefully moving everything to another repository (production for example). Now you have DocApp archives to handle migration. Excellent. This is something that was always missing from Livelink. Moving a form template in Livelink from QA to production is (still is?) a manual, scary process.

Use Document Application Builder (DAB) to create objects, lifecycles and other things. If you are writing your own application with WDK, then these objects would need to be created with DAB first. In version 6 this can be done in Composer. Not all features are included in Composer (yet). The new Composer tool is in Eclipse so we're all working in one tool. WDK is also in Eclipse but is a separate tool for programming and customization.

As I see it, aliases are sort of like a variable. Sounds like a parameter to me. Either way, it's a dynamic placeholder in a bigger process. Aliases go inside alias sets. And, they can be affected programmatically using DQL or DFC. Nice. These are basically just like Maps. That's interesting. Livelink has a similar dynamic variable ability within workflows. But, I think that's about it. Aliases in Documentum can be used across object types.

Pointer to documentation: Server fundamentals reference. Good for looking up how the server rules work.

I am really pleased with custom types in Documentum. The fact that when you create a "custom type" you can have dynamic attributes is a blessing. I am muy impressed. I could not do that with Livelink attributes out of the box 2 years ago.

Finally. Workflow. In my experience, this is where the ECM's bread is buttered. Can it hold up the Livelink workflow engine?

Workflow packages. Documentum supports multiple packages and a choice of mandatory or optional (using ProcessBuilder, BPM). Otherwise, it's mandatory packages. The built-in workflow package is content-centric. I liked the trainer's Star Wars reference for mandatory packages. If you don't have ProcessBuilder installed, just treat it as "this is not the document you are looking for" :-) I'm pretty certain we will use ProcessBuilder. I can't see a reason not to. I'd much rather have the extra options it offers rather than just the built-in engine.

Workflow forms uses XForms. w00t. And, it's part of the Application Builder. Thankfully not as "weird" as Livelink's. However, we don't get to do any forms here. That's another class. Hopefully my group can figure this out with taking the class.

Another thing I want to figure out is workflow reporting in Documentum. In Livelink, that was also weird and needed improvement. In Livelink, if you had 1000 open workflow instances, reporting against them was very hard to do. I like the availability of expressions making dynamic workflow designs easy in Documentum. However, I can see why they have a 4 day business process class. The reason they have all this power is the acquisition of the ProcessBuilder. It's truly full featured like other BPM's. Has Livelink changed to a BPM yet? Hmm..Will have to ask around.

Finally, we finished up with workflow. I love it (so far).
Then we did lifecycle. OK. Simple enough.
Then we did presets...easy. and useful.
That's all for day 3.
One more post on this will be my from sys admin class.

Documentum Training, Day 2

I'm a little late, but here are my notes for the Tech Fundamentals training for Documentum, days 2. It's a 3 day course. This will be followed my notes from the 2 day System Administration course. These are mostly just raw notes. Not intended as entertaining literature :-) Again, there are a lot of comparisons to Livelink here as that's the world I come from and understand as it pertains to ECM. Of course, I've also tinkered with Alfresco but nothing serious (yet).

Yumm. More free coffee.

There interesting separation of "client capability" versus privileges (server side).

Privileges are summed using powers of 2. I think this is the same type of math that OpenText Livelink uses for permissions. I remember working with my colleague a time or 2 to write reports that would scan our folder taxonomy trying to figure out how to report on permissions. It wasn't easy. So, the concept goes something like this:
create type (1) + create cabinet (2) = 3 in db.

Distinction: sysadmin and superuser. superuser is most powerful, can delegate priv's to sysadmin. sysadmin is similar to a livelink admin, but perhaps a little more powerful?

You can get to the DQL editor (if you have permission) by holding down Control on your keyboard and selecting File | About webtop. But, what's more interesting is that they also included a API tester. Wow..

Groups seem much more robust than Livelink. There are more options. In Livelink, have the concept of roles in project workspaces only. In Livelink's Enterprise workspace, the concept is permission based only (without customization). In Documentum, you can use roles pretty much everywhere. And, the delegation of group membership and such looks better than what Livelink offers with it's Group Leader feature. But wait. Roles don't have any special meaning with the out of the box Webtop application. You'd have to customize Webtop to look at it as a role and do something with that. Otherwise, it's really just treated like a group. This gives you a way to separate groups out from roles as a programmer. Furthermore, this gives you something over and above the default built-in client capabilities. Otherwise Webtop just treats it like a normal group.

Dynamic groups. Fascinating concept. Potential members of a group. If an application can detect where the user is connecting from, the application can say "this user is a member of this group" otherwise no access. You MUST already be a potential member of the group. And it must be a custom application. Out of the box Webtop isn't going to take advantage of this. It makes it easier for your custom application to take advantage of this requirement by setting up dynamic groups.

Permissions sets. The key point here is that ACL's are templates and are reusable. That is VERY different from Livelink. Let me break it down so my brain can get it.

  • It's like a permissions set is a template that you apply to different objects where Livelink's ACL's are applied to objects but are not reusable.

  • There are system permission sets and user perm sets.

  • If you modify the permission set on on a folder, it doesn't affect or restrict a document inside unless you propagate that down. and it doesn't seem that you can do that with the UI. I think you'd have to do that with DQL? If so, that's a weakness when compared to LL as LL has a cool interface to propagate permission changes to children. However, Livelink would tell you to never modify the database. So, the DQL option wins out for flexibility.

  • You can apply permissions to a specific object. These are custom permissions sets. This is more what Livelink is. But it's not going to be a best practice. If you modify the properties on an object, you can modify the permissions, for a temporary use as an example. It will create a "custom pemmission set". It will be a throwaway and create some sort of name like "dm_4500000abcs", etc.



The overview of search in class seems adequate. It doesn't sound like they have an equivalent to the Livelink query language. In order words, their advanced search has some neat-o form based thinger. And, you can save searches, etc. However, I do see where you could explicitly define a search expression against the index. Maybe I just need to look at it more. Also, our instances didn't include a full text index of the Docbase.

I asked about WebPublisher. Per trainer, this tool is geared towards the non-html folks.

Example: press releases, use template(s). marketing folks fill it out..
Webpublisher has built in review/approval process and the content gets pushed out/expired at the right time. There's a 3 day course on WebPublisher.

In short, WebPublisher templates are usually represented as XML and are transformed. Of course, they can be pages that access a Docbase from front to back with no replication at all. It's flexible. It can also be done with static HTML but will not be as flexible and will look a lot like the way it does in WebPublisher. I asked about skill level. It would not typically take a programmer to do the templates. You just need knowledge of HTML and of course a little XML. So, an analyst could do this. If the template is complex enough, you might need someone with a little more skill. That's probably the most info you're gonna get without training or reading the docs.

Tuesday, March 25, 2008

PownceFS efforts

I'm trying to get Richard Crowley's PownceFS to work.

I am at the point where I'm asking for help now.

I'm using Ubuntu gutsy. I'm sooo close.

I added svn, python-fuse and python-json as it was complaining about those.

Now I got a permission error. I tried using sudo and got it to run on /mnt withtout the permission error. Now that folder is kind of screwed. I've been using Linux for a while, but this mountpoint stuff is throwing me off.

Here's a sample. Any ubuntu folks have comments?




UPDATE:
All fixed thanks to help from others. Get rid of the "/" and let it create regular folders. And make sure it can access fuse and fusermount.

Monday, March 24, 2008

Documentum Training, Day 1

As twittered earlier today, I learned today that that Documentum's metaphors are not that different from those of OpenText Livelink. That's good. My brain still has a LOT of Livelink info on it and it's good to see it not wasted.

It seems everything in Documentum is an object, and it is all object oriented. That means new objects can be created using existing ones. Same concept in Livelink. In Documentum, you have cabinets. Livelink doesn't have that but it's probably closer to a Livelink workspace object or maybe even a domain. It' just a top level folder object.

I'm happy to see that they do have compound documents. But, they are called virtual folders in Documentum. Otherwise, it's the same concept.

Reports are possible. One of the things I REALLY liked about Livelink was the LiveReport object. Documentum has this ability. It might even be a bit better, because they abstract away the query language a bit with their DQL (Documentum Query Language). I'm sure I will have more to say on this in the next few days. What I'm wanting to know is can report results take on interesting results like graphs? With LiveReports you could use a handy little set of graphs to show things like a graph of the ten largest file types or the top 10 usage by department, etc. If it's not out of the box, I'm sure some 3rd party has a module for this.

It's interesting that a lifecycle option seems to be there out of the box with Documentum. As of 2005, I don't think this was out of the box with document management in LL.

Regarding version control, that seems to work OK. I was impressed with the idea of branching versions. If your document was at version 2.0 and you went back and checked-out version 1.1 and versioned it again, it branches it. Weird. I don't know that Livelink does this? Anyone know that for sure?

And what about modules? Livelink is all about modules. Or at least it used to be as of 2005. And it used to be all in OScript until they introduced Java modules. Documentum is more about "applications". I'm not in developer training but the "Intro" training then sysadmin training later this week. So, I probably will not get to the bottom of this until a bit later.

When I first lay eyes on "webtop" back in 2005, I was very disappointed. After today, I'm a bit impressed with version 6. I say "a bit", because I still believe that you should not mimic a file explorer inside a browser is not what we should be shooting for. That's probably why most organizations customize it and make their own Documentum application.

There's still a lot to be evaluated this week. Workflow and search are big pieces to the puzzle. Livelink's search engine was top notch and their workflow wasn't bad either. We'll see how Documentum measures up here.

Sunday, March 23, 2008

Caszzzz out

I have Documentum training all week this week. You know what that means. Jeans! Oh yeah.

I already have several years of OpenText Livelink experience. It will be interesting to see how the architecture, API and other stuff compares. I have already played around with Alfresco in the past. This should round out my ECM knowledge pretty well. Since most employers have multiple ECM's or repositories in their organization, it doesn't hurt my resume at all :-)

Sunday, March 16, 2008

Great Ideas : AirBed and Breakfast

I had a lot of fun attending barcampnyc3 yesterday. I didn't present after all. Based on what others were doing and the vibe I got I just didn't feel my presentation was of particular interest. Plus, I think I need to come out of my shell a little more. More on barcamp experience later.

As I review my notes I am amazed how many new social sites are out there. This has led me to some other great ideas. Look out.

Here's a great idea. It's called AirBed&Breakfast. It was launched on March 3 and was useful in providing beds for SXSW attendees. I was just talking to the wife about a similar concept last night. I like this concept! I wish I had thought of it first! Check it out. You can do 2 things here. First, you have to create a profile. Then, you can choose to offer up your couch (or airbed) and optionally provide some form of breakfast and maybe even a little welcome to town local information. Going out of town for a conference or something? You can do the same thing. I can see this working for other events. Hmmm. GenCon maybe? Be your own hostel I guess.

My profile

Saturday, March 15, 2008

Pownce stuff

Last night I got started on a Java API that will talk to the Pownce API 2.0. I haven't seen anyone else doing it yet. I'm sure someone else will try. Anyway, I'm thinking of using this to go into a plug-in for something else.

I've got some simple stuff done that queries your account and your friends. That was pretty easy. But, the authentication has a bug in it. Hopefully, Leah will get it fixed soon.

I'm heading off to barcamp here in about an hour. This should be fun.

Tuesday, March 11, 2008

Minicards have arrived!

I am ecstatic. I received my shipment of minicards in today.

Admittedly, I stole the idea from Andrew Hyde of StartupWeekend fame. But, hey that's OK. He and I are not competing with each other.

These "minicards" are cheap, only $20. Try some from moo.com. Be warned. They ship from London so that increases the price and time for shipment a bit. It took about 2 weeks for me to get mine.

You can see how nice the photo came out. The text on the back is easy to read but you wouldn't know it from my lousy camera. You can get a better idea of what text might look like idea from Andrew's post link above. Just click through to Flickr and hit All Sizes.

Sunday, February 17, 2008

Hola

And we have launch....