Monday my boss called a meeting between UX guys and the mobile
developers and him to decide on the new feature of capturing multipage
document.I was the only one that got to the meeting with one suggestion
of UI flow and coding solution that would require no webservice change
at all.I made a drawing on the whiteboard and I said I could make a mockup.he told us to think about it and asked the UI guys to come up with ideas too.2 h after the meeting I had a small prototype, already integrated with the app, that they could test out the UI of my idea.The
next day, I had a fully functional prototype of the solution, including
the conversion of all the pages in a single pdf file.I sent the
workable prototype for them to install on their devices and my boss
replied to my message asking the other two mobile developers to send
their mockups as well.He called another meeting for today and he started
the meeting by showing my prototype on his phone and he started asking
for small changes here and there and assigning tasks here and there when
I told him I had two other mockups to show.Again, I showed two working
apps with a completely different flow, that were even better than the
first one and that blew his mind...Considering that I got two production
bugs to fix and I also fixed 3 other bugs that QA didn't get but I
found in production and I fixed all of them as well, not bad for a week.
When a company wants to get into a new technology and they don't have
the expertise in that area, they think that the best way is to hire the
best talent possible.but they don't have enough knowledge to evaluate if
the one showing oneself as the best is indeed the best at the same time
they feel insecure for not being able to grasp everything the expert is
providing.then comes the bitter feeling in the company that the expert is too smart for their liking.
If they hire the expertise from 3rd party vendors, the integration with
the current culture fails. It's almost impossible to satisfy them,
because they don't know what questions to ask and are giving several
answers to grade when the product is delivered. Or if they hire someone
like me, the expert ends up doing guerrilla development, because I have
to constantly sneak new ideas and push them forward from behind the
lines, making obscure alliances, or being ostracized, unmotivated up to
the point that both parts decide to split.
Thursday, April 9, 2015
Thursday, July 17, 2014
My quest to automate Mobile deployments - How to prompt for user input during Xcode builds
At work, as the sole mobile developer in the office, I have to juggle between writing code, understanding 3rd party code that was acquired by the company and also deploying the code (mine and 3rd party). I had to upload binaries to TestFlight for QA testers, for show and tell to executives, manage iTunesConnect deployments, at the same time I have to keep the local git repository in sync with the corporate TFS repository.
As it happens, my company uses TFS that is not git friendly yet. I quickly found git-tf to bridge the two repositories, but the job of manually syncing the local and remote repositories all the time and all the manual deployments were taking up too much of my development time.
Another thing that was making the deployments complex was the amount of changes I had to make in the configuration and the code when migrating from one environment to another.
So I quickly started working on a solution to automate my tasks as much as possible. Not because I'm lazy, but mainly because if we write the proper automation tasks, we avoid mistakes.
Here are my challenges:
In this example, both ad-hoc and production of an enterprise program app use UA/APNS production, but they have different app bundle ids, which means they need to point to different topics in UA/APNS server,. For that reason, I need different keys/secrets for each distribution. In this example, we can populate the keys and secrets right before the archive, maybe using a script that captures them from the keychain on the build machine using the dev ops build user. The developer will never have access to these keys/secrets on her keychain.
This script assumes that the user has configured git-tf with her username, but it is not hard to change it to get the user name from the user running the archive in Xcode.
This code also changes the comment and the name of the archive file, so we can see on Xcode Organizer that this build was generated by Xcode and not by our automated build script.
I have the test of the Automated Build flag because the same scheme is used in our automated build solution that I'll explain later.
My first try was using Bots. It took me awhile to figure out how to use them. I demo'ed to my boss and he was very excited, because the dev ops could access the bots via web from their Windows boxes.
The major road block with Bots is that it requires git in order to work. I also didn't find the Xcode documentation very enticing and it lacks more meaningful examples. I did entertain the idea of scripts that would pull the code from TFS on the a git server on the build machine, but I haven't convinced dev ops of the feasibility of this solution yet. They were already developing workflows in TFS that queue the builds of all the .NET stuff and they opted for going that way.
I wrote a script that receives as arguments the environment of the build (DEV, QA, UAT, PROD), the scheme (I have some projects with more than one target) and it sets the identities, provisioning profiles, etc for xcodebuild to generate the archive directly from the command line. It also generates the .ipa file and uploads it to TestFlight if the build is for a non-production environment. The idea is to extend this build script to upload the binary to the Appstore for production environments of our public apps, but we are not quite there yet. This will remove the need for the dev ops to access a Mac except running remote tasks from Windows or accessing web servers.
Here is the example of the build script:
We do have the need to change identities and provisioning profiles because some of our users need to have the same app for the different environments loaded on the a single device at the same time, so they can make comparisons. And because the apps use push notification, each distribution requires its own unique app bundle id and provisioning profile.
We also need to change identities, because we use the enterprise program for development and in-house distribution and the Developer program for deployment to the app store.
The complete solution uses a TFS workflow that accesses the Mac Mini via ssh, copies the source code from TFS and runs the build script passing the environment, the target and the TFS PBI or Bug number and description as comments. The dev ops did their TFS magic there. I just helped on the Mac side to configure the proper ssh certificates, key pairs, proper keychain. On the TFS side, when the developer merges and commits the code to the QA branch, she has to associate it with a specific task or bug that this commit is supposed to fix. When queuing the build task, it is associated to the pbi or bug as well and additional information is captured from the user in a form. Between the form and the source code in the repository, the TFS build task finds out all the necessary information to copy the source code to the mac mini build server, run the build script and report the results back to the TFS. All the workflow is then controlled on the TFS/Windows side accessing the Mac Mini via ssh as needed.
As it happens, my company uses TFS that is not git friendly yet. I quickly found git-tf to bridge the two repositories, but the job of manually syncing the local and remote repositories all the time and all the manual deployments were taking up too much of my development time.
Another thing that was making the deployments complex was the amount of changes I had to make in the configuration and the code when migrating from one environment to another.
So I quickly started working on a solution to automate my tasks as much as possible. Not because I'm lazy, but mainly because if we write the proper automation tasks, we avoid mistakes.
Here are my challenges:
1. Push notifications
Our apps use push notification and we use Urban Airship as our push notification server. As is well known, UA and APNS (Apple Push Notification Server) have two environments: Debug and Production. UA provides a configuration file where you can put the keys for both of these environments and at run time, it configures itself accordingly. The problem is that at my company, we have to handle 4 environments: Development, QA, User Acceptance Test and Production. All the pre-production environments have to use APNS debug, since they are not production, so I had to handle 3 different debug configurations for UA config file.
2. TFS integration
All the "other" code in the company is developed in .NET world. They get along quite well with TFS, SQL server, Visual Studio, Windows, but when it comes to git and Macs, the support is questionable. The company didn't like the idea of having a separate git server for mobile developments. They prefer the code to be imported into TFS and from there they can merge/branch according to the deployment environment.
As they have a lot invested in and knowledge of the TFS infrastructure, they want to benefit from it as much as possible.
3. Lack of Macs
Due to the cost of Macs, the company prefers to have mostly Windows workstations and laptops handed out to developers. We have very few Macs and usually they are handed out to executives that run a Windows VM on it all the time. They conceded that developers of iOS code need a Mac, but it was hard for them to accept that all dev ops would need a Mac too in order to build and deploy code to TestFlight and App Store. Having a Mac there is a sign of status that they were just not ready to spread to all levels of development and IT tasks.
4. Back-end integration
Our apps talk to Salesforce APIs on the back-end and again, each environment requires different endpoints and sometimes slightly different state machine to entertain the SOAuth dialog and certain customizations in the login process, like allowing the user to reset password from the login dialog ("forgot password link") and the always connected app.
5. Corporate network
My company is in the financial sector, so security is very strict. The network has all types of firewalls, traffic filters and restrictions they put in place for all users. The users are defined in Active Domain and the network is very Mac hostile. We have to change our passwords very often and every time it takes place, it is a nightmare on the Mac side. I have to either clear all sorts of cookies, certificates and passwords stored on the keychain and start over, entering the new password again a thousand times, or I have to painstakingly go through my key chain and update all the stale passwords. If you add to that the bug on Mavericks when your Mac is connected to redundant gateways, which disconnects every minute or so, remote tasks are very hard to accomplish on Macs here.
6. Maintaining the version string consistent across deployments
Uploads to the App Store require that the version strings (long and short) increase from one release to another. We also need to be able to identify uniquely each bundle uploaded to TestFlight or installed on a device. We need to look at the app and quickly identify which distribution is installed and which build generated that distribution.
Solutions:
Just trying to make my life easier, I started looking into ways to simplify my tasks with automation.
1. Push Notification
For the push notification, I wrote script steps into the build action on the scheme that updates the UA config file before the archive.
Here is an example:
# Archive pre-actions# set UA config to development/usr/libexec/PlistBuddy -c "Set APP_STORE_OR_AD_HOC_BUILD YES" "${PROJECT_DIR}/AirshipConfig.plist"if [ "$CONFIGURATION" == "Ad-Hoc" ]; then/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"/usr/libexec/PlistBuddy -c "Set PRODUCTION_APP_KEY" "${PROJECT_DIR}/AirshipConfig.plist" /usr/libexec/PlistBuddy -c "Set PRODUCTION_APP_SECRET" "${PROJECT_DIR}/AirshipConfig.plist" /usr/libexec/PlistBuddy -c "Set APP_STORE_OR_AD_HOC_BUILD YES" "${PROJECT_DIR}/AirshipConfig.plist"fiif [ "$CONFIGURATION" == "Production" ]; thenecho "actions before archiving for Production upload" >> ~/Public/${CONFIGURATION}MobilePartnerarchive.txt# change UA config/usr/libexec/PlistBuddy -c "Set PRODUCTION_APP_KEY" "${PROJECT_DIR}/AirshipConfig.plist" /usr/libexec/PlistBuddy -c "Set PRODUCTION_APP_SECRET" "${PROJECT_DIR}/AirshipConfig.plist" /usr/libexec/PlistBuddy -c "Set APP_STORE_OR_AD_HOC_BUILD YES" "${PROJECT_DIR}/AirshipConfig.plist"fi
In this example, both ad-hoc and production of an enterprise program app use UA/APNS production, but they have different app bundle ids, which means they need to point to different topics in UA/APNS server,. For that reason, I need different keys/secrets for each distribution. In this example, we can populate the keys and secrets right before the archive, maybe using a script that captures them from the keychain on the build machine using the dev ops build user. The developer will never have access to these keys/secrets on her keychain.
2. TFS integration
For TFS integration I installed git-tf on the Mac. It is tricky to configure all the required java stuff and the symlinks to make it easy to update the versions in the future. You have to clone the TFS repository on the command prompt and if you don't configure the clone afterwards to store your credentials on the git configuration file, you will have to provide them every time you execute any git-tf command. You also have to create your .gitignore, to avoid grabbing all the Xcode temporary files into your TFS repository.
I couldn't find a way to call these commands from within Xcode when I'm in the source control menu. I think Xcode should provide a way to customize the actions there, similar to the schemes, providing hooks for pre- and post- action. This would have made my life a lot easier. You won't believe how many iOS and Windows developers are not familiar with command prompt in the terminal window.
The other bothersome feature was the fact that configuring git-tf to store the credentials would store the password unencrypted, and this configuration had to be changed manually every time we had to change our passwords in AD.
I started by writing scripts that would store the password on the keychain when cloning the repository and then would read the key chain to provide the password when checking in code to TFS or pulling in updates. They were still scripts that would run on the Terminal window and the developer had to remember to checkin code to TFS when she was ready to merge to other branches.
This also didn't solve the problem of automatically changing the password when the user had to change the password in Active directory. I'm still thinking about how to solve this problem of the password update triggered by AD.
The next step was to make the checkin to happen from within Xcode, without the need to run any scripts in the terminal window.
I usually checkin the code when I'm ready to deploy a binary to TestFlight, which means that I had generated an archive. As it happens, sometimes I would upload a binary to TestFlight and I would forget to checkin code to TFS, which would make the TestFlight code out of sync with TFS. I then decided to create a post archive script to checkin to TFS every time I generate an archive.
Unfortunately, git-tf does not return an error if the connection with TFS fails due to invalid credentials. In fact, if we keep providing an invalid password, it keeps asking for the password again 4 times before it ends without returning any error to the calling script. Which means that it can even lock the account depending on the policies of your company.
Since I didn't resolve the changing password problem, I decided to add a script that would always prompt the user for a password. At least the developer doesn't need to go to the terminal to run a script to checkin. Because I don't know how to show a prompt in Xcode without using AppleScript, that's the language I had to use to accomplish that.
Here is an example:
set automatedBuild to do shell script "echo ${AUTOMATED_BUILD:='NO'}"if (automatedBuild ≠ "YES") thenset archiveComment to "Xcode generated"set dialogResult to display dialog "Enter TFS password:" default answer "" hidden answer yes buttons {"OK"}set userName to text returned of dialogResultdo shell script "/bin/bash --login -c \"cd $SRCROOT/.. ; echo "& userName & " | git-tf checkin \" 2>&1 "display dialog "Code saved to TFS..." buttons {"OK"}end ifset archiveDir to do shell script "ls -dt1 $HOME/Library/Developer/Xcode/Archives/*/*.xcarchive |head -n1"trydo shell script "/usr/libexec/PlistBuddy -c \"Add :Comment string " & quoted form of archiveComment & "\" " & quoted form of archiveDir & "/Info.plist"on errorend trydo shell script "/usr/libexec/PlistBuddy -c \"Set :Comment " & quoted form of archiveComment & "\" " & quoted form of archiveDir & "/Info.plist"do shell script "/usr/libexec/PlistBuddy -c 'Save' " & quoted form of archiveDir & "/Info.plist"do shell script "/usr/libexec/PlistBuddy -c \"Set :Name 'QAbuild'\" " & quoted form of archiveDir & "/Info.plist"do shell script "/usr/libexec/PlistBuddy -c 'Save' " & quoted form of archiveDir & "/Info.plist"
This script assumes that the user has configured git-tf with her username, but it is not hard to change it to get the user name from the user running the archive in Xcode.
This code also changes the comment and the name of the archive file, so we can see on Xcode Organizer that this build was generated by Xcode and not by our automated build script.
I have the test of the Automated Build flag because the same scheme is used in our automated build solution that I'll explain later.
3. Lack of Macs
As I explained, Macs are hard to get at my company. But the fact that all the code I was working with had to be built on a Mac and that I was the only person with access to it, convinced my boss to invest in a Mac Mini server to be our build server. I had now to make it possible to remotely trigger the build and deployment on that machine.My first try was using Bots. It took me awhile to figure out how to use them. I demo'ed to my boss and he was very excited, because the dev ops could access the bots via web from their Windows boxes.
The major road block with Bots is that it requires git in order to work. I also didn't find the Xcode documentation very enticing and it lacks more meaningful examples. I did entertain the idea of scripts that would pull the code from TFS on the a git server on the build machine, but I haven't convinced dev ops of the feasibility of this solution yet. They were already developing workflows in TFS that queue the builds of all the .NET stuff and they opted for going that way.
I wrote a script that receives as arguments the environment of the build (DEV, QA, UAT, PROD), the scheme (I have some projects with more than one target) and it sets the identities, provisioning profiles, etc for xcodebuild to generate the archive directly from the command line. It also generates the .ipa file and uploads it to TestFlight if the build is for a non-production environment. The idea is to extend this build script to upload the binary to the Appstore for production environments of our public apps, but we are not quite there yet. This will remove the need for the dev ops to access a Mac except running remote tasks from Windows or accessing web servers.
Here is the example of the build script:
while getopts t:e: optiondocase "${option}" ine) CONFIG=${OPTARG};;t) TARGET=${OPTARG};;?|*) printf "Usage: %s: [-t value] comments \n" $0exit 2;;esacdoneif [ $OPTIND -gt 1 ]; thenshift $(($OPTIND - 1))printf "Remaining arguments are: %s\n" "$*"ARCHIVE_COMMENT="$*"elseprintf "Usage: %s: [-t target] [-e environment] comments \n" $0exit 2fiprintf 'Building %s - %s\n' "$CONFIG" "$ARCHIVE_COMMENT"# set Apple developer account as teamIDENTITY="" case "$CONFIG" inDEV) CONFIG="Debug"PROVISIONING_PROFILE="" PROVISIONING_PROFILE_NAME="" ;;QA) CONFIG="Ad-Hoc"PROVISIONING_PROFILE="" PROVISIONING_PROFILE_NAME="c" ;;UAT) CONFIG="UAT"PROVISIONING_PROFILE="" PROVISIONING_PROFILE_NAME="" ;;PROD)CONFIG="Production"PROVISIONING_PROFILE="" PROVISIONING_PROFILE_NAME="" # set Apple developer account as teamIDENTITY="" ;;*) echo "Configuration Option not valid, building for Production"CONFIG="Production"PROVISIONING_PROFILE="" PROVISIONING_PROFILE_NAME="" IDENTITY="" ;;esacPROJECT=`find . -name *.xcodeproj -print`if [ -z "$TARGET" ]thenTARGET=$PROJECTfixcodebuild -project ${PROJECT} -configuration ${CONFIG} -scheme ${TARGET} -destination generic/platform=iOS CODE_SIGN_IDENTITY="$IDENTITY" PROVISIONING_PROFILE="${PROVISIONING_PROFILE}" archive ARCHIVE_COMMENT="${ARCHIVE_COMMENT}" AUTOMATED_BUILD=YESARCHIVE_DIR=`ls -dt1 $HOME/Library/Developer/Xcode/Archives/*/*.xcarchive |head -n1`CURRENT_DIR=`pwd`IPA_DIR=`dirname $CURRENT_DIR`#create ipa signed binary packageif [ -f $IPA_DIR/$CONFIG.ipa ]thenrm $IPA_DIR/$CONFIG.ipafixcodebuild -exportArchive -exportFormat IPA -archivePath "${ARCHIVE_DIR}" -exportPath ${IPA_DIR}/${CONFIG} -exportProvisioningProfile "${PROVISIONING_PROFILE_NAME}"#uploadds response todeclare -i HTTPRESPONSEHTTPRESPONSE=`curl -X POST -sL -w "%{http_code}" http://testflightapp.com/api/builds.json -F file=@${IPA_DIR}/${CONFIG}.ipa -F api_token='' -F team_token=' ' -F notes="${ARCHIVE_COMMENT}" -F notify=True -F distribution_lists='DevOps' -o ${IPA_DIR}/${CONFIG}_curloutput.txt` echo "HTTP Response is" $HTTPRESPONSEcat ${IPA_DIR}/${CONFIG}_curloutput.txtrm ${IPA_DIR}/${CONFIG}_curloutput.txtif [ $HTTPRESPONSE -ne 200 ]; thenexit $HTTPRESPONSEfi
We do have the need to change identities and provisioning profiles because some of our users need to have the same app for the different environments loaded on the a single device at the same time, so they can make comparisons. And because the apps use push notification, each distribution requires its own unique app bundle id and provisioning profile.
We also need to change identities, because we use the enterprise program for development and in-house distribution and the Developer program for deployment to the app store.
The complete solution uses a TFS workflow that accesses the Mac Mini via ssh, copies the source code from TFS and runs the build script passing the environment, the target and the TFS PBI or Bug number and description as comments. The dev ops did their TFS magic there. I just helped on the Mac side to configure the proper ssh certificates, key pairs, proper keychain. On the TFS side, when the developer merges and commits the code to the QA branch, she has to associate it with a specific task or bug that this commit is supposed to fix. When queuing the build task, it is associated to the pbi or bug as well and additional information is captured from the user in a form. Between the form and the source code in the repository, the TFS build task finds out all the necessary information to copy the source code to the mac mini build server, run the build script and report the results back to the TFS. All the workflow is then controlled on the TFS/Windows side accessing the Mac Mini via ssh as needed.
4. Backend integration
Our apps access Salesforce on the backend most of the time. We have different end points on the Salesforce cloud depending on the environment we are targeting. Sometimes the end point is determined based on the credentials provided and other times the endpoint requires a change on certain URLs accessed by the app. The vendor that wrote the initial version of the app (Salesforce itself) opted for a conditional compilation of hard-coded constants in the pre-compiled header. They were first supporting only two sets of configurations (Debug and Ad-Hoc) and they would just use one #ifdef Debug to determine which set to use during build time. When I took over the coding, I had to support 4 sets. I added 2 more configurations to the project and each extra configuration sets its specific variable (DEV, QA, UAT, PROD).
I used all the conditional definitions that I could inside the build settings. I have specific bundle IDs based on conditional settings provided by build settings in Xcode. I have specific app name and display name based on Executable_Prefix that is conditionally defined in build settings as well.
My next step will be to remove the hard-coded constants from the pre-compiled header and put them into a plist file like the UA configuration for push notification. In the future, we can have in the future an API that allows us to change these settings at runtime, without the need to submit upgrades to the App Store for approval, when we change our endpoints on the backend.
5. Corporate network
This was one of the hardest things to work around, because the security restrictions and the lack of privileges developers have in our network. For the TFS build workflow to work, we had to create a local user on the Mac Mini that was used to host the developer's certificate and signing authority certificates in its keychain that we could then unlock for the xcodebuild to access during building and archiving.
The service domain user prepares all the files for the build and switches to the local user to execute the build script. The local user only exists on the build server and it has minimal permissions on the box.
We had to do that in order to avoid sending sensitive passwords over the ssh session or inside the scripts. Even though we were authenticated on the ssh session, OS/X was still asking for a password to allow xcodebuild access to the keychain. We tried setting this access for xcodebuild in the keychain, but it didn't work.
The upload to TestFlight part of the script would fail every other try due to proxy server authentication problems. The dev op working with me found out that the cause was a bug on Mavericks when the Mac is connected to a gateway with redundancy (see this discussion here). We added a USB to RJ45 adapter and switched to using this NIC to solve the problem. Now, even the VNC sessions with the Mac Mini work much better.
6. Maintaining the version string consistent across deployments
More than once, when I was hasting the manual deployments, I forgot to update the version short and long strings accordingly.
First, I think Apple calling the short version string "version" and the long version string "build" was a mistake that causes a lot of confusion. TestFlight shows the releases of your builds as () but based on Apple's documentation, what they call build is in fact . It doesn't have to be that way, you can treat both of them independently, but that's what is expected. And when you submit an update for your app to the apple store, they always expect both of them to be higher than the previously submitted binaries.
What the vendor did on their code was to keep both identical and manually increment both together when making a new deployment.
After a couple of mistakes in the manual process, I decided to incorporate the increment of these numbers to the archive script.
We settled for a short version string in the format of M.m.r (major. minor.review) and the build or long version string as M.m.r.build.
Now, every time we run a QA archive the script increments the build number, and every time we deploy a production build, the script increments the review number.
The major and minor numbers don't change that often, so they are still maintained manually.
Conclusion
I'm also starting to use configuration files that I can load in Xcode across different projects. I'm compiling all the different build settings from all our projects, determining the common settings, the unique settings per environment and per project that I can segregate in separate configuration file and then refer to them in Xcode.
The build script right now is project dependent. I'm also working on defining project templates or wizards that can be used by other developers when starting a project from scratch. I'm still considering if I should do it like wizards that capture the project specific definitions from a user dialog and then create the project tree for you, a template that the user clones to build his own project or a tool that traverses the project and builds the necessary scripts based on the projects definitions.
The solution is far from complete and I'm still learning the best way to use each tool. I'm also hopeful that in the near future my company will upgrade TFS to fully support git. Until then, this combination of scripts, programs and tools will help us deploy faster and better than doing everything manually.
If you have suggestions to help us, they are all welcome. Please, leave your suggestions in the comments area, or share with us your solutions to similar problems.
Sunday, September 29, 2013
How to answer PACs emails asking for money
OK, I spent a couple of hours this evening
answering to all these messages from PACs asking for money so they can
"ensure that my voice will be heard". First of all, we shouldn't need
anyone to ensure that our voices should be heard by politicians that should be working for us on the first place. So what did I tell them?
I told them that I'm going to donate the money they are asking but not to their wallets. I'm going to donate what they are asking to the Out of the darkness walk of North Texas. I'll even donate on their behalf and I gave them the link, so they can donate more if they want to hear my voice themselves. I don't need intermediaries to talk to the politicians. I write to them directly. Their computer is just as good as the PACs computers in answering me.
Here is a sample of my dialog with them:
Teresa --
It's been a while since I've written, but it's a good time to check in.
For the first time in a long time, our side gained some real momentum over the summer -- on everything from immigration reform to climate change.
This is why we organize in between elections.
We all have a personal stake in what happens over the next few years.
Teresa, what is the number one issue you care about?
http://my.barackobama.com/Just-One-Question
We have some big challenges ahead, and how you decide to be part of them will be as important as ever.
Barack is going to keep fighting for the things we believe in, and if he can count on you, too -- well, that's when we get things done.
Thank you,
Michelle
P.S. -- Don't forget to share more about what makes you tick.
Hello Michelle,
I'm flattered that your computer remembers my name and drops me a message on your behalf from time to time. I didn't train my computer to return your attentiveness in the same way.
But here it is. I'll do it myself. I'm participating on the Out of Darkness walk here in North Texas and here is your chance to reward my patience and hard work to support politicians that do very little to organize this country to be fair with the majority of its people.
We would appreciate donations to our walk, so AFSP can continue to fund the cause of suicide prevention, filling a gap that the government is very quick to create and very slow to fill.
Please, consider a donation to honor all our children and citizens lost to suicide and all the ones affected by it.
http://afsp.donordrive.com/index.cfm?fuseaction=donordrive.participant&participantID=472223
Teresa , mom of Flavio 05/12/1984-07/22/2009
http://flavio-riosabreu.gonetoosoon.org
Teresa --
It's not every day you get a note from the First Lady.
We're asking because we really want to know -- what's the issue that drives you to be part of this movement?
http://my.barackobama.com/Just-One-Question
Thanks,
Organizing for Action
----------Original Message----------
From: Michelle Obama
Subject: Teresa, it's me
Teresa --
It's been a while since I've written, but it's a good time to check in.
For the first time in a long time, our side gained some real momentum over the summer -- on everything from immigration reform to climate change.
This is why we organize in between elections.
We all have a personal stake in what happens over the next few years.
Teresa, what is the number one issue you care about?
http://my.barackobama.com/Just-One-Question
We have some big challenges ahead, and how you decide to be part of them will be as important as ever.
Barack is going to keep fighting for the things we believe in, and if he can count on you, too -- well, that's when we get things done.
Thank you,
Michelle
P.S. -- Don't forget to share more about what makes you tick.
Yes, it's not every time that I get a note from the first lady and guess what? I never sent her a personal note either.
But here it is. I'm participating on the Out of Darkness walk here in North Texas and here is your chance to reward my patience and hard work to support politicians that do very little to organize this country to be fair with the majority of its people.
We would appreciate donations to our walk, so AFSP can continue to fund the cause of suicide prevention, filling a gap that the government is very quick to create and very slow to fill.
Please, consider a donation to honor all our children and citizens lost to suicide and all the ones affected by it.
http://afsp.donordrive.com/index.cfm?fuseaction=donordrive.participant&participantID=472223
Teresa , mom of Flavio 05/12/1984-07/22/2009
http://flavio-riosabreu.gonetoosoon.org
Teresa --
We're about to close our books on this quarter -- so we've been making sure our records are up to date.
Here's what we have down for you, at this exact email address:
-- OFA status: Active supporter (Thanks!)
-- Donor: Pending
-- Suggested donation: $5
If you chip in today, before the big fundraising deadline on September 30th, your name will appear on our brand-new OFA Donor Wall on BarackObama.com -- featuring the names of everyone who is stepping up at this critical time.
Thanks to you, our movement is as strong as ever.
We're making big plans for the next few months -- that's why you should get your perfect record of support started now.
Chip in $5 or more today:
https://donate.barackobama.com/September-2013-Deadline
Thanks,
Jon
Jon Carson
Executive Director
Organizing for Action
----------------
The other side will spend millions to maintain the status quo. We're fighting for change -- chip in $5 or more to support OFA today.
Jon,
Guess what? My son is already on a wall. And I truly hope that none of your children end up there, because this wall in Columbia,TN is to remember the loved ones who died by suicide. Take a good look at all the beautiful faces there and try to imagine all the sad faces of their loved ones left behind.
http://www.facesofsuicide.com
http://www.suicidememorialwall.com
My son's name is Flávio Augusto Rios-Abreu and he died on July 22nd, 2009.
If you have time, please, go to Columbia,TN to look at the Suicide Memorial Wall and spend sometime with Mrs. Beal. She will be glad to tell you her story and so many stories similar to mine.
Here is what I can do for you: I'm willing to donate not $5, but $20 on behalf of OFA to the Out of the Darkness Walk in North Texas, to remember the ones touched by suicide. AFSP will make a better use of this money in suicide prevention than all the politicians in Washington have done so far.
In case you want to contribute as well with this great cause, here is my donor page: http://afsp.donordrive.com/index.cfm?fuseaction=donordrive.participant&participantID=472223
Thanks,
Teresa , mom of Flavio 05/12/1984-07/22/2009
http://flavio-riosabreu.gonetoosoon.org
Teresa -
It's tempting to look only at where we are and get mired down in our day to day struggles. It's easy to lose sight of how far we've come.
We won a minimum wage, outlawed child labor, and established safety standards for work. We fought for Social Security and Medicare, lifting countless seniors out of poverty. We expanded public schools, established public universities, and held open the doors of higher education for the first time.
In Robert Reich's new documentary film exposing the roots of income inequality in America, the former Secretary of Labor makes a really powerful point: "Anyone of you who feels cynical, just consider where we have been."
To which I would add; consider where we can go again.
Please fuel our campaign to win with a contribution right now.
It's time for us to dream big dreams again.
Democracy for America members have been leaders in the fights to protect Medicare, Medicaid and Social Security from cuts. We're going on offense in calling for an expansion of Social Security benefits and backing it up with polling showing popular support in Republican districts across the country.
We're joining with low-wage workers nationwide, demanding McDonald's and other highly profitable fast food restaurants pay a livable wage. We'll be delivering over 55,000 signatures to McDonald's headquarters and local franchises over the next month backing up striking workers and increasing the pressure on them to do the right thing.
We will expose Republicans for voting to cut 40 billion dollars from the food stamps program. We'll make TV ads sharing personal stories of working moms, children, and veterans who rely on assistance so they don't have to choose between food and rent.
We're fighting for an economy that works for everyone, not just the very wealthy few.
Together, we have to take this fight on with the resources needed to win. Please contribute $25 right now to make it happen.
We'll fight to ensure that your voice, and the voices of Americans from every walk of life, are heard above large corporations and their DC lobbyists.
Thank you, Teresa, for working together to win.
-Howard
Governor Howard Dean, Founder
Democracy for America
Hello Governor Dean,
I have a son who was born only 2 days before Mark Zuckerberg and like the Facebook genius founder, he is a brilliant young man that can see way ahead of its time and is destined to great accomplishments.
But differently than Zuckerberg, my son won't have any chance in this life, because he died in July 22nd, 2009 to suicide.
Too many factors can lead a person to suicide, but no matter the reasons, the consequences of suicide to society is enormous.
It's sad that our political class and our elites don't pay attention to that and do very little to prevent suicide. I too want things to happen, but I realized that donating to organizations like yours is doing very little to promote the changes the I want to be promoted to prevent the tragedy that happen to me to be repeated in other families. We need to take suicide prevention more seriously and we need to care for the loved ones left behind.
Here is what I'm going to do for you. I'll donate the $25 that you are asking from me to the Out of the Darkness Walk of North Texas. I'll even donate it in your behalf. And here is a chance for you to donate even more:
http://afsp.donordrive.com/index.cfm?fuseaction=donordrive.participant&participantID=472223
Don't fight to ensure that my voice will be heard, instead, donate money for AFSP to continue its wonderful work of love.
Thank you,
Teresa , mom of Flavio 05/12/1984-07/22/2009
http://flavio-riosabreu.gonetoosoon.org
I told them that I'm going to donate the money they are asking but not to their wallets. I'm going to donate what they are asking to the Out of the darkness walk of North Texas. I'll even donate on their behalf and I gave them the link, so they can donate more if they want to hear my voice themselves. I don't need intermediaries to talk to the politicians. I write to them directly. Their computer is just as good as the PACs computers in answering me.
Here is a sample of my dialog with them:
Teresa --
It's been a while since I've written, but it's a good time to check in.
For the first time in a long time, our side gained some real momentum over the summer -- on everything from immigration reform to climate change.
This is why we organize in between elections.
We all have a personal stake in what happens over the next few years.
Teresa, what is the number one issue you care about?
http://my.barackobama.com/Just-One-Question
We have some big challenges ahead, and how you decide to be part of them will be as important as ever.
Barack is going to keep fighting for the things we believe in, and if he can count on you, too -- well, that's when we get things done.
Thank you,
Michelle
P.S. -- Don't forget to share more about what makes you tick.
Hello Michelle,
I'm flattered that your computer remembers my name and drops me a message on your behalf from time to time. I didn't train my computer to return your attentiveness in the same way.
But here it is. I'll do it myself. I'm participating on the Out of Darkness walk here in North Texas and here is your chance to reward my patience and hard work to support politicians that do very little to organize this country to be fair with the majority of its people.
We would appreciate donations to our walk, so AFSP can continue to fund the cause of suicide prevention, filling a gap that the government is very quick to create and very slow to fill.
Please, consider a donation to honor all our children and citizens lost to suicide and all the ones affected by it.
http://afsp.donordrive.com/index.cfm?fuseaction=donordrive.participant&participantID=472223
Teresa , mom of Flavio 05/12/1984-07/22/2009
http://flavio-riosabreu.gonetoosoon.org
Teresa --
It's not every day you get a note from the First Lady.
We're asking because we really want to know -- what's the issue that drives you to be part of this movement?
http://my.barackobama.com/Just-One-Question
Thanks,
Organizing for Action
----------Original Message----------
From: Michelle Obama
Subject: Teresa, it's me
Teresa --
It's been a while since I've written, but it's a good time to check in.
For the first time in a long time, our side gained some real momentum over the summer -- on everything from immigration reform to climate change.
This is why we organize in between elections.
We all have a personal stake in what happens over the next few years.
Teresa, what is the number one issue you care about?
http://my.barackobama.com/Just-One-Question
We have some big challenges ahead, and how you decide to be part of them will be as important as ever.
Barack is going to keep fighting for the things we believe in, and if he can count on you, too -- well, that's when we get things done.
Thank you,
Michelle
P.S. -- Don't forget to share more about what makes you tick.
Yes, it's not every time that I get a note from the first lady and guess what? I never sent her a personal note either.
But here it is. I'm participating on the Out of Darkness walk here in North Texas and here is your chance to reward my patience and hard work to support politicians that do very little to organize this country to be fair with the majority of its people.
We would appreciate donations to our walk, so AFSP can continue to fund the cause of suicide prevention, filling a gap that the government is very quick to create and very slow to fill.
Please, consider a donation to honor all our children and citizens lost to suicide and all the ones affected by it.
http://afsp.donordrive.com/index.cfm?fuseaction=donordrive.participant&participantID=472223
Teresa , mom of Flavio 05/12/1984-07/22/2009
http://flavio-riosabreu.gonetoosoon.org
Teresa --
We're about to close our books on this quarter -- so we've been making sure our records are up to date.
Here's what we have down for you, at this exact email address:
-- OFA status: Active supporter (Thanks!)
-- Donor: Pending
-- Suggested donation: $5
If you chip in today, before the big fundraising deadline on September 30th, your name will appear on our brand-new OFA Donor Wall on BarackObama.com -- featuring the names of everyone who is stepping up at this critical time.
Thanks to you, our movement is as strong as ever.
We're making big plans for the next few months -- that's why you should get your perfect record of support started now.
Chip in $5 or more today:
https://donate.barackobama.com/September-2013-Deadline
Thanks,
Jon
Jon Carson
Executive Director
Organizing for Action
----------------
The other side will spend millions to maintain the status quo. We're fighting for change -- chip in $5 or more to support OFA today.
Jon,
Guess what? My son is already on a wall. And I truly hope that none of your children end up there, because this wall in Columbia,TN is to remember the loved ones who died by suicide. Take a good look at all the beautiful faces there and try to imagine all the sad faces of their loved ones left behind.
http://www.facesofsuicide.com
http://www.suicidememorialwall.com
My son's name is Flávio Augusto Rios-Abreu and he died on July 22nd, 2009.
If you have time, please, go to Columbia,TN to look at the Suicide Memorial Wall and spend sometime with Mrs. Beal. She will be glad to tell you her story and so many stories similar to mine.
Here is what I can do for you: I'm willing to donate not $5, but $20 on behalf of OFA to the Out of the Darkness Walk in North Texas, to remember the ones touched by suicide. AFSP will make a better use of this money in suicide prevention than all the politicians in Washington have done so far.
In case you want to contribute as well with this great cause, here is my donor page: http://afsp.donordrive.com/index.cfm?fuseaction=donordrive.participant&participantID=472223
Thanks,
Teresa , mom of Flavio 05/12/1984-07/22/2009
http://flavio-riosabreu.gonetoosoon.org
Teresa -
It's tempting to look only at where we are and get mired down in our day to day struggles. It's easy to lose sight of how far we've come.
We won a minimum wage, outlawed child labor, and established safety standards for work. We fought for Social Security and Medicare, lifting countless seniors out of poverty. We expanded public schools, established public universities, and held open the doors of higher education for the first time.
In Robert Reich's new documentary film exposing the roots of income inequality in America, the former Secretary of Labor makes a really powerful point: "Anyone of you who feels cynical, just consider where we have been."
To which I would add; consider where we can go again.
Please fuel our campaign to win with a contribution right now.
It's time for us to dream big dreams again.
Democracy for America members have been leaders in the fights to protect Medicare, Medicaid and Social Security from cuts. We're going on offense in calling for an expansion of Social Security benefits and backing it up with polling showing popular support in Republican districts across the country.
We're joining with low-wage workers nationwide, demanding McDonald's and other highly profitable fast food restaurants pay a livable wage. We'll be delivering over 55,000 signatures to McDonald's headquarters and local franchises over the next month backing up striking workers and increasing the pressure on them to do the right thing.
We will expose Republicans for voting to cut 40 billion dollars from the food stamps program. We'll make TV ads sharing personal stories of working moms, children, and veterans who rely on assistance so they don't have to choose between food and rent.
We're fighting for an economy that works for everyone, not just the very wealthy few.
Together, we have to take this fight on with the resources needed to win. Please contribute $25 right now to make it happen.
We'll fight to ensure that your voice, and the voices of Americans from every walk of life, are heard above large corporations and their DC lobbyists.
Thank you, Teresa, for working together to win.
-Howard
Governor Howard Dean, Founder
Democracy for America
Hello Governor Dean,
I have a son who was born only 2 days before Mark Zuckerberg and like the Facebook genius founder, he is a brilliant young man that can see way ahead of its time and is destined to great accomplishments.
But differently than Zuckerberg, my son won't have any chance in this life, because he died in July 22nd, 2009 to suicide.
Too many factors can lead a person to suicide, but no matter the reasons, the consequences of suicide to society is enormous.
It's sad that our political class and our elites don't pay attention to that and do very little to prevent suicide. I too want things to happen, but I realized that donating to organizations like yours is doing very little to promote the changes the I want to be promoted to prevent the tragedy that happen to me to be repeated in other families. We need to take suicide prevention more seriously and we need to care for the loved ones left behind.
Here is what I'm going to do for you. I'll donate the $25 that you are asking from me to the Out of the Darkness Walk of North Texas. I'll even donate it in your behalf. And here is a chance for you to donate even more:
http://afsp.donordrive.com/index.cfm?fuseaction=donordrive.participant&participantID=472223
Don't fight to ensure that my voice will be heard, instead, donate money for AFSP to continue its wonderful work of love.
Thank you,
Teresa , mom of Flavio 05/12/1984-07/22/2009
http://flavio-riosabreu.gonetoosoon.org
Tuesday, July 23, 2013
Wednesday, April 10, 2013
Studying complex problems: how to compare partial solutions and decide which one is the best.
I finally found an excuse to study the game of spider solitaire in depth:
How to evaluate among several partial solutions of a complex problem, which one is best and how close or far they are from the best solution.
How to evaluate among several partial solutions of a complex problem, which one is best and how close or far they are from the best solution.
Friday, December 21, 2012
My mind collection of lost dreams - part 3
Suicide letters
Her son left without any written notes.
As she asked herself why, she started collecting someone else's suicde notes. Maybe they would give her clues.
"Don't cry, don't suffer, I'm ABSOLUTELY HAPPY!!! That's all I wanted: eternal peace with my God and. if possible, with my mother. I didn't committed suicide, I departed to be close to God. Rest assured that I don't drink and I don't do drugs, I decided that I've done all I could in this life. I had a beautiful life, I traveled the world, I lived in wonderful cities, I had a worthy and well known family in my hometown, I shined in my career, made lots of money and I helped a lot of people with it. I really didn't know how to handle it and I've been tricked by ill meaning people so many times, but I was always reborn like a phoenix and I always came back on top. As a matter of fact, I've never been too worried about possessions. Well, there is a lot more about my life, this is just a sample for you to see that I'm not a coward, I was a warrior, but I'm tired now. One needs to be brave to live this life on one's own will. To everyone that reads this document: I'm not giving up life, I'm seeking God. It's not lack of money, because I have enough to support me here or anywhere else in the South. But it happens that I don't want to live anywhere. I don't want to get old and suffer. I saw my mother suffering until her death and I don;t want this for myself. I want peace! I'm tired, my mind is tired! I can't stand thinking anymore, paying bills, solving problems... You are going to say: "Everybody lives!!!" But I decided that I can stop that, be happy, because I know that God will forgive me and will accept me as a generous and kind child that I've always been. To my true friends, to unbiased journalists, to my friends (.....) my heartfelt thanks. The the TV stations where I worked, thanks. And to my wonderful coworkers, my God light your path! To all honorable sites that follow my career, SUCCESS!!! (My friends....)don't fell forgotten. I can't cite any names, or I would have to write a book, but (...) you are the sister I've never had. (...), be always happy my friend. (...), thanks for everything! To (...) from (...) TV show I leave you a kiss my friend. (...) where are you??? I'm sorry for the ones I didn't mention, life was away more wonderful than bad for me. Thank you Jesus, Our Lady, and my God, forgive me and take me as the honest and nice daughter I always strive to be! God bless everyone!
Leila Lopes
PS: If there is higher feeling then Love, I'm not aware of it!"
Her son left without any written notes.
As she asked herself why, she started collecting someone else's suicde notes. Maybe they would give her clues.
"Don't cry, don't suffer, I'm ABSOLUTELY HAPPY!!! That's all I wanted: eternal peace with my God and. if possible, with my mother. I didn't committed suicide, I departed to be close to God. Rest assured that I don't drink and I don't do drugs, I decided that I've done all I could in this life. I had a beautiful life, I traveled the world, I lived in wonderful cities, I had a worthy and well known family in my hometown, I shined in my career, made lots of money and I helped a lot of people with it. I really didn't know how to handle it and I've been tricked by ill meaning people so many times, but I was always reborn like a phoenix and I always came back on top. As a matter of fact, I've never been too worried about possessions. Well, there is a lot more about my life, this is just a sample for you to see that I'm not a coward, I was a warrior, but I'm tired now. One needs to be brave to live this life on one's own will. To everyone that reads this document: I'm not giving up life, I'm seeking God. It's not lack of money, because I have enough to support me here or anywhere else in the South. But it happens that I don't want to live anywhere. I don't want to get old and suffer. I saw my mother suffering until her death and I don;t want this for myself. I want peace! I'm tired, my mind is tired! I can't stand thinking anymore, paying bills, solving problems... You are going to say: "Everybody lives!!!" But I decided that I can stop that, be happy, because I know that God will forgive me and will accept me as a generous and kind child that I've always been. To my true friends, to unbiased journalists, to my friends (.....) my heartfelt thanks. The the TV stations where I worked, thanks. And to my wonderful coworkers, my God light your path! To all honorable sites that follow my career, SUCCESS!!! (My friends....)don't fell forgotten. I can't cite any names, or I would have to write a book, but (...) you are the sister I've never had. (...), be always happy my friend. (...), thanks for everything! To (...) from (...) TV show I leave you a kiss my friend. (...) where are you??? I'm sorry for the ones I didn't mention, life was away more wonderful than bad for me. Thank you Jesus, Our Lady, and my God, forgive me and take me as the honest and nice daughter I always strive to be! God bless everyone!
Leila Lopes
PS: If there is higher feeling then Love, I'm not aware of it!"
Tuesday, December 18, 2012
My mind collection of lost dreams - Part 2
“Information is not knowledge.
Knowledge is not wisdom.
Wisdom is not truth.
Truth is not beauty.
Beauty is not love.
Love is not music.
Music is THE BEST.” ~~Frank Zappa
For her music was everything. It was the weekend barbecue with the family. Everyone gathered on the backyard, beer, meat, guitar, everybody singing. The birthday parties, the monthly visits to the grandparents, the summers at her grandmother's beach house. The church, the baptisms, the Christmas feasts, the processions, the end of the recess, the evening soap opera. Every memory was full of music. There was always a baby to sooth with a lullaby. There was always a song to entertain a long road trip. The maid singing along with the radio while she was pressing the clothes. She would stay there with the maid, doing her homework. The clothes strings on the backyard fluttering the linens, "The strange festival" like in the song.
Every morning they would wake up with dad's march playing on the radio spilling the news all over the house. Eldorado radio station. A bunch of easy listening tunes would follow after that. A jazz standard here and there, popular tunes, refined songs, with precious lyrics and impeccable arrangements that were taken for granted, because no one ever paid good attention to them.
The church was special. Her parents had so many activities in church. The charities, the simple poor people that they would help. Her family was like foreigners in their own town. They didn't have the local accent, since her parents weren't from there. She would listen to the people singing the hymns at the church, the rolled r's, the long vowels. "The greatest love you can show is to give your life for your friends." "A new command I give you: Love one another. As I have loved you, so you must love one another".
Her father was this man greater than life. He was the justice, the righteousness, the final decision of all quests. Poor and rich, humble and wise, all would come to him for advice.
The last year of his life was like a blur in her memories. He was away in the hospital most of the time, in another city. Her mom was away with him. When he finally came home, she and her sister ran to the front gate to hug him. He embraced them and he cried. So profound cry. She felt it on her bones. That was when she understood that he was about to die. She was 12. The rest of the month was a routine of scrubbing his dried skin with a hard brush, to give him some relief. Apply cold cream. Listen to the radio. He fancied to buy one last record, by The Carpenters: "Now and Then". She remembers his favorite tune on it: "This masquerade". "Are we really happy with
This lonely game we play
Looking for the right words to say
Searching but not finding
Understanding anyway
We're lost in this masquerade"
His funeral mass had a packed church. The coffin was in front of the altar. She was taken there by family friends. Her mother was beside the cofin crying inconsolably. All she would say to everyone was:"Have seen how sad? He was so young..." She told her friends that she was OK. She had cried a lot when he died in the morning, but now she was back to her brave self. She let go of her friend's hand and walked in the aisle towards the coffin. Half way through she stopped. She couldn't do it. She sat on the pews a couple of rows behind. The image of her crying mother never left her. She would remember that when she had to bury her own son. What she didn't realize then was how small a coffin is. From the distance and because of her young age, it looked bigger then. Many years later when she saw her son in one, it looked small, fragile, not much more than a box.
Knowledge is not wisdom.
Wisdom is not truth.
Truth is not beauty.
Beauty is not love.
Love is not music.
Music is THE BEST.” ~~Frank Zappa
For her music was everything. It was the weekend barbecue with the family. Everyone gathered on the backyard, beer, meat, guitar, everybody singing. The birthday parties, the monthly visits to the grandparents, the summers at her grandmother's beach house. The church, the baptisms, the Christmas feasts, the processions, the end of the recess, the evening soap opera. Every memory was full of music. There was always a baby to sooth with a lullaby. There was always a song to entertain a long road trip. The maid singing along with the radio while she was pressing the clothes. She would stay there with the maid, doing her homework. The clothes strings on the backyard fluttering the linens, "The strange festival" like in the song.
Every morning they would wake up with dad's march playing on the radio spilling the news all over the house. Eldorado radio station. A bunch of easy listening tunes would follow after that. A jazz standard here and there, popular tunes, refined songs, with precious lyrics and impeccable arrangements that were taken for granted, because no one ever paid good attention to them.
The church was special. Her parents had so many activities in church. The charities, the simple poor people that they would help. Her family was like foreigners in their own town. They didn't have the local accent, since her parents weren't from there. She would listen to the people singing the hymns at the church, the rolled r's, the long vowels. "The greatest love you can show is to give your life for your friends." "A new command I give you: Love one another. As I have loved you, so you must love one another".
Her father was this man greater than life. He was the justice, the righteousness, the final decision of all quests. Poor and rich, humble and wise, all would come to him for advice.
The last year of his life was like a blur in her memories. He was away in the hospital most of the time, in another city. Her mom was away with him. When he finally came home, she and her sister ran to the front gate to hug him. He embraced them and he cried. So profound cry. She felt it on her bones. That was when she understood that he was about to die. She was 12. The rest of the month was a routine of scrubbing his dried skin with a hard brush, to give him some relief. Apply cold cream. Listen to the radio. He fancied to buy one last record, by The Carpenters: "Now and Then". She remembers his favorite tune on it: "This masquerade". "Are we really happy with
This lonely game we play
Looking for the right words to say
Searching but not finding
Understanding anyway
We're lost in this masquerade"
His funeral mass had a packed church. The coffin was in front of the altar. She was taken there by family friends. Her mother was beside the cofin crying inconsolably. All she would say to everyone was:"Have seen how sad? He was so young..." She told her friends that she was OK. She had cried a lot when he died in the morning, but now she was back to her brave self. She let go of her friend's hand and walked in the aisle towards the coffin. Half way through she stopped. She couldn't do it. She sat on the pews a couple of rows behind. The image of her crying mother never left her. She would remember that when she had to bury her own son. What she didn't realize then was how small a coffin is. From the distance and because of her young age, it looked bigger then. Many years later when she saw her son in one, it looked small, fragile, not much more than a box.
Subscribe to:
Posts (Atom)