"file has vanished" error when running `sudo port -v selfupdate`

Got the following error when trying to initially run an update on Mac Ports after installing it:

~> sudo port -v selfupdate
Password:
--->  Updating the ports tree
Synchronizing local ports tree from rsync://rsync.macports.org/release/ports/
receiving file list ... file has vanished: "/ports/sysutils/gcc_select/files/gcc33" (in release)
done
./
sysutils/coreutils/
sysutils/coreutils/files/
sysutils/count/
sysutils/count/files/
sysutils/createrepo/
sysutils/createrepo/files/
sysutils/createtorrent/
sysutils/createtorrent/files/
sysutils/cronolog-devel/
sysutils/cronolog/
sysutils/crswallow/
sysutils/cssh/
sysutils/cuetools/
sysutils/daemon/
sysutils/daemon/files/
sysutils/daemontools/
sysutils/daemontools/files/
sysutils/dc3dd/
sysutils/dcfldd/
sysutils/dcfldd/files/
sysutils/dd_rescue/
sysutils/dd_rescue/files/
sysutils/ddrescue/
sysutils/detach/
sysutils/detox/
sysutils/di/
sysutils/diffutils/
sysutils/diffutils/files/
sysutils/dirvish/
sysutils/dirvish/files/
sysutils/disktype/
sysutils/disktype/files/
sysutils/dmg2img/
sysutils/dmg2img/files/
sysutils/dnuos/
sysutils/doodle/
sysutils/dpkg/
sysutils/dpkg/files/
sysutils/dpkg/files/bsd/
sysutils/dtach/
sysutils/duff/
sysutils/duplicity/
sysutils/dvdrtools/
sysutils/dvdrtools/files/
sysutils/dvdrw-tools/
sysutils/dvdrw-tools/files/
sysutils/dvtm/
sysutils/dvtm/files/
sysutils/dwatch/
sysutils/dwatch/files/
sysutils/e2fsprogs/
sysutils/e2fsprogs/files/
sysutils/endian/
sysutils/erni/
sysutils/erni/files/
sysutils/etch/
sysutils/exec-wrapper/
sysutils/exec-wrapper/files/
sysutils/facter/
sysutils/faubackup/
sysutils/fcron/
sysutils/fcron/files/
sysutils/fdupes/
sysutils/fhist/
sysutils/file/
sysutils/file/files/
sysutils/findutils/
sysutils/foremost/
sysutils/freeradius/
sysutils/freeradius/files/
sysutils/fs-check/
sysutils/gcc_select/
sysutils/gcc_select/files/
file has vanished: "/ports/sysutils/gcc_select/files/.gcc33.G52TaJ" (in release)
IO error encountered -- skipping file deletion

sent 519 bytes  received 482625 bytes  138041.14 bytes/sec
total size is 26763626  speedup is 55.39
rsync warning: some files vanished before they could be transferred (code 24) at /SourceCache/rsync/rsync-40/rsync/main.c(1400) [generator=2.6.9]
shell command "/usr/bin/rsync -rtzv --delete-after '--exclude=/PortIndex*' rsync://rsync.macports.org/release/ports/ /opt/local/var/macports/sources/rsync.macports.org/release/ports" returned error 24
Error: Synchronization of the local ports tree failed doing rsync
Error: /opt/local/bin/port: port selfupdate failed: Couldn't sync the ports tree: Synchronization of 1 source(s) failed

The resolution was to apparently just re-run the command. I installed something after trying to update the first time, but I don’t think that should have affected anything. If anyone has additional insight into what causes this problem, please leave a comment below. Thanks!

The command "cmd /c ""%VS100COMNTOOLS%vsvars32.bat" && sgen /nologo /assembly:"FOO" /force /type:BAR"" exited with code 255.

I got this when building a solution in Visual Studio. In order to figure out what the cryptic code 255 means, I ran this command at the command-line to see if there was additional output. I got:

"C:\Program was unexpected at this time.

It then printed my path and I noticed there were some entries with quotes. I removed the quotes in the path and tried again, and it worked. So the problem is that quotes cannot appear in your path to run the command as it is entered. I originally entered these in to appease Cygwin.

A Debugging Blog

The premise of this blog is that in my day-to-day activities, I run across things that take me awhile to figure out. In an effort to help those that are searching online, it would be nice to put my findings somewhere. My main blog doesn’t seem to be the right venue for this, since it contains longer articles and essays.

I was inspired to do this when working with Android and realizing how few solid resources there were at times. The edges of technology are more difficult to work with. It would have been handy to show myself and others how much I had learned, and for people to take the journey with me as well.

So for now, until I figure out a better way or realize that this is the better way, I’ll add things that I stumble across while doing things I normally do. I’d most like to post realizations that I made while debugging things, and things that take longer than they should to determine the root cause of. I would also like to not take much time while doing this. The nice thing is that it doesn’t need to be updated frequently, and the value is in the searches.

It would be great if this was the oasis that a thirsty debugger quenches his or her thirst at.

Some of the rationale for doing this is selfish. It doesn’t take me much time, and people who are searching might trip over my other properties. Might as well take advantage of the mistakes I’m already making.

What Does Everyone Know You For?

I can assure you that people believe you have skills that you don’t actually have. They also don’t know about some great skills that you do have. These phenomena are a result of personal marketing efforts–whether intended or unconscious.

Owning concepts

The 22 Immutable Laws of Marketing by Al Ries and Jack Trout contain a few laws that I’d like to highlight:

  • The Law of Exclusivity: Two companies cannot own the same word in the concept’s mind.
  • The Law of Leadership: It’s better to be first than it is to be better.
  • The Law of the Mind: It’s better to be first in the mind than to be first in the marketplace.

Now consider the following categories and who pops into your mind:

  • a giving person
  • a great programmer
  • a do-it-yourself mechanic
  • a politically liberal or conservative person
  • a talented artist
  • someone who sells things online
  • someone who is in fantastic shape

My experiences

Generally I can think of only a person or two for any given category. I don’t know why this is the case. But not knowing the reason does not stop it from being a useful thing to know about.

I notice that I associate people with a concept and believe them to be knowledgeable in a certain area when they are the first person I heard about the concept from. Until I have evidence to the contrary or find a more knowledgeable person, this is the working assumption. Whether they are really the most qualified people on these subjects, I would go to them first with questions. Their face pops up when I think about the category. I try to be more open-minded than believing that my mental model of them is accurate, but I am fallible.

When a consultant came into work and wound up a Pomodoro clock, several people glanced at me and I guessed that they were thinking about the Pomodoro Technique article that I wrote. I did it at work for a month or two, and it elicited some strong responses. It must be that when people think of the Pomodoro Technique, they think of me. While it was not my idea, it was one of the earlier published descriptions of using the technique. I don’t think this is egotistical or out of left field–it is just the way the mind works. We associate concepts with specific people.

In my own mind, for example, one or more people “own” the following words:

  • Windows Azure
  • dependency injection
  • exploratory testing
  • Stoicism
  • jQuery

So what should you do about it?

Ask people what they know you for. Does their response mesh with what you think they know you for and what you want them to know you for? This understanding is critical in developing your personal narrative. You are the stories you can convincingly tell. Who would not want to be first in the mind for something they care about? Who wants to be first in the mind for something that they don’t like or identify with?

Do you associate yourself with positive or negative concepts? Being early is risky, because the concept’s associations might change or be run into the ground. But you could be first in the mind if you are early.

Do you read about new concepts and breathe life into existing ones? By writing about things that already exist, you reach people that have not heard of them.

Generally it’s hard to disassociate yourself with concepts, even if they are value neutral. Robby Slaughter writes about this and more in the excellent (and quite relevant) The Tyranny of the Niche:

The worst part about switching your major in junior year is not the administrative paperwork or the additional coursework. Rather, bailing on art history and heading to journalism means you will spend the next few years of your life reminding every acquaintance and distant family member that you no longer plan to work in museums. Your assertions will grow more firm and flustered as you repeat them to the same people. Our tidy stereotypes cannot weather the complex nuances of individual choice. Change is hard; getting others to actually remember that you’ve changed is often more work than the initial reinvention.

What words or phrases or terms do you own? The rewards of being first in the mind are disproportionately large. There’s only so many slots one typically lumps a person into. Consider what concepts you mention in passing that people might begin associating you with. What do you need to drop to be first in the thing you care most about? Consciously manage these perceptions. They are real.

This post generally relates to using meta-information, although that is a bit theoretical.

Feedback

Have you seen the principle of owning concepts in life? Am I full of crap?! :) Post a comment!

The Four Noble Truths of Coding

The four noble truths in Buddhism are, approximately:

Life is suffering. The origin of suffering is attachment, due to ignorance. The cessation of suffering is attainable. The eight-fold path leads to liberation.

I was coding happily along, and realized in a flash of insight that this applied to what I was working on.

In coding, suffering comes from:

  • not being comfortable making a change because you don’t quite understand how the system works
  • working hard but realizing your code is still buggy
  • a client being less than impressed by “a change that couldn’t break anything”, but did
  • not being able to refactor because you can’t see all of the implications
  • wondering if this ever really worked at all
  • having that bug pop up again, although we thought it was fixed
  • not delivering with quality and on time

The Four Noble Truths of Coding

Coding is suffering. The origin of suffering is attachment, due to ignorance. The cessation of suffering is attainable. The path of executable specifications leads to liberation.

This is a bold statement to make. By using automated means of capturing the assumptions present in code, one breaks the painful cycle that comes from ignorance about the code base. Coding then becomes not suffering, nor not-not suffering, but just coding. Instead of coding in fear, it again becomes a creative process that encourages working with others in harmony. With automated tests of some sort, instead of having the law of cause and effect operating over the course of months, weeks, or days, feedback operates instead in terms of minutes.

However, there is a middle path to take here. If one is entirely safe, one loses the creative edge that makes the project exciting and lessens nimbleness with too much process and boilerplate. If one is too loose, one stands to let some quality slip. Experience seems to be the best guide.

This thought probably emerged from reading philosophy and Working Effectively With Legacy Code.