Wait Until They Find Out About The "It's A Free Country" Part
Me: “I’ve looked at the brief and it’ll cost [total].”
Client: “I thought you were a freelancer.”
Me: “I am.”
Client: “No, you’re not. You’re a chargelancer!”
Me: “I’ve looked at the brief and it’ll cost [total].”
Client: “I thought you were a freelancer.”
Me: “I am.”
Client: “No, you’re not. You’re a chargelancer!”
This story happened a few years ago. A friend refers me to his mother, a real estate agent who wants a new website for her business. I call her to set up an appointment.
Client: “So, what is your expertise in real estate?”
Me: “I’ve done two real-estate websites in the past, and they’ve been quite successful. I can provide you with a searchable database of listings where buyers can filter by price and other factors, as well as a homepage with featured listings, your bio, and anything else you’d like to include.”
Client: “Yes, but have you ever sold a house before?”
Me: “No.”
Client: “Why not?”
Me: “Because I’m not a real estate agent. I’m a web developer.”
Client: “So how do you expect to do a website for me if you don’t know anything about being a realtor?”
Me: “I know enough to build a website with a listing database which you can very easily populate with descriptions, photos, and any other info you wish to provide the buyers with. I can also provide other tools, such as a mortgage calculator and a lead-tracking system that allows potential buyers to contact you with listings they are interested in.”
Client: “I really don’t think you know what you’re doing. I think I’m going to have to pass and find someone who knows how to sell a house.”
Later, I discovered she had finished her website. On Geocities. Yellow background. 50pt font. Seemingly designed by a ‘real’ real estate agent…
Client: “We would like a drawing of a moose on skis.”
I send the art.
Client: “Why there were two feet on each ski?”
Me: “People ski on two skis and a moose has four feet so I put two on each ski.”
Client: “That is ridiculous!”
Me: “Which part? You’ll have to be more specific?”
Client: “Well, I’m pretty sure they don’t make skis that can accommodate two feet each!”
Me: “Right. That was a pretty big leap on my part, sorry.”
I’m a year and a half into the development of a new web application for managing complex data sets. Our boss has never been able to provide proper specifications for what he needs, just a flood of vague ideas with no real detail and constantly changing scope.
My job is to try and turn this into a comprehensible list of tasks that the dev team can actually follow. Each month, I have a planning session with the boss where we hash out the next period of work. Each session, I remind him that changing the scope means adding more time.
We agree and sign off the work to be delivered by the end of the month. So far, we’ve hit every deadline.
I thought we had a pretty good system in place until:
Boss: “I can’t believe we’re so far behind and how poorly you’ve managed this project.”
Me: “What do you mean? Haven’t we met all the agreed deadlines throughout the project?”
Boss: “I’ve made a spreadsheet of all the dates I wanted each feature done by. So far, you’ve missed every single one of them.”
Me: “Excuse me? We’ve always delivered what’s been agreed on time. Where have these new dates come from?”
Boss: “This is how long I thought the work should take and I made up my own timeline.”
Me: “I’ve never seen these dates before, let alone agreed to them. At a glance, many of them seem extremely optimistic.”
That’s business talk for “f****** mad”.
Me: “We agreed at the start this would be at least a three-year project.”
Boss: “Well, I decided it should take less time and you’re late. I’m going to have to pull the plug on this project if you can’t have everything wrapped up within the next month.”
I politely remind the boss that there was at least another year and a half of work left to complete the project. I’ll probably be looking for a new job shortly.
Detailed tracked changes.
Full changelog:
!pubdate:P3d) #4092e:1639310674957894 or multiple entry IDs (or): e:1639310674957894,1639310674957893
A few highlights:

Detailed tracked changes.
Full changelog:
L:12,13,14 or label names: label:something or labels:"my label,my other label,🧪"L:* or no label: !L:*:oldest is now based on alpine:3.5 with PHP 7.0.33 and Apache 2.4.35 #3666.htaccess for ./p/themes/ folder #4074CRON_MIN is set #3927400 and 405 HTTP error codes #3981inputand select elements for the Origine theme #3727.editorconfig and .stylelintrc #3895, #3912?? operator #4020Note: Last release before dropping support for PHP 5 and Internet Explorer 11.
pdo_sqlite is optional except for export/import SQLite #3545ORIG_PATH_INFO #3560latest tag in git for the latest FreshRSS release #3524Revert PHP version
+ sign #3489docker-compose #3353
remoteip to log the client remote IP instead of the local proxy IP #3226LISTEN to change the internal Apache port when running in host network mode #3343alpine:edge to test the latest PHP 8+ version #3294alpine:3.4 to test oldest supported PHP 5.6.36 version with Apache 2.4.43 #3274@-sign in database username (for Azure) #3241ceil() by intval() for edge cases with PHP8 #3404js_vars and nav_menu #3342phpcs (PHP_CodeSniffer) line length + whitespace #3488
*.phtml, *.css, *.js as well.png files as binary #3211PDO::ERRMODE_SILENT #3048<time datetime=""> for entry dates #3106quickadd #3051Quick fix for FreshRSS 1.16.1.
loading="lazy" for favicons #2962.stick elements in older Webkit browsers #2995lib_phpQuery for full-content retrieval #3004FRESHRSS_ENV environment variable #2963lib_phpQuery) #2874
#article .title, #article .content!date: allowing to exclude any date interval #2869
!date:P1W (exlude articles newer than 1 week), !pubdate:2019, -date:2020-01-01/P5d, etc.newestItemTimestampUsec #2853HTTP/1.x 200 OK for an empty request, to ease discovery #2855author: #2806COPY_LOG_TO_SYSLOG and FRESHRSS_ENV controlling logging #2745foreach in applyFilterActions #2809lib_phpQuery when fetching the full content of HTML documents with a complex <head ...> #2864yield #2588
<audio> widgets to use the full width of the reading zone, to help navigation in e.g. podcasts #2875<p> instead of <pre> to display <media:description> information #2807#force_feed simplepie#643
./extensions/ is solely for third-party extensions #2837
./extensions/ as a Docker volume, to ease adding third-party extensionscheck_url_before_add and feed_before_actualize #2704entry_before_display hook also through the API #2762