Work experience is dynamic and a person’s Curriculum Vitae should be too.
Professional development happens daily (for good employees) so it should be easy to record and add that development to your professional profile every day as well. Read more here, I created this blog/website to provide more detail about who I am, what I do, and my professional background.
Why do we address assets and liabilities in risk management planning? It seems odd to some and often not intuitive. Most often only assets are addressed when thinking about the impacts of a disaster.
I’ll focus only on liabilities here as I think the reason to include assets in risk management planning is obvious.
A liability is an obligation, often financial, the organization has undertaken or promised to undertake. Liabilities come in many forms including mortgages, loans, contract obligations, and even futures and options.
A building mortgage is the simplest example to use. Let’s assume the organization has an apartment building with tenants. Every month rent is collected and mortgage payments made. In the event of a risk event, fire or earthquake for example, the building becomes unlivable. Tenants are forced to find somewhere else to live and as a result the organization does not collect their rent. The mortgage lender doesn’t care, they’ve issued a loan contract and payments are still due. In this simple example, business interruption insurance should cover the lost rent, assuming the cause of loss is an insured peril. What happens when the cause is not insured though?
A slightly more complex example is contract obligations. Let’s use a software development company in this example. Let’s say the federal government signs a contract with the software developer to provide a software program in 6 months that fulfills certain criteria. The cause of loss doesn’t really matter; it could be building fire, earthquake, employment dispute, civil unrest, war, cyber attack, etc. At the end of the day the federal government issued a contract and expects delivery. If that contract has penalties for failure to deliver the developer is going to be liable no matter the cause. Alternatively, payment might be reliant on successful delivery of the software; rent and salaries can’t be paid with failed promises.
There is a lot of really good information in this book. It’s certainly a resource I will regularly revisit. I must admit, I did not read the final few pages as closely as others. I don’t have a team at lakebed.io yet so I don’t need to worry about all-hands meetings or about taking control of my calendar. I am certain I will revisit this book before those are issues.
Many years ago I said to my father, a successful executive and leader, “why not ask staff to do performance reviews of their bosses, if reviews only flow in 1 direction then there is less opportunity for improvement”. At the time my father said that’d never fly/work. Funny enough, that’s exactly what this book is arguing for.
Finally, it was interesting to gauge my mental/emotional state while reading. On the one hand, I am very excited to grow/scale lakebed.io. On the other hand I have had challenges with communication and personal connections and I’m not confident I can be a great leader. It feels like this is yet another thing to be good at; on top of numerous programming languages, full-stack development, server automation, information security, etc I now need to improve my communication. Scaling lakebed.io will very likely mean hiring a leader who is stronger than me and/or some leadership coaching. One of the best qualities, in my opinion, of a successful leader is the ability to identify gaps and hiring to fill them.
Loser: Apple. They don’t care about web apps. Actually, it’s worse than that. It feels like they are actually hostile to web apps. iOS Safari is the new Internet Explorer 6. It has lagged behind in nearly every web standard, especially around Progressive Web Apps.
I really enjoy this person’s writing, it has a good mix of sarcasm and technical details.
“I cannot stress enough how important a User Experience Team is at a startup. This is the team that’ll do the deep dive into your users. They will define company’s identity, branding, the needs of the users, the scope as well as validate whether what you’re building is actually meeting any of your goals!”
For example, in the puzzle I built above example with my girlfriend, we started by building the frame, then we gathered the pieces of trees,ground, castle and sky separately. We built each block separately, then at the end we collected all the bigger blocks together tohave our full puzzle. Possibly, if we didn’t follow this approach and we tried to build line by line, we could have done it, but itwould have taken a lot more eort and energy. We also wouldn’t have benefitted from being a team because we would have beenlooking at the same line, instead of doing working collaboratively and eiciently.
I found this incredibly valuable and would probably copy/paste the entire article if I pulled out the pieces I like.
What hit closest to home was:
Stellar teams have it all: hard and soft skills
When we talk about this balance between team member experience (hard skills) and passion and vision (soft skills) there’s a sweet spot where stellar teams seem to live. If team members are super smart and experienced, but they don’t feel like sharing this knowledge due to a lack of alignment about the vision for the company, their knowledge is useless for the business. Instead, these differences in passion and vision make teams perform worse. For example, if the CTO in the startup team has a lot of experience in the cyber software industry that is useful for building the current business, but she doesn’t agree with the CEO on the future strategy of the company, she is less likely to share all her previous knowledge on cyber software within the team.
I logged into Google Analytics based on a conversation with a friend yesterday. I couldn’t remember how/if GA can handle custom data points.
As a result I discovered I had added GA to the internal web applications and reports I built for Cansure. I was forced to go back on Long Term Disability in July 2018 so have not been with the organization for almost 1 year.
3,188 unique page views in 1 month!!!
420 page views some days!!!
84 active unique users in 1 month!!!
21 active unique users in 1 day!!!
Stats like that 1 year after development suddenly halts certainly confirms the value to the organization. I would also like to believe that while users are returning they are spending an average 3 minutes on the site implying users can efficiently achieve their goal(s).
I now remember the reason I added GA to the internal application was to gather usage numbers for reports to management and employee training. It was certainly not my goal/plan to go back after leaving the organization. GA can provide developers, especially a one-man-show, excellent insight into usage, workflows, and how intuitive the UI/UX is.
It’s really nice to recieve positive, objective feedback about the work I’ve done.
My understanding of server memory management is that base variables (i.e. $var_name) can have any, random memory pointer. Whereas arrays (i.e. $arr_name[$var_name]) must maintain the same memory pointer in order to be an array.
If that understanding is correct, then arrays, can be, inefficient for storing large data sets and and the more we can split data up and store in base variables the more efficient an application will be.
I wanted to confirm these assumptions so I wrote the following code.:
Test #1: 3,493,358 rows.
Each increment stored in it’s own, base level variable.
Test #2: 406,366 rows.
Each increment stored in a variable variable name.
Test #3: 1,048,576 rows.
Each increment stored in an array.
Test #4: 1,048,575 rows.
Each increment stored in an associative array.
Test #5: 2,041,227 rows.
Each increment stored in a global array.
Test #6: 262,103 rows.
Each increment stored in a global, multi-dimensional array.
Test #7: 2,049,229 rows.
Stored in an even deeper array.
I am surprised by the last test ($_SERVER[‘arr_name’][$inc] vs. $_SERVER[[$inc]). I would have thought adding an array depth would impact storage capacity but the capacity was actually, very marginally, higher.
To be fair, I would need to run these tests far more times and isolate/remove more variables. For example, I was listening to music and writing this post while running the tests, which impacts the servers memory allocation. It’s also worth noting this is PHP7.2 and I believe PHP7 has made drastic improvements in memory management.
This was entertaining as I enjoy pushing computers to their limits (but have never gotten into overclocking). I also did this because someone told me the other day, that I’m not a developer.
In a traditional organization, prioritization is mostly a HiPPO process: it’s based on the Highest Paid Person’s Opinion. “Stakeholder” is a shorthand for “someone further up the org chart than me”. And that means they can jerk my project around if they don’t like what they’re seeing, or force us to work on some idea they have about what it should do.
This is really scary and I would hope the offenders lost their jobs and privacy credentials.
“After one detective noted the suspect looked like Woody Harrelson, they used Google Image Search to find a picture of the actor. They used that picture in their facial recognition system to create a list of suspects and identify a possible match. ”
It would be easy enough to loop through all elements on a page and set the text and background color to the same color if the element content (text) contains a word or phrase from a list. By setting colors rather than deleting content the page wouldn’t break and the layout wouldn’t change but users would no longer have to see/read the blocked content.
This might be helpful in blocking out some of the negativity and crap common across all social media and much of the web.
Cars vs. bikes is a hot topic and I don’t feel like starting a flame war so I thought I’d write my thoughts here.
My, unpopular, opinion is that if cyclists want vehicles to respect them and treat them the same as other vehicles then cyclists must obey ALL THE SAME LAWS. Keeping in mind, I am a cyclist and spend at least 4-5x more time on a bike than in a vehicle.
When I am on a sidewalk, I often have 1 pedal unclipped somewhat making me a pedestrian, and absolutely always travel at walking speed. I never pass a pedestrian on a sidewalk without saying something like “if it’s OK I’d like to roll past you”. Sidewalks are pedestrian territory so anything on a sidewalk should be acting like a pedestrian.
When I am on a shared pathway I don’t exceed any posted speed limit, always ride with my head up keeping an eye out for other users, and slow down around any blind corner or sightline. I always ask to pass other users. I generally get off my bike around horses and give them a lot of extra room and communication. A horse rider is high off the ground and horses can be spooked into acting unpredictably.
When I am on the road, which is almost non-existent these days, I always come to a stop (I might still be moving at 1km/h) at stop signs and I always stop at red lights until they turn green.
When I first found myself getting frustrated with drivers I did some reading on road rage. One of the most impactful articles noted that cyclists disobeying laws, especially running stop signs/lights, breeds feelings of anger in drivers. When a person witnesses another [intentionally] breaking the law the natural reaction is “what makes them better than me or better than the law”. In many drivers the reaction is “I’m stuck here at a red light while that person is disobeying the law and running the red light”. This behavior, by it’s very nature, breeds an “us vs. them” mentality. Drivers will naturally see cyclists as “not drivers” if cyclists do not obey the same laws.
My thoughts come with the background information that I was very nearly killed by a driver doing something very stupid and very likely illegal. I have a lot of justification for a dislike of drivers and that’s where I went after my crash. I have since calmed down and recognize that everyone on the road is a road user and we are sharing a community/social resource so must work together to prevent danger/death.
Gabe Bauman was kind enough to tell me about Microsoft’s Text Analysis API. I happen to have been talking to his partner, Lilly, yesterday about Hootsuite and customer service via email, social media, chatbot, etc. Combining the two, I suggest automated customer service where if 1.) the system can generate an automated response, and 2.) if sentiment analysis is >75% positive then the system automatically respond to the message. As soon as the communication goes negative (I’m thinking a chatbot where the user types “WHY CAN’T I TALK TO A REAL PERSON???”) then the system flags it for human intervention.
This would allow customers to interact and give compliments while freeing customer service agents up to deal with the most pressing, negative feedback.
Another way to leverage the text analysis, which is what started the conversation, is for a city council to post the meeting agenda/minutes as 1 item per post. You can then run sentiment analysis on the comments to gauge overall public opinion/discussion of each item.
I’ve said a number of times, we have chosen the most problem, private passenger vehicles, and we are focusing on automation. It is far better to solve incrementally bigger problems and learn from mistakes where there are less consequences and variables.
A sign of the public’s fears is the number of articles appearing questioning how an autonomous vehicle crash would play out and how slit second decisions will be made:
Before attacking the private vehicle segment, I would attempt to automate:
I.e. Municipal/park lawn mowers
Start with sidewalks, walking paths, etc. Then graduate to roads after enough testing. Even snow removal on residential streets is low speed, low traffic, and less variables. Generally there are less cars on the road after heavy snow and everyone is moving slower and more aware.
Graffiti removal (maybe)
Letter mail delivery
Standardize a small letter box by the sidewalk, create a robot that can be loaded with “cartridges” for each house, the robot just rolls down the street swapping out yesterdays cartridge for today’s.
Food delivery on the sidewalk
A nice, controlled environment where communication between the majority of vehicles is already happening. Out on the open ocean the issue is storm navigation and piracy.
Mining and large, enclosed construction sites
Loading of truck trailers
I.e. Boxes into trailers, loading goods onto flat decks.
I.e.I have seen a person driving a little vehicle around warehouse spaces moving trailers to/from loading docks.
Public transportation (buses, start with long-haul)
Low speed, already has flashing orange lights, and the public already knows to be careful around these large vehicles.
I’m sure there’s more but that’s a good start. I will forever remember a story my wife told me of a podcast she heard that talked about elevator attendants. Elevator attendants were not required/needed, they were used because when elevators where first introduced the public didn’t feel safe and wanted the security of an expert on site and operating the new technology. The same applies to autonomous vehicles; the public, rightfully, is weary of the new technology so building trust in low risk situations first will ease the fear and provide low consequences examples of what will happen when something goes wrong.
I was sitting at a coffee shop with headphones on. The guy at the table next to me was probably 6’6″, 250-300lbs, had a bunch of tattoos, and looked like a scary biker. He closely watched as a pickup did a poor job of parking next to his bike. I took my headphones off and chuckled saying “you seem unconfident in their parking abilities”. I guess that made us friends because a short while later he waved for my attention and when I took off my headphones he said “check out the guns on that battleship” pointing at a young lady. I nervously smiled, put my headphones in, and did my best to politely indicate this was not appreciated.
In hindsight I wish I had gotten up and moved to another table. Beyond exiting the situation, how does one communicate that it’s inappropriate, rude, disrespectful behavior without confrontation?
"stop starting and start finishing" – I sure wish my former employer had read something like that. They practiced what I call "shiny management", that is management regularly says "ooooh there’s something shiny and new let’s do that".
I would reword this to "Planning IS NOT the enemy of agile AND IN FACT IS NECESSARY FOR AGILE". Whether it’s a sprint plan, and larger epic goal, or the overall vision of the deliverable; these are all plans in some way and all require shared communication and vision of the future (a plan). I cannot imagine an organization, tech or otherwise, that would suddenly pivot based on the weekly sprint plan of the development team.
I wonder if a way to approach the frustrations of dealing with unhelpful people is to approach it as a game, to convert them to my thinking.
It starts with “don’t admonish people” and “behavior will change much faster through positive reinforcement”. This is probably timely and appropriate advice.
We spend 95% of our time thinking about ourselves. If we stop for just a moment and think about another person’s good qualities we won’t have to resort to flattery.
Try leaving a friendly trail of gratitude throughout your day and see how it blossoms into friendships.
“I like to go fishing and I also like ice cream. When I go fishing I don’t use ice cream I use worms and bait because that’s what fish like”.
Its interesting that this has become the tool of the modern salesman. So far it has talked a lot about being genuine, effective communication, and putting others first. It seems like slimy salesmen have taken what they want from the book and missed the key points. If your sales technique is to flatter, lie, etc then you’ve missed the point that you must genuinely think about and care what another person wants in order to build a real connection.
I can read a few paragraphs of a story and predict if it will be well received or not. I can immediately tell if the author likes people. You must like people and be interested in them to engage their attention.
“A man without a smiling face should not open a shop” – Chinese proverb. This is so true!!!!
Ask yourself “what is one thing I respect or like about this person”. Bringing up that in conversation will make it a positive one and make it easy to compliment them.
My wife recently told me a story where “if someone participates they get $20, 2 weeks later if they haven’t participated they get a nudge offering $30 to participate”.
This is a terrible UX design because you are rewarding bad behavior. Let’s play this out hypothetically:
Person A: I got asked to participate in X
Person B: Oh yeah, I got that too but I’m busy so didn’t deal with it. 2 weeks later I got offered $30.
Person A: I’ll wait then.
Person B: I wonder how high they’re willing to go? You should wait 4 weeks and see if you get $40. If not, either you still get $30 or it’s no skin off your back.
The reason I bring this up is because I’ve dealt with a similar situation recently and in the past.
First, I was a member of ZipCar 6 or 7 years ago. I returned a car 2 minutes late and was charged $25 for it, because that was their “minimum late charge” whether you returned the car 2 minutes late or 30 minutes late you were still charged the same amount. Side note, I was not in the habit of returning cars late and I think this was the first or second time I did it. So, I called ZipCar to cancel it and the rep said “I’d like to offer you 50% off the annual membership”. I declined the offer because they should have offered me that reduced price when I was a customer not wait until I leave.
Last year I had a BKool membership for simulated cycling trainer rides. It worked well and I enjoyed it but I hadn’t renewed my membership this year because I’m unable to ride. Normally BKool is $10 USD per month but they’ve just sent me an offer for $3 per month.
For that price, I’ll renew the membership since I was going to anyway . Guess what I’ll be doing next year? Letting my membership lapse in the hopes of getting the same deal; waiting is no skin off my back. I’ll also see if I can share this coupon code with friends.
This is not an uncommon experience for me. Occasionally I will shop online and abandon my cart for any number of reasons. It’s not uncommon to get an email offering an additional discount if I complete my purchase. Of course all of these emails are automated and I’ll bet [my additional discount] that the person who created the nudge sales emails wasn’t smart enough to do analysis and only offer them once. It’s not hard to say “if not offered nudge discount in past, offer nudge discount”.
First, I would make customer menus publicly accessible and embed-able. Doing that would allow restaurants to have a single digital menu that could be embedded via iFrame on their website. I see a lot of restaurants with PDF or HTML menu’s on their websites. The customer must change the menu in two places when necessary.
Second, I would make customer menus export-able and/or team up with local print shops. The customer must also maintain a menu for printing, I often see restaurants with simple paper menus printed in-house.
It’s common in tech now to refer to a “single source of truth”. Skip the Dishes is forcing customers to have multiple sources of truth and manually update the various sources. Rather, providing a single source increases loyalty and customer-lock-in (barriers to exit).
So, social media companies liked twitter.com, facebook.com, etc claim they are not responsible for the information posted. They say they are a platform and cannot be held responsible for what is posted on it by their users unlike a blog or a magazine that can be held responsible for the content posted/published.
But, law enforcement says they cannot press charges for content posted on social media. Today I witnessed a person post a picture of driving in traffic that was clearly taken from the driver’s seat of a vehicle. Yet, law enforcement say they can’t issue a ticket for the picture posted of that offense by the perpetrator. Similarly, if you or your social media profile post hate speech you, generally are not charged.
So, who is responsible? If the content hosts, those who control the servers are not responsible. And those who create, post, and upload content are not responsible. Who is?
I must admit, I lightly read the second half of this book. It is from 2012 but not that much has changed since. The author seemed to skip some very critical points such as data independence completely skips the fact changing/dropping existing data structures will inevitably cause failures.
I prefer to have as few as possible apps installed or running on my devices. First, background apps degrade performance. Second, an app is an information security end point and a serious enough bug could allow malicious users into your device/network or worse yet into your other apps/data. I’ve already been trending away from Dropbox because I really only use it to store PDFs for reading later.
This morning I’ve finally installed a virtual machine server and installed Dropbox headless along with Apache webserver. As a result, any device on my network can navigate to the webserver and access the files stored within dropbox. Via SSH I can use the server as a network file system for easier add/delete of files. If I want/need remote access I may setup a VPN but I’m doubtful it’s even needed.
I got a Win10 tablet for dirt cheap, which I have now discovered it was cheap because they were going out of business. A year later I go to use it and it won’t boot without being plugged in. In dismantling it turns out 2 of the 4 battery cells had puffed up so I assume the battery was DOA. I could trash the entire thing but I like the tablet because it has a 128G SSD and a 6G I5 processor. Rather than trashing it I removed the battery so there is no risk of leak/explosion and put it back together. It won’t run without being plugged in but in terms of household tablet and TV it’ll still work well.
I’ve seen 2 ads for university programs for analysis (data/information) today. Both struck me as missing an overlying concept on risk analysis. Data/risk analysis is essentially 1.) here’s a list of red flags, and 2.) how many points in this information/document generate a red flag.
I’m a firm believer in the value of human analysis but I think we’re missing what computers can do and not training humans to do what computers can’t.
I wish my recovery from my own crash were even half as positive and inspirational:
I hope I never have to deal with something so life changing. If I do, I hope it is with such a positive and inspirational attitude.
If I were @hootsuite I’d be looking into natural language and machine learning (maybe they already are, I don’t use it enough to know).
First, just like Gmail is now offering suggested replies to make things quick & easy:
Imagine if your company Twitter account could suggest replies to Tweet’s reducing the key presses necessary. That’s step one.
Second, once you’ve gathered enough feedback from people using the suggested replies you could offer the option of auto-replying to certain tweets or subjects. Essentially a chatbot, on Twitter, created by mining your past Tweets.
I just heard a “don’t drive high” ad about the consequences of driving while high on drugs.
I’m a big proponent of real-world examples. I know when I was young an adult saying “don’t do X, because I said so” didn’t do much to discourage me whereas “don’t do X because I made that mistake and suffered these real world consequences” may have been more effective.
So, imagine a website with virtually every mistake possible and video interviews with people who have made that mistake talking about the real-world consequences they suffered or continue to suffer. Something where parents can say “I think there is a risk of you driving high/drunk tonight, let’s sit down and watch this video together and talk about how this might impact you”.
I have experienced first hand people tell me ‘I used to drive badly until my [aunt, sister, brother, friend] was killed’. As soon as there’s a personal connection, as soon as someone can relate personally to the impacts of their behaviour, they change. Essentially, people need to know the life they are putting at risk could be their aunt, sister, brother, or friend and not just a faceless stranger.
I’d like to have a server in the house running a number of services and VMs but I’m unable to do that at the moment. This is the, single, unified, place for me to keep track of my vision and task list.
Android VM cycling through screens of calendar, email, weather, notifications, etc. Also provide access to home automation such as vacuum and connected lights. Finally, provide social media notification services.
VPN for remote file/service access to replace Dropbox.
Git backup always running. Also run CI/CD and management reporting on code.
TV connection both for watching TV/movies and access to Android GUI.
Database for a free, web access version of Lakebed.io
Instance of Lakebed.io running for my health tracking.
I’ll start by saying that I’v never used Tindr or any dating app of the type.
That being said, I think the “swipe” interface is a powerful tool that could be used for a lot of good things.
Example #1 – Study/note cards
Imagine an app that allows you to add study notes. The user could add study questions and the interface could swipe down to show the answer and right or left for the next question. This would allow 1-handed study while on transit.
Example #2 – Art App
Imagine an app that allows you to explore famous art from around the world. Swipe/scroll down for more information about the artist, the meaning, the background, and the historic impact. Swipe right or left for the next piece for art. This would be an interface familiar to young people but provide valuable/educational/fun information.
Example #3 – Anger Cheatsheet
I’ve created an anger cheatsheet for myself that I can go through when I get angry/frustrated with bad drivers. The cheatsheet is designed to reduce my anger and remind me that my anger won’t change their behaviour and a number of other things. It would be valuable to have this as a swipe app to quickly/easily access this information with minimal user input.
I’m considering writing some sort of app that allows users to enter any text (text only, no HTML, links, etc) and tag slides and make slides/tags public or private. You could then access a specific slide or tag or slide deck to easily swipe through the information.
In thinking about it, I could allow images/attachments as well so students could add images of class notes and the art app would work out of the box. But of course images would open it to all sorts of abuse such as free pornography hosting.
I will say this now, if I have ever impacted or made anyone feel the way Brett Kavanaugh has done to Dr. Ford I am sorry, I encourage you to speak to me or speak publicly about it. I will listen, accept, and make every effort to make things right. It is not OK for women, or men, to be treated this way.
At best this is a 250-year storm + black swan, at worst it’s now a 2-year storm. This is a very good highlight of why climate change has proven so challenging for [re]insurance. Do you take the cost of claims from these storms and average them over 2 years of 250 years? Factoring in what you competition is doing plus maintaining profitability and this becomes even more challenging.
And yet the current operating model of the insurance industry is cheap, fast, easy, and little or no communication.
An app that pulls data from farm production to show you, based on location and time of year, what is the most abundant food to eat that is produced as close as possible. This then reduces your environmental impact.
I wouldn’t call it PolBook, that’s just a play on FaceBook because the idea is FaceBook for politicians.
The City of New Westminster does an absolutely amazing job of engaging citizens and gathering input/feedback. There have been discussions about the time and cost of holding these meetings at city hall, opening it up to a wider audience, and engaging those who have child care needs or cannot attend city hall at the designated day/time.
Another challenge voters are facing is the ability to ask the same question to all candidates in a given election and see their answers, let alone document their answer to hold them to it.
Finally, I see a lot of complaints out of the US about lobby money and knowing where donations come from.
First, politicians in an upcoming election create profiles on the site. Those politician profiles are then verified by the candidate registration data. Local voters can then post questions to their respective candidates and candidates can respond. In building this profile the site would guide politicians through outlining what past public service/office they’ve held and other experience that would serve them well in office.
Utilising Open Data the site would pull in donation/contribution data to display on the politicians profile page making it absolutely clear where their money is coming from.
Once elected the candidates can convert their profiles to “elected official”, which means the profile does not expire when the election is over. This could be done by verifying the elected officials government email. Citizens can continue to interact with their elected officials through this same platform while the official is in office.
Elected officials can add “milestones” to their profile of things they feel they’ve achieved throughout their term in office. This serves for re-election purposes as well as checks & balances against what they promised during the election campaign to do.
A web app that scrapes Eventbrite, Meetup, news, and social media for events near you. Even with all these services I don’t think there’s a single source of events yet. I know I saw an ad for an event on transit yesterday that I’d not heard about previously.
It’s hard for people and organisations to know what actions/steps they can take to improve equality (and reduce discrimination) in the world or in micro-climates such as the workplace.
A list of small things people and organisations can do to improve equality. Items on the list can then be upvoted for “the most effective”. This gives a voice to those experiencing inequality and crowd sources a prioritised list. The goal being, an individual or organisation can start at the top of the list, ordered by most effective, and implement the ideas or skip ideas that are not applicable/feasible.
Hopefully this would reduce the barriers to entry (cost, research on most effective options, etc).
I may develop this as I may need to develop a list/voting system anyway for Lakebed.
Disclaimer: I’m a middle-aged, white, male. I rarely, if ever, experience inequality or discrimination. I do believe inequality and discrimination are terrible things and it probably sucks to experience them. As I said, my goal is to give a voice and opportunity to those experiencing them thereby hopefully increasing uptake.
I was lamenting to my father about road bike geometry.
The frustrating thing about road bikes is they measure BB to top tube and/or stem to seat post (effective top tube). On most road bikes those measurements can be close or the same as each other but as there is no single standard way of measuring sizes you really have to look at the overall geometry and and determine if it’ll work for you. There is also huge variation in the stack (size of the steer tube) and the chain stay length. Stack determines how bent over you feel and a low stack will make you feel like you’re putting more weight on the front wheel. A short chain stay will make the bike feel twitchy and aggressive while a long stay makes the bike feel more stable and want to stay in a straight line.
For my own curiosity I compared my BMC geo to a Specialized:
Training doesn’t necessarily have to be the same as a race. Whatever your target KPI you can simply pick that KPI and hit it on hills. Hills are, generally, safer since you can’t ride up them as fast and drivers are often also slower and more aware.
Bottom line, hill training is a great way to quickly and easily hit a given target heart rate or power output. Of course New Westminster is home to a lot of hills making it even more convenient.
I just finished reading Alan Alda’s book on communication and cannot say enough great things. It is insightful while being logical and easy to read. I read it rather quickly as I have a large list of things to do for Lakebed.io but fully intend to go back and read again taking notes. Right now I am busy implementing empathy and story telling in the communication and layout of the Lakebed app and website.
The problem here is, for simple math if your max HR is 200bpm then 90-100% is 180-200bpm, which is quite a wide range.
Rather, what I prefer to do is keep track of a few current KPI’s. For example, I regularly track:
Current comfortable, all day HR. I.e. the average HR for an entire ride.
Current 20min, FTP HR.
Current max while cycling.
Current absolute max (most people can hit a higher max running than cycling).
I will then complete various training based on those hard numbers. For example, if my 20min FTP heart rate is 170bpm then I might do 20min at 10% above that, which is 187bpm. That is a hard and fast number to hit, there is no variation. The workout might be 10min warm up, 20min @ 187bpm, 10min cool down. If I really want to punish myself I’ll do that twice. It becomes really easy, at 187bpm to ease off when it goes up 188 and push harder when it goes down to 186.
Compare that workout to 20min in zone 4, which could be 20min at 160 or 20min at 180. That’s such a large range that I could complete the same workout at either end of the zone 4 range and get completely different results.
The other issue with using hard coded zones is they don’t adapt and grow as your fitness changes. Whereas if you base it on current data from 3-6 months then +10% is a constant workout above current fitness levels.
I used to race bikes and a few friends are considering getting into it. I appreciate the opportunity to share my experience and I’m doing it here so it’s easy to searched and referenced later. I sincerely hope this does not come across as egotistical or all knowing. I certainly do not know everything and open to varying opinions, I’m simply recording what has worked for me.
Every cyclist I’ve ever spoken to has said their speed/cycling has improved drastically after implimenting a good stretching routine. Injuries, typically, go down while flexibility and the speed (fast twitch) at which muscles can move goes up.
Stretching is as much about healing/recovery as it is about getting to know your own body. By stretching you figure out what’s tight/loose and what hurts. Then, next time you stretch you can address those concerns first then move onto the rest. By doing this you figure out what exact muscles and joints need what exact stretches and that, from my experience, is going to be different for every athlete. I agree with yoga and do it myself but a set routine that you do with a group doesn’t give you the time and feedback needed to become an expert in youself. Part of being a high-level, competitive athlete is being an expert about your physical and mental abilities.
The human body on a bike is a system, just like a car, engine, and road are a system. One can measure power and training effectiveness at various points in that system.
The heart is the fuel pump so the amount it is pumping is a good sign of how hard the engine is working. Unfortunately the heart can lag behind real power output. So, when doing a really quick, short sprint the rider can get upto max speed and be back down to a slower speed or even stopped by the time the heart catches up and hit’s it’s max.
On the other end of the spectrum there is power output measured in watts. That’s a standardised measure that the cycling industry likes to believe is consistent across riders.
They’ve come to realize it is not consistent so when talking technical power it is often watts/kg or watts/lbs (watts per kilogram or per pound).But, there’ no marketing or device that can measure watts/kg so it’s not widely hyped. So, the first issue with power is that it does not take into account the weight being moved. This is why in vehicles there is the standard “foot pounds of torque”; how much power does it take to move 1lbs 1ft.
There is another, even less discussed inconsistency in power, related to weight, and that is the time component. This is why electric grids measure power by KwH (Kilowatt Hours); how many kilowatts are output for how many hours. For simple math, if I have a light that requires 1 kilowatt to operate, running it for 1 minute is a very different power consumption than 1 hour.
So, when you see the power output in watts from a cyclist ask what the time interval of the power measurement is. Is it being measured every pedal stroke, every second, every minute?
One final note on power is to consider inefficiencies and friction in the system. The simplest explanation is to compare a mountain bike to a road bike. I can get on the rollers on a mountain bike and it takes a massive amount of power to ride at 30km/h. I then get on the exact same rollers on a road bike and 30 is easy. The difference between these 2 bikes are the rider position and most importantly the tires. Now, applying that to the real world, you train on the rollers so know that you need to put out 200 watts to ride at 32km/h in a race but then you go and race and you’re putting out 200 watts but lose the race and average 25km/h. Turns out the rollers had less friction than the road and didn’t simulate wind resistance.
Conveniently, that brings me onto the next measure of training; speed. Speed still have the same flaws that power has but speed is ultimately what we are training for so makes the most sense to measure. Conveniently speed is also one of the most cost effective and accessible KPI’s for training. Whether a speed sensor on the rollers or GPS within a phone, it is extremely cheap to measure speed and very easy to judge if current speed is adequate/meets training goals.
While the heart is the fuel bump of the body, the muscles are the engine and the veins are the fuel/oxygen line. In sports medicine centres that often measure blood oxygen saturation; the amount of fuel supplied/used by the engine. Another measure could easily be blood pressure. Finally, one could look at the nerve firings or tension/movement of the muscles (for example in an MRI).
These are often costly, weighty, constrict movement, or simply not viable.
The bottom line, in my opinion, is determine goals and determine the measures that will allow you to train to achieve those goals. Don’t buy a power metre simply because the marketing hype says you need one. I’ve never owned a power metre; the closest I’ve come is the PowerTap HR PowerCal and I have used my wifes power metre to test the accuracy. Even that, simply satisfies my need for data rather than a KPI used for training.
If you are training for racing, setup up rollers or go for a ride as similar as possible to races. Then ride at race speed and distance. Then, when it comes time to race, taking advantage of draft, wind, and racing smart should be easier than training making for a winning combination.
Running For Cyclists
Cycling is all about moving your legs faster and putting down more power while doing it. Let’s be honest, there’s no local races longer than ~120km, once you can ride that distance it’s not too hard to keep that fitness, and with the peloton draft it’s not even full effort. What determines a winning cyclist is the ability to move fast a few times during that ride and/or at the end.
For this reason, I believe regular/traditional run training doesn’t do a lot to improve cycling (it may improve or maintain fitness or reduce weight).
Run training that does improve bike speed is:
Warm up. It is critical to be warmed up and flexible for this. Don’t give yourself a heart attack or tear a muscle.
Pick a very slight uphill grade.
Start at the bottom.
Sprint at absolute top speed up the hill until you puke or can go no further.
Walk down the hill at a slow enough pace to get a good rest.
Repeat until you cannot continue.
Track and watch as speeds and distance slowly increase over time while heart rate recovery also improves (goes down to resting faster).
This has the added benefit of being quick, easy, dirty HIITs (high intensity interval training).
One of the marks of a pro/professional cyclist is being able to ride distance/speed but still act in a professional way. Still be courteous to other road users, still wave “hi” to other cyclists, still offer to help those with a flat, etc. The true pro cyclists I’ve met are often the nicest people, possibly because the recognise they are an ambassador for their sponsors and the sport.
Attach the number with 1, or at most 2, magnets or pins. Put the clothing on. Have someone smooth out the number and put the remaining magnets/pins on.
In my opinion, the goal/purpose of the entire first season/year of racing should be to specifically not win any races. That’s harsh and hard, most people get into racing because they have a desire to win. Not winning teaches you a lot though, will serve you well, and extend your race career. Not winning in the early days will make you a stronger, smarter, safer rider. Less crashes/accidents/injuries means your race career and winning can continue long into old age.
For the entire first season of racing, pick a goal/purpose and work on each one individually building good habits. Each of these things must be habit because things are happening so fast and so much during a race it is very challenging to conciously think about all of it at once. For example, during a race you may think about drafting as efficiently as possible. Or, for an entire race you may think about observing all other racers, their condition, and accurately predicting who will sprint/win.
Riding @ Cadence
People have commented that I ride at a high cadence. While riding at the track started this trend I have actively trained and intentionally continue it. The track is fixed gear bikes; the only way to go faster is to increase cadence.
Beyond doping, one of the innovative things Lance Armstrong did is ride at a higher cadence. I believe, he was somewhat able to do this because of the doping, which allowed a higher heart rate. By riding at higher cadence he was able to climb faster while still putting out about the same power. This is also what kicked of the modern pro-cyclist look, which is incredibly skinning legs/arms versus the older pro’s that used to look like powerhouses.
For simple math, let’s say I am putting out 100 watts of power on every pedal stroke and I’m pedalling at 100 revolutions per minute. I am therefore, putting out 100*100, 10,000 watts per minute. If I decrease my power output 5% to 95 watts but increase my cadence 10% to 110 RPM I am now putting out 10,450 watts per minute AND I can maintain that power output for a longer period because my muscles are not pushing, flexing, as hard on each pedal stroke. There are limits to this theory because higher cadence results in a higher heart rate.
Having the option of varying gears, power output, and cadence allows the rider to rest muscles, increase speed without changing gears, work with malfunctioning gears, etc.
Bottom line, in my opinion being able to rider at a higher cadence:
Allows you to ride faster on the track on fixed gears.
Makes you a stronger/faster rider.
Provides a wider range to comfortably ride in.
Potentially makes a stronger/faster climber.
Think About While Racing
I jokingly refer to bike racing as “chess at high speed while oxygen deprived”. There’s a lot to think about, much at the same time, and often while stressed or avoiding danger.
Goal/Purpose of The Race
If you’re not looking to win the race and simply looking to gain race experience that impacts what else you’re thinking about and how information is processed/stored.
Those Around You
Is anyone in front, beside, or behind (braking) potentially going to cause a crash. Have you witnessed in this race, in past races, or in training dangerous behaviour or bad ediquette/manners that might imply a dangerous rider.
How fit are those around you and how strong are they feeling today. What is their goal for the race today either as an individual or as a team. If it is clear a group are working as a team (they are better to follow/track than a bunch of individuals) then who are they setting up for the win.
Off The Front
Is anyone off the front? Who? How many? How strong are they? Are they likely working well together?
Believe it or not, those in a bike race can, and often do, forget that someone is off the front. The common saying is “out of sight out of mind”. When those off the front can get out of sight of the peleton they are often forgotten and the pack will stop working to catch them.
I remember one race where a few of us from Gastown started on the front. The team manager was riding behind me in the first 100m of the race and made a joke about “doing the whole race this slowly” so I kicked up the speed. Me and a teammate ended up riding off the front of the pack. This is well known to be the worst situation possible because when teammates are off the front you know they are going to work very well together. A combination of my teammate and I working together and my other teammates performing a tiny bit of blocking resulted in us being out of sight out of mind for the entire race. In the final few KMs we had a discussion about who would win the race and it was decided he would. So he won and I came second.
Position – On The Bike
First and most important: if there is any bikes, vehicles, or anything else (pedestrians, surprises, etc) in front of you, you must be able to stop quickly, which means riding with hands on the brakes.
Riding on the top of the bars (tops) in the pack is completely unacceptable. If you see someone riding like this steer clear of them as they are an unaware, inconsiderate, dangerous cyclist and that attitude likely carries over to other aspects of their riding.
Position – At The Start Line
Position – In The Pack
My Next Bike Would Be
The Latest and Greatest
Unfortunately road racing in Vancouver typically happens in Feb/Mar through May. As a result, often the season is decided in the rain. At a bare minimum you’ll have to ride in the rain a bunch.
First, no fenders. You’re not allowed to have fenders in races for fear they’d become projectiles/blades in a crash. I’ve not tried or asked about ass savers.
Second, clear glasses. In the rain you want to be able see but it’s often dark so tinted lenses don’t work well.
Third, good rain clothing. You’ll never stay dry but stay as warm as possible and be able to shed layers while riding when it inevitably gets sunny and warm. There is a product called Velo Toze that makes rubber overshoes and helmet covers that keep you aero and warm.
Finally, keep in mind that layers of clothing provides compression and too much compression makes your muscles work harder to fight it.
I write about riding faster but I don't do it anymore except in very controlled situations. I believe riding fast on the road with vehicle traffic and pedestrians is too dangerous; you need your head up, looking around, and not focus on full physical effort.
I certainly do not know everything and am open to varying opinions, I’m simply recording what has worked for me in races in the past. I also do not hold any physical fitness qualifications. Ultimately it is up to you, knowing your body, and experimenting to figure out what's right for you. I don't believe anyone can know you or what will work perfectly for you other than you.
Personas have many uses including business cases, application design, marketing planning, marketing implementation, etc. While all of those are very different use cases there are many overlaps so it doesn’t make sense to store the same definition in multiple places. This document is the single, always-updated, reference documentation of the identified persona’s and demographics for Lakebed products and services. With each item it is important to note what it applies to, such as “CIO/CTO – Makes buying decisions for Lakebed application”. On the flip side, the target customer for the independent consulting services is SME’s, which typically would not have a CIO/CTO. Any time new features/functionality are being planned they will be added here to ensure we understand who will use the feature and how. All the UX courses and material I’ve read says start with “why”. If you understand why a user is interacting with a given website or application then you can design to help them achieve their task. The faster and easier it is to achieve a task the more engaging and, subconsciously, enjoyable the experience is. Why also drives compelling stories, which humans more often sympathize with so are more likely to feel a personal connection.
Your purpose is to understand what problem you are trying to solve for your users.
Collaborating on the solution
No discussion of color, font, etc
Test with users
Repeat tests until meets user expectations
Pass on to UI
Definition UCD: User Centric Design
UI is where the conversations about images, fonts, colors, and visual identity happen.
Button color, could in theory double click-through rate.
Simon: the color/design of that button must be something the user intuitively knows is a button. Increasing click-through comes down to verbiage, placement, and content around the button.
In large orgs consistent UI is being recognized as vital to the customers perception of the brand.
Simon: Consistency creates professionalism, comfort, ease of use, and makes it memorable.
Simon: In other words, reduce the wasted RAM for the user remembering the number of layouts that Lakebed users. If everything looks the same (app + website) then it’s easier for the customer to immediately know it is Lakebed.
Definition Design Language: Documentation of fonts, colors, icons, and potentially even key words, that can be reused throughout allowing UI to focus on the small details like little animations and instructions.
http://today.yougov.com/profileslite allows you to select user persona items and it compiles and outline of your user.
Look holistically at the entire journey the customer goes on to use the entire product or service. Understanding the whole allows us to better design/build the component parts.
Customer journey mapping
The bigger the better
Set a bunch of questions and have users find where they think the answers would be.
Either by viewing the landing page or by navigating and using menus. Obviously a tree test without interaction is harder.
Good for starting from scratch
Page information on cards and users sort the cards into where they would expect them to be.
Doing this a few times will result in patterns and a consensus.
Definition Information Arch: The page structure of the product that allows users to easily find what they want/need or not.
Unlike traditional applications,developer tools require focusing on function over form.
Designing software for developers is a lot differentthan designing software for consumers.Each of these programs, or tools, that developers use,have very specific functionality, and when going into design them, we need to think about what the use is,and how to keep the functionality as simple as possible.
Designing development tools requires a different approachthan you would normally take from applicationsused by average users.Again, these types of tools aren’t going to be usedby your parents, or your friends, per se,but they’re going to be industry tools that are usedby professionals, or internal teams that are designed around specific tasks.For the most part, development tools arenot going to be forward facing.That means that they won’t be used by a broader audience.
Lakebed.io is in a tough middle ground, similar to Excel it will be used by a wide range of tech skill levels but needs to accomplish and communicate technical tasks.
//todo Google ux for technical/comlex applications.
//done add component goal to ui/ux docu
The person performing the task should be familiarwith the task enough, to be able to look at your UI,and understand what they need to do.Any type of documentation, or instruction,should be built into the tool, itself,in order to guide them.You don’t want people having to read a manual in order to use a simple tool.
There are lots of development toolsto draw a reference from, when designing your own.The best thing you can do, is take the time out,and understand how others have solved problemsthat you are trying to approach.
What if the tool is docked on the side of the screen,or stretched in a way that cuts off most of the UI?While you can add scroll bars to overcome this,you still need to take into accountwhere the user will place the custom tool,and what it will look likewhen it’s scaled at unintended sizes.
What explicit limitationsdoes the program impose on your design?Are you constrained by where you’re going tolay your tool out, or the window that you’re provided?Or do you have free rein to create a toolat any size with any type of layout?The next thing to consider is:Can you build custom designs,or are you limited to what is provided?
Once you better understand these limitations,you’ll be able to create tools that make sensein the environment that they’re being used in.
While a normal application may have a very intricate design,the tool needs to perform a specific task.This sort of thinking usually goes againstwhat we’re taught as a designer.
Good to keep in mind when interviewing/hiring UI/UX people. They may be good at general work but how do they handle business/tech UI/UX?
When designing a tool’s UI,think of a hammer or any physical tool you can imagine.These tools have existed in their current formfor hundreds of years.While the overall aesthetics may be differentfrom hammer to hammer, functionally they are the same and that’s because the tool has a specific job to complete.
It is important to look at existing tools that help people create content for inspiration. Photoshop, Unity, Word, and PowerPoint all have similar UI paradigms. You’ll see quick access tool bars, settings that are buried and out of the way, plus large canvases for people to create content with. Automation tools are simpler, allowing the tool to do what it needs to and get out of the user’s way. Development tools have been refined over the past some odd 30 years of modern computers. At this point, we’re seeing very mature products, so drawing inspiration from current tools and seeing what they do in order to make users more productive is probably the best step in understanding how to build your own tool’s UI.
Good UI limits users from breaking the interaction model.If an element can’t be interacted with,it should be disabled.If the element isn’t needed at all,it should be removed.Now the organization of the toolbar is very important.On the left of the Play button are the core system tools.
Order of menu items is important.
//todo if I am going to rework the menu to allow sub-menus then might be worth adding ordering at the same time.
System tools on the left, game editors on the right,and you can preview your workfrom the button in the middle where youreye naturally focuses.
At the bottom of the screen are contextual actionsthat relate to the task you are doing.These actions are closely tied to the specific application.
I wonder if this is a good model? Navigation on the left and actions/tasks always at the bottom (or top). That makes a nice, standard UI that is always the same and always easy to understand.
//todo experiment with this in an HTML mockup.
By default, this action is hidden,and it only becomes available once you createa special folder inside of the workspace.
Seems like really poor design. How do you handle contextual help, how do you handle various naming conventions of the folder, what if someone wants to name the folder something else or share the folder between multiple projects, etc.
Since Pixel Vision 8 isn’t able to render enough spritesat runtime to show tool tips underneath the cursor,all of the help is displayed at the bottom.
I do like the idea of help content always appearing in the same place.
First, which applies to the design of any application’s UI,is that the elements should be colored in a consistent way,but also not to detract from the rest of the applicationor design that they are surrounded by.
While lots of tools are used internally by teams,this may mean that the pressure to havea highly polished design may not be as important.For external facing tools however, your focus should beon the UX and build the design that directs the usertowards the task they need to accomplish.
Start with the why or the task/goal the user is trying to achieve.
Understand the limitations of what you need to designand where your tool will live.
Live in an enterprise environment.
Make sure to look at examplesof other tools that may do a similar thing.Sometimes you’re tasked with redesigning a toolthat may exist in another application.Take a look at how it’s builtand understand how you can improve it.And, finally, if you’re creating somethingthat hasn’t been done before,try to find a point of referencein something that has been built.
//todo find existing similar tools and docu good/bad UI/UX
If you take a particular tool and break down its actions,you may be able to find similar tools out thereand borrow what works from themand combine it with new elementsto build the tool that needs to be created.
//todo breakdown Lakebed into it’s components and goals.
Remember this interaction and what we learned and if it was successful.
Who is doing the interaction and who else may be present.
Where are they.
When are they performing the interaction.
What objects are they using or what tools do they have.
//done add overall expectations to each persona and to each page? Or is this already covered in the why?
//todo document potential for distractions/interruptions on each page. Document how the page handles those and how it get’s the user back on track.
//todo document if voice interaction is likely to happen.
The best designs happen when we understand the bigger picture. The various interactions, people, products, etc that go into achieving a goal. This is why it’s better to work with stories than persona’s.
Various goals/needs will have various priorities. For example family may pick a familiar travel destination if budget is more important that staying within budget.
//todo is it worth defining user urgency on each page?
//done is it worth defining amount of time spent on pages?
Start with why and map how long it takes them to achieve that why.
Common patterns, don’t make users learn something new.
//todo for each element/interaction decide if it’s been done before and if it meets common design patterns (within the app and wider).
Warm, bright colors jump out while cold, dark colors sink to the back.
This validates my dark grey menu concept
Make sure users can complete their primary goal quickly and easily.
Landing page should be a short about Lakebed and quick links to common goals; explore data, upload data, admin settings, api query builder.
Determine if users will use one hand or two on mobile.
Our users will use one hand when reading but the rest is involved and will require two.
Always have an obvious way to access the navigation menu on your website
On mobile a floating menu button and use #menu id so the button just scrolls to the bottom of the page?
Icons should only be used when necessary. Avoid overusing them and do not use them simply for decoration.
Completely disagree, I could me an entirely text site if I wanted. Icons break up content, provide quick navigation, etc.
EMPHASIZE A POINT OF ENTRY IN THE INTERFACE. Every interface should have a clear starting point. Where should viewers look first? Make it clear.
The grey/white does a good job of creating a starting point at the cross hairs.
We’re inundated with stimuli. According to gestalt psychology, we try to overcome that chaos by simplifying our perception. We group things. We categorize elements. We look for the whole. Some principles include: similarity, proximity, closure, connection, continuity, and figure/ground.
Our mental focus is finite. Unnecessary elements will deplete those resources. So keep users focused on the important information and functions.
Such as only showing information and menu items available to the user.
Display Primary Data or Statuses in a Dashboard
//todo Add a dashboard to app lading page?
//todo add descripton of common elements like help button to the home page?
//todo allow closing/minimising various sections?
Users prefer different workflows. Create different paths for each goal, and let users choose the most appropriate path for their workflow.
Not sure how to incorporate this.
Start Progress Bars Above 0
Starting at 3% makes the user feel like some is done and it’s moving.
Never make the user perform math. Let the computer handle it.
Don’t force the user to remember anything. Keep all pertinent information in the open.
Reduce the amount of back-and-forth eye motions. Keep all complementary data within close distances.
//todo as this is not part of the MVP.
Don’t tell users to click “Submit” once. If they can click more than once, they will. Instead, disable buttons when users click them. That way, duplicate submissions are impossible.
The law of simplicity states we will take complex and/or unknown object and interpret them in the simplest way possible.
//todo set minimum spacing between buttons and such and whenever possible simplify UI.
//todo also, group common tasks/actions/goals and ensure button ordering is logical.
Affordances – Our impression of possible actions with an object and how much energy it will take. For example, we would push a car with different energy than we would push a door. We know to push a door or slide a screen door based on the design/features/hardware.
A physical button has the affordance of being pushed down. A digital button is just a 2D representation but often has depth to imply affordance so users know to push it.
As we grow familiar with objects/affordances we build memory of how to interact. Therefore if you are designing a common interface you have more flexibility since users already have memory of how to interact with it.
//done identify memory expectations; places were the user is expected to remember information.
2 types of memory, declarative and procedural. Declarative is for knowledge and facts (things we know) while procedural is for things we can do (skills). It is harder for us to explain/outline/define procedural.
When users don’t know what to do they employ a trial & error process to figure out what to do. If you see numerous errors or pogo sticking (back and forth between pages) it may imply the user is unclear how to accomplish their goal.
//todo identify every place where an action is unclear, assumed, or existing user knowledge is assumed.
This product is a joy to use.Dana Chisnell describes delight in a similar waywith origins in pleasure, flow, and meaning,and she offers suggestions on how to achieve each.Pleasure arises from beauty, simplicityand the ability to anticipate needs.Flow arises from ease of use, immersiveness,and when people feel empowered.And meaning creates delight with purpose, value,and a personal engagement with compassion and care.
This is a great framework for starting from the wider context, then the users goals, and then their motivation (productivity or fun) and then the various mental states driving their motivation.
Problem: When we see people not interacting when they can/should or trying to interact when they can’t then we have UI/UX communication problem.
Solution: Place affordances, communicate what can and cannot be interacted with.
//todo on each page ask testers to identify every possible interaction to confirm if interactions are being communicated clearly.
//todo document every possible interaction for every page?
//done maybe Lakebed should be described as intuitive/easy rather than enjoyable since it’ll never be enjoyable?
//todo change to allowed list and blocked list rather than whitelist/blacklist
//todo identify infrequent interactions and document them better.
//todo ask testers “what is this similar to” to guide UI/UX design and help content since similar interactions are easier to learn.
//todo review and re-review all language for being understanding and accessible. Also consider gender, race, religious implications (female looking account button for example).
//todo create site/information architecture
include code functions, classes, etc. i.e. //func and //cla and //var and //inp
Ways to avoid “dark patterns”
Positive – Only use positive language and actions to ensure users are not guilt tripped into doing something the may not otherwise do.
The more time or distance between point of interaction and result the more difficult it may be to learn and/or remember.
Young children learn smartphones and tablets so quickly because there is such a small gap between interaction and result.
//todo add borders to buttons and make them a fixed width and a gap between multiple buttons.
Don’t focus on the most features, focus on MVP features and made them look and work well.
//todo document MVP features & functionality and limit to only those.
Use motion carefully and only when necessary and purposeful. Unwanted/unnecessary motion can detract from the experience and confuse or upset people.
Show error messages as soon as possible (shorten the time/distance between interaction and result).
//todo any server side input processing should have corresponding JS front-end.
//todo document all input requirements
Sufficient motivation or need can override poor usability. If the value of the outcome or the need to complete the interaction is high users will accept more errors/flaws in the UX.
5 UX KPI’s:
Learnability – How well can users learn the new system.
Efficiency – How well can users complete their interaction
Memorability – How well do people remember the product and the UX
Errors – How many errors occur, how well do users recover from them, and how well does the product handle errors
Satisfaction – How satisfied are users with the result.
You have one product owner that hovers over all the teams.That shows that you can have one product ownerproviding work for several teams.Double-ended arrows show how you use daily meetingsas a way to coordinate work between the teams.
Then, all the teams get togetherwith the scrum masters and product ownersand run an overall retrospective.In this meeting,you’ll look for much broader process improvements.When all that’s complete,you have your potentially shippable product.At this point, you can exist the LeSS amusement parkand start it all over again in the next sprint.
Most other Enterprise frameworks encourage you to scale up.LeSS discourages you from going too big, too soon.That’s why the creators Craig Larman and Bas Voddeoften call LeSS the descaling approach.With the descaling approach, instead of scaling up,you should always be looking to stay small.
Throughout LeSS, you’ll see this built in conflict betweenscaling up and the pressure to stay small.The name LeSS makes this conflict clear.It’s large scale scrum so it’s large but atthe same time the framework is about LeSS.
You have one product owner that hovers over all the teams.That shows that you can have one product ownerproviding work for several teams.Double-ended arrows show how you use daily meetingsas a way to coordinate work between the teams.
Then, all the teams get togetherwith the scrum masters and product ownersand run an overall retrospective.In this meeting,you’ll look for much broader process improvements.When all that’s complete,you have your potentially shippable product.At this point, you can exist the LeSS amusement parkand start it all over again in the next sprint.
Most other Enterprise frameworks encourage you to scale up.LeSS discourages you from going too big, too soon.That’s why the creators Craig Larman and Bas Voddeoften call LeSS the descaling approach.With the descaling approach, instead of scaling up,you should always be looking to stay small.
Throughout LeSS, you’ll see this built in conflict betweenscaling up and the pressure to stay small.The name LeSS makes this conflict clear.It’s large scale scrum so it’s large but atthe same time the framework is about LeSS.
//TODO look into LeSS books. They go through good “experiments” to try in the org and evaluate the results. This is a great concept of identifying a single, small change, implementing the change, and evaluating the results. Similar to how S.M.A.R.T. goals that are measurable before you start the work.
//TODO read “Designing Your Life” to look at prototyping.
Scrum is like your mother-in law,“it points out all of your flaws.”
Your retrospectives should take this approach.
You have a small group of peopleworking to create a better process.They should make their failures transparent,so they can easily apply real changes.
Larman’s Laws basically say thatorganizations are implicitly optimizedto avoid changing the status quo.Any change initiatives will be seenas the same as the status quo.Culture follows structure. What Larman’s Laws are all sayingis that organizations follow the same patternswhen confronted with change.
The first is to say that the changeis not really a change at all.You’ll see this when organizationsadopt the language of enterprise agile,but don’t make any underlying changes.Project managers will become scrum mastersand business analysts will become product owners. Then everybody would just go back to doing itthe way they were doing it before.
The second is to customize the changeuntil it doesn’t really change anything.You’ll see this when organizationstry to change enterprise agileso it fits their organization.The scrum masters will direct the teamto use scheduled milestonesand product owners will act like business analysts.This is the opposite of what you wantin a self-organized cross-functional team.
The final Larman Law is about what you could doto fix these organizational changes.
You need transparency and a drivefor continuous improvement.If you want to improve the process,you have to be transparent about what doesn’t work.If you hide inefficiencies, then you’ll never be ableto run good experiments.Then you have to take what you find outand continuously improve the process,unless you always want to start outwith the minimum amount of process.Then when you get to use this empirical approach,you can build it up as you need it. Start with something simple that works,then run experiments and continuously improveuntil you have the most efficient process.
The product owner is one of the most importantroles on any agile team.They set direction and also feed the teamthe highest value work.They’re the one who is ultimately responsiblefor whether or not the product meets the customer’s expectations.LeSS takes this product owner roleand upsizes it to even greater importance.Instead of just one team, the product ownerwill oversee several different teams.Instead of just working with one set of customers,the LeSS product owner will work with groupsof product managers and many different feature teams. The product owner has to managefive key relationships.The first is the relationship between herselfand the development teams.Perhaps the most difficult is the relationshipbetween the product owner and the development teams.Remember that the product owneris responsible for distributing the workto all of the teams.That means she has to have a clearand well prioritized product backlog.She’s the only one qualified to explaina function or feature to the development teams.That means that she needs to answer followup questions, and get back to the teamif they need clarification.
The product owner isn’t the only one who has been up sizedto fit the Less framework.The scrum masters also picked upa bunch of new enterprise-level responsibilities.In regular scrum,the scrum master is both a coach and an administrator.One of the founders of the scrum alliancedescribes them as both a bulldozer and a shield.They protect the team from being overwhelmedand then push through organizational obstacles.
They also chime inabout how to improve development practices.This might sound simple but in reality,it’s a very difficult role to play.For one, you have two different sets of abilitiescoming from the same person.This one person has to manage the teamwhile at the same time encouraging them to self-manage.They also have to train the product ownerand then later figure out how to improve the overall organization.It assumes that a good scrum master can pivotand seamlessly take on these new areas of responsibility.
Sprint Planning 1 meeting where all the teamsget together to plan out the work. Instead of having one goal per team,all the teams will share a common Sprint goal.Once all the teams agree on a goal, then they get togetherand have a Sprint Planning 2 meeting on their own.In Sprint Planning 1,you talk about what the team will deliver.And in Sprint Planning 2,you talk about how your team will deliver.In Scrum, you’ll hear a lot about the What and the How.The What are the functions and featuresthat you’re working on in the next Sprint.The How are the technical details that your team needsto sort out to deliver this product.
The What are the functions and featuresthat you’re working on in the next Sprint.The How are the technical details that your team needsto sort out to deliver this product.
It’s tricky to think about how this works in practice.So let’s imagine that we were using large-scale Scrumto deliver a meal in a restaurant.Think about how this might workin something like an agile sandwich shop.In the sandwich shop, the What will bewhat the customer orders,maybe a grilled cheese sandwich and a side of fries.This would be in your Sprint Planning 1 meeting.The How will be how the work gets done.It will be the slicing of the cheese,toasting the bread, or warming up the fryer.This all happens in your Sprint Planning 2 meeting.
//TODO develop sprint planning template and go through it weekly with the team.
Passwords are insecure and InfoSec professionals have been calling for the death of passwords for a long time. Problem is, there’s nothing better currently. Things have gotten so bad, TFA/MFA (Two factor or Multi Factor Authentication) are not even secure any more. They’re better than passwords alone but even MFA can be hacked.
One of the [many] problems with MFA is there are too many end points and if any of them get hacked the attacker can get into the system. As we saw in the RSA hack (linked above) if an attacker get’s into the MFA server they don’t need to see the unique code displayed on a phone or key chain, because they can either see that same code on the server or set that code to whatever they want. Alternatively, if they get into the users phone they can see text message MFA codes. Worse yet are users who are mirroring notifications like text messages to their computers as that opens yet another end point for attackers to see the unique codes.
PushBullet is a good example of notification mirroring. I use it, but I only allow certain, low sensitivity data to be mirrored. I know Mac/iPhone is providing this built in now.
My idea is:
When the user goes to login to a network connected device/app/service.
The user opens a mobile app that displays a list of phrases.
The user selects 1 of those phrases.
The user then enters that phrase into the login.
The device/app/service then sends the entered phrase over the network to the phone.
The mobile app on the phone validates/confirms the entered phrase matches the one selected by the user.
The mobile app would also need to send back some sort of token/certificate to confirm it’s own identity.
The user is now authenticated and permitted access.
What does this solution provide:
By displaying a list of phrases, the user only has to select a phrase rather than enter it twice (once on the phone then once again on the login). The device could even pull a list of phrases from random web search or pull random contact names to ensure the phrase is memorable and easy to enter.
The “passwords” being the phrase are temporary, one-time use.
The “passwords” by default will have special characters being the spaces between words. Ideally it would also include numbers and/or other special chars.
The infrastructure is distributed so the place authenticated is stored and performed is on the mobile device. In order to hack multiple accounts attackers must get on multiple mobile phones.
There is not a server middleman performing authentication. When many accounts are stored and authenticated on a server that 1 server can be hacked to access all those accounts.
When hardware authentication becomes available (I believe Intel is working on this or may have already done it) then it becomes easy to integrate this as that could be part of the certificate the phone sends back confirming the users identity.
This is not a small scale endeavour. 1 or more large web apps (like Google, Facebook, Micro$oft, or OAuth) would have to implement this in order to convince users to install the app and get the ball rolling. I can conceptualise but it needs someone big.
Google already has their authenticator mobile app. Flipping things on their head and becoming the primary means of authentication by adding this feature would be relatively easy. Google could just make this another option. The early adopters would be the security conscious but through education & awareness I’m confident the general public would start adopting this rather than the current, terrible password managers.
UPDATED – 26-Jul-2018
After Twitter conversations with OAuth.io I have improved & clarified the idea.
I went to their site on my phone it offered to give it a try via my phone number: Here’s my thought process on how this would work. You would install the app on your phone, and register your phone number as unique to your phone, the same way Telegram and Line create an account using your phone number as the unique ID. Once the app is installed and setup the user workflow would be:
Go to a secure website, FB for example.
Enter your phone number and click login.
App/notifications pops up on your phone saying “new login from FB, select the passphrase to use”.
User taps the passphrase they wish to use out of a list of random passphrases.
User then enters that passphrase on FB.
FB sends the entered passphrase to the mobile app on the phone.
The mobile app on the phone matches against the passphrase selected by the user.
Mobile app returns true, the passphrases match, or false they do not match.
I have a new rule for my life: Do only 1 thing at a time. This is 50% recovery from my accident and 50% recognizing that multi-tasking is inefficient.
Now, I will do 1 thing and do it until completion, then move on to the next thing and do that until completion. If someone comes to me with a new task, it either goes on the task list or usurps the one thing and I do the new task until completion. This prevents multi-tasking and forces project management; is this new task the most high priority or do we evaluate priorities after the current high priority is complete.
My current 1 thing is the book Healing Anger by The Dalai Lama. Once that is done I expect my next 1 thing will be a UX course and then a jQuery UI course.
There are numerous classes and functions in the Lakebed.io code base. I am also managing two entirely separate and very different code bases between work and Lakebed. I started finding I have to go and open up the class file for functions when I’m writing them to remind myself the arguments to be passed to the function.
As a result, I now have 1 place to go to get function arguments AND a single click instead of having to type out the function.
While it’ll only save a few seconds each time but it reduces wasted mental RAM, improves consistency/continuity, and assists in onboarding staff.
This is yet another post recording my journey in a tech startup.
The other night I was a bit low energy and stressed but I was also quite happy as I had made good progress solving a technical challenge. I was thinking about what I should work on over the weekend and was literally thinking to myself “I don’t want to work this weekend because I don’t have anything fun/interesting to work on”. That’s when it occurred to me, part of running a [viable] business is doing the boring stuff. When I’m low energy I should be refactoring code, addressing //todo code comments, fixing minor annoying bugs, doing the accounting, working on marketing content, etc. There’s always plenty of work to do and you can’t skip over it because it’s not “sexy”. This is one of the big differences between a side hustle or hobby project versus a viable business.
Another perfection I find myself striving for is the perfect UI/UX. I need to remember that UI is actually relatively easy to change in web apps. Adding features (adding/changing variables/settings/DB) is far more difficult.
An imperfect UI/UX that demonstrates the MVP is far more variable than 1 frustrated user or 1 extra click to accomplish a task.
These days users are far more forgiving than they were 20 years ago. A bug is a well known concept and the need to report bugs or request changes is not foreign. The key is making it easy for users to engage and listening so they feel heard.
Admittedly, I’m not so good with the feelings stuff so it’s very hard for me to share my fears. On the flip side, I’m going to start blogging a bit more and sharing the process of starting Lakebed.io because after searching I think I have worthwhile content. It seems there is a bit of a lack of content addressing concerns/fears startup founders might have but I bet everyone experiences similar things.
I suspect the fear for every founder is “what if I’m not successful”, more specifically, what if I don’t get customers or customers are not willing to pay my price or a sustainable price?
The thought I had the other day is, I already have customers. In my case, I’m already working on something similar to my startup idea. In my day job I have 200+ stakeholders and those stakeholders combined are obviously willing to pay my annual salary or I wouldn’t have a day job. In fact, I strongly suspect I’m critical to the business and I’m certainly the only person performing my role at the company. To a certain extent that speaks to validating my idea and the value customers will assign to my product.
Why did I create a WordPress intranet for Lakebed.io?
Mobile access to easily add/update on the go.
Automatic record keeping of user and date created/modified.
News feed style commenting to see comments and updates in chronological order.
Easy of access (hyperlinks).
And, direct access to specific places (hyperlinks to pages rather than opening an app and searching for something).
One of my favorite things to do is when I think of something I need to document I pick up my phone and do it there so I don’t have to switch away from the code I’m working on (when I’m in a coffee shop and only have 1 screen).
Low cost during bootstrap phase.
Scale-able and hack-able (API that allows building integrations and tools like automated reporting).
Control of data and reduced risk of unauthorized access.
Easy for future staff to integrate and use.
Low barrier to entry and low learning curve.
Stable. Many SaaS web apps shutdown when they can’t make a profit leaving you to find a new solution.
Meets as many of these requirements as possible. Nothing is going to be perfect and I have found many tools that “meet this requirement but none others”. I strongly believe that multiple tools is not a viable solution in this case either.
No duplicate data or entry. Duplicate data and duplicate data entry results in errors, obsolete data, confusion, and wasted resources simply managing data.
What follows is documentation of my decision making process and the options I considered before landing on WordPress.
I was working on scheduled jobs, I made an error, fixed the error, and documented the fix. I was talking to PW about the error and he suggested a solution. There needs to be a place to document that proposed solution, the research involved, and decision making as to why the solution was not implemented. Without that documentation:
Someone else may propose the same solution wasting time on something that has already been researched.
Similar solutions can be discounted in the future for the same reasons.
The decision process must be documented to prevent errors or conflicting decisions in the future.
A consistent, repeatable process is necessary to build a sound, stable, viable business.
Future developers/staff need to be able to quickly catch up on decisions made.
Documentation can be a valuable asset in investment rounds or buyout proceedings.
Documentation for how their app is designed/programmed (used internally)
Documentation for how they run their business (used internally)
Documentation for how their product works (used externally to support customers)
Those are 3 very different types/uses of documentation. But, there is overlap. Copy/paste from 1 document type to another introduces possible errors and is wasted resources. Sharing entire documents through various types/stakeholders is not always viable as part of a document may be private while part might be might public. Storing documents in multiple places also requires additional logins/passwords and paying for additional services.
The previously noted Quora thread notes:
We use Dropbox and GitHub and diary-style entry files (i.e. “Captains Log, Jan 18th – we updated the trial quality algorithm because of x, y, and z”. This is crucial – when a new person comes on, if their work involves something that was changed, we can pull that information for them. Gives them context on what we’ve tried in the past, and why that worked or didn’t.
Simply by typing “Jan 18th” you are wasting resources. The system must be able to track created/modified dates. Similarly, a text file doesn’t allow commenting nor tracks date/user of comment. A Dropbox text file is performing the same purpose as a WordPress Intranet with less functionality and more overhead.
Code comments/documentation is absolutely necessary but it’s not always feasible or efficient for a person to dig through all code to understand documentation.
A future employee has a question, they ask it, receive an answer, and go on with their job. Next week another new employee has the same question, they ask it, and so on. If you don’t have some sort of record where an employee asks “how do I record vacation days?” then every time a new employee comes in they are going to ask the same question and resources are going to be wasted answering.
Business/code documentation must also be an enterprise social network. If every person can publicly post “I’m working on X” then duplicate/wasted effort is reduced. Conflicting work can also be prevented (i.e. 2 people making changes to the same code). This also provides an effective way to catch up on recent developments when starting with the company or returning from vacation/illness.
The documentation tool also needs to perform as a management/performance tool. It must be very quick & easy to identify rogue developers who are not documenting, not following procedure, etc. This cannot be micromanaging but when a consultant finishes with the company it needs to be very easy to asses what they did, if they met expectations, and if business can continue after they are done.
The business process and documentation doesn’t need to be perfect. It is far more important that the processes are replicable, audit-able, and continuously improving. This is a perfect case of imperfect is better than nothing; constantly searching for the perfect documentation thereby delaying documentation does not serve the need for documentation nor is it an efficient use of time.
Let’s say, for example, a developer is building a new feature or functionality. They have a problem they need to solve so they go about it in the way they have previously solved that problem. Good documentation might highlight that the organisation has chosen a different way to solve similar problems. Alternatively, a new dependency might be added/proposed but good documentation highlights that a similar dependency has already been reviewed and is in use elsewhere in the organisation.
No tag options/ability. Folder + tags is required and multiple tags per file/document is needed.
Search across all docs is hard and one cannot read the doc that the search term appears in.
Commenting doesn’t flow in a timeline or news feed fashion. A timeline is needed so that a reader can start at the initial state of documentation and follow changes up to the most current SOPs. Or, a user can simply jump to the most current.
If all data is stored in Google or Zoho it could be mined and used to compete against Lakebed or as insider information in a buyout.
Requires “yet another account” if the user doesn’t already have an account.
No ability to collect information together in various ways (by date, by recent comments, by user, by topic/subject, etc).
Wiki (Zoho Wiki, TidliWiki, etc)
Tagging seems to be an issue in Zoho.
TidliWiki is painful to save and has a small learning curve.
Hosted on ProductHunt?
Questionable long-term viability.
Some sort of learning curve, not even worth the resources to do a gap analysis or determine what that learning curve is.
Yet another account.
The board style is not exactly applicable to the knowledge base, documentation use case.
Allows deep notes, tagging, and an overall, 30,000ft view.
LucidChart, Google Drawing, Zoho Drawing, and mind mapping tools
None of these tools allow multiple relationships between any given information. For example, if we want to document the database connection class, what it does, and everywhere it is used. The “everywhere it is used” is multiple relationships as there are many files calling this class.
If we want to provide a hyperlink to additional information that link must be external as these tools are not text storage nor knowledge management. If that is the case, we now have a visual application architecture then linking to additional information in a separate tool.
Cost prohibitive in the bootstrap stage.
Small learning curve.
No real advantage over Docs, Zoho, and standard wiki’s.
Seems to be a good tool but yet another account/service.
Some sort of learning curve, not worth the time to do a gap analysis and determine learning curve.
In my opinion, an often overlooked part of incremental gains is time savings. If right now it takes 60 minutes to perform a task and you introduce efficiencies to make it 59 minutes. Then more efficiencies to make it 58 minutes. Those are incremental gains but in time saved rather than forward progress.
Anyway, I’m quite happy with 2 time-saving scripts/actions I’ve written.
First, there is a script called pull.sh. Every morning when I start work I run pull.sh. It pulls the latest changes from Git including a .sql file. It then imports that SQL file into the DB so the structure and data is up to date.
I have unique identifiers for each user story, bug, and task. I take the UID and short description of the item I’m currently working on and put it in a text file in the web root.
The text file is appended to the end of the page title. Because of my productivity tracking it is recorded in my tracking so I can actually see how many times I loaded the page in development/debugging.
The text file is also pulled into push.sh, which commits to Git using that UID and description as the commit message. Push.sh also does a DB dump and sends that as well.
All web applications must be switched from development to live or deployed from a development server to production. It is terrible practice to develop in a live environment and once deployed live you wouldn’t be able to do further development without disrupting current users.
Deploying to live must be part of the project plan and expecting it’s “done already” is analogous with expecting a coin to be both heads and tails at the same time.
Application deployment varies vastly. Good system administrators have set up the development serve exactly as the live and no code changes are required. Depending on the application database changes can be required, which can take significant time. This can easily be managed by pairing down the data to only what is required and making a working copy of the data with the necessary changes so deployment becomes”swapping one jar with another on the shelf”. If significant changes are required it may be worthwhile to develop the application in such a way to use a new database or table. This then allows the data for the old and new applications to sit side by side. Deploying then requires changing the code base and moving the old data to new. This could also potentially be managed by making smaller, incremental changes to the existing code base.
Finally, just like in development, things can go wrong in deploying and accidents and oversights can happen. The larger the code base the greater potential for something to go wrong.
Bottom line, deployment is the culmination of the development process but it is still part of the process and cannot be overlooked or skip the project management process.
A distributed messaging system works for XMPP (Extensible Messaging and Presence Protocol) and it effectively works for email (name at server). I would imagine the same could easily apply to social media. You provide an open source project or a server app for a small fee and users can then fire up a server in their own house and host for friends. You could even sell RasberryPi style small servers so it’s plug & play easy.
The social network would then be “username at server” and then the user on that server would have to approve your connection for your server to connect and display updates in your news feed.
This would address a lot of the privacy and data concerns people have.
Meeting notes are currently written by hand. This requires a dedicated body just to take notes or that a person divide their attention between meeting and notes. It also then requires additional resources just to send the meeting notes to all attendees.
An app that runs on a laptop, or ideally a web app, that records the meeting and puts it in text in real time. The truly innovative ideas would be to identify separate voices and assign colors to each unique person or “voice#1” so the reader can easily see what was said and by who. It would then be possible to go through and text replace “voice#1” with the person’s name. Or, at the beginning or end of the meeting each attendee states their name and the app handles this.
I could see additional usage for university students. With your laptop taking notes for you the student is free to pay attention. The ability to add annotations and thoughts in the right margin would build on what was said with notes just on visual content or thoughts that come up while the conversation is ongoing.
I must admit, I’ve not seen any app do voice recognition for specific people so I’m not sure the complexity. This would certainly take significant processor power so may not work as a web app.
I tweeted the other day that code commenting and documentation takes half my life. That’s an exaggeration and joke but it’s true I’m spending far more time on these things than I would like.
On the one hand ad hoc development would be much faster. On the other hand good documentation and code comments will allow Lakebed.io to hire it’s first developer much faster and easier.
I always tell people not to scale too early; don’t delay building a good product just so it can handle 1,000,000 users right out if the gate. That being said, a bit if consideration for the future and the potential need to scale isn’t such a bad thing. There is certainly a fine line between delaying a product unnecessarily and building a sustainable, structurally sound product. There is no one size fits all, definitive rule around how much future proofing is the right amount. It depends on the product, stakeholders, project phase, etc.
This does, conveniently, highlight the need non-tech companies have for a Technology Solutions Architect. Decisions around future proofing and sclability are best made from an informed perspective.
It is very hard to gather real-world data on the suitability of a political candidate for the job they are applying for. It’s actually very hard to perform an interview, background, and reference checks on a political candidate.
A place to share real-world stories and experiences of candidates. Those who support the candidates can provide real examples of when they have performed well in situations similar to those they will face when in office.
Essentially setup a WordPress site, create a post for each candidate, and on that post provide their business plan for the actions they will take in office. People can then comment providing examples of when the candidate has done will in the past. Tracking email, social media, & IP of each comment and approving each comment before they go visible will go a long way to reducing spam.
Documentation is when it should/shouldn’t/must be used. Documentation should also include how to use the technology, how to troubleshoot, and how to access additional help. Unlike communication, documentation must specifically be written for org knowledge retention and repeat access.
Communication on the other hand is how and why it’ll make employee jobs easier. This is the sales pitch and the buy in.
It might be helpful if links other than to the same domain as the email are disabled. I.e. if you get an email form @gmail.com then gmail.com/test.html would work but malicious.com/test.html would be disabled.
Additionally, you could:
Show the SSL ticket info of email senders. That would hopefully highlight phishing emails.
Display all links and emails in upper case to highlight differences like “l” vs. “I” vs “L”.
Advice I just gave a cycling friend that applies to anytime and anyone who is pushing themselves to any extreme:
How did you feel? One of the things I’m learning is no point beating yourself up about being slow when you have off days. Look at the good 75% of days and measure progress on that. Recognize you’ll have off days and analyze what causes them to prevent them on race day or at least predict in advance.
I’m experiencing some very clearly irrational fears related to starting Lakebed. This is things like “what if I run it successfully but can’t find a job later in life”. This is the “avoid risk now to avoid possible risk later” mindset that makes no sense.
I’ve never felt these irrational fears in past projects so that means:
Lakebed is a truly good idea.
I’m older, more mature, and have a significant other relying on my contribution.
There should never be a direct line of communication from users to developers without a project manager and/or stakeholders to sort, validate, and prioritize change requests. Users too often feel they are speaking directly to the developer “so it should be easy, just quickly make this change”. It seems, users don’t like hearing “no” from a developer because in their mind “it would be faster to just go and make the requested change rather than project managing it”.
A few days ago I wrote about how project managers should be task managers for staff. Don’t add new tasks to a person’s RAM if they’re working on another priority, instead add it to a list for a later date. An employee should only have to think about what is currently on their plate and responsible for producing as task management is wasted RAM (there’s an app for that).
I now realize, I was doing that to myself. I’m working on a technology product & service and have many great ideas. I was multi-tasking between them which wastes RAM. For example, I’m writing code, trying to write marketing content, and thinking about the logo. Today, I read about options for authentication on microservices over breakfast but I don’t even need to authenticate yet. I should be focusing on a minimum viable product (MVP) that can be demo’d to potential customers rather than thinking about the absolute best authentication implementation.
The change I’ve made (problem-solving>solution->action) is I’ve built a Kanban board on my fridge (so I see it every morning) with 1 priority at the top. Until that priority is done everything else is thrown on the bottom of the board to be prioritized/planned later.
With the microservice approach, developers create the application as a suite of small independent services, each independently deployable, running on a unique process, and communicate with each other using public API’s. The main benefits from this approach are resiliency of services, ease of deployment and independent scaling.
In other words:
Communicate with each other via public APIs.
Why open a public API if you don’t need to? It seems like a security flaw. If a given process is only ever initiated by another internal microservice then it shouldn’t be open to the public.
I’ve achieved this is a few different ways in the past. First, you can have server code or an API on the server but not on the webserver. By doing this it’s a microservice but not publicly available. For example, in PHP you can call it from the command line or include code that may not otherwise be accessible from the web server.
Alternatively, I’ve setup crons that check if a file exists and perform some action when the file exists. As an example, a microservice might create a massive database insert in a .SQL file. Then a cron runs late at night when there are fewer users and if the .SQL file exists it processes and inserts.
My wife and I have made a decision to not watch any TV in bed and I’m absolutely astounded by the increased productivity. It’s not that we weren’t productive before but we would relax at the end of the night. Now, we spend more time in the living room and generally work or stretch with TV in the background.
This has allowed us to sleep better, get up earlier, and get more done when we’re awake.
To start and to be clear, I’m a developer. I think applications both bespoke and general are great tools.
For a lot of developers the languages they know well are a hammer and everything looks like a nail. Well written code can solve almost any problem (with enough time, money and resources) but often there are existing solutions or time/money constraints that do not permit application development. This is where a solutions architect will shine because they are simply contracted to find the best most cost effective solution. A solutions architect makes no money or benefit off the solution provided so clients can be certain the suggested solution is the best and takes all constraints into consideration. A solutions architect coaches a business through eliciting requirements, highlights pitfalls & common concerns, and consults on planning & implementation.
If you need a technology solutions architect check out Lakebed.io.
Achievable expectations are absolutely critical to all stakeholders on projects. For those developing or producing the work, it doesn’t feel good to be late or stress about deadlines. For investors and project sponsors achievable expectations are necessary in order to make commitments around the project.
The best way to achieve expectations is with a sound plan and being keenly aware of the project reality versus the plan. Being able to identify delays as early as possible and communicate those delays to all stakeholders allows expectations to adapt to unforseen events.
What I have learned is assumptions are incredibly damaging. I make bad assumptions that “we experienced frustrations and road blocks” communicates delays. Unless you specifically state “the project will be delayed by # months” stakeholders will assume the project is on schedule and on budget.
Agile is a great business buzz word and great for stakeholders. Is a project really agile and is it viable to suggest it is?
Falsely promising agile development sets unachievable expectations. Stakeholders experienced in project management will quickly nite the lack of sprints and demonstrations while less experienced stakeholders will notice later in the project.
Part of setting achievable expectations is defining the project scope and development methodology so all stakeholders know when they can provide feedback and when to expect demonstrations of a working product.
If it’s waterfall, be honest and call it that.
I witnessed a case today where a person was working on the website redesign and was given the task of “design[ing] pretty reports”. A project manager has 2 options:
“The reports are more important so please stop working on the website and complete this task.”
The current task is more important, in which case there is no point assigning the new task. Simply add it to the backlog/task list.
I see a lot of job postings the require “effective time management” but in my opinion that is management passing the buck. I don’t see the point of giving someone a task so they can add it to a task list, especially without communicating priority. Simply maintain a shared task list or backlog where staff can get the next task when the current one is complete. Asking each employee to manage a task list and multi task is a waste of valuable RAM and time.
I just received the following email:
My response is, we’re seeing the value of a programmer who worked as an insurance broker and underwriter for 10 years. I see all sides of this problem from customer, user, marketing & business development, to developer & DBA.
We received the following compliance request from a stakeholder and I’m very pleased that it clearly displays how comprehensive my semi-annual compliance update is:
For the remaining items I committed to providing them by the end of the week and this is the response I got back:
Lesson learned, nohup does not appear to continue running after logging out of the server.
I’ve built a data warehouse (DW) for work and am in the process of importing all underwriting & claims data for the past 5+ years. This is a massive import of 40+ months of Bordeaux data and that import is taking significant time. I provided management with an estimate of when the import would complete and was, unfortunately, wildly wrong.
This is precisely why I wanted to start this blog. I needed to go looking for this reference and took 30 minutes to find b/c I thought I had sent it via IM but had actually sent it via email.
This doesn’t work (perform as expected) but in my mind this is logical:
In order to get the results I expected I had to read up on SO (Stack Overflow) and write extra lines: Paul Wadsworth was kind enough to find and provide this from the docs:
Per the MySQL documentation “this is useful primarily when all values in each nonaggregated column not named in the GROUP BY are the same for each group. The server is free to choose any value from each group, so unless they are the same, the values chosen are indeterminate.”
[It seems] All governments are struggling with how to host/support/provide open data.
Government and similar entities often have very similar needs.
This is a good opportunity for shared resources such as code/developers via an open source project.
An open source project similar to WordPress.
“Install-able” on a server so the org retains control of their data.
Extendable through plugins as any good open source project is.
Suggested pre-built functionality
API’s to provide data output to requests. These API’s would allow for data output in .xml, .json, .csv, .txt.
Simple data upload that allows users to upload .xlsx, .csv, .txt and parses/maps those uploads as needed.
Something similar to the upload page I’ve done for Cansure:
Data storage in a robust database, potentially Mongo or Couch to provide quick queries and robust handling of unstructured data.
Public/private data management. Of course there will sometimes be PII (personally identifiable information) or data that the org wishes to keep private. That data should live along side publicly available data so internally the org can run reports including the private data when needed.
Something like the old YQL (Yahoo! Query Language) to mashup multiple data sets into a single, customize-able output.
Ease of use both internally for uploading/managing data and externally for accessing data.
Decent data backup including GPG encryption of backups.
Decent encryption-at-rest for PII.
Just imagine if, like WordPress does for CMS/blogs, a government entity could leverage that functionality with a simple server install. Everything from the largest U.S. federal agencies to the smallest towns could have a decent open data platform. If all these orgs where using the same platform it would also start to become easy to mashup data across orgs since they all provide it in the same format.
If you can get ideas/input/user stories from your customers into the innovation management system you suddenly have more participation AND real users. Even a simple web feedback form could feed into this.
If you could tie this into an agile framework you could almost automate your user feedback and sprint planning.
I was already thinking of suggesting to Cansure a simple feedback form available everywhere on the website and web app. That way there are few barriers to providing feedback/ideas/innovation and you can see exactly where the user was when the idea struck.
I wrote the following for Lloyd’s shortly after staring the position:
A newly created role designed to streamline audit processes.
Build a Governance, Risk Management, and Compliance (GRC) framework.
Formalize business procedures.
Identify & leverage business efficiencies.
Support efficient, effective use of technology.
Ensure business resilience and introduce scalability where possible.
Throughout the job I have:
Created an international sanctions list search tool.
Initially, to work within the corporate IT structure I wrote the tool using Powershell and Excel. This was reliant on my logging in to update the search lists as I did not have access to Cron or any scheduling tool.
I then discovered the corporate network was doing local hostname lookups so I set an old laptop up as a Debian/MySQL/PHP server and wrote a web search tool.
Created a claims search tool.
Using the same local server I wrote a claims search tool.
Claims were managed in an entirely separate system from U/W so claims was producing weekly Excel reports of new claims. It was up to U/W’s to print these claims reports and add them to files to keep track of claims on existing policies. It was also up to U/W’s to engage with claims staff to determine the current status of claims on renewals.
This search tool takes monthly Excel Bordeaux uploads and weekly claims reports and generates and easily searchable tool.
Going forward there will be additional functionality to email U/W’s on new claims for renewals and to provide exact status with respect to loss payments, reserve updates, and notes. There should be little need for claims staff to manually search and update U/W’s.
Become the office IT support. Staff come to me with IT problems and I either fix them or escalate to the HelpDesk. Often times I can fix something in 5 minutes that takes the HD 30+ minutes to fix as they must go through employee auth, search their knowledge base, provide the solution over the phone.
Become solely responsible for all employee/auditor IT on-boarding.
I have created a template including Active Directory groups, email (alias different from the real server address), application access, etc.
Prior to this every account was setup incorrectly whereas now accounts are generally correct with minor corrections that still allow employees to be functional on their first day.
A single point of contact for on-boarding also ensures management through the entire process and follow-ups on delays.
Developed a compliance framework and a compliance update document that is sent to all binding authority contract holders on a semi-annual basis.
This document includes policy statements for sanctions search, money laundering, etc.
The semi-annual update is simply a collection of many policy documents in a single, convenient format. By doing this, each policy statement stands alone; being a functional document that communicates the policy on that specific topic. It is now very easy to pick & choose what compliance updates are provided at any given time by sending individual policy statements or the entire semi-annual update.
2x Senior Managers: We need X new data analysis and related functionality in the internal web apps.
Me: OK, I’ve done some preliminary exploration and am fairly confident I can deliver on that.
VP: We need this done ASAP.
Me: Ok, I’m currently working on the requests the president of the company made.
VP: Well we need this done ASAP.
Me: I’ll need you to tell the president his requests are delayed for your request.
VP: Why can’t you just do them both at once?
2xSM: When can you have this done then?
Me: I can’t even get to it for 2 weeks.
2xSM: Ok, so you’ll have it done in 2 weeks?
In my head: that’s not what I said and not what “get to it in 2 weeks” means but at this point I’m not going to fight you.
Senior Manager: Actually, 2 weeks is Monday the 9th and I’m on vacation starting that day so let’s make it Friday the 6th.
VP: Ok, now that that’s dealt with, what about that shiny new feature I requested and you said you were too busy? Can I have that done this week?
All participants of this meeting were in the same room, they all had the same information, and heard the same responses. Somehow desire got confused with perceived effort which got confused with actual work.
We don’t want to document required features & functionality. We don’t want to estimate how long any work product is going to take. We don’t want to spend the time on project management defining what features & functionality entail. We don’t want to write documentation. We don’t want to perform any risk management. We don’t want to perform any quality assurance (QA). We don’t want to ensure the UI design is logical, optimised, or well designed.
What do we want? We want it now. We want new, innovative, never before features & functionality now.
As a result, we’ve built a massive technical debt. We have 1 man hacking together additions at a fevered pace just to keep up with random demands. We are attempting to manage a developer as a sales resource. Management can go to a salesman and say “sell 100 widgets by the end of the week” and the salesman will work a bit hard, might meet his goal, at least come close, and management has achieved what they want. Management is currently coming to the developer and demanding “I want to run reports filtering by X data before my meeting at the end of the week”. “Filtering by X” could entail 1 line of code or could be 1,000,000 lines of code, it doesn’t matter it just has to be done by Friday.
New and renewal commercial underwriting of hard to place property & casualty risks.
Handled all E&O renewals and majority of new business. Tasked with comparing wordings of existing and newly negotiated E&O contracts.
95% approval rate for unique Lloyd’s submissions falling outside the contract authority and 50% quote rate for open market placements. Complemented by both liability contract underwriters for the professionalism and effectiveness of referrals.
Marketing including broker visits and tradeshow attendance.
Selected a dedicated server sufficient for financial services web applications and wrote a web application plan including security, programming language, database architecture, and server.
Responsible for office technology support including phone systems, network setup & security, virus protection & removal, patch management, and educating staff on IT risks. Currently upgrading the last 4 computers from Windows XP.
Responsible for corporate website updates, some social media, email marketing, and compliance with Can-Spam anti spam laws.
Finalized updating the last of 4 computers to Windows 7 from XP.
While it was expected that renewal terms were sent 30 days prior to renewal upon resignation I took care of all renewals up to 45 days in advance to ensure a smooth transition.
Upon resignation completed a program renewal 60 days in advance that accounted for $50,000+ annual premium, again to ensure a smooth transition.