TexasSwede
texasswede@gmail.com
  • About this blog
  • My Website
  • My Resume
  • XML Export Tool
  • Photos

Another Pioneer Lost: Dennis Ritchie 1941-2011

Posted on October 13, 2011 by Karl-Henry Martinsson Posted in Old Blog Post Leave a comment

This morning I woke up to the news that Dennis Ritchie died a couple of days ago. Some of my readers may not know who he was, he was never a showman like Steve Jobs, or took part in product launches. None the less, he was one of the big names and early pioneers in IT.

Ritchie was best known as the creator of the C programming language and a key developer of the Unix operating system, and as co-author of the definitive book on C, The C Programming Language, commonly referred to as K&R (in reference to the authors Kernighan and Ritchie).

Ritchie's invention of C and his role in the development of UNIX alongside Ken Thompson has placed him as an important pioneer of modern computing. The C language is still widely used today in application and operating system development, and its influence is seen in most modern programming languages. UNIX has also been influential, establishing concepts and principles that are now precepts of computing.

Source: Wikipedia

I remember when I started learning C, back in 1989. I had already been exposed to first Basic and then Pascal earlier, and until I understand the beauty of C, the whole thing with pointers confused me to no end. But eventually I got pretty decent at writing C code. I also started using Unix (HP-UX) about the same time. A couple of years later, I wrote a couple of small Windows program, again using C. Back in the early days of Windows, C was the only language you could use to write Windows applications.

It is amazing that a person who created some of the most widely used products is not more well known. Dennis Ritchie is at least as important in the history of computing as Steve Jobs. C and Unix may not be as sexy as iPhones, iPods and Macintosh computers, but they are probably more important if you look at the big picture. Apples OS X is based on Unix, and developers use Objective C to create programs and apps for OS X and iOS. Without Dennis Ritchie, the world would probably look very different.

 

Dennis Richie 1941-2011

 Dennis Ritchie
1941 – 2011

 

Samsung Nexus Prime – Verizon exclusive?

Posted on October 6, 2011 by Karl-Henry Martinsson Posted in Old Blog Post Leave a comment

Additional details about the upcoming release from Samsung of the Nexus prime, the first phone with Android 4.0 (Ice Cream Sandwich) have been published on some websites.

The new phone, which is expected be be unveiled next week, has a 4.65" display with 1280×720 resolution, a 5MP camera, 1 GB of system RAM and 32 GB of built-in user memory. The dual-core processor is running 1.2 GHz or 1.5 GHz (according to what source one listen to). Reports claims that it is an LTE (Long Term Evolution) phone, and that it will be available only through Verizon, at least initially.

The Nexus Prime will probably be called Droid Prime when it is sold by Verizon. AT&T is also working on it's LTE network, but the two carriers use different frquencies, so they are not compatible with each other. The question is how the Nexus Prime will work overseas, where LTE networks are also being built right now, using different frequencies. Some reports say that Nexus Prime will support HSPA or HSPA+, but what about GSM/3G support, for fallback internationally? And will there be quad-band GSM support? Hopefully those questions will be answered next week.

Samsung Nexus Prime

 

 

Steve Jobs – Gone but not Forgotten

Posted on October 6, 2011 by Karl-Henry Martinsson Posted in Old Blog Post Leave a comment

I have never owned a Macintosh, iPod, iPhone or iPad. I have however used different products from Apple over the years. I have even used the NeXT.

Back in 1983 (if I remember correctly), I spent a week in a German school (my mom had this idea about sending me to Germany to stay with relatives or friends for a few weeks every summer to improve my German), and in their computer room they had Apple IIe that I got to play around with a little. I was programming on a similar computer (the Swedish ABC 80) at my school, and I found them fairly similar. About the same time, I started hearing about Apple Lisa, and a year or so later I saw my first Macintosh at a computer trade show in Stockholm.

But it was not until a few years later (I think in 1987) I got to actually use a Macintosh. My godmother's husband owned a printing business, and he — like so many others in the graphics industry — used Macintosh. As I "knew computers", I was called in to figure out a few things and teach him. I think it had to do with sending files through a modem or something, on his Macintosh II. At this time I was using another Swedish computer at school, the CP/M-86 based Compis, and the graphics environment on the Macintosh was very impressive.

Then in 1988 I started working at Microsoft, and I was assigned a Macintosh SE (in addition to an IBM PS/2 Model 60). Now I got to use it a bit more extensive, but when I started looking at buying my own computer a year later, the higher price and fewer choices when it came to software made me choose the DOS/Windows platform.

In 1992 I got to play with a NeXT at the place I worked, and it was way cool. I was not able to spend much time on it, but I could see that this was a totally different version of Unix compared with the mostly text-based systems I had used before. As we all know, NeXT was purchased by Apple and became the foundation of OS X.

In 1993 I started my career as a journalist and technical writer. All the desk editors used Macintosh (and Quark Xpress), and a few times I got to actually edit my own articles on them. Once, I believe some time in 1995 or 1996 I even filled in as a desk editor for a day, creating a page or two. This was the last time I actually used a Macintosh.

I have since played with iPhones (my son got one, while I am still on Blackberry), iPad and iPod. All great products, easyto use and powerful. But for me, as a technical person, I am willing to give up some usability and ease of use for a more open and flexible environment. That is why I have a Cowon A2 as my MP3 player. When I got it, it was technically superior to anything Apple had, with a 4 inch widescreen display, built-in speakers and microphone and video in and out. It also supports AVI, Divx/Xvid, Flac and many other formats that iPod did not support without converting. I could also copy files to it directly by connecting it through USB, without having to use a special program like iTunes. But it is bigger, bulkier and heavier than an iPad. The user interface is not nearly as developed. It simply lack the sexiness everyone associate with Apple products.

Steve Jobs was a visionary. Using the words of the Swedish criminal writer Leif GW Persson: "He could see around corners." Steve Jobs could see the future, and managed to deliver products that shaped the future. New products are measured againts the Apple products, and even if they technically may be better, they fall short in sales. This is not just due to the marketing, but also because the Apple products are such household names. Today many people say "iPod" instead of the more generic "MP3 player", and "iPad" is on the way to head that way as well.

The software industry has lost one of it's pioneers and biggest leaders. Steve Jobs family has lost a husband and father, and Apple has lost a visionary.

image

 

Create and update Calendar reminders from Notes document

Posted on August 31, 2011 by Karl-Henry Martinsson Posted in Old Blog Post Leave a comment

At work I was asked yesterday if I could give the users a button to set reminders for meetings/actions directly from a document in one of our Notes applications. So I created a simple solution where I added two action buttons and a field to the form from which the calendar entry (reminder) would be created.

I wanted to share this code. It is nothing complicated, and the main functionality consists of some code Palmi Lord posted in LDD last year.

The new field on the form is called 'CalendarUNID' and will contain the Universal ID of the calendar entry. If the field is blank, I will display the 'Add to Calendar' button, if it contains a value I will display the button 'Update Calendar Entry' instead. This field is also used by the update function to get to the original calendar entry. Note that the reminder is created in the current user's calendar, and can only be successfully updated by the same user.
The date field used is named 'InspedtionDate', and I set the time to 8am. In the reminder I am also putting the address of the insured (the application is used by an insurance company) in the location field, and the insured/account name and policy number in the subject field.

 

'Add to Calendar' button

Hide-when formula:

CalendarUNID!="" | InspectionDate=""

Lotusscript Code:

Sub Click(Source As Button)   Dim ws As New NotesUIWorkspace   Dim uidoc As NotesUIDocument   Dim calentry As NotesDocument   Dim appdate As NotesDateTime   Dim location As String   Dim subject As String   Dim calunid As String    Set uidoc = ws.CurrentDocument   Set appdate = New NotesDateTime(uidoc.FieldGetText("InspectionDate") _ & " 08:00:00 AM")   ' Get physical location of insured   location = uidoc.FieldGetText("LocAddress") & ", "   location = location & uidoc.FieldGetText("LocCity") & ", "   location = location & uidoc.FieldGetText("LocState") & " " _ & uidoc.FieldGetText("LocZIP")   ' Build subject line for reminder   subject = "Inspection Due ("   subject = subject & uidoc.FieldGetText("AccountName") & " - "   subject = subject & uidoc.FieldGetText("PolicyNumber") & ")"   calunid = createReminder( appdate, location, subject)   Call uidoc.FieldSetText("CalendarUNID", calunid)   Call uidoc.Save()   Call uidoc.RefreshEnd SubFunction createReminder( dateTime As notesDateTime, _ location As String, subjectStr As String ) As String   Dim sess As New NotesSession   Dim userMailDb As New NotesDatabase( "", "" )   Call userMailDb.OpenMail   Dim reminderDoc As New NotesDocument( userMailDb )   Dim DTItem As NotesItem     With reminderDoc      .Form = "Appointment"      .ReplaceItemValue "$Alarm", 1      .ReplaceItemValue "$AlarmDescription", subjectStr      .ReplaceItemValue "$AlarmMemoOptions", ""      .ReplaceItemValue "$AlarmOffset", 0      .ReplaceItemValue "$AlarmUnit", "M"      .Subject = subjectStr      .Alarms = "1"      .CalendarDateTime = dateTime.lsLocalTime      .StartDate = dateTime.lsLocaltime      .StartTime = dateTime.lsLocaltime      .StartDateTime = dateTime.lsLocaltime        .EndDate = dateTime.lsLocaltime      .EndTime = dateTime.lsLocaltime      .EndDateTime = dateTime.lsLocaltime        .AppointmentType = "4"       .Location = location      .Category = "Service Plan Activity"      .Save True, False       .ComputeWithForm True, False      .Save True, False      .PutInFolder( "$Alarms" )   End With   createReminder = reminderDoc.UniversalIDEnd Function

'Update Calendar Entry' button:

Hide-when formula: CalendarUNID=""

Lotusscript Code:

Sub Click(Source As Button)   Dim ws As New NotesUIWorkspace   Dim uidoc As NotesUIDocument   Dim session As New NotesSession   Dim calentry As NotesDocument   Dim appdate As NotesDateTime   Dim location As String   Dim subject As String   Dim calunid As String   Set uidoc = ws.CurrentDocument   Set appdate = New NotesDateTime(uidoc.FieldGetText("InspectionDate") _ & " 08:00:00 AM")   ' Get physical location of insured   location = uidoc.FieldGetText("LocAddress") & ", "   location = location & uidoc.FieldGetText("LocCity") & ", "   location = location & uidoc.FieldGetText("LocState") & " " _ & uidoc.FieldGetText("LocZIP")   ' Build subject line for reminder   subject = "Inspection Due ("   subject = subject & uidoc.FieldGetText("AccountName") & " - "   subject = subject & uidoc.FieldGetText("PolicyNumber") & ")"   calunid = uidoc.FieldGetText("CalendarUNID")   Call updateReminder(calunid, appdate, location, subject)   Call uidoc.Save()   Call uidoc.RefreshEnd SubSub updateReminder(unid As String, dateTime As notesDateTime, _ location As String, subjectStr As String )   Dim sess As New NotesSession   Dim userMailDb As New NotesDatabase( "", "" )   Call userMailDb.OpenMail   Dim reminderDoc As NotesDocument   Dim DTItem As NotesItem    Set reminderDoc = userMailDB.GetDocumentByUNID(unid)   If reminderDoc Is Nothing Then      Msgbox "Failed to locate calendar entry."       Exit Sub    End If   With reminderDoc       .ReplaceItemValue "$AlarmDescription", subjectStr     &n
bsp;.Subject = subjectStr      .CalendarDateTime = dateTime.lsLocalTime      .StartDate = dateTime.lsLocaltime       .StartTime = dateTime.lsLocaltime      .StartDateTime = dateTime.lsLocaltime         .EndDate = dateTime.lsLocaltime      .EndTime = dateTime.lsLocaltime      .EndDateTime = dateTime.lsLocaltime        .Location = location      .Save True, False      .ComputeWithForm True, False      .Save True, False   End WithEnd Sub

 

 

 

Dynamic tables in classic Notes

Posted on August 31, 2011 by Karl-Henry Martinsson Posted in Lotusscript, Notes/Domino, Old Blog Post, Programming 7 Comments

Using Xpages, you can do many neat things in Notes. But I am still doing all my development in classic Notes, despite being on Notes/Domino 8.5.2. The reason is simple. Memory. There is just not enough memory to run the standard client in our Citrix environment, so all users are using the basic client. And Xpages is not working in the basic client.

So how do I solve issues like multiple documents tied to a main document, being displayed inline in the main document? Well, I solved this a long time ago by using a rich text field and building the document list on the fly. I am sure many other Notes developers use this technique. I know it was discussed in a session at Lotusphere several years ago, perhaps as long ago as 7-8 years ago. So this is of course not anything I came up with myself.

In this post I just want to share how I am using this, and perhaps this can help someone.

The database (download it here) is very simple. It contains three (3) forms and two (2) views. In addition I have some icon as image resources, but that is just to make things pretty.

 

Forms

The ‘MainDoc’ form is the main document, being displayed in the view ‘By Last Change’. It contains a few fields:
‘Title’ – a text field where the user can enter a title/description
‘Data’ – a rich text field where the rendered table rows will be displayed
‘ParentUNID’ – a hidden computed-when-composed field where the UniversalID of the document is stored
‘EntryCount’ – a hidden text field used to count the number of entries (to display in the views)
‘LastEntry’ and ‘LastEntryDate’ – Hidden text fields to keep track of the last person who edded an entry
The form also contains some regular action buttons (‘Save’, ‘Edit’, ‘Close’), as well as ‘Add entry…’, an action button with two lines of Formula language:
@Command([FileSave]);
@Command([Compose];”Entry”)

image

The QueryOpen event, which executes before the form is opened in the front-end and displayed to the user, contains some Lotusscript code. This event let us modify the document in the backend, which is where rich text fields can be updated. The code – which I will post at the end of this article – is very simple, it is just over 50 lines of code.

 

The ‘Entry’ form is where the entries are created. It is set to let fields inherit values from the document it is created from, and contains a couple of fields, some action buttons and some Lotusscript code as follows:
‘ParentUNID’ – editable, default value is “ParentUNID”, to inherit the value from MainDoc
‘Created’ and ‘Creator’ – computed-when-composed to store date/time and user name of creator
‘ItemDate’, ‘Issue’ and ‘Action’ – user data fields.

The ‘Entry’ form contains the following Lotusscript code:

(Declarations)
Dim callinguidoc As NotesUIDocument
Dim callingdoc As NotesDocument

Sub Initialize
   Dim ws As New NotesUIWorkspace
   Set callinguidoc = ws.CurrentDocument
   If Not callinguidoc Is Nothing Then
      Set callingdoc = callinguidoc.Document
   End If
End Sub

Sub Terminate
   Dim ws As New NotesUIWorkspace
   If Not callingdoc Is Nothing Then
      Call ws.EditDocument(False,callingdoc)
   End If
   If Not callinguidoc Is Nothing Then
      Call callinguidoc.Close(True)
   End If
End Sub

The code simply store the calling document (MainDoc) in a global variable when being opened/created, and then force a save and reopen of it when closing. This will trigger the QueryOpen event in the MainDoc document to rebuild the rich text content.

The action button ‘Delete’ contains some code to flag the current document for later deletion. I normally do not allow users to delete document in production databases, instead I use a field to indicate that the document should be ignored in views and lookups. Later I run a scheduled agent to actually delete the flagged documents.

Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim session As New NotesSession
   Dim doc As NotesDocument
   Dim unid As String
   Dim result As Integer

   result = Msgbox("Are you sure you want to delete this document?",_ 
   4+32,"Delete Document")
   If result = 7 Then
      Exit Sub
   End If
   Set uidoc = ws.CurrentDocument
   unid = uidoc.Document.UniversalID
   Call uidoc.Close(True)
   Set doc = session.CurrentDatabase.GetDocumentByUNID(unid)
   doc.flagDelete = "Yes"
   Call doc.Save(True, False)
End Sub

The final and last form is a repeat of the Entry form, but formatted the way you want each entry/row to be displayed in the rich text field. I call the form ‘RecTemplate’:

image

 

Views

In addition to the forms, there are two views. ‘By Last Change’ is just a normal view to display the documents based on the ‘MainDoc’ form. The other one is the one used by the code. It is a hidden view called ‘(LookupEntry)’. The first column is sorted (to allow lookups using col.GetAllDocumentsByKey() and contains the ParentUNID field. I have the column categorized as well, but that is really not needed. I also added two additional columns to make it easier for you as developer to look at the content. The view selection is as follows:
SELECT Form=”Entry” & flag_Remove=””

 

Lotusscript for QueryOpen on ‘MainDoc’ form

Finally the code that makes it all happen. The code simply perform a lookup in the view (LookupEntry) to get all entries associated with the current document and updates a few fields (mainly for view display purposes). The code then loop through the entries and for each entry creates a template document and render it into the rich text field. That is basically it.

Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, _
    Continue As Variant)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim col As NotesViewEntryCollection
    Dim entry As NotesViewEntry
    Dim entrydoc As NotesDocument
    Dim thisdoc As NotesDocument
    Dim datafield As NotesRichTextItem
    Dim templatedata As NotesRichTextItem
    Dim entrydata As NotesRichTextItem
    Dim doclink As NotesRichTextItem
    Dim template As NotesDocument
    Dim parentunid As String

    If source.IsNewDoc Then
        Exit Sub  ' Exit if new document, we do not have a ParentUNID or entries yet
    End If
    Set thisdoc = source.Document
    Set datafield = New NotesRichTextItem(thisdoc,"Data")
    parentunid = thisdoc.GetItemValue("ParentUNID")(0)
    Set db = session.CurrentDatabase
    Set view = db.GetView("(LookupEntry)")
    Set col = view.GetAllEntriesByKey(parentunid,True)
    Call thisdoc.ReplaceItemvalue("EntryCount",Cstr(col.Count))
    Set entry = col.GetFirstEntry
    If Not entry Is Nothing Then
       Call thisdoc.ReplaceItemvalue("LastEntryBy", _
       entry.Document.GetItemValue("Creator")(0))
       Call thisdoc.ReplaceItemvalue("LastEntryDate", _
       Format$(Cdat(entry.Document.GetItemValue("ItemDate")(0)),"mm/dd/yyyy"))
       Call thisdoc.Save(True,True)
   Else
       Call thisdoc.ReplaceItemvalue("LastEntryBy","")
       Call thisdoc.ReplaceItemvalue("LastEntryDate","")
       Call thisdoc.Save(True,True)
   End If 
   Do While Not entry Is Nothing
       Set entrydoc = entry.Document
       Set template = New NotesDocument(db)
       Call template.ReplaceItemValue("Form","RowTemplate")
       Call template.ReplaceItemValue("ItemDate", _
       Format$(Cdat(entrydoc.GetItemValue("ItemDate")(0)),"mm/dd/yyyy"))
       Call template.ReplaceItemValue("Creator", _
       entrydoc.GetItemValue("Creator")(0))
       Call template.ReplaceItemValue("Issue", _
       entrydoc.GetItemValue("Issue")(0))
       ' *** Copy Rich text Field "Issue"
       Set entrydata = entrydoc.GetFirstItem("Issue")
       Set templatedata = New NotesRichTextItem(template,"Issue")
       Call templatedata.AppendRTItem(entrydata)
       ' *** Copy Rich text Field "Action"
       Set entrydata = entrydoc.GetFirstItem("Action")
       Set templatedata = New NotesRichTextItem(template,"Action")
       Call templatedata.AppendRTItem(entrydata)
       ' *** Add doclink to entry
       Set doclink = New NotesRichTextItem(template,"DocLink")
       Call doclink.AppendDocLink(entrydoc,"Open Entry")
       Call template.ComputeWithForm(True,False)
       ' *** Refresh form
       Call template.RenderToRTItem(datafield)
       Set entry = col.GetNextEntry(entry)
   Loop
   Call thisdoc.ComputeWithForm(True,False)
End Sub

And this is what it looks like after adding three entries:

image

It is of course easy to change the sort order, field to use for sorting, etc.

 

Update: 2011-08-17 – Fixed download link.

 

Lotusscript frustrations…

Posted on August 24, 2011 by Karl-Henry Martinsson Posted in Old Blog Post Leave a comment

This morning I ran into a problem that frustrated me to no end, until I finally figured it out. The answer was of course in the online help…

I had a class that processed people associated with a file. Each person is assigned (in creation order) a number, starting with 1. The class load the person documents when the class is initiated, and store the info in an array.

What happend is that I got the "Subscript out of range" error on a particular file. What I found was that it had 10 person documents, numbered 2 through 11. This is of course 10 persons, so the array was dimmed as 1 to 10. When I hit the 10th person, it had the number 11 and my code blew up when I tried to put the info into the 11th (non-existing) array element.

OK, this should be easy to fix. Just check the person number field and if the value is larger that the size of the array, redim the array using Redim Preserve. Nope, this line now gave me the same error, just in a different location, on the line where I do Redim Preserve person(1 to personcount) as NotesDocument.

The solution was easy. You can not change the lower bound of the array, so the correct code would be Redim Preserve person(personcount) as NotesDocument instead. Then it worked.

Just a small tip I wanted to share.

 

 

Vacation Memories: Royal Castle in Stockholm

Posted on August 2, 2011 by Karl-Henry Martinsson Posted in Old Blog Post Leave a comment

During my vacation I took a tour of the Royal Castle in Stockholm. Despite living in the Stockholm area for 28 years, and then going back top visit pretty much every year, I had still never taken a tour of the actual castle. This year I remedied this, and while I walked through the rooms I took some pictures. I am posting some of them below.

Due to the dark interior, and in some cases the bright sunshine outside, I used High Dynamic Range (HDR) to bring out details and contrast. Enjoy!

DSC_0312_HDR copy

DSC_0304

DSC_0305

DSC_0307

DSC_0385_HDR

DSC_0388_HDR copy

DSC_0286

DSC_0403_HDR

Vaktparad

 

Vacation Memories: Denmark

Posted on July 31, 2011 by Karl-Henry Martinsson Posted in Old Blog Post Leave a comment

I have been on vacation in my native home country Sweden, but now I am back in the USA and Texas, after two and a half weeks of meeting family and friends, eating some great food as well as experiencing and seeing a number of new things.

Karl-HeinzOne of the most emotional things on this trip was one of those new experiences. As I written about before, I am named after my uncle Karl-Heinz, who was killed in the last days of WWII. He is buried in Copenhagen, as he died while being treated for his wounds at a German military hospital there. I have never visited his grave, so when we decided to take a tour of Sk? to view places like Ale´s Stones, Kivik and then take the ?esunds Bridge over to Denmark, I wanted to take the opportunity to visit my namesake.

Karl-Heinz Groeling was born on December 20, 1919, soon after my grandfather returned from WWI. My mother was born in 1926, and two more girls (Anneliese and Katja) in the next few years. My uncle was, like so many other boys, interested in airplanes, and he learned to fly gliders and sailplanes in the 1930´s. After the Treaty of Versailles after WWI, Germany was not allowed any armed aircrafts. The workaround was to train future pilots in gliders. In 1939 he joined the Luftwaffe (German Air Force) as a glider pilot. He took part in the invasion of Crete in 1941, and was later reassigned to a flak (anti-aircraft artillery) regiment. On February 23, 1945 he was wounded (shot through the left lung) and evacuated to a hospital ship. On March 10 he arrived at the hospital in Copenhagen, but during the night between March 15 and 16 his condition deteriorated and he died in the morning at 03:10.

 

DSCN0056Thanks to the internet, I quickly found Volksbund Deutsche Kriegsgr?rf??rge who has an online database of German war graves. I found his grave and located the cemetery. I was surprised and happy to find that it was within walking distance from my hotel, just about a mile and a half away. So the morning after arriving in Copenhagen I walked to Vestre Kirkeg?, a beautiful cemetery with nice landscaping and art decorations, and found the German section (picture right), where 4,636 German soldiers and 4,019 civilian refugees are buried.

After a brief search, I located the grave. Due to limited space, most graves contained more than one person. Most contained two, but I found some containing up to five. As I mentioned earlier, it was strangely emotional to stand there, in front of that simple stone cross. He was only 25 years old when he died, and had just started his life. If he had managed to survive two more months, the war would have been over.

While I was on the way back to Stockholm after the trip to Denmark, the massacre on Ut??/span> in Norway happened, and 77 more people, most of them as young or younger than my uncle lost their lives. More lives wasted for political reasons, by another mad man.

DSCN0067

 

Cheese Cake – Swedish style

Posted on June 16, 2011 by Karl-Henry Martinsson Posted in Old Blog Post Leave a comment

In Sweden we have a dish called ostkaka, which translates to "cheese cake". It should not be confused with the American cheese cake, A better name might be "curd cake".

This dessert was for a long time one of the things from Sweden I missed living in Texas. However, a few years ago I remembered that we made it in school (in Sweden home economics/cooking is a mandatory subject in Junior High School), and I found a recipe that worked for me. Over the last year I have been making this dish a number of times, and I have experimented a little to see what worked out.

Here is one variant of the recipe that should be easy to follow. Good luck!

 

Ingredients:
6-7 large eggs
1/2 cup granulated sugar (or Splenda for a low carb/sugarfree version)
1/2 cup flour
4 lbs cottage cheese (small curd) – should be the regular version, not low fat
Just over 1 1/2 cup heavy whipping cream
2 oz chopped almonds (fine)
2 tsp almond essence

Topping:
Whipped cream
Jam (Cloudberry, Blueberry or Queens Berry, can be found at IKEA) or frozen (defrosted) fruit like strawberries, blackberries or blueberries.

 

Instructions:
Beat eggs and sugar/Splenda with a mixer. Add almond essence and flour.
Mix down half the cottage cheese. Add the chopped almonds and mix.
Add the rest of the cottage cheese.
Whip the cream, should be nice and solid. Fold it into the mix. Do not beat it or stir too vigorously.
Pour in a buttered and oven safe dish.
Bake in 350 degrees for about an hour (will not hurt to go over the time, I sometimes had to bake it for 75-85 minutes).
It should be all solid but soft. The top surface should be nice and dark brown.

Serve warm (but not hot) with berries/jam and whipped cream.
 

image

 
Note: This is not my cheesecake, I will upload a picture when I get home tonight.
 

 

 

The Lord of The Rings (Extended Edition) and Star Wars coming on Blu-ray

Posted on June 13, 2011 by Karl-Henry Martinsson Posted in Old Blog Post Leave a comment

A couple of interesting Blu-ray are scheduled for this fall.

The Lord of The Rings Extended Edition will be released on June 28. The three movies are probably my favourites. However, it seems like there are really not many extras compared to the DVD Extended Collectors Edition I already own on DVD, so the only reason to purchase this set would be for the picture quality.

Star Wars: The Complete Saga is scheduled to be released on September 16. The box will include all six movies (Episode I-VI). There are a lot of complaints already, as the number of extras and bonus material is considered less than satisfactory by many fans.

I have said for a long time that when The Lord of The Rings is released on Blu-ray, that's when I will update my system at home from DVD to Blu-ray. I might do it this fall anyway, but I am not as eager as before. Perhaps I should wait for The Hobbit to be released, I am sure we will see a new box released by then…

 

 

Stack Exchange

profile for Karl-Henry Martinsson on Stack Exchange, a network of free, community-driven Q&A sites

Recent Posts

  • Domino 14 is now available
  • Domino 14 Early Access Program
  • Announced: Engage 2024
  • Integrate Node-RED with Notes and Domino
  • Notes and Domino v12 is here!

Recent Comments

  • Theo Heselmans on Announced: Engage 2024
  • Lotus Script Multi-thread Message Box [SOLVED] – Wanted Solution on ProgressBar class for Lotusscript
  • Viet Nguyen on Keep up with COVID-19 though Domino!
  • Viet Nguyen on Keep up with COVID-19 though Domino!
  • Mark Sullivan on Looking for a HP calculator? Look no further!

My Pages

  • How to write better code in Notes

Archives

  • December 2023 (1)
  • October 2023 (2)
  • September 2023 (1)
  • June 2021 (1)
  • April 2021 (2)
  • March 2021 (1)
  • August 2020 (3)
  • July 2020 (2)
  • April 2020 (2)
  • March 2020 (1)
  • December 2019 (2)
  • September 2019 (1)
  • August 2019 (2)
  • July 2019 (2)
  • June 2019 (3)
  • April 2019 (2)
  • December 2018 (1)
  • November 2018 (1)
  • October 2018 (5)
  • August 2018 (2)
  • July 2018 (3)
  • June 2018 (2)
  • May 2018 (1)
  • April 2018 (2)
  • March 2018 (1)
  • February 2018 (2)
  • January 2018 (4)
  • December 2017 (3)
  • November 2017 (2)
  • October 2017 (2)
  • September 2017 (1)
  • August 2017 (2)
  • July 2017 (6)
  • May 2017 (4)
  • February 2017 (1)
  • January 2017 (2)
  • December 2016 (2)
  • October 2016 (3)
  • September 2016 (4)
  • August 2016 (1)
  • July 2016 (2)
  • June 2016 (2)
  • May 2016 (3)
  • April 2016 (1)
  • March 2016 (4)
  • February 2016 (2)
  • January 2016 (4)
  • December 2015 (3)
  • November 2015 (2)
  • October 2015 (1)
  • September 2015 (2)
  • August 2015 (1)
  • July 2015 (5)
  • June 2015 (2)
  • April 2015 (2)
  • March 2015 (3)
  • February 2015 (2)
  • January 2015 (10)
  • December 2014 (1)
  • November 2014 (3)
  • October 2014 (3)
  • September 2014 (13)
  • August 2014 (6)
  • July 2014 (5)
  • May 2014 (3)
  • March 2014 (2)
  • January 2014 (10)
  • December 2013 (5)
  • November 2013 (2)
  • October 2013 (5)
  • September 2013 (4)
  • August 2013 (7)
  • July 2013 (3)
  • June 2013 (1)
  • May 2013 (4)
  • April 2013 (7)
  • March 2013 (8)
  • February 2013 (9)
  • January 2013 (5)
  • December 2012 (7)
  • November 2012 (13)
  • October 2012 (10)
  • September 2012 (2)
  • August 2012 (1)
  • July 2012 (1)
  • June 2012 (3)
  • May 2012 (11)
  • April 2012 (3)
  • March 2012 (2)
  • February 2012 (5)
  • January 2012 (14)
  • December 2011 (4)
  • November 2011 (7)
  • October 2011 (8)
  • August 2011 (4)
  • July 2011 (1)
  • June 2011 (2)
  • May 2011 (4)
  • April 2011 (4)
  • March 2011 (7)
  • February 2011 (5)
  • January 2011 (17)
  • December 2010 (9)
  • November 2010 (21)
  • October 2010 (4)
  • September 2010 (2)
  • July 2010 (3)
  • June 2010 (2)
  • May 2010 (3)
  • April 2010 (8)
  • March 2010 (3)
  • January 2010 (5)
  • November 2009 (4)
  • October 2009 (7)
  • September 2009 (1)
  • August 2009 (7)
  • July 2009 (1)
  • June 2009 (4)
  • May 2009 (1)
  • April 2009 (1)
  • February 2009 (1)
  • January 2009 (3)
  • December 2008 (1)
  • November 2008 (1)
  • October 2008 (7)
  • September 2008 (7)
  • August 2008 (6)
  • July 2008 (5)
  • June 2008 (2)
  • May 2008 (5)
  • April 2008 (4)
  • March 2008 (11)
  • February 2008 (10)
  • January 2008 (8)

Categories

  • AppDev (10)
  • Blogging (11)
    • WordPress (5)
  • Design (5)
    • Graphics (1)
    • UI/UX (2)
  • Featured (5)
  • Financial (2)
  • Food (5)
    • Baking (3)
    • Cooking (3)
  • Generic (11)
  • History (5)
  • Hobbies (10)
    • LEGO (4)
    • Photography (4)
  • Humor (1)
  • IBM/Lotus (178)
    • #Domino2025 (14)
    • #DominoForever (8)
    • #IBMChampion (46)
    • Administration (7)
    • Cloud (7)
    • CollabSphere (9)
    • Community (49)
    • Connect (33)
    • ConnectED (12)
    • Connections (3)
    • HCL (15)
    • HCL Master (1)
    • IBM Think (1)
    • Lotusphere (46)
    • MWLUG (25)
    • Notes/Domino (99)
      • Domino 11 (7)
    • Sametime (8)
    • Verse (14)
    • Volt (3)
    • Watson (6)
  • Life (8)
  • Microsoft (7)
    • .NET (2)
    • C# (1)
    • Visual Studio (1)
  • Movies (3)
  • Old Blog Post (259)
  • Personal (23)
  • Programming (84)
    • App Modernization (11)
    • Formula (4)
    • Lotusscript (47)
    • NetSuite (4)
      • SuiteScript (3)
    • node.js (4)
    • XPages (4)
  • Reviews (9)
  • Sci-Fi (4)
  • Software (24)
    • Flight Simulator (2)
    • Games (4)
    • Open Source (2)
    • Utilities (6)
  • Technology (37)
    • Aviation (3)
    • Calculators (2)
    • Computers (6)
    • Gadgets (7)
    • Mobile Phones (7)
    • Science (3)
    • Tablets (2)
  • Travel (7)
    • Europe (1)
    • Texas (2)
    • United States (1)
  • Uncategorized (16)
  • Web Development (50)
    • Frameworks (23)
      • Bootstrap (14)
    • HTML/CSS (12)
    • Javascript (32)
      • jQuery (23)
  • Prev
  • 1
  • …
  • 32
  • 33
  • 34
  • 35
  • 36
  • …
  • 54
  • Next

Administration

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

Tracking

Creeper
MediaCreeper
  • Family Pictures
© TexasSwede 2008-2014