202 Lotus blogs updated hourly. Who will post next? Home | Blogs | Search | About 
Latest 7 Posts
Note to self - use Promise.all instead of simply resp.text()
Fri, Dec 15th 2017 52
Beta of new Lightning Component Library included in Winter '18
Wed, Nov 22nd 2017 9
Websockets in an Express node.js app on Heroku
Thu, Nov 16th 2017 12
Dreamforce 2017 Playlist Generator
Tue, Nov 14th 2017 8
Thu, Sep 14th 2017 5
The best way to learn a platform is to use a platform
Fri, Aug 11th 2017 6
Flip Chrome flag to easily inspect TLS certificates (from Chrome 60)
Tue, Aug 8th 2017 7
Top 10
Note to self - use Promise.all instead of simply resp.text()
Fri, Dec 15th 2017 52
Lightning Components as Quick Actions in Salesforce1 and padding
Wed, Feb 8th 2017 16
component.find woes in Salesforce Lightning
Tue, May 2nd 2017 14
IBM Connections application development state of the union - part 6
Wed, Sep 14th 2016 12
Salesforce username/password OAuth flow against a sandbox
Tue, Jan 31st 2017 12
Websockets in an Express node.js app on Heroku
Thu, Nov 16th 2017 12
IBM Notes IBM Connections plugins cannot connect after upgrade to v. 9.0.1FP4 on Mac
Wed, Jul 15th 2015 11
Salesforce week 4
Sun, Dec 11th 2016 11
Deploy your own Salesforce Workbench on Heroku at the click of a button
Thu, Jun 22nd 2017 11
Installing TDI v. 7.1 on Windows Server 2012
Wed, May 7th 2014 10

Mikkel Heisterberg
Blog Title lekkimworld.com
Blog Description A blog by Mikkel Flindt Heisterberg about everything and nothing - mostly appdev stuff...
Blog URL http://lekkimworld.com
RSS Feed http://lekkimworld.com/rss.xml
Validate Feed 2017-03-06 09:00:02 Failed to parse RSS file. (Invalid character at line 30, column 349).

This could be a simple time out issue. Validate your feed here: feedvalidator.org or validator.w3.org
Feed Last Checked Dec 15, 2017 10:50:54 AM EST. Realtime Update:

Recent Blog Posts
Note to self - use Promise.all instead of simply resp.text()
Fri, Dec 15th 2017 10:43a   Mikkel Heisterberg
Was frustrated that when using fetch and the promise chain that once you returned a promise to get the response text (or JSON) you no longer had access to the response object in the next promise without having a state variable. I often return an error message in the response to inform the user what went wrong but I cannot see what happened based on status code without the response object. Well at least as far as I can read the API on MDN. My solution is to resolve using Promise.all instead of si
Beta of new Lightning Component Library included in Winter '18
Wed, Nov 22nd 2017 9:12a   Mikkel Heisterberg
Was pleasantly surprised to see the beta of the new Lightning Component library being included in the Winter '18 release. Quoting from the release notes (see page 533): Find components more easily with the searchable component library. Preview the look and feel of components with interactive examples. To explore the new component library, go to https://.lightning.force.com/componentReference/suite.app where myDomain is the name of your custom Salesforce domain. You can also continue to use /a
Websockets in an Express node.js app on Heroku
Thu, Nov 16th 2017 7:41p   Mikkel Heisterberg
Last night I was having an issue with websockets and TLS in an Express.js node.js app. My websocket was working just fine when developing locally over plain HTTP but when I deployed the app to Heroku I received an error as that app runs over HTTPS but the websocket was still plain HTTP (using ws:// instead of wss://). Hmmm.... I started digging into websockets over TLS and how that would work without any luck. So I asked around but then it dawned on me and I answered my own question... Sometimes
Dreamforce 2017 Playlist Generator
Tue, Nov 14th 2017 8:47p   Mikkel Heisterberg
Looking for sessions from Dreamforce 2017 I found a list of sessions in a speadsheet and for fun I threw together a quick app to provider a better overview, allow me to filter the list easily and generate playlists on Youtube for select sessions. The app is written in node.js, is available on Github and is hosted on Heroku at df17playlistgenerator.herokuapp.com. After you authorize the app for Youtube it displays the list of sessions and you can generate playlists. As a good friend of me alwa
Thu, Sep 14th 2017 1:35p   Mikkel Heisterberg
Today I've published my first plugin to the SalesforceDX CLI. The plugin is called sfdx-l18n-plugin and allows you to change localisation settings for the user in the scratch org you create. You can query the current values, list the available values from the org and set new values. The plugin can return values in plaintext or as JSON for automation. Changing the org to run in Japanese using Japanese locale and the timezone from Tokyo is as easy as: sfdx l18n:user:set -u japanese --locale ja_J
The best way to learn a platform is to use a platform
Fri, Aug 11th 2017 3:06p   Mikkel Heisterberg
Wow what a week it's been. First week back from vacation and I'm diving right into a sprint of stuff that needs to be delivered to the customer. My task for the week has been develop a connectivity layer between Salesforce and Dropbox using OAuth. This task has taken me on quite a learning journey. Now I'll call myself quite a seasoned programmer but ever since joining Salesforce 9 months ago I've had to relearn a lot of stuff. A new programming language in Apex, new framework technologies
Flip Chrome flag to easily inspect TLS certificates (from Chrome 60)
Tue, Aug 8th 2017 10:57a   Mikkel Heisterberg
As a developer - or a security conscious user - you may want to inspect TLS certificates from time to time. However inspecting them in Chrome is hard as access to the certificate hierarchy dialog has been tucked away in the Developer Tools. Happily Chrome 60 has added a flag to add an easy to reach option back to the TLS dropdown in Chrome. Please note that manually editing Chrome browser flags may mess up your browser - don't say I didn't warn you... In the below video I show you how...
Developing Salesforce Lightning Components that are visible at design time but not at runtime
Thu, Jun 29th 2017 7:48p   Mikkel Heisterberg
So this can clearly be labelled as a "Lightning Lesson from the Field". As you start to develop more complicated Salesforce Lightning applications - and why wouldn't you - you as I have done start seeing great power in hidden components. By hidden components I mean components that contribute code or does "something" but which does not have a UI. Thes are very easy to do but have a big drawback as they are also invisible at design time making them near impossible to find the Lightning AppBui
Deploy your own Salesforce Workbench on Heroku at the click of a button
Thu, Jun 22nd 2017 8:07a   Mikkel Heisterberg
The other day Salesforce Workbench was having issues. Generally it kept returning errors and SOQL queries took forever and timed out. Now Salesforce Workbech is a LAMP app that runs on Heroku and it turns out it is actually possible to deploy your own instance on Heroku using a simple Heroku Button. To do this simply follow the below steps (you need to have an account but if you don't simply sign up): Go to the project page at https://elements.heroku.com/buttons/jdrishe/salesforce-workbench Cl
Currency conversion in Apex
Tue, Jun 20th 2017 7:56p   Mikkel Heisterberg
While waiting for my flight in the lounge tonight I was playing around with currencies in Salesforce because - why not... Conversion between configured currencies are supported in SOQL and Salesforce but only between the configured corporate currency and the users personal currency. But what if you want to convert between an opportunity amount in one currency and into another currency using the configured conversion rates in Salesforce? Well there is no support for this. So as an Apex / SOQL sel
Simplifying usage of Salesforce Lightning Design System using NPM and Express
Wed, Jun 14th 2017 12:36p   Mikkel Heisterberg
Using Salesforce Lightning Design System (SLDS) is a great and easy way to add some super nice styling to your app. It comes with some nice defaults and a responsive grid system like other frameworks lige Bootstrap. Where SLDS really shines is of course if you are already using Salesforce (I assume you're already on Lightning right?!!?!?) or if you are going to. And again who isn't. Anyways... Using SLDS makes your apps really look like Salesforce which is nice for Salesforce Lightning Compone
Salesforce week 25-27 and finishing this weekly thing...
Mon, May 22nd 2017 6:38a   Mikkel Heisterberg
Wow!! A half year has gone by. Half a year... Where did the time go? Over the last weeks I've gradually noticed that my view on being with Salesforce has shifted from being "something new" to being "how things are". On feeling at home in the organisation and that I know my place. Does new things come up sure but it's feeling less and less like every day brings something new, a new badge or a new process. I've settled into the #Ohana. This is also why I've decided to stop writing these we
Salesforce Lightning Component API change
Wed, May 17th 2017 9:49a   Mikkel Heisterberg
As we get closer to Summer 17 we start using difference versions across production instances and sandboxes. This of course also leads to opportunities for differences in API's... I just found one such difference as I'd been developing some Lightning components on Summer 17 and got errors when trying to run them on Spring 17. In Summer 17 you can do the following in a client-side event handler to get the DOM element of the source component: ({ react: function(component, event, helper) { cons
component.find woes in Salesforce Lightning
Tue, May 2nd 2017 2:59p   Mikkel Heisterberg
When developing Salesforce Lightning Components you very often use the aura:id attribute on components to tag them and component.find to find them again. This works very well and is documented nicely in the documentation (Finding Components by ID). If however you tag a component using aura:id in an iterator you may not know how many resulting components will be on the page. The component.find method may return undefined (if no matching components), a component instance (if a single match was fou
! vs # in Salesforce Lightning Components
Mon, May 1st 2017 1:00p   Mikkel Heisterberg
Often when you read tutorials on developing Salesforce Lightning components they all contains expressions when passing data and variables into other components. Like say you have an attribute as an array and would like to iterate over the elements: {!item} Now this is a very simple example but it shows the point. This component shows a simple bullet list with items - when the array attribute ("arr") changes the list will recalculate and update. Often this is what you want but sometime
Salesforce week 24
Mon, May 1st 2017 7:02a   Mikkel Heisterberg
Last week was all about getting the next component for my customer into production. For one of their business lines they had some very specific requirements for a search so we built a search from scratch. Now Salesforce comes with a built in fulltext search functionality but the customer only wanted results from a specific object type and a specific record type at that. So that's what we built. The solution was deployed on Thursday and have been running since. Main hickup in the deployment was
Salesforce week 20-23
Fri, Apr 21st 2017 12:45p   Mikkel Heisterberg
Wow I'm behind on these... I'll have to sum up the last 4 weeks and get better at doing these. At the end of March I made Trailhead Ranger! I'm very happy that the ambitious goal of making Trailhead Ranger by the end of March was accomplished. On the Wednesday night in the bar of my second home (Radisson Hotel in Stockholm) I earned the last badges to bring me over the line. Great! I hurried over to my V2MOM to complete that measure on my FY18 V2MOM. Check! Next up is getting started on my
Case in point - why we have API limits
Wed, Apr 5th 2017 5:24a   Mikkel Heisterberg
This week the customer I'm working for went live with the next phase of their Salesforce rollout. The phase includes a Contact Sychronization feature where Salesforce contact objects are synchronized to users mobile devices using their Google Account. The contacts are flagged either in bulk or specifically using a Lightning Component on the Contact Page, has Salesforce1 integration to allow users to perform and manage sync on the go as well as a delegation feature to allow other users to manage
Salesforce week 19
Wed, Mar 29th 2017 7:57p   Mikkel Heisterberg
Another busy week where all focus was on getting our customer ready for the launch of their next release on 3 April. Again I've been a bit optimistic about my estimates but all it good and the customer is happy. They just signed an extension to our contract so we will probably be here until the end of the year. Great testament to the value we are providing. Next week I'm going to be two days in Stockholm and 3 days the following week in the week of the release. After that we have a short sprin
Salesforce week 18
Fri, Mar 24th 2017 8:40a   Mikkel Heisterberg
This week marked my 4th month at Salesforce! That's so crazy. 4 months already - where did the time go? Joining Salesforce was a big decision and since I joined the time has flown by. It has taken some time but I'm starting to feel at home in my new role in CSG here at Salesforce. As always change is hard and a change of job is no different. Well it's probably hard for me to say that as this is the first "real" job I've had as I've been self employed / co-owner of the company I've worked
Using preformatted HTML in a Salesforce Lightning Component
Fri, Mar 24th 2017 8:26a   Mikkel Heisterberg
Had to output preformatted HTML richtext from a richtext field in a Lighting Component the other day. Looking through the documentation I found the ui:outputRichText component but it didn't really work the way it's mentioned in the documentation. Instead of the body of the tag containing the HTML the HTML had to be in the value-attribute as shown below. The "bio" CSS class I added is to actually apply the formatting I need. Although the HTML contains the HTML tags the CSS on the Lighting
Salesforce Lightning Components and image dependencies
Mon, Mar 20th 2017 9:51p   Mikkel Heisterberg
I am developing some Salesforce Lightning components at the moment as while Lightning Components are great they have a major drawback in my mind. Some background first... Salesforce Lightning is our "new" component based UI based on HTML / Javascript and components are automatically mobile ready and responsive. A Lightning Component is not a single "thing" but rather a folder with stuff that is a number of files named using a predefined format. The component name is the name of the folder -
Salesforce Lightning Design System (SLDS) Activity Component and z-index
Mon, Mar 20th 2017 9:05p   Mikkel Heisterberg
For the Lightning Components I'm developing for a customer I'm using the activity timeline component to show a chronologic timeline of "stuff". However when I added the markup to my Lightning Component and ran it inside Salesforce the vertical bars were missing. What to do? Crack open the Chrome Developer Tools and inspect - but hey! Then the bars were there... Close Developer Tools and the bars were gone again. Hmmm... Seems to be a viewport height issues. But then again not... After qui
Salesforce week 17
Fri, Mar 17th 2017 9:13a   Mikkel Heisterberg
Boy a busy week and the following as well. So much that I didn't have time to write this post. Will try and sum up for week 18. What did I learn Blogging takes time... Status after this week Trailhead points: 80150 Trailhead badges: 82 Certifications: 5 (Salesforce Certified Administrator, Salesforce Certified Platform App Builder, Salesforce Certified Advanced Administrator, Salesforce Certified Sales Cloud Consultant, Salesforce Certified Service Cloud Consultant)
Salesforce week 16
Mon, Mar 6th 2017 9:09a   Mikkel Heisterberg
Week 16 brought my first full week budgeted at my customer and I was asked if I wanted to stay on for the rest of the year. I said "yes please!" and take it both as a pat on back for work well done as well a encouragement that I'm definitely heading in the right direction. The night I spent in Stockholm was spent on Trailhead as I really want to make Ranger. Ranger is awarded when one has earned 50k points and 100 badges. I'm well beyond the 50k points but need 20 more badges. I'm making a
Salesforce week 15
Sun, Feb 26th 2017 8:17p   Mikkel Heisterberg
A week with two days of travel although not going to Stockholm for a change. This weeks trip brought me to Amsterdam and our Regional Kickoff for the EMEA North region. First day was breakout sessions for the various divisions and then drinks and dinner. Day 2 was the main regional kickoff and after a mindfulness session and group massage we got started. All good fun, good information an a nice place to meet new people and colleagues. Only drawback was the hallways of the venue where the noice l
Salesforce week 14
Sun, Feb 19th 2017 7:33p   Mikkel Heisterberg
Short week as I had Thursday and Friday off - or PTO as we call vacation. But a great week. Monday and Tuesday I spent on-site in Stockholm and Monday night I finally got my act together and took the final certification exam of my onboarding and I'm very happy to report that I passed. Yay!! I now have passed all the 5 certifications I needed to pass. #happyDays It was also my first week of being billable at the customer which was great. Wednesday was spent in the home office. All good stuff!
Salesforce week 13
Mon, Feb 13th 2017 7:44p   Mikkel Heisterberg
Last week I spent two days at the customer site in Stockholm and 3 days at home in the home office. I think. Cannot really remember. Maybe I was in the office one of the days. Oh well :) It's starting to become normal to go to Stockholm and family life and work life is starting to work out. It seems like it will work for us. Customer project wise I almost finished the Lightning Component I've been working on for the customer and even made small changes to also make it work in Salesforce1. With
Salesforce for Newcomers - Introduction to orgs, sandboxes, API login and Salesforce security
Fri, Feb 10th 2017 8:24a   Mikkel Heisterberg
As I venture into the Salesforce Universe myself there are many areas that I would have wished had been easier to figure out. So what better than remedying that with a series of blog posts. Maybe there will be one post and maybe more. We'll see... This first instalment is on some of the basics in Salesforce namely the org, sandboxes and some of the security implications of logging in. I'm pretty technical so some of this will be from a technical angle so please forgive me and stay with me. "
Lightning Components as Quick Actions in Salesforce1 and padding
Wed, Feb 8th 2017 7:05p   Mikkel Heisterberg
Since Winter 17 we have had the option of using a Using Lightning Component as a Quick Action. In the Lightning Experience in a desktop browser the component is shown as a popup (actually a lightbox) in the UI and in Salesforce1 (the Salesforce mobile app) it's more of a modal fullscreen dialog. All this is great. Only thing you have to do is to make your component implement force:lightningQuickAction (all declaratively) and it can be added as a Quick Action. The resulting lightbox / dialog wil
Salesforce Platform Cache
Mon, Feb 6th 2017 9:48a   Mikkel Heisterberg
Stumbled over the Salesforce Platform Cache the other day and just discovered this nice Trailhead Module on it (Platform Cache Basics). Worth 30 minutes if you're developing on the platform.
Salesforce week 12
Mon, Feb 6th 2017 8:31a   Mikkel Heisterberg
Week 12 brought me to Stockholm for 3 days, had 1 day in our new shiny Salesforce office in Hellerup (closer to Copenhagen center) and 1 day working from home. I spent most of the week getting up to speed on Salesforce Lightning and developing mockups for a custom component for the customer. All in all it was a great week where I learned a lot and made significant contribution to the customer project although I'm not officially assigned and billable yet (I'm shadowing). Salesforce Lightning
Salesforce week 11
Tue, Jan 31st 2017 5:21p   Mikkel Heisterberg
First week on "the job" brought me to the customer I'll most likely be assigned to in Stockholm. I spent Tuesday to Thursday there and have already delivered something that will go into production in a couple of weeks. Both exciting and scary... The week was basically spent learning about the project, the phases, deliverables and a whole slew of new terminology. All good stuff. Nothing much else to report for now besides Stockholm being a nice city. What did I learn Some customers actually
Salesforce username/password OAuth flow against a sandbox
Tue, Jan 31st 2017 8:29a   Mikkel Heisterberg
We had issues today because our OAuth password flow wouldn't work against one of our sandboxes although the code worked against production. Instead we got this error: {"error":"invalid_grant","error_description":"authentication failure"} After Googling and finding this thread it turned out that when using the username/password flow against a sandbox you have to either relax IP restrictions for login or authenticate against test.salesforce.com instead of login.salesforce.com (which of
Arlanda Express app
Mon, Jan 30th 2017 10:23a   Mikkel Heisterberg
These weeks - and probably through the end of the year - I'm going quite a lot to Stockholm so like any respectable geek I'm trying my best to make my travels more productive and easier to manage. Flying is easy - booking is all online and trips, boarding cards and receipts are managed entirely mobile. Easy. Next was hotels - also easy using existing apps except for the actual check in process. This Monday I found the Arlanda Express app. Excellent!! Tickets are bought and paid in the app u
Quick CLI aliases for Salesforce instance info
Wed, Jan 25th 2017 9:50p   Mikkel Heisterberg
Today when at a customer we were trying to figure out the release versions the various sandboxes and development environments and compare this info with the version of the production instance. Of course all this is available from status.salesforce.com but clicking around got a bit tedious so I whipped up a quick set of bash aliases for the Terminal. Since the output is also available as JSON it was pretty easy. First I grabbed the jq JSON parser for bash and then I wrote 4 aliases for bash: sf_
Salesforce week 10
Wed, Jan 25th 2017 7:25p   Mikkel Heisterberg
Week 10 it all started to get real... All in all my last quiet week. I actually met my manager in person (she's based in Amsterdam) and I spent more time playing with the Salesforce platform with a specific focus on Service Cloud, Lightning and Salesforce Lightning Design System (SLDS). I also got my first customer project in Stockholm which will be fun. With the planning on my first customer visits came fun experiments planning flights, hotels etc. All good fun. What did I learn Service Clo
Salesforce week 7-9
Wed, Jan 25th 2017 7:18p   Mikkel Heisterberg
Wow! Time is starting to fly by. Week 7 I took vacation and relaxed by taking time off between Christmas and New Years. I got back into the office on Tuesday following New Years Eve and promptly started studying for my Salesforce bootcamp. The bootcamp is in San Francisco and I spent all of week 7 preparing and studying for that. We are very much into gamification as is obvious if you've ever visited Trailhead. I flew off to San Francisco on Friday and spent all of Saturday and Sunday settling
.gitignore for MavensMate
Mon, Jan 9th 2017 12:02a   Mikkel Heisterberg
Note to self... Exclude the workspace and project files as well as /config from Git so a .gitignore file should be something iike this: *-project *-workspace config So in bash something like: $ echo *-workspace > .gitignore $ echo *-project >> .gitignore $ echo config >> .gitignore
Salesforce week 6
Mon, Dec 26th 2016 9:38p   Mikkel Heisterberg
Again study, study, study... Since last week I completed 2 certifications which takes me to 4 of the 5 I need. The last is Certified Salesforce Service Cloud Consultant which is looking pretty tricky but I have to find some material on the exam. Did my second round of volunteering - felt good. Closing off the year having volunteered 13 hours. Okay I think. Looking into how I can help for a Salesforce project in Africa. Interesting. From here on it's xmas, then new years and it's time to thin
Salesforce week 5
Sun, Dec 18th 2016 8:05p   Mikkel Heisterberg
All (well most) of this week was spent - you guessed it! - studying for exams... I tried to take the Salesforce Certified Advanced Admin on Wednesday but due to hickups in the system at Webassessor I had to exit the exam and the new time slot I got I couldn't do. So the exam is now scheduled for Monday. It's going to be exciting. Whether I pass or not I'm at the point where I need to see some actual questions to gauge what they are asking for instead of simply trying to guess. My take on exam

Created and Maintained by Yancy Lent - About - Planet Lotus Blog - Advertising - Mobile Edition