tag:blogger.com,1999:blog-65026672024-03-13T11:45:09.035+00:00Many piesI have my fingers in many pies:
IT/techie/charity/non profit/nptech/mission stuff. Founded 2004Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.comBlogger504125tag:blogger.com,1999:blog-6502667.post-25648604685271184312024-01-22T09:20:00.000+00:002024-01-22T09:20:04.282+00:00Alice Bartlett - the journey of a byline, and agile comms<p> If I'm emailing myself something to note for later then it probably needs to be a blog post. Here is a really interesting talk by <a href="https://alicebartlett.co.uk/blog/weaknotes-280">Alice Bartlett</a> about the journey of a byline in the FT and their publishing architecture.</p><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/gYhJU0-j-8g?si=e8om8gBuWtnDIEI7" title="YouTube video player" width="560"></iframe><p>I captured this slide though, because it's a good summary of how to do internal technical comms. It's from the <a href="https://agilecommshandbook.com/">agile comms handbook</a>:</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhnV47yx-yDQTOloUXsTGX_iD_I7jCxnDlHVbBcY4jQsVnC47gIKXdaypsk4LJ_L159qQlmdolfMgXxtHNl1magYA_VD_r04H3s8ODeYthxCnq-Q2TsbR0264gvx4I90JBAPXJoLkEEajB41wQ-fo2UV7aglW2CHu94TCCaFxEWxIhYgPRFWyx2w/s1095/Untitled.png" style="margin-left: 1em; margin-right: 1em;"><img alt="The lure - a tweet length summary of what is going on. The context - a blog post, and email, a little video. Tell people enough, but not so much they don't have time to read it all. The detail - stuff only people elbow deep are going to care about - the tables, the architecture diagram, the decision docs." border="0" data-original-height="592" data-original-width="1095" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhnV47yx-yDQTOloUXsTGX_iD_I7jCxnDlHVbBcY4jQsVnC47gIKXdaypsk4LJ_L159qQlmdolfMgXxtHNl1magYA_VD_r04H3s8ODeYthxCnq-Q2TsbR0264gvx4I90JBAPXJoLkEEajB41wQ-fo2UV7aglW2CHu94TCCaFxEWxIhYgPRFWyx2w/w400-h216/Untitled.png" title="The layer cake of comms" width="400" /></a></div><br /><p><br /></p>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-17655832030527732552023-10-19T15:54:00.001+00:002023-10-19T15:54:19.886+00:00Salesforce DevOps - can you get away without knowing git? - part 2<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0duMzBaPuy59UVGc3wTwi-BpjcR8mNh1DvkF6fS7W7kPd7zRwiWZ3b_9ipSpro5oV1C4w4xye-U_f1Q_7kS8kZK-4c9P98pFfBhDefGKUByhvLFYUJH-O6jD1myXnxfMiR1TqlpkbZPFdif6fKUjR1yQhHNbOlgYfrZHxihH13bE8pPJIcrqP1g/s748/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="162" data-original-width="748" height="138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0duMzBaPuy59UVGc3wTwi-BpjcR8mNh1DvkF6fS7W7kPd7zRwiWZ3b_9ipSpro5oV1C4w4xye-U_f1Q_7kS8kZK-4c9P98pFfBhDefGKUByhvLFYUJH-O6jD1myXnxfMiR1TqlpkbZPFdif6fKUjR1yQhHNbOlgYfrZHxihH13bE8pPJIcrqP1g/w640-h138/Untitled.png" width="640" /></a></div><br />This is following on from <a href="https://manypies.paulmorriss.com/2023/10/salesforce-devops-can-you-get-away.html">yesterday</a> when I got a work item to review stage. Today I've found that you can ignore the pull request in git and work entirely within the DevOps interface to move that work item to the next stage in the pipeline.<p></p><p>I hit a problem with the deployment initially as there was an error in the XML for a report layout (duplicate column*). I had to abandon that work item, as I couldn't find a way to move it back through the process, to uncommit the changes and then commit all the files, apart from the troublesome one.</p><p>I also made a rookie error - you have to deploy profiles in order for newly created fields to be visible on the profiles you want.</p><h1 style="text-align: left;">Concepts</h1><div>Here are the concepts I think you need to be comfortable with in order to be able to work through this process.</div><div><br /></div><div>The stuff in setup is metadata, which underneath it all is a tree structure of XML files. Without really understanding the ins and outs of XML you need to be able to spot things like - this file defines a new custom field.</div><div><br /></div><div>The tree structure follows familar concepts like objects, report layout and profiles, as well as more obscure things.</div><div><br /></div><div>The deployment process is essentially updating those metadata files by copying them from one environment (i.e. Salesforce org) to another.</div><div><br /></div><div>The pipeline defines the order of environgments that work items move through.</div><div><br /></div><div>I think the word pull used in the work item and in the pull request doesn't need to be fully understand, but you do need to get this: for the first it's the things that might have changed that you want to include in your work item. For the second, it's the things that have changed that you want to move through the pipeline.</div><div><br /></div><div>* Surely this must be a bug in Salesforce? If a valid report layout can't be deployed then there must be something wrong with the way the XML is created.</div>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-65494231062526024482023-10-18T16:23:00.009+00:002023-10-19T15:54:26.525+00:00Salesforce DevOps - can you get away without knowing git? - part 1<p>Here at <a href="https://wycliffe.org.uk">Wycliffe</a> we've started looking into Salesforce DevOps Center [sic] and I've been doing some investigations. If you're a dab hand at DevOps in general then this isn't for you. If you've heard of it and want to know more then read on.</p><p>This <a href="https://www.salesforceben.com/salesforce-devops-center-step-by-step-tutorial/">step by step tutorial</a> is a good start. My observation is that, for whatever reason, in the past Salesforce didn't give much attention to the deployment process with Change Requests that were a bit faffy to use. So third parties developed their own tooling, and now Salesforce with their own DevOps Center are trying to catch up with those third parties.</p><p>One question I had as I actually started using DevOps Center was whether you needed to understand <a href="https://git-scm.com/book/en/v2">git</a>, or could you just get by with mostly ignoring it. When you set up DevOps Center you need to associate it with a git repository, so you have to at least interact with github.com. After that though, you can carry on, even though you don't really know what a branch is.</p><p>However, when I wanted to put my work item up for review, there was no more escaping:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhytRokOP_cTzfRgsscfG-2yozSkQe8NVxubLLR0nK7I2VljCrR66STIhj0nODjn4Xp-2T6ahst9Ksg-oZPER_YzaoagrM5QmazvpqW4JldH4AafosRr70m0dbnOz-oDGOeUghjdtApfSoN-NGgUog2mQLYRNJWLkkj7Rfh0PUnJjhFAi3pDbnuMg/s727/Untitled.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="362" data-original-width="727" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhytRokOP_cTzfRgsscfG-2yozSkQe8NVxubLLR0nK7I2VljCrR66STIhj0nODjn4Xp-2T6ahst9Ksg-oZPER_YzaoagrM5QmazvpqW4JldH4AafosRr70m0dbnOz-oDGOeUghjdtApfSoN-NGgUog2mQLYRNJWLkkj7Rfh0PUnJjhFAi3pDbnuMg/w400-h199/Untitled.png" width="400" /></a></div><br /><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p>The rest of my team haven't used git, though one has worked through a tutorial. My challenge is to try and lead them through the process and see if we can get by with understanding just the bare minimum of how git works. I'll write more posts about that as I explore.</p><p>Bonus link via <a href="https://jvns.ca/blog/2023/10/06/new-talk--making-hard-things-easy/">Julia Evans</a>, <a href="https://roadrunnertwice.dreamwidth.org/596185.html">why Git is hard</a>.</p>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-75957949835310780912023-07-11T12:59:00.000+00:002023-07-11T12:59:01.459+00:00How should you develop yourself as an IT professional?<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRc8A8Uy4nMPe5vwJR4SVfoULjNM4KwG8p5ZICQz0rVQxTmRwYpiVrpdimySIQgzFiU4xpcW7wRRMzKdugzYNUye_dmAB0brVghePVdBc7YxaYUJprz-Y9NZbBye1-UI_DoNDrbV1ldHDgsg8ZjsOQOcgeWxEBl8SNxg0FZODvsXL9BREdVgWQtw/s7360/scott-graham-5fNmWej4tAA-unsplash.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4912" data-original-width="7360" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRc8A8Uy4nMPe5vwJR4SVfoULjNM4KwG8p5ZICQz0rVQxTmRwYpiVrpdimySIQgzFiU4xpcW7wRRMzKdugzYNUye_dmAB0brVghePVdBc7YxaYUJprz-Y9NZbBye1-UI_DoNDrbV1ldHDgsg8ZjsOQOcgeWxEBl8SNxg0FZODvsXL9BREdVgWQtw/s320/scott-graham-5fNmWej4tAA-unsplash.jpg" width="320" /></a></div><br /><p><br /></p><p>Photo by <a href="https://unsplash.com/@homajob?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Scott Graham</a> on <a href="https://unsplash.com/s/photos/learning?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a></p><p>One of my colleagues was picking my brains recently as they were creating career development materials for a variety of jobs across our organisation. They specifically wanted to point to organisations that had good guides. For professions like accountancy and HR there were some very specific Chartered Institutes that had CPD materials. For IT though, I think it's very different.</p><p>I've been with <a href="https://wycliffe.org.uk">Wycliffe</a> for nearly 25 years, so I don't have a lot of wide experience. However we have recruited three people (developer, IT manager and a tech support role) in the past few months, so I've seen several CVs and what people are saying on them.</p><p>As far as Chartered Institutes go, I'm aware of the <a href="https://www.bcs.org/">BCS</a> and the <a href="https://www.ieee-ukandireland.org/">IEEE</a> in the UK. However, none of the CVs that I looked at mentioned either of them. From my perspective, when it comes to recruiting people experience counts for more than anything else (though specific qualifications in, e.g. Azure AD are of some use). </p><p>Through the BCS and their <a href="https://www.ieee-ukandireland.org/">SFIAplus</a> I came across the <a href="https://sfia-online.org/en/sfia-8/documentation">SFIA</a> skills framework. It does seem quite comprehensive. I'm open to debate, but I think IT is a much wider field than Finance or HR. </p><p>I think SFIA will answer the question "in my particular area, where should I be putting my effort to gain skills" or progress in my career, or other ways of describing getting on. However, is there anything more generic. In fact my colleague had already come across the <a href="https://www.vitae.ac.uk/vitae-publications/rdf-related/researcher-development-framework-rdf-vitae.pdf/view">Research Development Framework</a>. Although it is aimed at the research profession in fact I think the topics in the inner circle and the quadrants, with a bit of tweaking, could apply to IT - creativity, self-management, professional conduct - all good things.</p><p>So in the end we pointed people at that framework and the <a href="https://www.ieee-ukandireland.org/cpd/">IEEE CPD materials</a>. I hope you find them useful.</p><p>It would be interesting to get the perspective from both of my blog readers - does experience count for everything in IT? Is there any field in which being a Chartered Engineer is a distinct advantage?</p>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-32945125389827382572023-04-26T15:44:00.005+00:002023-04-26T15:46:35.171+00:00Management lessons from powerboating<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHAK311_cnRsz3rP1x6Ob93ZjbJRNCyM_Z9Vs5xXy3j7xs7JMAWY-1UeWd-S9P1Nc9fNINpWj-FROExDGkX9NEOUevV8gRcgJaXjG08imbpq2gSUK8u82kAD8iuV4P3N3f35ieYpvH5sRMo3pgNoF-cTdxVPjViAAPqS9bfECHSpuxVP9uNjc/s4000/red-zeppelin-qJc3FI-KaZk-unsplash.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="Ariel view of a powerboat driving away from a partly submerged rock formation" border="0" data-original-height="3000" data-original-width="4000" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHAK311_cnRsz3rP1x6Ob93ZjbJRNCyM_Z9Vs5xXy3j7xs7JMAWY-1UeWd-S9P1Nc9fNINpWj-FROExDGkX9NEOUevV8gRcgJaXjG08imbpq2gSUK8u82kAD8iuV4P3N3f35ieYpvH5sRMo3pgNoF-cTdxVPjViAAPqS9bfECHSpuxVP9uNjc/w400-h300/red-zeppelin-qJc3FI-KaZk-unsplash.jpg" width="400" /></a></div>I recently filled in my quarterly review form. One of the questions was "Outside of your work context, what opportunities do you have to learn and to grow? How do these influence you when you are at work?" (OK two questions.)<p></p><div>I answered that I'd done a <a href="https://www.rya.org.uk/training/courses/level-2-powerboat-handling-pl2c">powerboating course</a>, but this had no influence on my work. I've submitted my review now, but I realise that I was wrong.</div><div><br /></div><div>One of the exercises we did was to go and retrieve a boat moored to a pontoon out in the lake where I was being trained. I was at the helm and we drove by it and the crew didn't take the action I'd expected. The fault was in my communication - I hadn't communicated clearly what I'd expected them to do, just suggested what could happen.</div><div><br /></div><div>On a boat whoever is at the helm has the responsibility for steering it, but also getting the crew to do whatever is necessary to implement whatever manouvre is in progress. It's very much a positional responsibility - if you've got the steering wheel (or tiller) in your hand, then you're in charge at that time. During our training the instructors and my fellow trainees took in turn to take the helm. Experience or seniority didn't count for so much - though we were listening to the advice of the instructor!</div><div><br /></div><div>In work, leadership and management isn't so flexible. There are roles, and organisation structure, and levels of authority. However, in any given situation it may be clear who is in charge, regardless of structures, and that person needs to take the helm and lead.</div>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-14421226626554226142023-03-27T08:21:00.004+00:002023-03-27T08:21:52.786+00:00Google analytics engagement time not working - how I found out the problem<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAWWGhaN3o02-_Wxm5_ZS96-tfdDRlIbdVhe80BFn4nnnSZ-jAcToTY736lVeMfLbRp9YIHjRpxOCeAuY2COCVyQsTk-za9sP2f-L0lXn6aLIkOTvfvQjAmMgueere0Qxns8jN9dm_eht5mU-BB4CQ520S4d7XGZMbVXbPRcM_Q1c-RA7BtGE/s849/Untitled.png" style="margin-left: 1em; margin-right: 1em;"><img alt="A graph showing a zigzag line, but on the left hand scale the scale values are all zero. At the top it says the average engagement time is zero." border="0" data-original-height="385" data-original-width="849" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAWWGhaN3o02-_Wxm5_ZS96-tfdDRlIbdVhe80BFn4nnnSZ-jAcToTY736lVeMfLbRp9YIHjRpxOCeAuY2COCVyQsTk-za9sP2f-L0lXn6aLIkOTvfvQjAmMgueere0Qxns8jN9dm_eht5mU-BB4CQ520S4d7XGZMbVXbPRcM_Q1c-RA7BtGE/w400-h181/Untitled.png" width="400" /></a></div><br />This is very niche, and is mainly of interest if you're using the <a href="https://www.webtoffee.com/product/gdpr-cookie-consent/">Webtoffee Cookie consent plugin</a> (there is a free version available too). However, if you're interested in debugging analytics problems, then this gives you some techniques.<p></p><p>The problem showed itself that the engagement time on our GA4 analytics was zero. As you can see from the graph above, not exactly zero, but certainly very small. I turned to <a href="https://webmasters.stackexchange.com/questions/141428/not-registering-engagement-time-in-ga4">webmasters.stackexchange.com</a> and got a response from jen. It didn't give me the answer, but pointed me to an analytics debugger extension for Chrome. I could see that using that the engagment time (_et parameter) wasn't zero, but was a small number of milliseconds, less than 50.</p><p>I tried a number of things on the cookie plugin settings, such as putting the Google Tag Manger code into cookie categories, as recommend by <a href="https://www.webtoffee.com/make-google-analytics-and-google-tag-manager-gdpr-compliant-using-a-free-plugin/">this article</a> (only for the free plugin though). That made the analytics script run when you accepted the cookies, but never after that. I tried disabling it, but it still didn't make engagement time get registered.</p><p>In the end though, the problem was that there was <a href="https://www.webtoffee.com/how-to-attain-gdpr-compliance-by-using-google-tag-manager/">code in our site theme</a> designed to work with GTM, but we hadn't been asked to do the corresponding changes in our GTM config. Once I removed that code the engagement time was a healthy number of seconds. I don't quite know why that caused this problem, but my theory is that the events it was triggering ran pretty quickly after the page loaded, and at that point the user engagement was recorded on those events, rather than when the user subsequently did something (scroll, navigate).</p><h2 style="text-align: left;">Other things to help with debugging</h2><div><ul style="text-align: left;"><li>Chrome application tab, cookie section, has a handy clear all cookies button to the right of the filter box.</li><li>Make sure you enable the analytics debugger extension when trying to debug!</li><li>Clear the site cache after making changes to the cookie plugin settings</li></ul></div><div><br /></div>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-20113940677973559742023-03-10T15:46:00.004+00:002023-03-10T16:15:24.737+00:00What's the difference between disconnecting from a remote computer and logging off?<p> I put this in one of our internal chatrooms, but it may be useful generally.</p><p>Some people are disconnecting from remote computers (using Remote Desktop) and not logging off when asked. If you disconnect all your programs are still running, even though you can't see them. If you log off, they're all closed down. Disconnecting is like leaving an office with your stuff all over your desk. Logging off is like putting everything away and leaving your desk clear, before you then leave the office. I got Dall-E to illustrate these:</p><p>Disconnecting:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbEuT5evT5oZTnLbm2T_pc2JEY7GrRP4GNtTlo2abBN3zr9H62wfkSt6IFKJi-DlwMqSQthgx4oeQEBs1wsstvnumMoc_7o8E8QtLTD-I9RNZELRPiQSMemDk36XhesChk5fhC9JOKfYO4Otdl0z9Zgm-bc2bqXb6cwAOPPILpoU-AYJkqhNY/s512/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="a woman walking out of an office door with books and papers still on the desk" border="0" data-original-height="512" data-original-width="512" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbEuT5evT5oZTnLbm2T_pc2JEY7GrRP4GNtTlo2abBN3zr9H62wfkSt6IFKJi-DlwMqSQthgx4oeQEBs1wsstvnumMoc_7o8E8QtLTD-I9RNZELRPiQSMemDk36XhesChk5fhC9JOKfYO4Otdl0z9Zgm-bc2bqXb6cwAOPPILpoU-AYJkqhNY/w320-h320/1.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;">Logging off</div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHnp9NXsdPd3VurajXM2WV0bjlikAgPveZZ7D6hZG2uyRwvRKoIOhWHPr4BvvoxQnbzVnPrAzCmaU1E2AiMqcInZcY0liELpTcjS5RraAAp7bGVn1x4M8PJWF9ToR8pPDX_3pEPV_F58C73BAQKEVFczBouah769J-qK5T7jVXaZjf7sDIB8I/s512/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="a man walking out of an office leaving a clear desk behind" border="0" data-original-height="512" data-original-width="512" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHnp9NXsdPd3VurajXM2WV0bjlikAgPveZZ7D6hZG2uyRwvRKoIOhWHPr4BvvoxQnbzVnPrAzCmaU1E2AiMqcInZcY0liELpTcjS5RraAAp7bGVn1x4M8PJWF9ToR8pPDX_3pEPV_F58C73BAQKEVFczBouah769J-qK5T7jVXaZjf7sDIB8I/w320-h320/2.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;">To disconnect:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyUMWSHZZw8w2HI-Ykxb1N0q8krwDf5HDfAZjzuUjBkmXH1NlIW7nfy4oUDW784seLB-W99Tz-_ZlABpAgoHM6WdbjpVVHu2OWzTij2fLH76BvgWDDgyhqMsoIj82ZK6skjSZLU5oiHFkn6aJr47C9Yj9mLhgsas_JFFONnrExlD0AqXlXIwg/s198/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="198" data-original-width="98" height="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyUMWSHZZw8w2HI-Ykxb1N0q8krwDf5HDfAZjzuUjBkmXH1NlIW7nfy4oUDW784seLB-W99Tz-_ZlABpAgoHM6WdbjpVVHu2OWzTij2fLH76BvgWDDgyhqMsoIj82ZK6skjSZLU5oiHFkn6aJr47C9Yj9mLhgsas_JFFONnrExlD0AqXlXIwg/s1600/3.png" width="98" /></a></div>To log off (ok, sign out is the new fangled word for it)<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLQHTVvpj9uKHqRdOvbJZ-FKLTcN6GUMxdarF5XpdrkCl3_cYB6hePqFtn5T3o4pycu7d1W7VvkePLqPQ5MfO4YyGI0pNySt9Sse2c5b5xQ0W9Z8MkK4-uZfpND3QPiwNiH2yZPMCBsFojH_0b6Z00oYDdFuv-iLjaAtbKUsdo70lJ1RS_erQ/s253/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="253" data-original-width="165" height="253" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLQHTVvpj9uKHqRdOvbJZ-FKLTcN6GUMxdarF5XpdrkCl3_cYB6hePqFtn5T3o4pycu7d1W7VvkePLqPQ5MfO4YyGI0pNySt9Sse2c5b5xQ0W9Z8MkK4-uZfpND3QPiwNiH2yZPMCBsFojH_0b6Z00oYDdFuv-iLjaAtbKUsdo70lJ1RS_erQ/s1600/4.png" width="165" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div>Click on that icon of a person to get the sign out option<br /><br /><p></p>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-76694198473328008482023-02-02T10:35:00.003+00:002023-02-02T10:35:28.793+00:00We all have supercomputers now<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsjQUsxAktun8soqTv2jt_xjvaisCJuMHY5bTnEL3SnYzWMZoapUUgUqoGysnFtZIvLkEBea8J5GdbNLTda5jFHgNLE8sK0sxQPlnWg6N9sH_lhyn_ZgVvyrkaJtEy5OHs--F6sS7f6jAnX16ugZJHNl0ygrlog1sVliCcYVsJXLLQFv_W2v8/s4128/Digital_Effects,__Video_Palette_I,__1979,_DEI19790701_ESP022.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2741" data-original-width="4128" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsjQUsxAktun8soqTv2jt_xjvaisCJuMHY5bTnEL3SnYzWMZoapUUgUqoGysnFtZIvLkEBea8J5GdbNLTda5jFHgNLE8sK0sxQPlnWg6N9sH_lhyn_ZgVvyrkaJtEy5OHs--F6sS7f6jAnX16ugZJHNl0ygrlog1sVliCcYVsJXLLQFv_W2v8/s320/Digital_Effects,__Video_Palette_I,__1979,_DEI19790701_ESP022.jpg" width="320" /></a></div><br /><p><br /></p><p><a href="https://commons.wikimedia.org/wiki/File:Digital_Effects,_%22Video_Palette_I,%22_1979,_DEI19790701_ESP022.JPG">Judson Rosebush</a>, <a href="https://creativecommons.org/licenses/by-sa/3.0">CC BY-SA 3.0</a>, via Wikimedia Commons</p><p>I was watching a TV programme of 80s and 90s music videos the other day. I was marvelling at just how relatively advanced the video techniques and transitions were - such as the picture rolling up and zooming off the screen. In my mind I kept going round this little loop - "isn't that amazing for the time" - "but the technology I was using was so primitive" - "isn't that amazing for the time" - etc.</p><p>Then a realisation struck me as to why I was in this loop: These days I have access (though I don't use it) to such the type of technology that is used in, say, Avatar. I'm sure there's a bit of software out there that I could use that would do motion capture. I've heard of things like <a href="https://www.blender.org/">Blender</a> which I could use to create 3d environments. I'd need to learn some stuff, I might want to buy some hardware to reduce render times, but it's all within my grasp.</p><p>In the 80s and 90s though, the height of what I could reasonably expect to be able to create myself (given time and skill) was <a href="https://en.wikipedia.org/wiki/Manic_Miner">Manic Miner</a> and <a href="https://en.wikipedia.org/wiki/Doom_(1993_video_game)">Doom</a>. Those video effects came from computers like the <a href="https://en.wikipedia.org/wiki/Quantel_Paintbox">Quantel Paintbox</a>, which at $150,000 cost more than a house. (OK, not a fair comparison, as you could get houses so cheap then. It cost more than an expensive car.)</p><p>So, we all have supercomputers now. What are we doing with them?</p>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-50609036092036267372022-12-07T15:02:00.000+00:002022-12-07T15:02:08.891+00:00Juicy questions 1: Six digit numbers and the question of patterns<div class="separator" style="clear: both;"><a href="https://xkcd.com/2543/" style="display: block; padding: 1em 0px; text-align: center;"><img alt="Woman: I've never told anyone this before. I know I shouldn't, but I feel I can trust you. My one time code is 263827 Man:*gasp*" border="0" data-original-height="206" data-original-width="366" src="https://imgs.xkcd.com/comics/never_told_anyone.png" width="320" /></a>I have a small number of questions that pop into my head from time to time. I bat them away because they're juicy and I'd like to consider them another time. I never do though. Until now though. My question, which I think I've been thinking about since I was a child, is this:</div><blockquote><div class="separator" style="clear: both;">How many numbers have patterns in them?</div></blockquote><p>Let's restrict it to 6 digit numbers for sake of example. My phone number used to be like this (digits have been substituted): 230191. That 191 is a pattern, as the digit 1 is repeated either side of the 9. </p><p>I'm using one time codes in lots of places now. A lot of the time* the third and fourth numbers seem to be the same. That feels like a pattern too. As does 128348, and so on.</p><p>The key question then is, "what is a pattern?". Apart from repeated digits, can we generalise it? That is why it's a juicy question, and I'd welcome any wisdom on it.</p><p>*This is one of those <a href="https://www.visualcapitalist.com/every-single-cognitive-bias/">hundred or so cognitive biases</a>.</p>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-898504218143586542022-11-29T17:20:00.000+00:002022-11-29T17:20:19.488+00:00Secret money (if you know what I mean) - can you trust it?<p>I'm using the words "secret money" but you know what I mean - c----------y.</p><p>"When are you going to give us your opinion?", literally no-one has been asking. I had some vague thoughts, which never got anywhere. I mentioned this in the comments on Tim Bray's post on <a href="http://www.tbray.org/ongoing/When/202x/2022/11/19/AWS-Blockchain">AWS and Blockchain</a>. </p><blockquote>"If I could get some coherent thoughts on it I would write something about "you've got to trust somebody", like the person who created that executable that's your on-ramp to the blockchain."</blockquote><p><a href="https://dkretzmann.blogspot.com/">Doug K</a> said</p><blockquote>"Bruce Schneier wrote that coherent essay, look on his website for the post Blockchain and Trust."</blockquote><p>Here it is: <a href="https://www.schneier.com/blog/archives/2019/02/blockchain_and_.html">Blockchain and Trust</a>.</p><blockquote><p> "What blockchain does is shift some of the trust in people and institutions to trust in technology. You need to trust the cryptography, the protocols, the software, the computers and the network. And you need to trust them absolutely, because they're often single points of failure."</p></blockquote><p>Thanks Bruce, for putting it so well.</p><p> </p>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-24218790140863691092022-09-08T13:54:00.007+00:002022-09-08T14:01:17.433+00:00FormAssembly and Salesforce connectors - advanced techniques<p>Following on from my <a href="https://manypies.paulmorriss.com/2022/08/formassembly-salesforce-connector-review.html">initial post about FormAssembly and Salesforce</a>, here are some advanced techniques.</p><p><a href="https://wycliffe.org.uk">We</a> use a particular technique with our <a href="https://formassembly.com/">FormAssembly</a> forms and Salesforce when it comes to looking for existing contacts, creating new ones, and doing further updates on Salesforce.</p><p>The Form Submitted connector runs after the user clicks the submit button. Once it's finished the user gets the acknowledgement message, or gets redirect to the page saying it's worked. The reason we put some of our processing here, is because if it fails the user gets told with an error message. If we used the After Form Submitted connector then they wouldn't see the error message they would think it worked. Although we get emails if the connector fails, it may be a few days before someone gets round to reading that email and contacting the user to say it didn't work.</p><p>The error message won't mean much to them, as it'll be Salseforce jargon, but hopefully they'll pass it onto us and we can help them. Or if it's something that is fixable (e.g. an invalid email address) then they may retry. (FormAssembly email validation lets email addresses through that Salesforce says are invalid.)</p><p>So in the Form Submitted connector we look up the user by email, and create a contact if they don't exist. If they do exist we also take the opportunity to update fields, like their name. Then in the After Form Submitted we look them up again. We know this will work, because the previous connector created them if necesssary. Then we do whatever the form requires, e.g.</p><p></p><ul style="text-align: left;"><li>if they're signing up for a subscription then add them to a campaign</li><li>if it's something we need to do, create a case</li><li>if it's giving consent for something, add a consent (we use <a href="https://giveclarity.org/">GiveClarity's</a> own consent system)</li></ul><h2 style="text-align: left;">Duplicates</h2><div>One problem with creating contacts like this, is that you may get a duplicate message. Even though Salesforce considers this a warning, FormAssembly considers it a fatal error. (I suggested to them that they don't do that, but I couldn't get them to understand what I mean.) So we had to set our duplicate settings on Salesforce so it does nothing about them, apart from add them to the possible duplicates report. It does mean though, that we need to be vigilant about running that report.</div><div><br /></div><div>Do you have any tips about using FormAssembly and Salesforce together?</div><div><br /></div><p></p>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-86230776027038590952022-08-03T16:23:00.002+00:002022-09-08T13:57:22.925+00:00FormAssembly Salesforce connector review<p>One of the consultants we used for our switch to <a href="https://manypies.paulmorriss.com/2021/07/from-causeview-to-npsp.html">Salesforce and NPSP</a> recommended we use <a href="https://formassembly.com/">FormAssembly</a> for getting data from webforms into Salesforce. That was a very good recommendation, and so I'd like to say a bit about my experience with the FormAssembly to Salesforce integration.</p><p>FormAssembly has various integrations, Salesforce is only one of them. They can run at one of three points - when a form is loaded, when it's submitted and after it's submitted. The difference between the latter two is subtle. When you click the submit button then "when" run is one and the user gets the success page when it's complete, or an error if it fails for any reason. At that point the "after" one runs and the user is unware.</p><p>I'm not going to do a <a href="https://help.formassembly.com/help/get-started-with-salesforce">full tutorial</a> as the FormAssembly documentation is very good. I'm just writing here to say that it's very easy to use, even if you're not a Salesforce admin. When you start using the connector you can create, update or lookup an object. Depending on how that went you can then create, update or lookup a subsidiary object and so on.</p><p>So a typical case might be that you lookup the email address on the form to find a contact with that email address. If you find them carry on to the next step, otherwise you add them. </p><p><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgeywictUyW4_G5vBktzjKn8K503jvVrUmtcsywY5du4FDuSk6ruM52tOJLVHR0qbshhenYhCMHNH_ZWdaoKWGPChJWnKbzuI3J06OSghuTDA39MNqYCY1wJiY42zD4w7KNUrbdXilfxiEtXshkUh74OyLx0N2AIPBpVDtgNXdT2sHg3x-m4-M" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="317" data-original-width="573" src="https://blogger.googleusercontent.com/img/a/AVvXsEgeywictUyW4_G5vBktzjKn8K503jvVrUmtcsywY5du4FDuSk6ruM52tOJLVHR0qbshhenYhCMHNH_ZWdaoKWGPChJWnKbzuI3J06OSghuTDA39MNqYCY1wJiY42zD4w7KNUrbdXilfxiEtXshkUh74OyLx0N2AIPBpVDtgNXdT2sHg3x-m4-M=s16000" /></a></div><br />You can do all this by clicking around the user interface, so it's very #clicksnotcode. FormAssembly has a formula function, not specific to the Salesforce connector, and this can be used, for example, to turn two address line fields into a single Mailing Street field with a carriage return between the two lines:<p></p><p><span style="background-color: white; color: #323333; font-size: 13px;"><span style="font-family: courier;">@CONCATENATE(%%tfa_10%%,@IF(%%tfa_11%%,@CONCATENATE(@CHAR(13),%%tfa_11%%),""))</span></span></p><p><span style="font-family: courier;">tfa_nn</span> are the internal names for the fields.</p><p>This combination of FormAssembly and Salesforce has met our needs so I'm very pleased with it.</p><p>Update: I wrote a followup post on <a href="https://manypies.paulmorriss.com/2022/09/formassembly-and-salesforce-connectors.html">FormAssembly and Salesforce advanced techniques</a></p><p></p>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-74915836999255848612022-07-06T16:16:00.001+00:002022-07-06T16:16:21.357+00:00Are spreadsheets really all that bad for storing data?<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRuttNs6ohdGi7jpRG88RhU0V68AplJnfgZvNTi5Qjr0Yg7TbEKctypaowVdt0Ziisfemy74DIH-b7BWm5Ct2wpFsiMEk9HgJOgjzng3axHtplxG79PFg2oTrOONU6SYooBxHJ-kUeB3APNSgx2x1JygfSbNAYrPCi7OR7n1BpTceO4tFyYKI/s9338/krakenimages-8RXmc8pLX_I-unsplash.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="6226" data-original-width="9338" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRuttNs6ohdGi7jpRG88RhU0V68AplJnfgZvNTi5Qjr0Yg7TbEKctypaowVdt0Ziisfemy74DIH-b7BWm5Ct2wpFsiMEk9HgJOgjzng3axHtplxG79PFg2oTrOONU6SYooBxHJ-kUeB3APNSgx2x1JygfSbNAYrPCi7OR7n1BpTceO4tFyYKI/s320/krakenimages-8RXmc8pLX_I-unsplash.jpg" width="320" /></a></div><p>Photo by <a href="https://unsplash.com/@krakenimages?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">krakenimages</a> on <a href="https://unsplash.com/s/photos/shock?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a></p><p>There, I said it. You were thinking it though weren't you?</p><p>If you're responsible for a CRM then spreadsheets are the bane of your life. People download them and then leave them lying around for years. People use them for storing information that should really live in the CRM but for various reasons they set up their own spreadsheet.</p><p>Some of those reasons are understandable. Spreadsheets are really good for laying small amounts of data out and easy to update. If the information was in the CRM it might be a bit more work to find and maintain. The downside is (I feel I hardly need to tell you) that it's not easily accessible to other CRM users, it goes out of date and just feels <i>wrong.</i></p><p>I'd like to propose the controversial opinion that there may be some circumstances where that data is OK living in a spreadsheet. At this point I expect you're sharpening your pitchfork ready to come and drive me out of the CRM village, but hear me out. I think there are a limited number of cases where it's OK. Here they are:</p><p><b>The number of records is limited</b>. You may have X thousand or million records on your CRM but for a small group of records there is a lot of extra information you want to store. Rather than add a number of fields for all those records, it may be OK to store them in a spreadsheet.</p><p><b>The data isn't complex.</b> It fits on a single sheet. There are no complicated relationships. There may be lookups, but they have simple lists behind them.</p><p><b>Everyone knows where it is</b>. Well not everyone, but everyone who needs to know. So access does have to be limited to those people.</p><p><b>The procedures are clear.</b> Although the data is stored in an informal way, it still needs to have good procedure around it so that people know how to update it.</p><p>Have I convinced you? Are there other rules you'd want to add to my list?</p>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-889183670865630882022-06-28T08:26:00.001+00:002022-06-28T08:26:04.507+00:00Users as testers<a href="https://unsplash.com/@lazycreekimages?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText"></a><div class="separator" style="clear: both; text-align: center;"><a href="https://unsplash.com/@lazycreekimages?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhS4wWm4R9FQQTG4aIFWc1EPX0yo30NeBuaf-1mfW5ZZOwEAlFHZHv_3IGdQ4l_yiuav5uD-vj3KmhDoiTOpNa5z3RuBFWIn6dMysQoL2y9iWjVDAfhQR1izV0B8VkFv1emQ4Y-KBq551TlCLbZmTejk758CVofxiKSZGQgEvVqgzzmMUfKls/s4568/michael-dziedzic-0W4XLGITrHg-unsplash.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3434" data-original-width="4568" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhS4wWm4R9FQQTG4aIFWc1EPX0yo30NeBuaf-1mfW5ZZOwEAlFHZHv_3IGdQ4l_yiuav5uD-vj3KmhDoiTOpNa5z3RuBFWIn6dMysQoL2y9iWjVDAfhQR1izV0B8VkFv1emQ4Y-KBq551TlCLbZmTejk758CVofxiKSZGQgEvVqgzzmMUfKls/w400-h301/michael-dziedzic-0W4XLGITrHg-unsplash.jpg" width="400" /></a></div>Photo by Michael Dziedzic on <a href="https://unsplash.com/s/photos/computer-broken?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
<p>By "Users as testers" I don't mean the way some companies throw out software which isn't quite finished, without admitting that, and let people find the bugs.</p><p>I'm talking about normal human beings, as opposed to IT people, who get to use technology that previously would have been unavailable or require too much specialist skill. This article is for you normal human beings, and says what you need to know about testing stuff.</p><h2 style="text-align: left;">Thinks break by themselves</h2><div>I remember someone who had set up some sort of automatic process and was surprised when it stopped working, without them realising. He said, "I assumed that once it was set up it would keep on working". It would be really nice if that was the case, but unfortunately it's not. The trouble is with processes like this, like something that sends you an email if some rare event happens</div><div><ul style="text-align: left;"><li>something somewhere along the line gets changed and things don't fit together and they stop working</li><li>something was a paid service and someone stopped paying the bill, or a credit card expires and no-one notices</li><li>a computer gets upgraded and the thing is no longer possible with the upgraded system</li><li>someone leaves, their email gets closed down, and then no-one gets notified</li></ul><div><br /></div></div><div>So if a process is important to you, then it's worth checking regularly that it works. How regularly? Ask yourself how soon would you like to know that it stopped working.</div><div><br /></div><h2 style="text-align: left;">If you change something then you have to check it</h2><div>Many years ago I was working on a system for controlling gas pipelines. Something asked me to make a very small change. I didn't check that the change worked, as they were in a hurry. They took the tape the next day (it was many, many years ago) and went to the control room and installed the new version. It didn't work, so their whole day was wasted.</div><div><br /></div><div>Even if you're not a programmer you might:</div><div><ul style="text-align: left;"><li>write a spreadsheet formula</li><li>create a form</li><li>use some fancy website tool which links two things together</li></ul><div>If you change something then you have to check that it works. The thing you change might be something as simple as adding a new thing to a list. There are several ways that just adding the thing may not work out:</div></div><div><ul style="text-align: left;"><li>There are in fact two lists, and you need to add the new thing to the other list too</li><li>You may have typed something in that's too long, and it doesn't work</li><li>There are a maximum of five items in the list and you just added the sixth</li></ul><div>So if you change something, then check that whatever you changed has the effect that you want.</div></div><div><br /></div><h3 style="text-align: left;">The other check</h3><div>The other thing to check is that everything else works as it should before. As I said above, just because something was working doesn't mean it will carry on. In making a change in one area something else may now not work, as a side effect of what you've just done. It's not going to be practical to check every aspect, but you can check two things:</div><div><ol style="text-align: left;"><li>If you have an idea how things work underneath (and you may not, some things are very mysterious) then you can check the things that are linked to what you changed.</li><li>The important things - do they still work?</li></ol></div><div><br /></div><h2 style="text-align: left;">How to check</h2><div>I can't give much specific advice on this, because a lot depends on whatever it is you're changing. Here are some general tips though:</div><div><ul style="text-align: left;"><li>Check things two ways, such as adding up numbers from two different sources that should be the same</li><li>Assume you know nothing about how it works (which may be true - see "mysterious" above), check that it does what it should be doing</li><li>Check the extremes - the biggest or smallest numbers</li><li>Put in rubbish - if a number is expected then how does it handle ?Elephant99!</li><li>Try different combinations. If you have something that can be A or B and something else that can be X or Y then try AX, AY, BX and BY in case there's some interlink</li></ul></div><br />Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-79605149427711635612021-07-06T15:56:00.001+00:002021-07-06T15:56:41.420+00:00From Causeview to NPSP<p>It's been a while since I said anything about Salesforce on here. I'm now able to talk about something that's been going on for a while. For the past four years we've been using <a href="https://causeview.com/">Causeview</a> (recently acquired by <a href="https://www.softerware.com/">Softerware</a>, the company behind DonorPerfect) for donations processing and events. We've decided to switch to <a href="https://www.salesforce.org/nonprofit/nonprofit-success-pack/">NPSP</a>. It was available at the time we switched to Salesforce from Raiser's Edge, but is looking a better product these days.</p><p>It's not a like for like switch, as Causeview includes Gift Aid and Direct Debit handling, which NPSP doesn't, so we're using <a href="https://findock.com/">Findock </a>for those parts.</p><p>So far, so executive summary. We're right in the messy middle of the project, with dataloading going on now ready for UAT soon. So there's lot's going on.</p><p><br /></p>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-7298321246948018692019-10-25T12:50:00.000+00:002019-10-25T12:51:00.934+00:00Downloading Yahoo Groups emails (and other stuff)Yahoo is closing its groups website. The email function will still work, but there will be no web presence.<br />
<br />
<blockquote class="tr_bq">
Attention: Starting December 14, 2019 Yahoo Groups will no longer host user created content on its sites. New content can no longer be uploaded after October 28, 2019. Sending/Receiving email functionality is not going away, you can continue to communicate via any email client with your group members.</blockquote>
<br />
Recently I downloaded the emails, pictures and files from a group. I found a <a href="https://github.com/IgnoredAmbience/yahoo-group-archiver">Python script to do it</a>. I couldn't get it to work with my username and password, even though I generated an application specific password for it. I did get it to work like this though:<br />
<br />
<ul>
<li>Log into Yahoo and join the group if you haven't already (if it's a public group you may not need to join it.</li>
<li>In Chrome press F12, go to Application Tab, Cookies under Storage and click on https://groups.yahoo.com</li>
<li>Find the line with T in the Name column</li>
<li>Right click on the Value column and choose edit</li>
<li>Copy the long string and paste it somewhere</li>
<li>Repeat for the Y cookie.</li>
<li>Edit the file yahoo.py and put the T and Y values into this line:</li>
</ul>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">yga = YahooGroupsAPI(args.group, "<i>T value</i>", "<i>Y value</i>")</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div>
<span style="font-family: inherit;">Run the script (I'm assuming you know how to do that), and you should find it downloading all emails, files and attachments.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">You end up with .eml files for each email. In order to get them into something vaguely readable I used Thunderbird, imported all the eml files into a local folder, and then used the <a href="https://addons.thunderbird.net/en-US/thunderbird/addon/importexporttools/">ImportExportTools</a> addon in order to export the folder. You end up with an index.html file with a link to html emails in a subdirectory.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">It would be nice if the index file had a threaded view, but that doesn't seem to be in the addon.</span></div>
Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-37601026894586242352019-10-08T12:55:00.000+00:002019-10-08T12:55:34.515+00:00Ada Lovelace Day 2019 - Julia EvansFor this year's post I'm writing about <a href="https://jvns.ca/">Julia Evans</a>. She makes really well produced <a href="https://wizardzines.com/">zines</a> about programming - so Linux, HTTP, networking etc. She's gone full-time to do this and recently she posted about the <a href="https://jvns.ca/blog/2019/10/01/zine-revenue-2019/">revenue</a> she gets from it, which is useful, because I rarely see how much people make from side-projects and former side-projects. Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-17678822940690153432018-10-09T12:54:00.001+00:002018-10-09T13:00:31.024+00:00Ada Lovelace Day 2018 - Dr Hannah FryI've not done posts for Ada Lovelace Day since 2015, for no good reason I can think of. This year I'm highlighting <a href="http://www.hannahfry.co.uk/">Dr Hannah Fry</a>.<br />
<br />
Her book, Hello World, was released recently, so she's quite active on <a href="https://twitter.com/FryRsquared">Twitter</a> at the moment promoting that.<br />
<br />
<blockquote class="twitter-tweet" data-lang="en">
<div dir="ltr" lang="en">
My hand is still hurting three days later & by the end my name had morphed into 'Hammah Fly', but the good news is that there are signed copies of Hello World up on the Waterstones website: <a href="https://t.co/KMCwbvRzPa">https://t.co/KMCwbvRzPa</a> <a href="https://twitter.com/hashtag/HelloWorld?src=hash&ref_src=twsrc%5Etfw">#HelloWorld</a> <a href="https://t.co/19pV10rerc">pic.twitter.com/19pV10rerc</a></div>
— Hannah Fry (@FryRsquared) <a href="https://twitter.com/FryRsquared/status/1026496576238305280?ref_src=twsrc%5Etfw">August 6, 2018</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<br />
I've picked her because she's a good broadcaster and explainer of maths. I particularly enjoy the <a href="http://www.bbc.co.uk/programmes/b070cxxy">Curious Cases of Rutherford & Fry</a>, a 10 minute radio programme where they answer questions put by listeners. Each episode seems much longer as they pack so much in. The podcast version is a lot longer, so worth listening to in preference to the radio show.<br />
<br />
You can see a list of other programmes she's done on her <a href="http://www.hannahfry.co.uk/media/">media</a> page. I've enjoyed all of those that I've seen. This is my favourite tweet she's done (because I get the joke):<br />
<br />
<blockquote class="twitter-tweet" data-lang="en">
<div dir="ltr" lang="en">
I baked a tau. <a href="https://t.co/QTrtS7OdlV">pic.twitter.com/QTrtS7OdlV</a></div>
— Hannah Fry (@FryRsquared) <a href="https://twitter.com/FryRsquared/status/917802542104444930?ref_src=twsrc%5Etfw">October 10, 2017</a></blockquote>
<script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<br />
My previous <a href="https://manypies.paulmorriss.com/search/label/Ada%20Lovelace%20Day">Ada Lovelace Day posts are here.</a> <br />
<br />
<br />Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-54245144816177643532018-09-13T10:07:00.000+00:002018-09-13T10:07:12.296+00:00Work for me!We're advertising a <a href="https://www.wycliffe.org.uk/blog/vacancies/business-systems-assistant/">Business Systems Assistant</a> job to help share my workload. If you've come here after being there, then full marks for doing your homework. Mention this blog post should you be called to interview and you may get bonus points.<br />
<br />
If you think that a Macbook is standard issue, then I'm afraid you're going to be disappointed. That's stock photography for you. I don't much talk about what I do here, because it's mostly behind the firewall. However, with moving to Salesforce and launching a website (within a couple of days of each other) last year, and with moving to SunSystems and Workday later this year, and next year, there's a lot of work to be done. Plus we're doing a lot more in terms of fundraising, which means that people are hungry for data. So I've got enough work for two people, which is why we need another one!Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-76301636696926107002018-06-26T12:58:00.001+00:002018-06-26T12:59:11.203+00:00Morriss' law(s)I recently came across a couple of lists of software development laws:<br />
<a href="https://haacked.com/archive/2007/07/17/the-eponymous-laws-of-software-development.aspx/">The eponymous laws of software development</a><br />
<a href="http://www.globalnerdy.com/2007/07/18/laws-of-software-development/">Laws of software development</a><br />
<br />
I may or may not have publicly stated Morriss' law:<br />
<blockquote class="tr_bq">
Every site/program/app attempts to expand until it resembles Twitter</blockquote>
See Facebook, Skype, Confluence<br />
<br />
However on one of those lists I cam across: <br />
<h2 id="zawinskis-law" style="-webkit-text-stroke-width: 0px; background-color: white; border-bottom: 1px solid rgb(221, 221, 221); color: #555555; font-family: Georgia, Cambria, "Times New Roman", Times, serif; font-size: 1.3em; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: bold; letter-spacing: normal; margin: 30px 0px -20px; orphans: 2; padding: 0px; position: relative; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
Zawinski’s Law</h2>
<div style="-webkit-text-stroke-width: 0px; background-color: white; color: #333333; font-family: Georgia, Cambria, "Times New Roman", Times, serif; font-size: 19.5px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 300; letter-spacing: normal; margin: 30px 0px 0px; orphans: 2; padding: 0px; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
This law addresses software bloat and states…</div>
<blockquote style="-webkit-text-stroke-width: 0px; background: rgb(247, 247, 247); border-left: 5px solid rgb(68, 102, 197); color: #333333; font-family: Georgia, Cambria, "Times New Roman", Times, serif; font-size: 19.5px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 300; letter-spacing: normal; margin: 10px 0px 0px; orphans: 2; padding: 15px 20px; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div style="margin: 0px; padding: 0px;">
<i style="font-style: italic; margin: 0px; padding: 0px;">Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.</i></div>
</blockquote>
<br />
<br />
I was going to state Morriss' second law, which is like the first one, but has "until it has Stories", but I think there's Morriss' greater law at work here, which is something like:<br />
<br />
<blockquote class="tr_bq">
If they copy you, you're doing something right.</blockquote>
There's probably a better way of saying it though. <br />
<br />Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-56138936419913889512018-04-20T15:35:00.001+00:002018-04-20T15:38:01.123+00:00Free Salesforce postcode checkerWhile you can get Salesforce apps that check postcodes for you, here's a bit of Javascript that will check a UK postcode for you using the postcodes.io API and tell you if it's valid or not. It's not clever enough to suggest what the postcode might be, but then it is free.<br />
<br />
Create a new button on the Contact object (Display Type: Detail Page Button, Behaviour: Execute JavaScript) and put this javascript on it:<br />
<br />
<pre>{!REQUIRESCRIPT("/soap/ajax/20.0/connection.js")}
var postcode = '{!Contact.MailingPostalCode}';
if (postcode != '') {
postcode = postcode.replace(' ','%20');
sforce.connection.remoteFunction({
url : 'http://api.postcodes.io/postcodes/'+postcode+'/validate',
async : true,
cache : false,
method: "GET",
onSuccess : function(response) {
if (response.slice(-5) == 'true}') {
alert('OK');
} else {
alert('Wrong - check using https://www.royalmail.com/find-a-postcode');
}
},
onFailure : function(response) { alert('ERROR: '+response); }
});
}</pre>
For the Account object use <br />
<pre>{!Account.BillingPostalCode}</pre>
<br />
or<br />
<pre>{!Account.ShippingPostalCode}</pre>
as appropriate.Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-39470593356959056972017-09-27T12:16:00.000+00:002017-09-27T12:16:45.559+00:00Technology needs lights(Crossposted from my <a href="http://little-bits.paulmorriss.com/2017/09/technology-needs-lights.html">non-techie blog</a> because I put it on the wrong one to start with.)<br />
<br />
<a data-flickr-embed="true" href="https://www.flickr.com/photos/paulmorriss/36637785473/in/dateposted-public/" title="Computer lights"><img alt="Computer lights" height="374" src="https://farm5.staticflickr.com/4471/36637785473_ebe2e5b2f4.jpg" width="500" /></a><script async="" charset="utf-8" src="//embedr.flickr.com/assets/client-code.js"></script>
<br />
This is part of an IBM mainframe that I saw at the Science Museum in London. It's hard to imagine that anyone ever understood what they all meant. I think the reason there are so many lights is because there is so much to go wrong. The lights show when something's working, so no light means failure, or when something fails. These days the FLP BFR (flip buffer?) always does what it's supposed to, so we don't need to have a light for it.<br />
<br />
I remember when modems had a full set of lights: TX, RX, DCD, DTR and so on. I also remember using them to try and work out why connections weren't being made. As they became smaller and sleeker they had just a couple of lights to show activity. Then they disappeared altogether.<br />
<br />
We need lights for things we can't rely on. Once it's reliable the lights go away. Today I was re-reading the essay from Douglas Adams, "<a href="http://www.douglasadams.com/dna/19990901-00-a.html">How to Stop Worrying and Learn to Love the Internet</a>", written in 1999 (I wonder if that distinguished journalist still things the Internet is a fad). Quoting the computer scientist Bran Ferren he says, "Technology is stuff that doesn't work yet". Douglas illustrates this: "We no longer think of chairs as technology, we just think of them as chairs". So my corollary to this is <i>technology needs lights. </i>Chairs don't need lights.Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-85087377850963661112017-08-03T08:38:00.000+00:002017-08-03T11:24:06.062+00:00Raiser's Edge to Salesforce/Causeview part 2 - going liveIt's been a long time since <a href="http://manypies.paulmorriss.com/2016/06/raisers-edge-to-salesforcecauseview.html">part 1</a> and we've now gone live with Salesforce and Causeview. I may do another higher level post, but here are some low level thoughts. (Ivan Wainewright has a <a href="http://blog.itforcharities.co.uk/2016/12/6-roles-you-need-in-CRM-project-team.html">good post</a> on all the roles you need in your team. As you'll see I commented on it.)<br />
<br />
<h2>
Limitations</h2>
One of the attractive things with Salesforce is that you can add fields all over the place. However as you dig deeper you find limitations, such as the fact that you can't add custom fields to Notes, even though the <a href="https://success.salesforce.com/ideaView?id=08730000000BqjSAAS">idea</a> has been around for years (good to see it's in "product review" though). In some ways it's like being back to the good old days of Lotus Notes, where you could create new fields really quickly, though fortunately there is a bit more rigour involved than Notes had when putting them in.<br />
<br />
If you use a managed package, aka "app" then fortunately you can add fields to their custom objects, which we've made good use of. You can't rename their fields, though here's a tip: use "translations" to override them.<br />
<br />
The "classic" interface is two generations behind the latest UI aka "Lightning". The previous generation is VisualForce and you can't change the layout of VisualForce pages, so already things are being locked down for the sake, presumably, of better functionality and preventing people really mucking things up.<br />
<br />
<h2>
Tools</h2>
Apart from the standard Salseforce tools I recommend:<br />
<ul>
<li>The <a href="http://www.gooddaysirpodcast.com/">Good Day Sir</a> podcast is a useful source of information, though quite long. It has it's own <a href="https://gooddaysir.slack.com/">Slack</a>. (Is that a noun in it's own right?)</li>
<li><a href="https://www.crmfusion.com/demandtools/">DemandTools</a> has a good range of data manipulation tools and is free for non-profits.</li>
<li><a href="https://www.jitterbit.com/solutions/salesforce-integration/salesforce-data-loader/">Jitterbit</a> data loader has some powerful mapping tools for importing data. </li>
</ul>
<a href="http://purple-vision.com/">Purple Vision</a>, who helped us implement Salesforce/Causeview, has unfortunately undergone voluntary liquidation. <br />
<ul>
</ul>
Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-36728834383725685262016-11-30T14:27:00.000+00:002016-11-30T14:27:08.202+00:00I made an iPlayer radio thingThe BBC iPlayer radio app is going to stop working in January on iOS7. I understand the overhead in supporting multiple platforms, so I'm not going to complain about that. The iPlayer will still be available on the web though.<br />
<br />
I general listen to iPlayer radio while I'm washing up, which is around 6:30-7:30. I generally miss the start of the Radio 4 6:30 comedy slot, so I often listen to the previous working day's programme instead. In order to speed navigation to the previous day (or the one before that) I've made <a href="http://paulmorriss.com/iplayer.php">this page</a> which will take you to the evening schedule for 1, 2, 3, or 7 days in the past. Enjoy.<br />
<br />
<a href="http://paulmorriss.com/iplayer.php">iPlayer Radio 4 on previous days</a>Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0tag:blogger.com,1999:blog-6502667.post-66533692509113368822016-11-16T13:33:00.001+00:002016-11-16T13:33:58.163+00:00My decade on TwitterInspired by Jeremy Keith's post <a href="https://adactio.com/journal/11436">A decade on Twitter</a>, I'm doing my own. My <a href="https://discover.twitter.com/first-tweet#paulmorriss">first tweet</a> was in July 2006, with a 4 digit id, but so much less interesting than Keith's:<br />
<br />
<blockquote class="twitter-tweet" data-lang="en">
<div dir="ltr" lang="en">
Test</div>
— Paul Morriss (@paulmorriss) <a href="https://twitter.com/paulmorriss/status/9947">July 14, 2006</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>
Since then I've gained a large proportion of spam followers, many of them seemingly from Turkey, for no reason I can discern. I've seen what felt like a clubhouse turn into a commercial establishment, with adverts all over the place. I understand that it takes money to run, but after it ran with for many years at the start without adverts, they seem to have taken over relatively quickly. Part of it is the fact that I no longer regularly monitor my two lists ("work" and "play") which have all those I follow on them. As lists don't seem to have adverts the switch to the Twitter app brought a lot more to my attention.<br />
<br />
See also, written 7 years ago, <a href="http://manypies.paulmorriss.com/2009/04/twitter-is-big.html">Twitter is big</a>, which has subtle boasting about my early adopter status, and also when I heard it mentioned on radio. Another thing I remember from the early days, is when people were saying "there's a real celebrity on here - <a href="https://twitter.com/wilw">Wil Wheaton</a>". It was such a geeky thing that we were surprised that someone famous would want to use it. Hard to imagine now, eh?Paul Morrisshttp://www.blogger.com/profile/08703729053561158233noreply@blogger.com0