HOME | WEBCAM | CONTACT
 

Snickers Cheese Cake

February 16, 2010 by Dave Kane

Hardware
9″ Spring form pan.
Roasting or baking pan that is larger than the spring form.
Heavy duty aluminum foil.
- Time 6 hours, day 1… 30 minutes, day 2.

These directions are written for use with a food processor. Mixing times will vary for stand or hand mixers.

Oreo Crust
25 Oreo cookies (I scrape the filling out of them)
3 tablespoons of melted butter

Pre-heat oven to 350 degrees.

Put cookie pieces into food processor. During processing, add melted butter. Process until you have finely chopped pieces. Put chopped Oreo pieces into 9″ spring form pan and use a flat bottomed, drinking glass to press and pack into pan until bottom is evenly covered. Put pan into pre-heated oven and bake for 15 minutes. Remove from oven and allow to cool. Store in freezer while prepping first batch of cheese cake batter.

Chocolate Layer
24 ounces of cream cheese
3/4 cup of sugar
1 tablespoon of pure vanilla extract
3 eggs
6 ounces of semi-sweet or dark chocolate morsels (60-80% Cocoa)

NOTE: My food processor has a dough setting and blade which is used for this step. For my double boiler, I use a metal bowl over a pan of simmering water. All ingredients should be at room temperature.

Place cream cheese into processor and process for 1 minute or until smooth. Scrape work bowl. Add sugar and vanilla, process until sugar is incorporated, approximately 1 more minute. Add eggs one at a time allowing 15 seconds in between to be fully incorporated. You will probably want to scrape the work bowl after the first egg. Melt chocolate pieces using a double boiler. Add melted chocolate to batter and process for another minute to incorporate. Pour batter into spring form pan and return to freezer for 2 hours to set up.

Caramel Sauce (prepare while chocolate layer is freezing)
1 cup of sugar
6 tablespoons of unsalted butter
1/2 cup of heavy cream
1/2 cup of roasted, salted, chopped peanuts

WARNING: Melted sugar is very hot and any splatter will burn you. Also, this is not something to walk away from. The sugar burns very quickly once it gets to a boiling state.

Place sugar into a heavy pan over medium heat. Stir sugar as it is melting to keep from burning. Once sugar is completely melted stop stirring and let it come to a gentle boil (this is where it can go bad quickly). Once it begins to boil, add in butter and whisk to combine. The sauce will foam up when the butter is added, this is normal. Remove from heat once butter is melted and combined. Slowly whisk in cream, the sauce will again foam up. Allow sauce to cool to room temperature. Transfer to a glass bowl and refrigerate until chocolate layer is ready. Pour caramel sauce over chocolate layer starting in the center and working your way out. Leave about 1/2 inch on the edge. Add peanuts and return to freezer.

Peanut Butter Layer
24 ounces of cream cheese
3/4 cup of sugar
1 tablespoon of pure vanilla extract
3 eggs
4 ounces of creamy peanut butter

NOTE: My food processor has a dough setting and blade which is used for this step. All ingredients should be at room temperature.

Pre-heat oven to 325 degrees. Boil water (enough is needed to fill the roasting pan 3/4 the way up the spring form pan).

Place cream cheese into processor and process for 1 minute or until smooth. Scrape work bowl. Add sugar and vanilla, process until sugar is incorporated, approximately 1 more minute. Add eggs one at a time allowing 15 seconds in between to be fully incorporated. You will probably want to scrape the work bowl after the first egg. Add peanut butter and process for another minute to incorporate. Pour batter into spring form pan.

Wrap the spring form pan using the aluminum foil. We are baking this like a custard, using a water bath. Make sure there are no seems or holes in the foil. Place wrapped spring form in roasting pan. Set the roasting pan on the center oven rack. Add boiling water to roasting pan until the water level is 3/4 up the side of the spring form pan. Close oven and bake for 90 minutes.

Remove from oven and place on cooling rack for an hour to an hour and a half. Cover and put in refrigerator over night.

Chocolate Ganache (day 2)
6 ounces of semi-sweet or dark chocolate morsels (60-80% Cocoa)
2/3 cup of heavy cream
1/2 cup of roasted, salted, chopped peanuts

Put chocolate pieces in glass bowl. Put cream into a small sauce pan over medium heat. Heat cream until it comes to a slight boil. You need to stir the cream as it heats to keep a skin from forming. Pour the cream over the chocolate pieces and stir until chocolate is completely melted. Let cool for a couple of minutes. Pour ganache over cheese cake starting from center and working out. Spread to about 1/2 inch of edge. Add peanuts, cover and return to refrigerator to cool for at least one hour before serving.

Five ways to quickly create a PDF document

January 25, 2010 by Gishani Heaton

PDF has become the standard for securely sharing information and those in the legal industry know it well. There are several tools out there in the market, including Adobe Acrobat, that lets you convert documents into PDF, but they vary by price and feature set.  DocsCorps’ pdfDesktop won’t break the bank and gets the job done with ease. Here are five ways in which you can quickly create a PDF document using pdfDocs Desktop.

1.  Drag and drop any document(s) from a file folder into the pdfDocs Organizer window.

2.  Drag and drop document(s) onto the pdfDocs desktop icon.

3.  From Microsoft Word, select “Add-Ins >>Save as PDF”

4.   From your Document Management System, right click on a document and select PdfDocs Integration >Save As New Document. (You can save it as a new version instead as well.) The document will be saved as a PDF into your DMS.

5.   From Windows Explorer or file manager, right click and select print. (You will need to select pdfDocs as your printer.) This will send the document thru the pdfDocs converter and change the document to PDF format and display in the Organizer window.

Creating PDF documents has never been this fun or easy. Your co-workers will want to get in on the fun when they see your smile.

Converting PDF documents to Word is as easy as 1-2-3

by Gishani Heaton

PDF documents have long proven their usefulness in business processes and we’re all used to working with them. But what happens when you need to make an edit and you don’t have access to a source Word file? It usually requires chasing down source files, re-typing in Word, clumsy PDF editing or a combination of the above. However, there is a faster, more effective solution. The pdfDocs OCR tool allows you to convert your pdf documents or scanned articles to editable Word documents within minutes. Here’s how -

1.  Select the pdf document you wish to convert from the pdfDocs Organizer, and click the “Word” button on the menu bar. 

2.  Select the defaults when prompted with the “Publish to Word” dialog box and click “OK”. 

3.  The pdfDocs OCR tool will process the file and your Word document will open within Microsoft Word in minutes.

For a video that covers this topic in more detail click here

Think of the time you’ll save, the people you’ll impress and the fewer aspirins required. Now there will be time for more important things… like another cup of coffee.

Awesome scanner video

January 15, 2010 by Mike Mackey

I don’t know much about this device or make any endorsement or have any financial interest in it, but it looks extremely cool.  If you have ever been involved in scanning a bunch of file folders, you know what a pain it is.  This makes it look almost fun!

(Yeah, the music is pretty cheesy… just mute it.)

http://www.opex.com/ds1225m_video.php

iManage Records Manager Data Loader

December 30, 2009 by Dave Kane

The iManage Records Manager Data Loader is a tool that we use extensively in converting legacy records systems to iRM. There are some great features about the tool and some short comings we learn about with every conversion. The biggest issue with Data Loader is that it’s slow. You feed it an XML file to process and the application does a lot of validation before and during the processing of that file. It is very SQL intensive.

We are currently working with iRM 5.2, and I know in later versions they’ve increased the OS compatibility. With this version, we are limited to Windows Server 2003 (32-bit) and Microsoft SQL Server 2005. We are constrained by 4 Mb of RAM and a single threaded process. We’ve been able to increase performance by stripping down and dedicating one of our VM Host servers for the conversion, working with the data in-house and delivering a completed database back to the client.

Until Autonomy improves the tool, the only solution to increase performance is to throw bigger hardware at it. The faster the processors and the faster the disks you have on the server, the better you’ll do. We’ve been able to run two instances of the Data Loader on one server, and that helps. But, if you try and run three you run into that database locking issue and nothing really runs.

ADV 15th Anniversary

December 29, 2009 by Jerry Dolezal

It hardly seems possible, but as of this November ADV has been in business for fifteen very fast-paced years.  Time has flown so fast that it is easy to forget how much things have changed.  For instance, the news from November 1994 (from Wikipedia) included the following items. 

  • November 4 – San Francisco: The first conference devoted entirely to the subject of the commercial potential of the World Wide Web opens. Featured speakers include Marc Andreessen of Netscape, Mark Graham of Pandora Systems, and Ken McCarthy of E-Media.
  • November 5 – A letter by former U.S. President Ronald Reagan, announcing that he has Alzheimer’s disease, is released.
  • November 5 – George Foreman wins the WBA and IBF World Heavyweight Championships by KO’ing Michael Moorer, becoming the oldest heavyweight champion in history.
  • November 5 – Johan Heyns, an influential Afrikaner theologian and critic of apartheid, is assassinated.
  • November 7 – WXYC, the student radio station of the University Of North Carolina At Chapel Hill, provides the world’s first internet radio broadcast.
  • November 8 – Georgia Representative Newt Gingrich leads the United States Republican Party in taking control of both the House of Representatives and the Senate in midterm congressional elections, the first time in 40 years the Republicans secure control of both houses of Congress. George W. Bush is elected Governor of Texas.
  • November 13 – Voters in Sweden decide to join the European Union in a referendum.
  • November 13 – The first passengers travel through the Channel Tunnel.
  • November 13 – Michael Schumacher wins his first Formula One World Championship.
  • November 16 – A Federal judge issues a temporary restraining order, prohibiting the State of California from implementing Proposition 187, that would have denied most public services to illegal aliens.
  • November 20 – The Angolan government and UNITA rebels sign the Lusaka Protocol.
  • November 28 – Voters in Norway decide not to join the European Union in a referendum.

This look back at the news shows just how dramatically the world has changed.  But because we are living it day to day, change seems to evolve slowly.   While skills and technology at ADV have evolved as well, the the one surviving constant is a focus on you, our client partners.  Your issues, your challenges and your opportunities have kept us  young, engaged and up-to-date.  So, this anniversary is a celebration for us but also a chance to thank our customers – both old friends and new acquaintences – for helping us survive and grow.  Thanks from all of us at ADV!

eDocs 5.2.1 CU3 Performance Issue

December 18, 2009 by Dave Kane

After upgrading a couple of clients to the latest version of eDocs 5.2.1 CU3, we had some performance issues reported when trying to profile a new document or update the profile of an existing document. It would take 10-20 seconds to be able to tab from validation field to validation field. The CPU usage for the DM.exe process would spike and the amount of memory would also jump with each press of the tab key. The workstation would appear to lock up for that time.

 There appears to be an issue in the new Save User Interface. Open Text is working on a hotfix for the issue and I’ve gotten an advance release I’m testing with two of our clients. The hotfix appears to have resolved the issue and we are currently waiting for OT to make the official release.

Meet Me In St. Louis!

by Jerry Dolezal

(originally written: 9/1/09)

I pulled rank and assigned myself the fun duty of exhibiting at this year’s Region 3 ALA (Association of Legal Administrators) show in St. Louis!!

There are over 10,000 worldwide members of this organization, including professionals from law firms, corporate legal departments and government legal agencies. Region 3 encompasses IL, IN, IA, KS, MI, MN, MS, ND, OH, SD, WV WI, and NB. 

In case any of you haven’t heard, the show starts on Thursday October 8th and wraps up at the end of day on Friday the 10th.  It will be held at the Chase Park Plaza Hotel in St. Louis.  If you’re going to, please stop by and say Hi!

 We’ve been a strong supporter of the Minnesota Group, MLAA, for quite a number of years now.  A core mission for MLAA is education, and I’ve certainly learned a lot through my association with this energetic group!   The importance of MLAA as a support network for the legal administrator cannot be stressed enough. The various active committees working within the organization offer resources and guidance not otherwise available to the legal administrator at the local level. The monthly meetings offer the opportunity to exchange information among the legal administrators and to hear a speaker present a topic, which assists all of us in maintaining our professionalism. Each member has experiences and attributes that are available for the asking.  You can find out more about the Minnesota group at:  http://www.mlaa-ala.org/  or the worldwide group at: http://www.alanet.org/default.aspx

Moving to New Orleans

by Bryce Ostenson

(originally written 9/23/09)

I realized today that it’s been just over 3 months since I began the transition from Minneapolis to New Orleans, that it’s went incredibly quickly, and that both ADV and I have been adapting well.  For this installment, I’m just going to reflect a little bit on some of the expected and unexpected things:

  1. As expected, the technology works really well.In the past, I’ve done plenty of occasional remote access for a day at home here or there, and of course, a lot of remote access to client systems.  But I’m still amazed by the overall performance of our DMS across a VPN, web applications, occasional remote desktop / VNC back to the office, and so forth.  But most surprising was when I just plugged in a VOIP phone to my router, tied to the same number as in Minneapolis, and it just plain worked.  Great stuff.  My product plug of the day : OpenVPN.  Specifically, OpenVPN Access Server (http://www.openvpn.net/).  It’s OpenVPN but manageable and inexpensive.  We’ve been using it for years and more than once, we’ve had new and old employees comment on how well our VPN works.One of these days, we’ll get the video conferencing online.  I’m looking forward to that!
  2. As expected, our culture was stressed by the move.ADV works a lot as a team and, while we’ve encouraged people to take advantage of remote access, we’ve had a really strong culture of collaboration at the office.  My move to New Orleans obviously creates some stresses on that culture.  My first direct experience with that was when everyone assumed our company meeting, which I usually lead, was cancelled because I was in not in Minneapolis!  On those first 2 return trips, I also found that I spent a lot of my time in Minneapolis catching up on meetings.  I suspect people were holding things for meetings when I returned.  That was a surprise but probably shouldn’t have been one.  On the last trip, I didn’t notice it as much.  It seems to be returning to business as usual now though.  Given that it’s only been 3 months and I’m just now up to 75% in New Orleans, I suspect I’ll still see a few unexpected changes.  I’m curious how adding our first employee since my move will go.Supporting a remote employee required a culture shift for us.  It’s hard enough to bring someone new into the company culture, better not to compound it by also working through the company’s cultural change in support a of a remote worker at the same time.  I think it’s been good that someone already inside ADV has been through this first.
  3. Unexpectedly, I think I’m more productive working at home.I worried that working at home would be full of distractions but so far, no.  Overall, I probably spend less time chatting and work more hours on a whole.  Oddly, when I first started, I listened to Pandora, MPR, or mp3’s a lot.  I find myself doing that less and being more comfortable with the silence.  I’m better able to focus on the work at hand and with fewer distractions.  Admission: I wouldn’t be surprised to hear that I was the biggest distraction in the office.
  4. Unexpectedly, I’m more interested in communicating.More often than I’d like to admit, I feel rather overwhelmed by my todo list.  Of course, once I actually got going on it and saw some progress, it always looked a lot more manageable.  But getting started can sometimes be daunting.  So, back at the office, I’d find myself almost dreading the phone ringing and the likelihood that it meant more work or work requiring an immediate action.  With more and larger blocks of time to be productive, the todo list is starting to seem more manageable and in turn, I’m not dreading the phone call.  Or maybe I’m just a bit lonely.  ;)

All in all, it’s off to a nice start.  One of these days, I’ll post a few things about the move south (but not to the South since New Orleans is truly its own thing) but for now, I’ll say that the single thing that’s really made this work is the wonderful people we’ve met down here.

Software That Fails Reliably

by Bryce Ostenson

Let’s face it, software fails.  Failing can mean many things but most often it means that it’s unavailable completely or in part.  That’s not the sort of failure I’m discussing here.  At ADV, we often develop processes that move data around and typically that data is of very high value (medical records, corporate records pertaining to complex legal affair, long-term historical information).  Sometimes those processes are one-off conversions and sometimes they’re ongoing processes but regardless, we start with the assumption that the software will experience a failure.  If we’ve done our job well, that failure won’t be our failure but the result of an external factor such as a database server going offline for maintenance while we’re relying on it, a network connection failing, a power loss, or something similar.  My favorite example involved a wireless network link between two buildings (predating wifi) that was scrambling packets and, somehow, the whole stack of networking and operating system software and hardware that our application relied on to be reliable was not reporting the failure to our application.  I’m oh-so-glad the client’s networking staff discovered that and didn’t blame our software.

 Of course, we aren’t perfect either and our software has errors as well.  Such is the nature of developing software, particularly under tight budget constraints.  Thankfully, as important as some of our software is, we aren’t developing air traffic control software.  I’d love to spend time studying how they guarantee reliability but I’m not sure whether I’d like writing that software!

 Before continuing, let me clarify that while stability of software is very important, reliability is often more important.  For my purposes from here on, my assumption is that reliability does not include stability.  It’s very important that even very stable software fails and recovers reliably

 My first job involved working with financial aid applications and need analysis for private, largely parochial, high schools.  The databases at the time were flat files (DBF actually) where each file represented a single table of data.  Complicating matters was that an update might require updates to two tables.  If one table was updated but the other wasn’t, the data was inconsistent.  Today, this is easily avoided with SQL and a transaction but the environment I was working in didn’t allow for a transaction across multiple targets, even though the business requirements did.  The basic approach to solving the problem was to create a persistent (on disk) list of the steps that would be required to undo the transaction if it failed while it was in progress.  If, for example, the power went out, the application would initially look for this list and perform the recorded steps such that the system could be returned to a consistent status.  This might seem pretty arcane but it’s still relevant today, even while some systems provide very strong transactional reliability.  More on that in a moment…

What I’ve been surprised by is the number of developers I’ve worked with or whose work I’ve reviewed that have just never considered what happens when the unexpected does.  I think this is in part because systems do run so well in general or that the service that’s being provided can simply be retried by the user with no harm.  When you’re updating and moving critical data though, you just can’t assume that because it worked once or even 1 million times, that it won’t fail, or that reliable supporting systems will always be reliable.  Having just completed a small project requiring reliable failure, I thought I’d document a few of the techniques we use when software must fail reliably:

 Use reliable underlying technologies that do a good job of reporting errors. 

But, when it’s really important, don’t assume they do.  You can typically sacrifice some performance by building in a verification step after updating the data.  In my earlier example application with the failing wireless radio link, I added a step to reread the destination file to make sure that the file copy was truly successful.  Yes, the application was slower, but speed wasn’t a priority for it.

Check the errors from your underlying support systems.

I’m amazed how many tools go out the door that don’t check error codes or have generalized error handlers.  Sometimes you can cheat and just check the final result of a later operation but this is rarely safe in the long-run, particularly as the application evolves.  In may seem like overkill and bloat to check and handle errors but it is a necessity if the tool is doing anything non-trivial.

Compartmentalize the updating of data to as small a procedure as possible.

This may sound obvious but often the decision logic of what to update or how to update it becomes intertwined with the programming to perform the update.  If you separate the decision logic of what to update from the act of updating, your code to perform the update will typically be much more compact.  This has all sorts of side benefits: reusability, clarity, etc.

Define your transaction and rollback steps.

A transaction is a series of steps that must succeed or fail as a unit.  If your underlying subsystem can’t handle all aspects of your transaction (e.g. update a database table on server A, update a system via a web service, and write a change directly to a file), you will need to do so yourself.  Once you’ve defined the steps your transaction will need, ask yourself what will happen if the system fails (remember the power outage problem) on any single line of code until the transaction is complete.  Document what steps are required to roll the transaction back to the beginning (an undo) or what information is required to roll the transaction forward, completing it and then create a structure to store these steps.

I personally find it easiest if the rollback steps are very, very specific and don’t require the rollback code to include decision logic (E.g. action: Delete file, Parameter: file path).

Remember that the rollback infrastructure may itself be unstable.

Whether you’re writing your rollback instruction to a database table, a file, or somewhere else persistent, remember that these too can all fail.  This creates a complex question of whether you write the rollback instruction before executing the action or after and how to handle a failed write to the rollback list.  I don’t have a single approach to this as it’s usually been obvious to me in the given situation but if you study the field, I’m sure there are best practice design patterns.

Read the rollback file on application startup.

When the application starts up, I have it read the rollback file right after it verifies it meets all other basic requirements (E.g. database connections established, access to business system API’s confirmed, etc).  If there are rollback operations, they are executed to return the system to a clean state.  If it cannot be accomplished, the system shuts down again with an obvious message indicating that the system is inconsistent and likely requires manual intervention. 

I never provide an option to force the tool to run while the data is inconsistent.  Too many system administrators will try this and make recovery dramatically more difficult.

Test!

If you can interactively run the program, kill the application on each line of code within the update logic and test how the system recovers.  If you can’t run interactively, build in some debugging code where you can trigger an application exit after each line of code.  This could be a command line parameter that tells it where to immediately exit.  Repeat. 

It’s also helpful to have someone else review and test the code if at all possible.

Finally, randomly test failure.  I’ve randomly unplugged network cables, killed processes, stopped underlying systems, deleted and changed data out of sequence while the process was running, and created all manner of data issues.  Throw everything you can at making your application fail.  This doesn’t remove the need for the deliberate approach of testing but often uncovers errors in your testing.

Once you’ve done this time consuming task, consider this code locked down.  Any change to the updates code requires another time consuming and rigorous round of testing.

Log

Create a debug log for your application.  There are many high performance logging tools and the performance impact of leaving logging on is often much less than what you might expect (don’t forget to consider the privacy and security considerations of what you log though).  If you can, leave debug logging on even while the application is in production.  If there is a failure, this often provides the best clues for recovery.

If you’re using .Net, I’ll put out a recommendation for nLog: http://www.nlog-project.org/.  When I started working with .Net, I started using nLog.  I’ve been meaning to investigate whether new .Net versions have a better logger that I should evaluate.  In the meantime, nLog is fast, reliable, and extremely flexible right out of the box.  And has friendly licensing.

No one should really be writing their own logger anymore.  There are just so many high performance, flexible logging tools out there.

Backup

This should go without saying…  But in the event that something really bad happens, a backup, a log file, and any other inputs to the system that might be necessary for a redo of the updates can take you a long, long way.

If you’re dealing with life and death (or my bank account, etc), study this a lot more closely!

Whether you’re designing pacemakers, air traffic control, or banking software, I hope you take what I’ve written with a grain of salt and study the design of reliable software a lot more closely.  A quick web search will reveal a wealth of additional academic and practical research that’s well beyond my rambling blog.

« Newer Posts
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
 


microsoft windows 8 32 and 64 bit ms windows 8 purchase microsoft office 2010 ms windows 8 purchase adobe oem software buy cs5 adobe and microsoft oem software adobe and microsoft oem software adobe oem software buy cs5 microsoft windows 8 32 and 64 bit microsoft windows 8 32 and 64 bit adobe oem software buy cs5 ms windows 8 purchase ms windows 8 purchase adobe oem software buy cs5 adobe and microsoft oem software adobe oem software buy cs5 ms windows 8 purchase microsoft windows 8 32 and 64 bit microsoft office 2010