Right now I am finishing my last few things at work, and in about 30 minutes I will be heading to the DFW International Airport and begin a 2 week vacation together with my son. We will first go to London, where I hope to see one of my childhood friends. We have been friends since first grade. Then Saturday evening I am flying to Stockholm, Sweden to spend almost 2 weeks with my sister, as well ass meeting up with some old friends and family. My son is excited about seeing a new country and city, but he is most excited about seeing his aunt in Sweden again. This will be his 4th trip to Sweden, and he also got to visit Germany during one of those trips (in 2007). Sweden and much of Europe have been having some hot weather lately, but it looks like it is cooling down to a very comfortable temperature. Forecast for the next 5 days in Ft Worth, TX: The same time period in Stockholm, Sweden:  Because of my vacation being right before IamLUG, I will not be able to go this year.
|
Ratings
0
|
A couple of posts by Peter Presenell and Dan Lowden made me think. Am I a real Notes/Domino developer/programmer? At least my business card says so. I think I am. But what makes me a "real" Notes programmer? First of all, I make a difference between a programmer and a developer. My definition of a programmer is someone that pretty much just produce code, but is not that involved in the actual design of the application. A developer is more involved in actually designing the application, not just writing the code. But for this discussion, I will use the term programmer, as I will focus on the programming part I do not think the languages one uses is what makes you a real programmer or not. I think it is in your mind and approach to programming. - A real programmer "thinks code" all the time. Not just at work.
A real programmer is a problem solver. He/she can't resist trying to solve a problem when presented with one, may it be computer related or not. A real programmer constantly try to improve himself and his applications, going back to fix old code to work better/faster, make the user interface better and more efficient, etc. A real programmer understands the need of user/customer and can come up with solutions for them. A real programmer have a set of functions in his "toolbox" that can be used in different applications, saving development time. A real programmer can learn new languages and tools when needed. Knowledge about the syntax of a languages does not make you a good programmer, knowledge about how to write efficient and useful code makes you a good programmer.
I don't program in Java. I don't work with Xpages (yet). When I got my first full-time position as a Notes developer in Boston, my boss-to-be called one of my references and asked if I knew Lotusscript, and how good. My reference, a friend where I had mainly been helping him with development for the web using HTML and @Formula language, answered back something like this: "I don't know how well he knows Lotusscript, but if he does not he will learn it in no time". To me, that was one of the greatests comments I been getting. I think that is a sign of being a good/real programmer, to be able to learn new tools as they are needed. I am sure that as soon as we get Notes 8.5.1 here at work, I will start working with Xpages. But until then I have very little extra time to play with that technology. However, even if I consider myself a good Notes/Domino developer, I don't think I am in the same class as many of the "rockstar" developers in the community. I am sure you know who I am talking about, people like Nathan T Freeman, Tim Tripcony, Matt White, Mikkel Heisterberg, Viktor Kranz, Julian Robicheux, et al.
|
Ratings
0
|
Lotus Notes is a great tool, and I enjoy developing applications using the RAD capabilities in Domino Designer. But I also create some web applications on occasion. This past week, when Hurricane Alex was moving in towards Texas, John, the CIO (and my boss), grabbed me first thing Wednesday morning and asked me to build a webpage. He wanted me to use the Google Earth plugin to consuming some KML files he created from the policy database (built using Visual FoxPro).
As I blogged about a year ago, I wrote some code to get the latitude and longitude for an address, and John had then rewrote the code for FoxPro so he could get the coordinates for the addresses he had in his system. So he could now very easily generate a couple of KML files, one of all our policies and one of the policy holders potentially in the path of the hurricane. I built the webpage in a Domino database, that is usually the easiest way for me to put up a simple webpage. I added some overlays, the two different KML files that John created. I also found a KML file online with different projected paths, as well as one of the current path of Alex. The users could turn on and off these layers as they wanted. Suddenly it was very easy to see if we had any insured customers in the path, etc.
Of course, the same web page could as easily have been created using Notepad or any other tool, as it was pure HTML. But my next plan is to integrate this page with other Domino data, and we are talking about building a generic reporting tool with all different kind of geographic data. Imagine being able to map every accident/insurance claim, see where the accident happens, where the insured is located, etc. Perhaps run statistics showing the average distance from home the accidents take place, etc.
I think it is critical that I, as a Notes/Domino developer, show the power and business use of Notes by integrating it with different systems. When I first started working at this company, I was tasked with building a claim system, to handle insurance claims. The company had hired a pair of Notes consultants, who set up the environment and attempted to build a claim system. They failed, and they also told everyone that Notes and FoxPro could not talk to each other. Of course, when I came in and sat down with my (then) new boss after a few weeks at the new company, we quickly figured out a way to get the systems to communicate. It took about 90 minutes to come up with the solution (using COM), write the basic specifications (yes, they changed some over the years, but not much), build the COM object and write some test code in Notes. Today, that COM object is used for all kind of things we never envisioned back then, in 2002. It even sends PDF files into our document imaging system.
Of course, it helps to have a CIO/manager who talks and thinks development. I don't have to explain things that are obvious to me, we can go straight at the business logic or functionality. Something that would take 10-15 minutes to explain to a regular manager just takes seconds or a minute.
My next project, which I will start on Monday, is a database to document the claim system. There are so many design elements, with different functionality and access rights. Some buttons are hidden from certain users, using roles or document status, other design elements are restricted in other ways. Very little of this have been documented over the years, and I need to get all that documented in a good way. That is the power of Notes: I have a need, I build a solution.
|
Ratings
1
|
The last few weeks have been slightly turbulent in the Yellowsphere, with JonVon starting a discussion about the future of Notes development with his Lotus Notes: The Long Goodbye. I am lucky enough to have a solid position as a Lotus Notes developer at a Dallas-based insurance company. Notes is not going away from here any times soon, as a matter of fact we are moving rapidly towards getting the latest versions. We are just now in the final phase of getting all users on Notes 7. This is done at the same time we are moving most branch offices to Citrix. Very soon we are planning to move everyone up to Notes 8.5.1 as well. Our current plan is to wait about 6 months after the release of a new version to push it out, to let any bugs get fixed. The exciting news is that after 8 years at the company as me being the only Lotus Notes developer, we might even hire another developer to help me out, so I can spend more time on the architecture and design, and less on support. I spend about 40% of my time (more at times) at supporting end users. I also support the rest of the IT department (mainly the operations manager and the desktop support group) with Notes knowledge when needed. So there are companies hiring. As soon as there is an official job posting I will publish it here. So Notes is not dead. As a matter of fact, several of the most important applications here are based on Notes.
|
Ratings
0
|
Today is Father's Day here in the US. In Sweden it is actually celebrated in November (Nov 14 this year). I am thinking about my dad, who passed away in 2001. My dad was a very intelligent person. He may not have had a fancy education and degree. As a matter of fact, he just had six years of school back in the 1930's (he was born in 1926), then he had to start working. But he could build pretty much anything. He built us a summer house from scratch. He even did the design and the drawings/blueprints himself. At home he had a real architect drawing table. But he also repaired all kind of things down in the basement. He built his own tools, a powerful electrical motor and some pieces of scrap metal, and he had a lathe. When my sister needed a violin, he simply built one. And yes, it sounded great! After I moved to the United States in 1998, he got a computer, and at age 70 he started learning how to use it and to send email.
Working on the summer house, circa 1974
Taking a break from the hard work.
Building a violin.
But my dad was not always working. Yes, he did work a lot, both to support the family and to (litterally) put a roof over our heads. But he also had time for me and my sister. We went fishing, sailing (he got us a small sail boat and put me and my sister in sailing classes), and worked in the vegetable patch together with mom.
At Midsummer celebration, circa 1976.
There are so many things that make me proud of my dad, I can't list them here. But he was a great role model for me, and I hope my son Erik one day will be able to think at me in a similar way. He was also, for a very brief time, a grandfather. He died in March 2001, but not until after he got to see and hold his first and only grandchild. Erik was born in August 2000, and he (together with my sister) visited us in early November. I was told that he printed out the pictures I mailed him, and was showing them to all his friends. He was so proud! I wish he would have lived a few more years so he could have seen Erik starting to grow up.
Holding his grandson Erik, Boston November 2000.
One more of the proud grandpa.
Funeral, April 2001.
Thank you for everything, dad. I will always miss you.
Stig Martinsson 1926 - 2001
|
Ratings
0
|
 This picture, and the two previous ones, were taken with my Nikon D90 fitted with a Tamron 18-270mm lens. No tripod was used. The pictures were taken yesterday evening around 19.30 in the Sundance Square area of Ft Worth. Click on the images to see the full versions.
|
Ratings
0
|
|
|
Ratings
0
|
|
|
Ratings
0
|
The latest version of Ubuntu, code name Lucid Lynx and with the version number 10.04, is being released today. Due to a problem in Grub, the boot manager, the release have been delayed somewhat, but hopefully it will be out today. Among the news in this version, which is a LTS (Long Term Support) version, is a further polished user interface, with many similarities to MacOS. The maximize/minimize buttons are now defaulting to the left side of the title bar, but of course the user can move that around and reconfigure the interface. Built-in support in the operating system for social network sites/services is something that very few, if any, operating systems have. The cloud storage service Ubuntu One have been updated with additional functions, you can now access contacts and files stored in the cloud from mobile phones/devices. No Windows client, though, so you can't access your files at home from your Windows computer at work. Ubuntu One will also allow you to share files with family and friends in an easy way. Every Ubuntu user get 2 GB free storage, and for $10/month you get 50 GB storage. The software repository/manager have been updated, and an online music store for DRM-free music have been added. Some programs have been removed (GIMP being one of them) and others have been added (for example the video editing program PiTiVi). Another thing that Canonical, the company behind of Ubuntu, have been pushing is faster start-up time. I don't restart my computer that often, so 10 seconds of 25 seconds is no big deal to me. But for laptops it is nice. Talking about laptops, there will also be a special "Remix" version for netbooks. As always, you can download and burn an ISO image and test it on a computer without having to install anything. This will test your hardware and give you an idea about the looks and functionality of the operating system. As my FaceBook and twitter followers might have noticed last night, I cleaned and backed up my existing system (using Clonezilla, highly recommended tool) in anticipation of installing 10.04 in the next day or so. I plan to first try an install on top of the existing version 9.10, then make a backup of that, wipe the partition and install 10.04 from scratch to see if any of the hardware I hjad to get separate drivers for is now supported out of the box.
|
Ratings
0
|
My favorite tool is probably NoteMan from MartinScott. If I have to pick one tool from the suite, it would be either NoteMan.Editor or NoteMan.DocDelta. It is very hard to decide between the two of them. Editor is great for editing documents, see the contents of different fields and even change data types. I use it to get the UniversalID of documents and much more. DocDelta help me solve replication conflicts quickly and easy. I can higly recommend the NoteMan suite of tools to any Notes/Docmino developer, and for the price ($395 for the whole suite), you get a lot of functionality. I also use several tools from TeamStudio and Ytria. Yes, I am lucky enough to have a boss who believe in getting me the tools I need. From TeamStudio I use Undo (previously called Snapper) to make snapshots of the design while developing for easy roll-back, Profiler to find performance issues in my code and Configurator for search-and-replace through-out a database (design and/or documents). Those tools run around $500 each, if I recall correctly. I also use their free class browser, a tool I highly recommend to everyone doing object oriented Lotusscriupt development. From Ytria I use a number of tools. The two I use the most are scanEZ and actionBarEZ. The latter is great when I want to apply a specific design of action bars to many forms and/or views. I design the action bar in one view, with colors, fonts, backgrounds, etc. When I am satisfied I can update all views and forms the the database with the new design. I don't use scanEZ as much, but still on a regular basis. It also have functions to identify replication conflicts, like NoteMan.DocDelta, but the two tools complement each other. Using scanEZ, I can locate and delete documents of a particular type, including profile documents, and much more. I also sometimes use designPropEZ to check the design of a database and make sure it does not inherit element from the wrong templates/databases. Here is my currect toolbar with all my development tools:
In addition I use Photoshop CS2 for graphics editing and TechSmith Jing to create screencam demos for managers/users.
|
Ratings
0
|
In my previous post I wrote about why I use object oriented Lotusscript. Let's look at how it can be used in a real-life application. Background At my work I developed a system to handle insurance claims. Each claim can have one or more claimants, people or parties that have either BI (bodily injury) or PD (property damage) claims related to an accident. Each claimant get a reserve setup, an amount of money the adjuster think it will cost to settle the claimant. There are two reserves for each claimant, one for loss payments and one for expense payments. The latter can be payments for police reports, field adjusters, lawyer fees, etc while loss payments are the actual damages (payments to body shops, medical payments, etc). When payments are made, the reserve amounts are reduced, until reaching zero. No more payments can be done then until the reserve is increased. Each adjuster have a limit to how large reserve he or she can set, higher reserve must be approved by a manager. Data storage When the claim system was first put in place, all reserves and payments were stored in the Notes database. They were then (manually) transferred into a backend system built in Visual FoxPro. But after a few years, a COM object (dsClaimLink) was developed and the Notes database is now sending all financial transaction into the backend, and retrieving financial information the same way when needed. Claim information is stored in the Notes database, as is claimant information. Some claimant information. a sub-set of the data stored in Notes, is sent to the backend as well. Original design Initially I built a large number of functions and subroutines, organized in different script libraries based on functionality. This actually worked really good, and the code was fairly easy to maintain, modify and expand. When the financial transactions were moved to the backend, I just had to modify the function GetAvailableAmount() to call the backend instead of looking up the amount in the Notes database. But it was still not very flexible, and I had some code that was duplicated in many places (most of it related to calling the COM object). So about two years ago, I started refactoring my code, both to make it faster and easier to maintain, by using object oriented Lotuscript. Example Below are examples of the code in the script library Class.ClaimData class. This is not my exact production code, I have removed a number of lines to make the example more clear. The ClaimData class (described in next posting) contains an array of claimants, each of those an object. Each claimant object in turn contains an object containing the different amounts (loss reserve/loss payments, expense reserve/expense payments, recovery amount, etc). First, let's look at the AmountData object.
Class AmountData
Public lr As Currency ' Loss Reserve
Public er As Currency ' Expense Reserve
Public lp As Currency ' Loss Payments
Public ep As Currency ' Expense Payments
Public slp As Currency ' Supplemental Loss Payments
Public sep As Currency ' Supplemental Expense Payments
Public rec As Currency ' Recovery amount
Public lossavail As Currency
Public expavail As Currency
Public Sub New()
rec = 0
slp = 0
sep = 0
lr = 0
er = 0
lp = 0
ep = 0
lossavail = -1
expavail = -1
End Sub
Public Sub Load(claimnumber As String, claimant As Integer)
Dim success As Integer
Dim servaddress As String
Dim xmldata As String
Dim claimlink As ClaimLink ' Object to connect to backend
Set ClaimLink = New ClaimLink() ' Create object/class
If claimant = 0 Then ' Get total amounts for all claimants
success = claimlink.GetClaimStatus(claimnumber, Today())
Else ' Get amounts for selected claimant
success = claimlink.GetAmountsByClaimant(claimnumber, claimant, Today())
End If
If success = True Then ' Data returned successfully
xmldata = claimlink.GetDataXML()
rec = Cstr(Ccur(XMLGetValue(xmldata,"recovery")))
slp = Cstr(0-Ccur(XMLGetValue(xmldata,"losssup")))
sep = Cstr(0-Ccur(XMLGetValue(xmldata,"expsup")))
If claimant = 0 Then ' All claimants
lr = Cstr(Ccur(XMLGetValue(xmldata,"lossorig")) + Ccur(XMLGetValue(xmldata,"losschg")))
er = Cstr(Ccur(XMLGetValue(xmldata,"exporig")) + Ccur(XMLGetValue(xmldata,"expchg")))
Else ' Specified claimant
lr = Cstr(Ccur(XMLGetValue(xmldata,"lossres")) - Ccur(slp) + Ccur(rec))
er = Cstr(Ccur(XMLGetValue(xmldata,"
|